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 --- Dragon/data/ErmBeavrsPwrRefl_proc/CreaStepList.c2m | 532 +++++++++++++++++++++ 1 file changed, 532 insertions(+) create mode 100644 Dragon/data/ErmBeavrsPwrRefl_proc/CreaStepList.c2m (limited to 'Dragon/data/ErmBeavrsPwrRefl_proc/CreaStepList.c2m') diff --git a/Dragon/data/ErmBeavrsPwrRefl_proc/CreaStepList.c2m b/Dragon/data/ErmBeavrsPwrRefl_proc/CreaStepList.c2m new file mode 100644 index 0000000..c1c7b1e --- /dev/null +++ b/Dragon/data/ErmBeavrsPwrRefl_proc/CreaStepList.c2m @@ -0,0 +1,532 @@ +*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" . -- cgit v1.2.3