summaryrefslogtreecommitdiff
path: root/Donjon/src/PCRDATA.f90
diff options
context:
space:
mode:
Diffstat (limited to 'Donjon/src/PCRDATA.f90')
-rw-r--r--Donjon/src/PCRDATA.f90276
1 files changed, 276 insertions, 0 deletions
diff --git a/Donjon/src/PCRDATA.f90 b/Donjon/src/PCRDATA.f90
new file mode 100644
index 0000000..d153429
--- /dev/null
+++ b/Donjon/src/PCRDATA.f90
@@ -0,0 +1,276 @@
+MODULE PCRDATA
+!
+!-----------------------------------------------------------------------
+!
+!Purpose:
+! Fortran module containing PMAXS file information.
+!
+!Copyright:
+! Copyright (C) 2019 Ecole Polytechnique de Montreal
+!
+!Author(s): A. Hebert
+!
+!-----------------------------------------------------------------------
+!
+ IMPLICIT NONE
+ INTEGER(4), PARAMETER :: Nallvar=12
+ REAL(8) :: state_value(Nallvar)
+
+ CHARACTER(2) :: all_var_nam(Nallvar)
+ DATA all_var_nam/'CR','DC','PC','TF','TC','IC','DM','PM','TM','IM','DN','BN'/
+ INTEGER(4), PARAMETER :: svCR=1,svDC=2,svPC=3,svTF=4,svTC=5
+ INTEGER(4), PARAMETER :: svIC=6,svDM=7,svPM=8,svTM=9,svIM=10
+ INTEGER(4), PARAMETER :: svDN=11,svBN=12
+
+ REAL(8) :: Sref(Nallvar)
+ DATA Sref/0.0, 0.71, 600.0, 28.3, 580.0, 0.0, 0.71, 600.0, 580.0, 0.0, 0.0, 0.0 /
+
+ LOGICAL :: validname
+ LOGICAL :: lHST(Nallvar), lSTT(Nallvar)
+
+ CHARACTER(12) :: formng
+ CHARACTER(3) :: TIVname(4)
+
+ INTEGER(4), PARAMETER :: xtr=1,xab=2,xnf=3,xkf=4,xxe=5,xsm=6,xfi=7
+ INTEGER(4), PARAMETER :: xdcl=1,xdwr=2,xdbp=3,xdcr=4,xchi=1,BBET=1
+ INTEGER(4) :: xchd,xinv, EBET,BLAM,ELAM,BDHB,EDHB,BDHL,EDHL
+ INTEGER(4) :: xlpk,xj1i,xj1s,xj1c
+ INTEGER(4) :: NXST,NLPF,iLPF,iXSTI
+ INTEGER(4) :: iTIV(4),ilpk,ij1c,iread_xs
+
+ INTEGER(4) :: NGR,NDL,NDC,NAD,NCD
+ INTEGER(4) :: NGROUP,NDLAY,NDCAY,NADF,NZDF,NCDF,iups,Nset,NTDF
+ INTEGER(4) :: NHST,NBRA,NBCR,NBset,NRODS,NCOL,NROW,NPART,NROWA,NCOLA,NXSB
+ INTEGER(4) :: MHST,MBRA,MBCR,MBset,MRODS,MCOLA
+ INTEGER(4) :: N_Bran_struct,Nstat_var,ktf
+ INTEGER(4), DIMENSION(:), POINTER :: var_ind,NBR
+ REAL(8) :: iHMD,Dsat,ARWatR,ARByPa,ARConR,PITCH,XBE,YBE,minw,maxw,maxws,minws
+ REAL(8), DIMENSION(:,:), POINTER :: state
+
+ LOGICAL :: ladf,lxes,lded,lj1f,lchi,lchd,linv,ldet,lyld,lcdf,lgff,lbet,lamb,ldec,lzdf
+ LOGICAL :: tcdf,tgff
+ LOGICAL :: padf,pxes,pded,pj1f,pchi,pchd,pvel,pdet,pyld,pcdf,pgff,pbet,pamb,pdec,pzdf
+ LOGICAL :: lcrp,lppm,lxesm,derivatives, outrange
+
+ CHARACTER(80),DIMENSION(6) :: hcomment
+
+ TYPE Branches_info
+ INTEGER(4) :: Nstat_var, ktf, NBRA
+ INTEGER(4), DIMENSION(:), POINTER :: var_ind !(Nstat_var)
+ INTEGER(4), DIMENSION(:), POINTER :: NBR !(Nstat_var)
+ Character(2), DIMENSION(:), POINTER :: state_nam !(NBRA)
+ REAL(8), DIMENSION(:,:), POINTER :: state !(Nstat_var,NBRA)
+ logical :: NOT_assigned
+ Character(2), DIMENSION(:), POINTER :: var_nam !(Nstat_var)
+ END TYPE Branches_info
+
+ TYPE XSBLOCK_TYPE
+ REAL(8), DIMENSION(:,:), POINTER ::sig !(NGROUP,NXST)
+! 1 2 3 4 5 6 7
+! xtr,xab,xnf,xkf,xfi,xxe,xsm
+ REAL(8), DIMENSION(:,:), POINTER ::sct,adf,cdf,gff,zdf
+ REAL(8), DIMENSION(:), POINTER ::LPF,det
+ REAL(8) :: kinf,B2,kinfB,kinfL
+! Average assembly flux
+ REAL(8), DIMENSION(:), POINTER :: flux
+! Axial surface flux, (g,bottom->top)
+ REAL(8), DIMENSION(:,:), POINTER :: zflx
+! Radial surface flux, (g,W-S-E-N) if cart, if hex(g,NW-W-SW-SE-E-NE)
+ REAL(8), DIMENSION(:,:), POINTER :: rflx
+! Axial current in, (g,bottom->top,i-o-n)
+ REAL(8), DIMENSION(:,:,:), POINTER :: zcur
+! Radial surface flux, (g,W-S-E-N,i-o-n) if cart, if hex(g,NW-W-SW-SE-E-NE)
+ REAL(8), DIMENSION(:,:,:), POINTER :: rcur
+! Groupwise yields
+ REAL(8), DIMENSION(:), POINTER :: yldI, yldXe, yldPm
+! Xe, Sm, I, Pm Number Densities
+ REAL(8) :: NDXE,NDSM,NDI,NDPM
+ END TYPE XSBLOCK_TYPE
+
+ TYPE BRANCH_WISE_TYPE
+ INTEGER(4) :: iBset
+ TYPE(XSBLOCK_TYPE),dimension(:),pointer:: XS(:) !(NBURN)
+ END TYPE BRANCH_WISE_TYPE
+
+ TYPE PMAXS_WISE_TYPE
+ logical derivatives
+ INTEGER(4) :: NCOL,NRODS,NROW,NPART,NROWA,NCOLA
+ INTEGER(4) :: NHST,NBset
+ REAL(8), DIMENSION(:,:), POINTER :: history !(Nstat_var,NHST)
+ REAL(8), DIMENSION(:), POINTER :: invdiff !(NHST)
+ INTEGER(4), DIMENSION(:), POINTER :: base !(NHST)
+ REAL(8):: iHMD,Dsat,ARWatR,ARByPa,ARConR,PITCH,XBE,YBE
+
+ TYPE(BRANCH_WISE_TYPE), DIMENSION(:,:), POINTER :: branch !(NBRA,NHST)
+ TYPE(HIST_TIV_TYPE), DIMENSION(:), POINTER :: TIVB !(NHST)
+ TYPE(Burnup_info),DIMENSION(:), POINTER :: Bset !(NBset)
+ END TYPE PMAXS_WISE_TYPE
+
+ TYPE HIST_TIV_TYPE
+ INTEGER(4) :: iBset
+ TYPE(TH_INDEP_VAR),dimension(:),pointer:: TIV(:) !(NBURN)
+ END TYPE HIST_TIV_TYPE
+
+ TYPE Burnup_info
+ INTEGER(4) :: NBURN
+ REAL(8),DIMENSION(:), POINTER :: burns !(NBURN)
+ end type Burnup_info
+
+ TYPE TH_INDEP_VAR
+ REAL(8), DIMENSION(:,:),POINTER :: sig !(NGROUP,xinv)
+! xchi,xchd,xinv,
+ REAL(8), DIMENSION(:),POINTER :: kinp !bet,lam,dhb,dhl
+ REAL(8) :: YLD(3) !YID,YXE,YPM
+ REAL(8) :: NDXE,NDSM,NDI,NDPM
+ REAL(8) :: POWER
+ REAL(8) :: DAYS
+ REAL(8) :: BURNUP
+ END TYPE TH_INDEP_VAR
+
+ TYPE XSBLOCK_ITEM
+ INTEGER :: IBURN ! burnup step -- added by EPM
+ REAL(8) :: DELTA ! delta local variable -- added by EPM
+ TYPE(XSBLOCK_TYPE), POINTER :: XS
+ TYPE(TH_INDEP_VAR), POINTER :: TIV
+ END TYPE XSBLOCK_ITEM
+
+ TYPE(PMAXS_WISE_TYPE),DIMENSION(:), POINTER :: PMAXS !(XS_F_NUM)
+ TYPE(PMAXS_WISE_TYPE),pointer:: PMAX
+ TYPE(Branches_info), DIMENSION(:), target,allocatable ::Bran_info
+ TYPE(Branches_info), POINTER ::bran_i
+ TYPE(XSBLOCK_TYPE), target,allocatable :: XSCR(:)
+ TYPE(XSBLOCK_TYPE), target :: XSND
+ TYPE(XSBLOCK_TYPE), pointer:: XS
+ TYPE(TH_INDEP_VAR), pointer:: TIV
+
+contains
+
+!---------------------------------------------------------------------
+ SUBROUTINE AllocateXSBlock
+!---------------------------------------------------------------------
+ IMPLICIT NONE
+
+ INTEGER(4) :: ireg
+
+ IF (NADF .GT. 4) THEN
+ ireg = NADF
+ ELSE
+ ireg = 4
+ END IF
+
+ allocate(XS%sig(NGROUP,NXST))
+ allocate(XS%sct(NGROUP,NGROUP))
+ allocate(XS%flux(NGROUP))
+ allocate(XS%rflx(NGROUP,ireg))
+ allocate(XS%zflx(NGROUP,2))
+ allocate(XS%rcur(NGROUP,ireg,3))
+ allocate(XS%zcur(NGROUP,2,3))
+ IF (lyld) THEN
+ allocate(XS%yldI(NGROUP))
+ allocate(XS%yldXe(NGROUP))
+ allocate(XS%yldPm(NGROUP))
+ ELSE
+ allocate(XS%yldI(1))
+ allocate(XS%yldXe(1))
+ allocate(XS%yldPm(1))
+ END IF
+ if(ladf)then
+ allocate(XS%adf(NGROUP,NADF))
+ else
+ allocate(XS%adf(1,1))
+ endif
+ if(lzdf)then
+ allocate(XS%ZDF(NGROUP,NZDF))
+ NTDF = NADF + NZDF
+ else
+ allocate(XS%ZDF(1,1))
+ NTDF = NADF
+ endif
+ if(NLPF .GT. 0)then
+ allocate(XS%LPF(NLPF))
+ else
+ allocate(XS%LPF(1))
+ endif
+ if(ldet)then
+ allocate(XS%det(NGROUP))
+ else
+ allocate(XS%det(1))
+ endif
+ if(lcdf)then
+ allocate(XS%cdf(NGROUP,NCDF))
+ else
+ allocate(XS%cdf(1,1))
+ endif
+ if(lgff.and.NRODS .GT. 0)then
+ allocate(XS%gff(NGROUP,NRODS))
+ else
+ allocate(XS%gff(1,1))
+ endif
+
+ CALL Default_XS
+ END SUBROUTINE AllocateXSBlock
+
+!---------------------------------------------------------------------
+ SUBROUTINE DeallocateXSBlock
+!---------------------------------------------------------------------
+ deallocate(XS%sig)
+ deallocate(XS%sct)
+ deallocate(XS%adf)
+ deallocate(XS%zdf)
+ deallocate(XS%cdf)
+ deallocate(XS%LPF)
+ deallocate(XS%det)
+ deallocate(XS%gff)
+ deallocate(XS%flux)
+ deallocate(XS%rflx)
+ deallocate(XS%zflx)
+ deallocate(XS%rcur)
+ deallocate(XS%zcur)
+ END SUBROUTINE DeallocateXSBlock
+
+!---------------------------------------------------------------------
+ SUBROUTINE Clear_XS
+!---------------------------------------------------------------------
+ XS%sig=0
+ XS%sct=0
+ XS%adf=0
+ XS%zdf=0
+ XS%cdf=0
+ XS%LPF=0
+ XS%det=0
+ XS%gff=0
+ XS%flux=0
+ XS%yldI=0
+ XS%yldXe=0
+ XS%yldPm=0
+ XS%rflx=0
+ XS%zflx=0
+ XS%rcur=0
+ XS%zcur=0
+ END SUBROUTINE Clear_XS
+
+!---------------------------------------------------------------------
+ SUBROUTINE Default_XS
+!---------------------------------------------------------------------
+ CALL Clear_XS
+
+ XS%kinf = 0.0
+ XS%kinfB = 1.0
+ XS%kinfL = 1.0
+ XS%B2 = 0.0
+
+ XS%ndxe = 0.0
+ XS%ndsm = 0.0
+ XS%ndi = 0.0
+ XS%ndpm = 0.0
+
+ XS%adf = 1.0
+ XS%zdf = 1.0
+ XS%cdf = 1.0
+ XS%gff = 1.0
+
+ XS%yldi = 0.0
+ XS%yldxe = 0.0
+ XS%yldpm = 0.0
+ END SUBROUTINE Default_XS
+END MODULE PCRDATA