diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /Donjon/data/Fessenheim.x2m | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/data/Fessenheim.x2m')
| -rw-r--r-- | Donjon/data/Fessenheim.x2m | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/Donjon/data/Fessenheim.x2m b/Donjon/data/Fessenheim.x2m new file mode 100644 index 0000000..1b4696a --- /dev/null +++ b/Donjon/data/Fessenheim.x2m @@ -0,0 +1,217 @@ +*---- +* Nom : Fessenheim.x2m +* Type : fichier DONJON +*---- +* First start-up of Fessenheim-1, 2 and Bugey-2 PWRs, in hot zero power +* state +* Author : V. Salino (IRSN), 02/2021 +* +* Source : +* 'Contribution a l'elaboration et a la qualification d'un schema de +* calcul pour la gestion des reacteurs PWR, a l'aide du systeme Neptune +* Suivi du reacteur Fessenheim 2', E. Kamha, Ph.D. Thesis, Universite +* Paris-Sud Centre d'Orsay, 1981. +* Link : https://inis.iaea.org/ +* collection/NCLCollectionStore/_Public/18/076/18076909.pdf +* See also : +* - 'Incertitudes et ajustements de donnees nucleaires au moyen de +* methodes deterministes, probabilistes et de mesures effectuees sur +* des reacteurs a eau sous pression', V. Salino, Ph.D. Thesis, École +* Polytechnique de Montreal, 2022. +* Link : https://publications.polymtl.ca/10545/ +* - https://github.com/IRSN/SalinoPhD +*---- +* Definition STRUCTURES, MODULES et PROCEDURES +*---- +SEQ_ASCII aREFL :: FILE './REFL.ascii' ; +SEQ_ASCII aUOX210 :: FILE './UOX210.ascii' ; +SEQ_ASCII aUOX310 :: FILE './UOX310.ascii' ; +SEQ_ASCII aUOX260_Py12 :: FILE './UOX260_Py12.ascii' ; +SEQ_ASCII aUOX260_Py16 :: FILE './UOX260_Py16.ascii' ; +SEQ_ASCII aUOX260_Py20 :: FILE './UOX260_Py20.ascii' ; +SEQ_ASCII aUOX310_Py12 :: FILE './UOX310_Py12.ascii' ; +SEQ_ASCII aUOX310_Py16 :: FILE './UOX310_Py16.ascii' ; +XSM_FILE REFL UOX210 UOX310 UOX260_Py12 UOX260_Py16 UOX260_Py20 + UOX310_Py12 UOX310_Py16 ; +LINKED_LIST GeoRes Track System Flux Matex MacroTot Fmap MicroFuel + GeoCoeur Thermo List Idetec PowerARO ActivARO ; +MODULE TRIVAT: TRIVAA: FLUD: GREP: DELETE: END: FLPOW: RESINI: THM: + NSST: NSSF: ; +PROCEDURE InterpCP0 GetTechData GeoCoreCP0 ThermaExpans + DetFissChamb ; +PROCEDURE assertS ; + +*---- +* Retrieve cross sections from ASCII files +*---- +REFL := aREFL ; +UOX210 := aUOX210 ; +UOX310 := aUOX310 ; +UOX260_Py12 := aUOX260_Py12 ; +UOX260_Py16 := aUOX260_Py16 ; +UOX260_Py20 := aUOX260_Py20 ; +UOX310_Py12 := aUOX310_Py12 ; +UOX310_Py16 := aUOX310_Py16 ; +*---- +* Modelling parameters +*---- +STRING Gestion := 'FSH' ; ! FSH=Fessenheim +REAL CB := 1325.0 ; ! ppm +*---- +* Choice of reflector modelling : +* - TousPaliers +* - MargCpy +* - MargCpyAdjus +*---- +STRING TypeRefl := "TousPaliers" ; +STRING CondLimite ; +*---- +* If and only if TousPaliers is being used : +* Palier : +* - CP0_900 +* MethodRefl : +* - Lefebvre-Leb +* - Koebke-a +*---- +STRING Palier := "CP0_900" ; +STRING MethodRefl := "Lefebvre-Leb" ; + +ECHO "TypeRefl =" TypeRefl ; +ECHO "Palier =" Palier ; +ECHO "MethodRefl =" MethodRefl ; + +*---- +* Geometry description +*---- +REAL dx z1 z2 ; +GeoCoeur GeoRes Matex Fmap := GeoCoreCP0 :: >>dx<< >>z1<< >>z2<< ; + +*---- +* Variables for thermalhydraulics +*---- +REAL CoreFlowRate CoreFlowByp ; +REAL Tinlet OpePressure dmod tfuel tclad ; +REAL Prel Ptot Pnom ; (* MWth *) +REAL NbAss NbFuelPin NbPinAssXY ; +REAL rTubeEx rCladFuel eCladFuel rFuel ; + +List := GetTechData :: <<Gestion>> 'UOX' 0 'None' 'DEPLPARAMAVG' ; +GREP: List :: GETVAL 'dmod' 1 >>dmod<< ; +GREP: List :: GETVAL 'tmod' 1 >>Tinlet<< ; +GREP: List :: GETVAL 'tfuel' 1 >>tfuel<< ; +EVALUATE tclad := 0.12 tfuel * 0.88 Tinlet * + ; +List := DELETE: List ; +List := GetTechData :: <<Gestion>> 'UOX' 0 'None' 'GENERAL' ; +GREP: List :: GETVAL 'OpePressure' 1 >>OpePressure<< ; +GREP: List :: GETVAL 'CoreFlowRate' 1 >>CoreFlowRate<< ; +GREP: List :: GETVAL 'CoreFlowByp' 1 >>CoreFlowByp<< ; +GREP: List :: GETVAL 'PowMWth' 1 >>Pnom<< ; +GREP: List :: GETVAL 'NbAss' 1 >>NbAss<< ; +GREP: List :: GETVAL 'NbFuelPin' 1 >>NbFuelPin<< ; +GREP: List :: GETVAL 'NbPinAssXY' 1 >>NbPinAssXY<< ; +List := DELETE: List ; +List := GetTechData :: <<Gestion>> 'UOX' 0 'None' 'DISTANCES' ; +GREP: List :: GETVAL 'rTubeEx' 1 >>rTubeEx<< ; +GREP: List :: GETVAL 'rCladFuel' 1 >>rCladFuel<< ; +GREP: List :: GETVAL 'eCladFuel' 1 >>eCladFuel<< ; +GREP: List :: GETVAL 'rFuel' 1 >>rFuel<< ; +List := DELETE: List ; + +REAL rCladFuelIn := rCladFuel eCladFuel - ; + +REAL DUMMY_R0 := 0.0 ; +ThermaExpans :: <<rTubeEx>> "Zr4" <<Tinlet>> "Distance" 'TIH' + <<DUMMY_R0>> <<DUMMY_R0>> + >>rTubeEx<< ; +ThermaExpans :: <<rCladFuel>> "Zr4" <<tclad>> "Distance" 'TIH' + <<DUMMY_R0>> <<DUMMY_R0>> + >>rCladFuel<< ; +ThermaExpans :: <<rCladFuelIn>> "Zr4" <<tclad>> "Distance" 'TIH' + <<DUMMY_R0>> <<DUMMY_R0>> + >>rCladFuelIn<< ; +ThermaExpans :: <<rFuel>> "UO2" <<tfuel>> "Distance" 'TIH' + <<DUMMY_R0>> <<DUMMY_R0>> + >>rFuel<< ; + +* The unit of GetTechData is centimeters, while THM expects meters. +EVALUATE rTubeEx := rTubeEx 100.0 / ; +EVALUATE rCladFuel := rCladFuel 100.0 / ; +EVALUATE rCladFuelIn := rCladFuelIn 100.0 / ; +EVALUATE rFuel := rFuel 100.0 / ; + +REAL NbTube := NbPinAssXY 2.0 ** NbFuelPin - ; +REAL Tot_tub := rTubeEx 2.0 ** $Pi_R * NbTube * ; ! m2 +REAL Tot_pin := rCladFuel 2.0 ** $Pi_R * NbFuelPin * ; ! m2 +REAL sass := dx 100.0 / 2.0 ** ; ! m2 +REAL asssect := sass Tot_tub - Tot_pin - ; ! m2 +REAL coresect := NbAss asssect * ; ! m2 + +* The 2x2 meshing implies dividing the number of rods by the same +* amount, in order to correctly calculate the area available for the +* hydraulic flow. +EVALUATE NbFuelPin := NbFuelPin 4.0 / ; +EVALUATE NbTube := NbTube 4.0 / ; + +* Convert flow rate from [kg/h] (from GetTechData) into [m3/h] (for +* THM). Also, remove the bypass flow. +EVALUATE CoreFlowRate := CoreFlowRate 1000.0 * ! [kg/h] to [g/h] + dmod / ! [g/h] to [cm3/h] + 1.0E+6 / ! [cm3/g] to [m3/h] + 1.0 CoreFlowByp - * ; + +* Convert temperatures into Kelvin, for proper THM usage and proper +* cross section interpolation +EVALUATE Tinlet := Tinlet 273.15 + ; +EVALUATE tfuel := tfuel 273.15 + ; + +*---- +* Variables used for hot zero power physics testing +*---- +Fmap := RESINI: Fmap :: SET-PARAM 'C-BORE' <<CB>> + SET-PARAM 'D-COOL' <<dmod>> + SET-PARAM 'T-FUEL' <<tfuel>> ; + +MicroFuel MacroTot Matex Fmap := InterpCP0 Matex Fmap + REFL UOX210 UOX310 UOX260_Py12 UOX260_Py16 UOX260_Py20 UOX310_Py12 + UOX310_Py16 :: <<CB>> <<TypeRefl>> <<Palier>> <<MethodRefl>> ; + +STRING Solver := 'ANM' ; +*STRING Solver := 'FiniteElem' ; + +IF Solver 'ANM' = THEN + Track := NSST: GeoRes :: + TITLE 'REP900 TESTCASE' + MAXR 1000000 ANM ; + Flux := NSSF: Track MacroTot :: + EDIT 2 NUPD 100 3 1.0E-6 EXTE 500 1.0E-5 LEAK quadratic ; +ELSEIF Solver 'FiniteElem' = THEN + Track := TRIVAT: GeoRes :: + MAXR 1000000 DUAL 2 3 ; + System := TRIVAA: MacroTot Track ; + Flux := FLUD: System Track :: + EDIT 2 ADI 4 EXTE 1.0E-6 ACCE 5 3 ; + System := DELETE: System ; +ENDIF ; + +EVALUATE Prel := 1.0E-9 ; ! 0% PN +EVALUATE Ptot := Pnom Prel * ; + +PowerARO Fmap := FLPOW: Fmap Flux Track Matex :: + EDIT 2 PTOT <<Ptot>> PRINT DISTR POWER ; + +Thermo Fmap := THM: Fmap :: + EDIT 0 + ASSMB <<NbFuelPin>> <<NbTube>> + CWSECT <<coresect>> <<CoreFlowRate>> + INLET <<OpePressure>> <<Tinlet>> + RADIUS <<rFuel>> <<rCladFuelIn>> <<rCladFuel>> <<rTubeEx>> ; + +ActivARO := DetFissChamb Track Flux MicroFuel Fmap :: + <<dx>> <<z1>> <<z2>> ; + +assertS Flux :: 'K-EFFECTIVE' 1 1.00567544 ; +assertS ActivARO :: 'RESPON' 5 32.38300 ; + +ECHO "test Fessenheim.x2m completed" ; +END: ; +QUIT "LIST" . |
