summaryrefslogtreecommitdiff
path: root/Donjon/data/Fessenheim.x2m
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 /Donjon/data/Fessenheim.x2m
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/data/Fessenheim.x2m')
-rw-r--r--Donjon/data/Fessenheim.x2m217
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" .