diff options
Diffstat (limited to 'Dragon/src/CFCGET.f')
| -rw-r--r-- | Dragon/src/CFCGET.f | 210 |
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 |
