From 7dfcc480ba1e19bd3232349fc733caef94034292 Mon Sep 17 00:00:00 2001 From: stainer_t Date: Mon, 8 Sep 2025 13:48:49 +0200 Subject: Initial commit from Polytechnique Montreal --- Donjon/src/CREGET.f | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 Donjon/src/CREGET.f (limited to 'Donjon/src/CREGET.f') diff --git a/Donjon/src/CREGET.f b/Donjon/src/CREGET.f new file mode 100644 index 0000000..974da1e --- /dev/null +++ b/Donjon/src/CREGET.f @@ -0,0 +1,135 @@ +*DECK CREGET + SUBROUTINE CREGET(IPMAP,NCH,NB,IBTYP,IMPX,BRN0,BRN1,FMIX,ZONEDP, + 1 IVARTY,VARVAL) +* +*----------------------------------------------------------------------- +* +*Purpose: +* recover the necessary information from the fuel-map object. +* +*Copyright: +* Copyright (C) 2007 Ecole Polytechnique de Montreal. +* +*Author(s): D. Sekki, A. Hebert +* +*Parameters: input +* IPMAP pointer to the fuel-map information. +* NCH number of reactor channels. +* NB number of fuel bundles per channel. +* IBTYP type of interpolation: +* =0 not provided; +* =1 time-average; +* =2 instantaneous; +* =3 derivative with respect to a single exit burnup. +* IMPX printing index (=0 for no print). +* IVARTY index of the exit burnup used to compute derivatives; +* used if IBTYP=3. +* +*Parameters: output +* FMIX fuel mixture indices per fuel bundle. +* BRN0 contains either low burnup integration limits or +* instantaneous burnups per fuel bundle. +* BRN1 upper burnup integration limits per fuel bundle. +* VARVAL single exit burnup; used if IBTYP=3. +* ZONEDP switch related to Chambon formula. +* +*----------------------------------------------------------------------- +* + USE GANLIB +*---- +* SUBROUTINE ARGUMENTS +*---- + TYPE(C_PTR) IPMAP + INTEGER NCH,NB,IBTYP,IMPX,FMIX(NCH,NB),ZONEDP(NCH,NB),IVARTY + REAL BRN0(NCH,NB),BRN1(NCH,NB),VARVAL +*---- +* LOCAL VARIABLES +*---- + PARAMETER(IOUT=6,NSTATE=40) + INTEGER ISTATE(NSTATE) + INTEGER, ALLOCATABLE, DIMENSION(:) :: IZONE + REAL, ALLOCATABLE, DIMENSION(:) :: VARC +*---- +* SCRATCH STORAGE ALLOCATION +*---- + ALLOCATE(IZONE(NCH)) +* + FMIX(:NCH,:NB)=0 + BRN0(:NCH,:NB)=0.0 + BRN1(:NCH,:NB)=0.0 + CALL LCMGET(IPMAP,'FLMIX',FMIX) + IF(IBTYP.EQ.0) THEN + CALL LCMGET(IPMAP,'STATE-VECTOR',ISTATE) + IBTYP=ISTATE(5) + ENDIF +*---- +* TIME-AVERAGE +*---- + IF(IBTYP.EQ.1)THEN +* LOW BURNUP LIMITS + CALL LCMLEN(IPMAP,'BURN-BEG',LENGT,ITYP) + IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI' + 1 //'NG BURN-BEG VALUES IN FUEL MAP.') + CALL LCMGET(IPMAP,'BURN-BEG',BRN0) +* UPPER BURNUP LIMITS + CALL LCMLEN(IPMAP,'BURN-END',LENGT,ITYP) + IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI' + 1 //'NG BURN-END VALUES IN FUEL MAP.') + CALL LCMGET(IPMAP,'BURN-END',BRN1) + IF(IMPX.GT.0)WRITE(IOUT,1000) +*---- +* INSTANTANEOUS +*---- + ELSEIF(IBTYP.EQ.2)THEN + CALL LCMLEN(IPMAP,'BURN-INST',LENGT,ITYP) + IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI' + 1 //'NG BURN-INST VALUES IN FUEL MAP.') + CALL LCMGET(IPMAP,'BURN-INST',BRN0) + IF(IMPX.GT.0)WRITE(IOUT,1001) +*---- +* SINGLE EXIT BURNUP +*---- + ELSEIF(IBTYP.EQ.3)THEN + IF(IVARTY.EQ.0)CALL XABORT('@CREGET: IVARTY NOT SET.') +* LOW BURNUP LIMITS + CALL LCMLEN(IPMAP,'BURN-BEG',LENGT,ITYP) + IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI' + 1 //'NG BRN0 VALUES IN FUEL MAP.') + CALL LCMGET(IPMAP,'BURN-BEG',BRN0) +* UPPER BURNUP LIMITS + CALL LCMLEN(IPMAP,'BURN-END',LENGT,ITYP) + IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI' + 1 //'NG BRN1 VALUES IN FUEL MAP.') + CALL LCMGET(IPMAP,'BURN-END',BRN1) + IF(IMPX.GT.0)WRITE(IOUT,1000) + CALL LCMGET(IPMAP,'B-ZONE',IZONE) + DO 35 ICH=1,NCH + DO 30 IB=1,NB + IF(IZONE(ICH).EQ.IVARTY)THEN + ZONEDP(ICH,IB)=1 + ELSE + ZONEDP(ICH,IB)=0 + ENDIF + 30 CONTINUE + 35 CONTINUE + CALL LCMLEN(IPMAP,'BURN-AVG',ILONG,ITYP) + IF (ILONG.EQ.0)CALL XABORT('@CREGET: NO SAVED VA' + 1 //'LUES FOR THIS TYPE OF VARIABLE IN FUEL MAP') + ALLOCATE(VARC(ILONG)) + CALL LCMGET(IPMAP,'BURN-AVG',VARC) + VARVAL=VARC(IVARTY) + DEALLOCATE(VARC) + ELSE + CALL XABORT('@CREGET: INVALID OPTION IBTYP.') + ENDIF +*---- +* SCRATCH STORAGE DEALLOCATION +*---- + DEALLOCATE(IZONE) + RETURN +* + 1000 FORMAT(/1X,'** PERFORMING THE TIME-AVERAGE', + 1 1X,'INTEGRATION OVER THE FUEL LATTICE **'/) + 1001 FORMAT(/1X,'** PERFORMING THE INSTANTANEOU', + 1'S INTERPOLATION OVER THE FUEL LATTICE **'/) + END -- cgit v1.2.3