*DECK CreaStepList.c2m *====================================================== * Name: CreaStepList.c2m * Type: DRAGON procedure * Use: Create one object containing lists used for * Burnup evolution & SAPHYB creation * Author: A. Bruneau 04.2015 * [CS-SI | IRSN/PSN-EXP/SNC/LNR] * mod: Change matrix definition and add histories * L. Liponi 03.2018 * [CTE | IRSN/PSN-EXP/SNC/LN] *------------------------------------------------------ * Input Required: * > Gestion : [STR] * > AssType : [STR] * > ConfigPyrex : [STR] * > TypeMatrix : [STR] Type of matrix structure for multi-parameter library * > NumHistCal : [INT] Nb. nominal/off-Nominal depletion * Output Provided: * < StepList : [LINKED_LIST] Matrix branch structure parameters *------------------------------------------------------ * Procedure called as: * StepList := CreaStepList :: * <> <> <> * <> <> ; *====================================================== PARAMETER StepList :: ::: LINKED_LIST StepList ; ; PROCEDURE GetTechData ; MODULE UTL: GREP: ABORT: END: ; LINKED_LIST AvgList RodList ; *----------------------------------------------------- * Input Parameters *----------------------------------------------------- STRING Gestion AssType ConfigPyrex ; :: >>Gestion<< >>AssType<< >>ConfigPyrex<< ; INTEGER NumHistCal ; :: >>NumHistCal<< ; STRING TypeMatrix ; :: >>TypeMatrix<< ; *--- Max Number of histories (except Control Rod ones) * Since the CR configurations are variable and recover by GetTechData.c2m, * the user needs to fix the number of history calculations (dmod, tcom, * cbor, etc.) that are defined before the CR ones. *-- INTEGER NbHistWORod := 6 ; *----------------------------------------------------- * Variables *----------------------------------------------------- * Dummy value INTEGER DUMMY := 0 ; * Average Operative (Nominal) conditions REAL dmod_avg ; ! [g.cm-3] REAL tmod_avg ; ! [degC] REAL cbor_avg ; ! [ppm] REAL tcom_avg ; ! [degC] REAL barr_avg ; ! [REAL] * Depletion Conditions REAL dmod ; ! [g.cm-3] REAL tmod ; ! [degC] REAL cbor ; ! [ppm] REAL tcom ; ! [degC] REAL barr ; ! [REAL] * Branch conditions REAL dmod_low dmod_hgh cbor_hgh tcom_low ; * Control Rod Histories/Branches INTEGER NbConfRod ; ! Number of control rod configurations INTEGER idxCR ; REAL valCR ; *====================================================== * AVERAGE OPERATIVE CONDITIONS *------------------------------------------------------ * Recover average operative core condition from GetTechData.c2m *------------------------------------------------------ *--- T/H operative parameters AvgList := GetTechData :: <> <> <> <> 'DEPLPARAMAVG' ; GREP: AvgList :: GETVAL 'dmod' 1 >>dmod_avg<< ; GREP: AvgList :: GETVAL 'cbor' 1 >>cbor_avg<< ; GREP: AvgList :: GETVAL 'tcom' 1 >>tcom_avg<< ; GREP: AvgList :: GETVAL 'tmod' 1 >>tmod_avg<< ; *--- Absorbers configuration * The first value in the 'Rods' array corresponds to the rod * configuration usually selected for the nominal depletion. * If ConfigPyrex <> NONE, the base depletion is performed * with Pyrex inserted. *--- RodList := GetTechData :: <> <> <> <> 'RODLIST' ; GREP: RodList :: GETVAL 'Rods' 1 >>barr_avg<< ; *====================================================== * INITIALISE StepList WITH RodList *------------------------------------------------------ * It accounts for the dependency of the array 'Rods' with the Gestion *------------------------------------------------------ !*! CONTROL ROD CONFIGURATIONS StepList := RodList ; *====================================================== * BURNUP STEPS (EvoNominale) *------------------------------------------------------ * Burnup Step in L_BURNUP structure *------------------------------------------------------ *--- UOX & MOX IF AssType "UOX" = AssType "MOX" = + THEN StepList := UTL: StepList :: CREA 'ListBU' 51 = 9.375 18.75 37.5 75. 112.5 150. 325. 500. 750. 1000. 1500. 2000. 2500. 3000. 4000. 5000. 6000. 7000. 8000. 10000. 12000. 14000. 16000. 18000. 20000. 22000. 24000. 26000. 28000. 30000. 32000. 34000. 36000. 38000. 40000. 42000. 44000. 46000. 48000. 50000. 52000. 54000. 56000. 58000. 60000. 62000. 64000. 66000. 68000. 70000. 72000. ; *--- GADOLINIUM ELSEIF AssType "UGd" = AssType "UGd8" = + THEN StepList := UTL: StepList :: CREA 'ListBU' 328 = 2.34375 4.6875 7.03125 9.375 11.71875 14.0625 16.40625 18.75 23.4375 28.125 32.8125 37.5 46.875 56.25 65.625 75. 84.375 93.75 103.125 112.5 121.875 131.25 140.625 150. 193.75 237.5 281.25 325. 368.75 412.5 456.25 500. 562.5 625. 687.5 750. 812.5 875. 937.5 1000. 1125. 1250. 1375. 1500. 1625. 1750. 1875. 2000. 2125. 2250. 2375. 2500. 2625. 2750. 2875. 3000. 3250. 3500. 3750. 4000. 4250. 4500. 4750. 5000. 5250. 5500. 5750. 6000. 6250. 6500. 6750. 7000. 7250. 7500. 7750. 8000. 8250. 8500. 8750. 9000. 9250. 9500. 9750. 10000. 10250. 10500. 10750. 11000. 11250. 11500. 11750. 12000. 12250. 12500. 12750. 13000. 13250. 13500. 13750. 14000. 14250. 14500. 14750. 15000. 15250. 15500. 15750. 16000. 16250. 16500. 16750. 17000. 17250. 17500. 17750. 18000. 18250. 18500. 18750. 19000. 19250. 19500. 19750. 20000. 20250. 20500. 20750. 21000. 21250. 21500. 21750. 22000. 22250. 22500. 22750. 23000. 23250. 23500. 23750. 24000. 24250. 24500. 24750. 25000. 25250. 25500. 25750. 26000. 26250. 26500. 26750. 27000. 27250. 27500. 27750. 28000. 28250. 28500. 28750. 29000. 29250. 29500. 29750. 30000. 30250. 30500. 30750. 31000. 31250. 31500. 31750. 32000. 32250. 32500. 32750. 33000. 33250. 33500. 33750. 34000. 34250. 34500. 34750. 35000. 35250. 35500. 35750. 36000. 36250. 36500. 36750. 37000. 37250. 37500. 37750. 38000. 38250. 38500. 38750. 39000. 39250. 39500. 39750. 40000. 40250. 40500. 40750. 41000. 41250. 41500. 41750. 42000. 42250. 42500. 42750. 43000. 43250. 43500. 43750. 44000. 44250. 44500. 44750. 45000. 45250. 45500. 45750. 46000. 46250. 46500. 46750. 47000. 47250. 47500. 47750. 48000. 48250. 48500. 48750. 49000. 49250. 49500. 49750. 50000. 50250. 50500. 50750. 51000. 51250. 51500. 51750. 52000. 52250. 52500. 52750. 53000. 53250. 53500. 53750. 54000. 54250. 54500. 54750. 55000. 55250. 55500. 55750. 56000. 56250. 56500. 56750. 57000. 57250. 57500. 57750. 58000. 58250. 58500. 58750. 59000. 59250. 59500. 59750. 60000. 60250. 60500. 60750. 61000. 61250. 61500. 61750. 62000. 62250. 62500. 62750. 63000. 63250. 63500. 63750. 64000. 64250. 64500. 64750. 65000. 65250. 65500. 65750. 66000. 66250. 66500. 66750. 67000. 67250. 67500. 67750. 68000. 68250. 68500. 68750. 69000. 69250. 69500. 69750. 70000. 70500. 71000. 71500. 72000. ; ELSE ECHO "ERROR --- AssType:" AssType "not recognized." ; ABORT: ; ENDIF ; *====================================================== * DEPLETION BURNUP STEPS (MakeBib1BU) *------------------------------------------------------ * 31 steps for SAPHYB and MULTICOMPO (indices 'BurnStep') * Les indices des 31 steps sont differents si il y a du Gadolinium: * - UOX et MOX : de 1 (0 MWj/t) a 52 (72000 MWj/t) * - UGd : de 1 (0 MWj/t) a 329 (72000 MWj/t) *------------------------------------------------------ StepList := UTL: StepList :: CREA 'Burnup' 31 = 0. 9.375 18.75 75. 150. 500. 1000. 2000. 3000. 4000. 6000. 8000. 10000. 12000. 14000. 16000. 18000. 20000. 24000. 28000. 32000. 36000. 40000. 44000. 48000. 52000. 56000. 60000. 64000. 68000. 72000. ; *--- UOX & MOX IF AssType "UOX" = AssType "MOX" = + THEN StepList := UTL: StepList :: CREA 'BurnStep' 31 = 1 2 3 5 7 9 11 13 15 16 18 20 21 22 23 24 25 26 28 30 32 34 36 38 40 42 44 46 48 50 52 ; *--- GADOLINIUM ELSEIF AssType "UGd" = AssType "UGd8" = + THEN StepList := UTL: StepList :: CREA 'BurnStep' 31 = 1 5 9 17 25 33 41 49 57 61 69 77 85 93 101 109 117 125 141 157 173 189 205 221 237 253 269 285 301 317 329 ; ELSE ECHO "ERROR --- AssType:" AssType "not recognized." ; ABORT: ; ENDIF ; *====================================================== * SELF-SHIELDING *------------------------------------------------------ * 9 pas d'evolution avec Autoprotection (EvoNominale) * Same for UOX, MOX and UGd *------------------------------------------------------ StepList := UTL: StepList :: CREA 'ListAutop' 9 = 4000. 8000. 12000. 18000. 24000. 36000. 48000. 60000. 72000. ; *====================================================== * BRANCH STRUCTURE *------------------------------------------------------ * By default an identical branch structure is defined for * nominal and off/nominal depletions. * As an example, this is explained by the fact that with * regards of the concatenation of single history PMAX files * in a multi-history PMAX, it works only with single histories * having identical branch structures. * However, different branch structures can be defined for each * nominal/off-nominal depletion : it is sufficient to delete * the block in StepList using UTL:, and to define a new * block with an identical name, for the case of interest. * Example : * StepList := UTL: StepList :: * DEL 'Rods' * CREA 'Rods' 2 = * <> <> * ; *----------------------------------------------------- !REAL tcomb := 547.0 32.0 - 1.8 / ; REAL tcomb := 286.0 ; *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * N-MATRIX * *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* IF TypeMatrix "N" = THEN ECHO "The choosen matrix is : N-MATRIX " ; !*! DENSITY MODERATOR StepList := UTL: StepList :: CREA 'DensModo' 8 = .50 .64 .68 .71 .74 .82 .90 1. ; !*! BORON CONCENTRATION StepList := UTL: StepList :: CREA 'ConcBore' 6 = 0. 600. 1200. 1800. 2400. 3000. ; !*! FUEL TEMPERATURE StepList := UTL: StepList :: CREA 'TempComb' 5 = 50. 286. 650. 1400. 2200. ; *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * T-MATRIX * *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ELSEIF TypeMatrix "T" = THEN ECHO "The choosen matrix is : T-MATRIX " ; !*! DENSITY MODERATOR StepList := UTL: StepList :: CREA 'DensModo' 2 = .74 .82 ; !*! BORON CONCENTRATION StepList := UTL: StepList :: CREA 'ConcBore' 3 = 600. 1200. 1800. ; !*! FUEL TEMPERATURE StepList := UTL: StepList :: CREA 'TempComb' 1 = <> ; *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * PARCS_BEAVRS-MATRIX * *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * Branch structure used by A. Ward for BEAVRS and Watts Bar *--- ELSEIF TypeMatrix "PAR-BEAV" = THEN ECHO "The choosen matrix is : PARCS (BEAVRS AND WATTS BAR) MATRIX " ; !*! DEPLETION PARAMETERS EVALUATE dmod_avg := 0.71690 ; EVALUATE cbor_avg := 500.0 ; EVALUATE barr_avg := 1.0 ; EVALUATE tcom_avg := 526.85 ; !*! DENSITY MODERATOR StepList := UTL: StepList :: CREA 'DensModo' 3 = 0.64470 <> 0.76981 ; !*! BORON CONCENTRATION StepList := UTL: StepList :: CREA 'ConcBore' 3 = 0.0 <> 1500.0 ; !*! FUEL TEMPERATURE StepList := UTL: StepList :: CREA 'TempComb' 3 = 281.85 <> 1326.15 ; *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * TEST-MATRIX * *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ELSEIF TypeMatrix "TEST" = THEN ECHO "The choosen matrix is : TEST MATRIX " ; !*! DENSITY MODERATOR EVALUATE dmod_low := dmod_avg .05 - ; EVALUATE dmod_hgh := dmod_avg .04 + ; StepList := UTL: StepList :: CREA 'DensModo' 3 = <> <> <> ; !*! BORON CONCENTRATION EVALUATE cbor_hgh := cbor_avg 2. * ; StepList := UTL: StepList :: CREA 'ConcBore' 2 = <> <> ; !*! FUEL TEMPERATURE EVALUATE tcom_low := tmod_avg 20. - ; StepList := UTL: StepList :: CREA 'TempComb' 2 = <> <> ; !*! CONTROL ROD COMPOSITION StepList := UTL: StepList :: DEL 'Rods' CREA 'Rods' 1 = 1. ; ELSEIF TypeMatrix "DUMMY" = THEN ECHO "WARNING --- TypeMatrix:" TypeMatrix "is a dummy value" ; ECHO "WARNING --- The matrix parameters are not created" ; ELSE ECHO "ERROR --- TypeMatrix:" TypeMatrix "not recognized." ; ABORT: ; ENDIF ; *--- INITIALISE DEPLETION PARAMETERS EVALUATE dmod tmod cbor tcom barr := dmod_avg tmod_avg cbor_avg tcom_avg barr_avg ; *======================================================* * * * BASE DEPLETION * * * *======================================================* IF NumHistCal 0 = THEN ECHO "$ BASE DEPLETION selected (No. " NumHistCal ")" ; *======================================================* * * * OFF-NOMINAL DEPLETIONS * * (HISTORIES) * * * *======================================================* ELSEIF NumHistCal 0 > THEN ECHO "$ OFF-NOMINAL DEPLETION selected (No. " NumHistCal ")" ; IF NumHistCal 1 = THEN !======================================================* ! HISTORY No. 1 (DMOD 1) * !------------------------------------------------------* ! https://webbook.nist.gov/chemistry/fluid/ ! Isobar values (p= 2250 psi = 155.132 bar) : ! DT=+20K -> Drho=-0.050 g/cm3 ! T=293K -> rho=1.005 g/cm3 !------------------------------------------------------* EVALUATE dmod := dmod_avg .05 - ; ELSEIF NumHistCal 2 = THEN !======================================================* ! HISTORY No. 2 (DMOD 2) * !------------------------------------------------------* ! https://webbook.nist.gov/chemistry/fluid/ ! Isobar values (p= 2250 psi = 155.132 bar) : ! DT=-20K -> Drho=+0.040 g/cm3 !------------------------------------------------------* EVALUATE dmod := dmod_avg .04 + ; ELSEIF NumHistCal 3 = THEN !======================================================* ! HISTORY No. 3 (CBOR 1) * !------------------------------------------------------* EVALUATE cbor := cbor_avg 2. * ; ELSEIF NumHistCal 4 = THEN !======================================================* ! HISTORY No. 4 (CBOR 2) * !------------------------------------------------------* EVALUATE cbor := 150. ; ELSEIF NumHistCal 5 = THEN !======================================================* ! HISTORY No. 5 (TCOM 1) * !------------------------------------------------------* EVALUATE tcom := tmod_avg 20. - ; ELSEIF NumHistCal 6 = THEN !======================================================* ! HISTORY No. 6 (TCOM 2) * !------------------------------------------------------* EVALUATE tcom := 1500. ; ELSEIF NumHistCal NbHistWORod > THEN !======================================================* ! HISTORY No. 7+ (BARR 1+) * !------------------------------------------------------* EVALUATE idxCR := NumHistCal NbHistWORod - 1 + ; ! +1 -> avoid first index -> average GREP: RodList :: GETVAL 'Rods' <> >>valCR<< ; ECHO "$$$$ idxCR : " idxCR " valCR : " valCR ; EVALUATE barr := valCR ; ENDIF ; ENDIF ; *====================================================== * DEPLETION CONDITIONS (EvoNominale.x2m) *------------------------------------------------------ StepList := UTL: StepList :: CREA 'DeplParam' 5 = <> <> <> <> <> ; ECHO "$$$ Summary depletion conditions (No. " NumHistCal ")" ; ECHO " - dmod : " dmod ; ECHO " - cbor : " cbor ; ECHO " - barr : " barr ; ECHO " - tcom : " tcom ; *====================================================== * Print StepList *------------------------------------------------------ ECHO "$$$ Summary StepList $$$" ; UTL: StepList :: DUMP ; *------------------------------------------------------ END: ; QUIT "LIST" .