summaryrefslogtreecommitdiff
path: root/Donjon/src/DONDRV.F
diff options
context:
space:
mode:
Diffstat (limited to 'Donjon/src/DONDRV.F')
-rw-r--r--Donjon/src/DONDRV.F329
1 files changed, 329 insertions, 0 deletions
diff --git a/Donjon/src/DONDRV.F b/Donjon/src/DONDRV.F
new file mode 100644
index 0000000..ee42c61
--- /dev/null
+++ b/Donjon/src/DONDRV.F
@@ -0,0 +1,329 @@
+*DECK DONDRV
+ INTEGER FUNCTION DONDRV(HMODUL,NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Module-dependent driver for DONJON.
+*
+*Copyright:
+* Copyright (C) 2007 Ecole Polytechnique de Montreal
+*
+*Author(s):
+* D. Sekki
+*
+*Parameters: input/output
+* HMODUL name of module to process.
+* NENTRY number of data structures transfered to this module.
+* HENTRY name of the data structures.
+* IENTRY data structure type where:
+* IENTRY=1 for LCM memory object;
+* IENTRY=2 for XSM file;
+* IENTRY=3 for sequential binary file;
+* IENTRY=4 for sequential ASCII file;
+* IENTRY=6 for HDF5 file.
+* JENTRY access permission for the data structure where:
+* JENTRY=0 for a data structure in creation mode;
+* JENTRY=1 for a data structure in modifications mode;
+* JENTRY=2 for a data structure in read-only mode.
+* KENTRY data structure pointer.
+*
+*Parameters: output
+* DONDRV completion flag: =0 module exists; =1 does not exists.
+*
+*-----------------------------------------------------------------------
+*
+ USE GANLIB
+*----
+* SUBROUTINE ARGUMENTS
+*----
+ CHARACTER HMODUL*(*),HENTRY(NENTRY)*12
+ INTEGER IENTRY(NENTRY),JENTRY(NENTRY)
+ TYPE(C_PTR) KENTRY(NENTRY)
+*----
+* LOCAL VARIABLES
+*----
+ PARAMETER(IOUT=6)
+ REAL TBEG,TEND
+ DOUBLE PRECISION DMEMB,DMEMD
+ CHARACTER DSR*72,NAM*72,COD*12
+ LOGICAL :: DONMOD
+*
+ DONDRV=0
+ DONMOD=.TRUE.
+ CALL KDRCPU(TBEG)
+ CALL KDRMEM(DMEMB)
+*----
+* CALL MODULE AND PRINT CREDITS
+*----
+ IF(HMODUL.EQ.'NCR:')THEN
+ COD='DRAGON'
+ DSR='ACCESS MULTI-PARAMETER REACTOR COMPOSITION DATABASE'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL NCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'CRE:')THEN
+ COD='DONJON'
+ DSR='ACCESS MONO-PARAMETER REACTOR COMPOSITION DATABASE'
+ NAM='A. HEBERT, D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL CRE(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'USPLIT:')THEN
+ COD='DONJON'
+ DSR='LINK MATERIAL INDEX AND REACTOR GEOMETRY'
+ NAM='J. KOCLAS, D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL USPLIT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'MACINI:')THEN
+ COD='DONJON'
+ DSR='EXPAND MACROLIB OVER THE REACTOR GEOMETRY'
+ NAM='J. KOCLAS, E. VARIN, D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL MACINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'RESINI:')THEN
+ COD='DONJON'
+ DSR='FUEL LATTICE GEOMETRY AND PROPERTIES'
+ NAM='E. VARIN, D. SEKKI, R. CHAMBON'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL RESINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'FLPOW:')THEN
+ COD='DONJON'
+ DSR='COMPUTE FLUXES AND POWERS'
+ NAM='D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL FLPOW(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'DEVINI:')THEN
+ COD='DONJON'
+ DSR='MODELING OF ROD-DEVICES IN THE REACTOR CORE'
+ NAM='D. SEKKI '
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL DEVINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'DSET:')THEN
+ COD='DONJON'
+ DSR='UPDATE DEVICES PARAMETERS'
+ NAM='D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL DSET(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'MOVDEV:')THEN
+ COD='DONJON'
+ DSR='MOVE DEVICES IN THE REACTOR CORE'
+ NAM='D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL MOVDEV(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'NEWMAC:')THEN
+ COD='DONJON'
+ DSR='UPDATE MACROLIB FOR DEVICES PROPERTIES'
+ NAM='J. KOCLAS, D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL NEWMAC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'DETINI:')THEN
+ COD='DONJON'
+ DSR='CONSTRUCT 2D AND 3D DETECTORS IN THE CORE'
+ NAM='J. KOCLAS, E. VARIN, M. GUYOT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL DETINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'DETECT:')THEN
+ COD='DONJON'
+ DSR='COMPUTE DETECTORS READING'
+ NAM='J. KOCLAS, M. GUYOT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL DETECT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'TAVG:')THEN
+ COD='DONJON'
+ DSR='TIME-AVERAGE CALCULATION'
+ NAM='D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL TAVG(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'TINST:')THEN
+ COD='DONJON'
+ DSR='INSTANTANEOUS CALCULATION'
+ NAM='B. TOUEG'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL TINST(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'CVR:')THEN
+ COD='DONJON'
+ DSR='UPDATE DATA FOR VOIDING SIMULATION'
+ NAM='D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL CVR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'LZC:')THEN
+ COD='DONJON'
+ DSR='MODELING OF LIQUID ZONE CONTROLLERS'
+ NAM='D. SEKKI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL LZC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'HST:')THEN
+ COD='DONJON'
+ DSR='HISTORY BASED CALCULATION SUPPORT'
+ NAM='G. MARLEAU AND E. VARIN'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL HST(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'XENON:')THEN
+ COD='DONJON'
+ DSR='COMPUTE THE XENON DISTRIBUTION'
+ NAM='M. GUYOT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL XENON(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSEIF(HMODUL.EQ.'AFM:')THEN
+ COD='DONJON'
+ DSR='MULTI-PARAMETER FEEDBACK MODEL'
+ NAM='T. SISSAOUI'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL AFM(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'NCR:') THEN
+ COD='DONJON'
+ DSR='ACCESS MULTI-PARAMETER REACTOR COMPOSITION DATABASE'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL NCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'SCR:') THEN
+ COD='DONJON'
+ DSR='ACCESS MULTI-PARAMETER REACTOR SAPHYB DATABASE'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL SCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+#if defined(HDF5_LIB)
+ ELSE IF(HMODUL.EQ.'ACR:') THEN
+ COD='DONJON'
+ DSR='ACCESS MULTI-PARAMETER REACTOR APEX DATABASE'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL ACR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'MCR:') THEN
+ COD='DONJON'
+ DSR='ACCESS MULTI-PARAMETER REACTOR MPO DATABASE'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL MCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+#endif /* defined(HDF5_LIB) */
+ ELSE IF(HMODUL.EQ.'PCR:') THEN
+ COD='DONJON'
+ DSR='ACCESS MULTI-PARAMETER REACTOR PMAXS DATABASE'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL PCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'T16CPO:') THEN
+ COD='DONJON'
+ DSR='INTERFACE FOR WIMS-AECL'
+ NAM='G. MARLEAU'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL T16CPO(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'THM:') THEN
+ COD='DONJON'
+ DSR='SIMPLIFIED THERMAL-HYDRAULICS CALCULATION'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL THM(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'DLEAK:') THEN
+ COD='DONJON'
+ DSR='COMPUTE A DELTA MACROLIB RELATIVE TO LEAKAGE INFORMATION'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL DLEAK(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'DSPH:') THEN
+ COD='DONJON'
+ DSR='COMPUTE A DELTA MACROLIB RELATIVE TO SPH FACTORS'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL DSPH(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'DREF:') THEN
+ COD='DONJON'
+ DSR='SET THE GPT ADJOINT SOURCES FOR RMS REACTION RATE ERRORS'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL DREF(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'GRAD:') THEN
+ COD='DONJON'
+ DSR='COMPUTE GRADIENTS OF SYSTEM CHARACTERISTICS'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL GRAD(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'PLQ:') THEN
+ COD='DONJON'
+ DSR='LINEAR OPTIMIZATION PROBLEM WITH A QUADRATIC CONSTRAINT'
+ NAM='A. HEBERT AND R. CHAMBON'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL PLQ(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'LNSR:') THEN
+ COD='DONJON'
+ DSR='LINE OPTIMIZATION OF THE OBJECTIVE FUNCTION'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL LNSR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'SIM:') THEN
+ COD='DONJON'
+ DSR='PWR FUELLING SIMULATOR'
+ NAM='A. HEBERT AND V. SALINO'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL SIM(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'MCC:') THEN
+ COD='DONJON'
+ DSR='FUEL MAP MODIFICATION'
+ NAM='M. CORDIEZ'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL MCC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'NAP:') THEN
+ COD='DONJON'
+ DSR='PIN POWER RECONSTRUCTION AND ENRICHED L_COMPO CONSTRUCTION'
+ NAM='R. CHAMBON'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL NAP(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'D2P:') THEN
+ COD='DONJON'
+ DSR='PMAXS INTERFACE FILE GENERATION'
+ NAM='J. TAFOREAU'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL D2P(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'ROD:') THEN
+ COD='DONJON'
+ DSR='CONTROL ROD INSERTION MANAGEMENT FOR PWR'
+ NAM='G. TIXIER'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL ROD(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'PKINI:') THEN
+ COD='DONJON'
+ DSR='POINT KINETIC INITIALIZATION MODULE'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL PKINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'PKINS:') THEN
+ COD='DONJON'
+ DSR='POINT KINETIC SOLUTION AND GLOBAL FEEDBACK'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL PKINS(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'IDET:') THEN
+ COD='DONJON'
+ DSR='DETECTOR INTEGRATED RESPONSE EVALUATION'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL IDET(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'FPSPH:') THEN
+ COD='DONJON'
+ DSR='SINGLE SPH FACTOR FIXED POINT ITERATION'
+ NAM='A. HEBERT'
+ WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
+ CALL FPSPH(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE
+ DONMOD=.FALSE.
+ DONDRV=KDRDRV(HMODUL,NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ENDIF
+ IF(DONMOD)THEN
+ WRITE(IOUT,1001)HMODUL
+ CALL KDRCPU(TEND)
+ CALL KDRMEM(DMEMD)
+ WRITE(IOUT,1002) HMODUL,(TEND-TBEG),REAL(DMEMD-DMEMB)
+ ENDIF
+ RETURN
+*
+ 1000 FORMAT(/1X,15('~')/
+ 1 1X,'@BEGIN MODULE -> ',A12/
+ 2 1X,'@FROM CODE -> ',A12/
+ 3 1X,'@DESCRIPTION -> ',A72/
+ 4 1X,'@CREDITS -> ',A72/
+ 5 1X,'@COPYRIGHTS -> ECOLE POLYTECHNIQUE DE MONTREAL'/
+ 6 18X,'GNU LESSER GENERAL PUBLIC LICENSE'/1X,15('~')/)
+ 1001 FORMAT(1X,'@END MODULE -> ',A12)
+ 1002 FORMAT('-->>MODULE ',A12,': TIME SPENT=',F13.3,' MEMORY USAGE=',
+ 1 1P,E10.3)
+ END