summaryrefslogtreecommitdiff
path: root/Dragon/data/rep900_het_gff_jef2p2_proc/CalcFluxH.c2m
diff options
context:
space:
mode:
authorstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
committerstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
commit7dfcc480ba1e19bd3232349fc733caef94034292 (patch)
tree03ee104eb8846d5cc1a981d267687a729185d3f3 /Dragon/data/rep900_het_gff_jef2p2_proc/CalcFluxH.c2m
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Dragon/data/rep900_het_gff_jef2p2_proc/CalcFluxH.c2m')
-rw-r--r--Dragon/data/rep900_het_gff_jef2p2_proc/CalcFluxH.c2m174
1 files changed, 174 insertions, 0 deletions
diff --git a/Dragon/data/rep900_het_gff_jef2p2_proc/CalcFluxH.c2m b/Dragon/data/rep900_het_gff_jef2p2_proc/CalcFluxH.c2m
new file mode 100644
index 0000000..5159eca
--- /dev/null
+++ b/Dragon/data/rep900_het_gff_jef2p2_proc/CalcFluxH.c2m
@@ -0,0 +1,174 @@
+*DECK CalcFlux
+*----
+* Name : CalcFlux.c2m
+* Type : DRAGON procedure
+* Use : Two-level flux calculation using the extended
+* Le Tellier scheme.
+* Author : A. Hebert, based on a procedure from R. Vallerent
+*
+* Procedure called as:
+*
+* LIBRARY2 FLUX1 FLUX2 BURN164 LIBEQ := CalcFlux LIBRARY2 FLUX1
+* FLUX2 BURN164 LIBEQ LIBRARY TRACKSS TRACKN1 TRACKN2 TRKFILN2
+* :: (data) ;
+*
+* Input data :
+* LIBRARY : Microlib with subgroups
+* LIBRARY2 : Self-shielded microlib
+* TRACKSS : Tracking of the self-shielding geometry
+* TRACKN1 : Tracking of the level 1 geometry
+* TRACKN2 : Tracking of the level 2 geometry
+* TRKFILN2 : Sequential tracking file of the level 2 geometry
+* FLUX1 : Multigroup flux of the first level
+* FLUX2 : Multigroup flux of the second level
+* BURN164 : Burnup object of level 2
+* Output data :
+* LIBRARY2 : Self-shielded microlib
+* FLUX1 : Multigroup flux of the first level
+* FLUX2 : Multigroup flux of the second level
+* BURN164 : Burnup object of level 2
+* LIBEQ : 26-group microlib
+* Parameters :
+* istep : Burnup step index corresponding to the calculation
+* Fuel : Type of fuel ("MOX" or "UOX")
+* NbRegions : Number of regions (32 for MOX, 20 or 32 for UOX)
+* BUend : Burnup corresponding to the calculation
+* BUnextSS : Burnup corresponding to the next self-shielding
+* calculation
+* Fuelpwr : Fuel power in MW/tonne
+
+PARAMETER LIBRARY2 FLUX1 FLUX2 BURN164 LIBEQ LIBRARY TRACKSS TRACKN1
+ TRACKN2 TRKFILN2 ::
+ EDIT 1
+ ::: LINKED_LIST LIBRARY2 FLUX1 FLUX2 BURN164 LIBEQ LIBRARY
+ TRACKSS TRACKN1 TRACKN2 ;
+ ::: SEQ_BINARY TRKFILN2 ;
+ ;
+* ;
+*----
+* Modules used in this procedure
+*----
+MODULE LIB: ASM: FLU: EDI: EVO: GREP: ABORT: DELETE: END: ;
+PROCEDURE Autop1 Autop2 ConcLIBEQ MultLIBEQ32H ;
+LINKED_LIST EDITION SYS ;
+REAL B2 Kinf1 Kinf2 Keff2 Tend ;
+
+STRING Fuel ;
+INTEGER istep NbRegions ;
+REAL BUend BUnextSS Fuelpwr ;
+ :: >>istep<< >>Fuel<< >>NbRegions<< >>BUend<< >>BUnextSS<<
+ >>Fuelpwr<< ;
+
+ EVALUATE Tend := BUend Fuelpwr / ;
+ ECHO "-----------------------------------------------------------" ;
+ ECHO "Two-level flux calculation at step=" istep ;
+ ECHO "BURNUP_sortie = " BUend "Next SS = " BUnextSS ;
+ IF BUend BUnextSS - ABS 1E-5 < THEN
+ ECHO "Perform a self-shielding calculation" ;
+ ECHO "-----------------------------------------------------------" ;
+ IF istep 1 = THEN
+ LIBRARY2 := Autop1 LIBRARY TRACKSS :: <<Fuel>> <<NbRegions>> ;
+ ELSE
+ LIBRARY2 := Autop2 LIBRARY2 LIBRARY TRACKSS
+ :: <<Fuel>> <<NbRegions>> ;
+ ENDIF ;
+ ELSE
+ ECHO "No self-shielding calculation" ;
+ ECHO "-----------------------------------------------------------" ;
+ ENDIF ;
+************************************************************************
+* BEGIN FLUX CALCULATION *
+************************************************************************
+ SYS := ASM: LIBRARY2 TRACKN1 ::
+ EDIT 0 ARM ;
+
+ IF istep 1 = THEN
+ FLUX1 := FLU: SYS LIBRARY2 TRACKN1
+ :: EDIT 0 TYPE B B1 SIGS ;
+ ELSE
+ FLUX1 := FLU: FLUX1 SYS LIBRARY2 TRACKN1
+ :: EDIT 0 TYPE B B1 SIGS ;
+ ENDIF ;
+
+ GREP: FLUX1 :: GETVAL 'B2 B1HOM ' 1 1 1 >>B2<< ;
+ ECHO "B2-1 = " B2 " at BU = " BUend ;
+
+ GREP: FLUX1 :: GETVAL 'K-INFINITY ' 1 1 1 >>Kinf1<< ;
+ ECHO "K-inf1_sortie is " Kinf1 " at BU = " BUend ;
+
+*----
+* 26 groups energy condensation
+*----
+
+ EDITION := EDI: FLUX1 LIBRARY2 TRACKN1 ::
+ EDIT 0
+ MICR ALL
+ MERG MIX
+ COND 10 14 18 26 33 40 49 56 65 74 86 196 227
+ 230 233 238 241 244 247 254 259 263 267 272 277
+ SAVE ON COND26
+ ;
+
+ LIBEQ := EDITION ::
+ STEP UP COND26
+ ;
+
+ SYS := DELETE: SYS ;
+
+*----
+* Second level flux calculation (MOC)
+*----
+
+ IF NbRegions 32 = THEN
+ LIBEQ := MultLIBEQ32H LIBEQ ;
+ ENDIF ;
+
+ IF istep 1 > THEN
+ LIBEQ := ConcLIBEQ LIBEQ BURN164 :: <<istep>> ;
+ ENDIF ;
+
+ LIBEQ := LIB: LIBEQ :: EDIT 0 MACR MIXS ;
+
+ SYS := ASM: LIBEQ TRACKN2 TRKFILN2 ::
+ EDIT 0 ARM ;
+
+ IF istep 1 = THEN
+ FLUX2 := FLU: SYS LIBEQ TRACKN2 TRKFILN2 ::
+ EDIT 0
+ TYPE K B1 PNL BUCK <<B2>>
+ THER 5 5E-5 EXTE 30 1E-5 UNKT 1E-4 ;
+ ELSE
+ FLUX2 := FLU: FLUX2 SYS LIBEQ TRACKN2 TRKFILN2 ::
+ EDIT 0
+ TYPE K B1 PNL BUCK <<B2>>
+ THER 5 5E-5 EXTE 30 1E-5 UNKT 1E-4 ;
+ ENDIF ;
+
+ GREP: FLUX2 :: GETVAL 'K-INFINITY ' 1 1 1 >>Kinf2<< ;
+ ECHO "K-inf2_sortie is " Kinf2 " at BU = " BUend ;
+
+ GREP: FLUX2 :: GETVAL 'K-EFFECTIVE ' 1 1 1 >>Keff2<< ;
+ ECHO "K-eff2_sortie is " Keff2 " at BU = " BUend ;
+
+ GREP: FLUX2 :: GETVAL 'B2 B1HOM ' 1 1 1 >>B2<< ;
+ ECHO "B2-2 = " B2 " at BU = " BUend ;
+
+ SYS EDITION := DELETE: SYS EDITION ;
+************************************************************************
+* END FLUX CALCULATION *
+************************************************************************
+
+IF istep 1 = THEN
+ BURN164 LIBEQ := EVO: LIBEQ FLUX2 TRACKN2 ::
+ EDIT 0
+ SAVE <<Tend>> DAY POWR <<Fuelpwr>>
+ ;
+ELSE
+ BURN164 LIBEQ := EVO: BURN164 LIBEQ FLUX2 TRACKN2 ::
+ EDIT 0
+ SAVE <<Tend>> DAY POWR <<Fuelpwr>>
+ ;
+ENDIF ;
+
+END: ;
+QUIT .