summaryrefslogtreecommitdiff
path: root/Dragon/src/CFCGET.f
diff options
context:
space:
mode:
Diffstat (limited to 'Dragon/src/CFCGET.f')
-rw-r--r--Dragon/src/CFCGET.f210
1 files changed, 210 insertions, 0 deletions
diff --git a/Dragon/src/CFCGET.f b/Dragon/src/CFCGET.f
new file mode 100644
index 0000000..5037029
--- /dev/null
+++ b/Dragon/src/CFCGET.f
@@ -0,0 +1,210 @@
+*DECK CFCGET
+ SUBROUTINE CFCGET(TINFO,DBNAME,IPRINT,NBPARA,DBPARA)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Read CFC options.
+*
+*Copyright:
+* Copyright (C) 2009 Ecole Polytechnique de Montreal
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version.
+*
+*Author(s): G. Marleau
+*
+*Parameters: input
+* TINFO title of database.
+* DBNAME database name.
+* IPRINT print level.
+* NBPARA number of parameters.
+* DBPARA database parameters:
+* DBPARA( 1) = Nominal power level (PWR);
+* DBPARA( 2) = Nominal T cool (TCR);
+* DBPARA( 3) = Nominal T mode (TMR);
+* DBPARA( 4) = Nominal T fuel (TFR);
+* DBPARA( 5) = Nominal Density cool;
+* DBPARA( 6) = Nominal Density mode;
+* DBPARA( 7) = Nominal purity mode (XIR);
+* DBPARA( 8) = Perturbed T fuel 1 (TFU);
+* DBPARA( 9) = Perturbed T cool 1 (TCU);
+* DBPARA(10) = Perturbed P1 (PWUL);
+* DBPARA(11) = Perturbed P2 (PWDL);
+* DBPARA(12) = Perturbed P3 (PWU);
+* DBPARA(13) = Perturbed P4 (PWD);
+* DBPARA(14) = Perturbed P mode (XI).
+*
+*-----------------------------------------------------------------------
+*
+ USE GANLIB
+ IMPLICIT NONE
+*----
+* SUBROUTINE ARGUMENTS
+*----
+ CHARACTER TINFO*72,DBNAME*9
+ INTEGER IPRINT,NBPARA
+ REAL DBPARA(NBPARA)
+*----
+* LOCAL PARAMETERS
+*----
+ INTEGER IOUT
+ CHARACTER NAMSBR*6
+ PARAMETER (IOUT=6,NAMSBR='CFCGET')
+*----
+* INPUT PARAMETERS
+*----
+ INTEGER ITYPLU,INTLIR
+ CHARACTER CARLIR*12
+ REAL REALIR
+ DOUBLE PRECISION DBLLIR
+*----
+* INITIALIZE PARAMETERS
+*----
+ IPRINT=1
+ DBPARA(:NBPARA)=0.0
+ DBPARA(1)=615.0
+ DBPARA(2)=560.66
+ DBPARA(3)=345.66
+ DBPARA(4)=941.29
+ DBPARA(5)=1.08288
+ DBPARA(6)=0.81212
+ DBPARA(7)=0.99911
+ DBPARA(8)=1241.29
+ DBPARA(9)=660.66
+ DBPARA(10)=878.57143
+ DBPARA(11)=307.5
+ DBPARA(12)=307.5
+ DBPARA(13)=100.0
+ DBPARA(14)=0.985
+ DBPARA(15)=375.66
+ DBPARA(16)=541.29
+ DBPARA(17)=300.66
+ DBPARA(18)=295.66
+*----
+* READ TITLE
+*----
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 3) CALL XABORT(NAMSBR//
+ >': CHARACTER DATA EXPECTED.')
+ IF(CARLIR .EQ. 'EDIT') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .EQ. 1) THEN
+ IPRINT=INTLIR
+ ELSE
+ CALL XABORT(NAMSBR//': EDIT LEVEL EXPECTED.')
+ ENDIF
+ CALL REDGET (ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 3) CALL XABORT(NAMSBR//
+ >': CHARACTER DATA EXPECTED.')
+ ENDIF
+ IF(CARLIR .EQ. 'INFOR') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,TINFO,DBLLIR)
+ IF(ITYPLU .NE. 3) CALL XABORT(NAMSBR//
+ > ': CHARACTER DATA EXPECTED.')
+ ELSE
+ CALL XABORT(NAMSBR//': INFOR KEY WORD EXPECTED.')
+ ENDIF
+*-----
+* READ THE RECORD NAME FOR THE DATABASE
+*-----
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 3) CALL XABORT(NAMSBR//
+ >': CHARACTER DATA EXPECTED.')
+ IF(CARLIR .EQ. 'DNAME') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 3) CALL XABORT(NAMSBR//
+ > ': CHARACTER DATA EXPECTED.')
+ DBNAME=CARLIR(1:9)
+ ENDIF
+*----
+* LOOP OVER PARAMETERS TO READ
+*----
+ 100 CONTINUE
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 3) CALL XABORT(NAMSBR//
+ >': CHARACTER DATA EXPECTED.')
+ IF(CARLIR .EQ. ';') THEN
+ GO TO 105
+ ELSE IF(CARLIR .EQ. 'PWR') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Nominal power EXPECTED.')
+ DBPARA(1)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Power UP EXPECTED.')
+ DBPARA(10)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Power DOWN 1 EXPECTED.')
+ DBPARA(11)=REALIR
+ DBPARA(12)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Power DOWN 2 EXPECTED.')
+ DBPARA(13)=REALIR
+ ELSE IF(CARLIR .EQ. 'TCOOL') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Nominal coolant temperature expected.')
+ DBPARA(2)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Perturbed up coolant temperature expected.')
+ DBPARA(9)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Perturbed down coolant temperature expected.')
+ DBPARA(17)=REALIR
+ ELSE IF(CARLIR .EQ. 'TMODE') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Nominal moderator temperature expected.')
+ DBPARA(3)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Perturbed up moderator temperature expected.')
+ DBPARA(15)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Perturbed down moderator temperature expected.')
+ DBPARA(18)=REALIR
+ ELSE IF(CARLIR .EQ. 'TFUEL') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Nominal fuel temperature expected.')
+ DBPARA(4)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Perturbed up fuel temperature expected.')
+ DBPARA(8)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Perturbed down fuel temperature expected.')
+ DBPARA(16)=REALIR
+ ELSE IF(CARLIR .EQ. 'RHOM') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Nominal moderator density expected.')
+ DBPARA(5)=REALIR
+ ELSE IF(CARLIR .EQ. 'RHOC') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Nominal coolant density expected.')
+ DBPARA(6)=REALIR
+ ELSE IF(CARLIR .EQ. 'XIR') THEN
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Nominal Xenon.')
+ DBPARA(7)=REALIR
+ CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR)
+ IF(ITYPLU .NE. 2) CALL XABORT(NAMSBR//
+ > ': Perturbed Xenon.')
+ DBPARA(14)=REALIR
+ ENDIF
+ GO TO 100
+ 105 CONTINUE
+ RETURN
+ END