*DECK BranchFlux *---- * Name : BranchFlux.c2m * Type : DRAGON procedure * Use : Two-level branch flux calculation using the extended * Le Tellier scheme. * Author : A. Hebert, based on a procedure from R. Vallerent * * Procedure called as: * * LIBRARY2 FLUX1 FLUX2 LIBEQ := BranchFlux LIBRARY2 FLUX1 FLUX2 * BURN164 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 * 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 LIBEQ BURN164 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 MultLIBEQ_20 MultLIBEQ_32 ; 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 ; *---- * Resonance self-shielding *---- 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 :: <> <> ; ELSE LIBRARY2 := Autop2 LIBRARY2 LIBRARY TRACKSS :: <> <> ; 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 20 = THEN LIBEQ := MultLIBEQ_20 LIBEQ ; ELSEIF NbRegions 32 = THEN LIBEQ := MultLIBEQ_32 LIBEQ ; ENDIF ; *---- * Recover number densities for the current burnup step *---- LIBEQ := ConcLIBEQ LIBEQ BURN164 :: <> ; 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 <> 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 <> 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 * ************************************************************************ END: ; QUIT .