summaryrefslogtreecommitdiff
path: root/Donjon/data/pulseTHM_0d.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/pulseTHM_0d.x2m
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/data/pulseTHM_0d.x2m')
-rw-r--r--Donjon/data/pulseTHM_0d.x2m210
1 files changed, 210 insertions, 0 deletions
diff --git a/Donjon/data/pulseTHM_0d.x2m b/Donjon/data/pulseTHM_0d.x2m
new file mode 100644
index 0000000..902f012
--- /dev/null
+++ b/Donjon/data/pulseTHM_0d.x2m
@@ -0,0 +1,210 @@
+*----
+* Name : pulseTHM_0d.x2m
+* Author : Alain Hebert (2018)
+*
+* SINGLE CHANNEL MULTIPHYSICS CALCULATION FOR A PULSE REACTOR
+* THM - POINT-KINETICS
+*----
+* Define STRUCTURES and MODULES used
+*----
+LINKED_LIST PULSE MATEX FMAP THM ;
+MODULE USPLIT: GEO: RESINI: THM: PKINI: PKINS: ABORT: END: ;
+
+REAL keffn power ratiox dt2 ratiop ;
+
+REAL Tfuel := 318.20357 ; (*fuel temperature in pool locations (K)*)
+REAL Tcool := 318.15044 ; (*coolant temperature in pool locations (K)*)
+REAL Dfuel := 9.7413951 ; (*fuel density in pool locations (g/cc)*)
+REAL Dcool := 0.9903227 ; (*coolant density in pool locations (g/cc)*)
+* assuming 67 W/fuel channel in the steady-state PULSE core
+REAL powi := 67.0E-6 ; (*Reference core power (MW)*)
+REAL pow1 pow2 test ;
+REAL powmax := 0.0 ;
+REAL dpow := 0.05 ; (*maximum of power log increment per stage (MW)*)
+
+REAL maxh := 90.0 ;
+REAL z1 := maxh 20.0 / ;
+REAL z2 := maxh 20.0 / z1 + ;
+REAL z3 := maxh 20.0 / z2 + ;
+REAL z4 := maxh 20.0 / z3 + ;
+REAL z5 := maxh 20.0 / z4 + ;
+REAL z6 := maxh 20.0 / z5 + ;
+REAL z7 := maxh 20.0 / z6 + ;
+REAL z8 := maxh 20.0 / z7 + ;
+REAL z9 := maxh 20.0 / z8 + ;
+REAL z10 := maxh 20.0 / z9 + ;
+REAL z11 := maxh 20.0 / z10 + ;
+REAL z12 := maxh 20.0 / z11 + ;
+REAL z13 := maxh 20.0 / z12 + ;
+REAL z14 := maxh 20.0 / z13 + ;
+REAL z15 := maxh 20.0 / z14 + ;
+REAL z16 := maxh 20.0 / z15 + ;
+REAL z17 := maxh 20.0 / z16 + ;
+REAL z18 := maxh 20.0 / z17 + ;
+REAL z19 := maxh 20.0 / z18 + ;
+REAL z20 := maxh 20.0 / z19 + ;
+PROCEDURE PfmapPULSE PkinPULSE ;
+PROCEDURE assertS ;
+
+*--
+* geometry construction:
+*--
+PULSE := GEO: :: CAR3D 1 1 20
+ EDIT 2
+ X- REFL X+ REFL
+ Y- REFL Y+ REFL
+ Z- VOID Z+ VOID
+ MESHX 0.0 1.2584422 SPLITX 2
+ MESHY 0.0 1.2584422 SPLITY 2
+ MESHZ 0.0 <<z1>> <<z2>> <<z3>> <<z4>> <<z5>> <<z6>> <<z7>> <<z8>>
+ <<z9>> <<z10>> <<z11>> <<z12>> <<z13>> <<z14>> <<z15>> <<z16>>
+ <<z17>> <<z18>> <<z19>> <<z20>>
+ MIX
+ PLANE 1
+ 1
+ PLANE 2 SAME 1
+ PLANE 3 SAME 1
+ PLANE 4 SAME 1
+ PLANE 5 SAME 1
+ PLANE 6 SAME 1
+ PLANE 7 SAME 1
+ PLANE 8 SAME 1
+ PLANE 9 SAME 1
+ PLANE 10 SAME 1
+ PLANE 11 SAME 1
+ PLANE 12 SAME 1
+ PLANE 13 SAME 1
+ PLANE 14 SAME 1
+ PLANE 15 SAME 1
+ PLANE 16 SAME 1
+ PLANE 17 SAME 1
+ PLANE 18 SAME 1
+ PLANE 19 SAME 1
+ PLANE 20 SAME 1
+;
+
+*--
+* link material index and geometry
+*--
+PULSE MATEX := USPLIT: PULSE :: EDIT 0 NGRP 1
+ MAXR 80
+ NFUEL 1 FMIX 1 ;
+
+*--
+* define fuelmap
+*--
+FMAP MATEX := PfmapPULSE MATEX :: <<powi>> ;
+
+*--
+* set global parameters:
+*--
+FMAP := RESINI: FMAP :: EDIT 2
+ SET-PARAM 'T-FUEL' <<Tfuel>>
+ SET-PARAM 'T-COOL' <<Tcool>>
+ SET-PARAM 'D-FUEL' <<Dfuel>>
+ SET-PARAM 'D-COOL' <<Dcool>>
+ SET-PARAM 'B-ALPHA' 0.0
+ SET-PARAM 'P-HE3' 11.0
+ ;
+
+*--
+* call PKINI to initialize the point kinetic calculation
+*--
+REAL dt := 3.0E-4 ;
+FMAP := PkinPULSE FMAP :: <<dt>> <<powi>> ;
+
+*--
+* THM single-stage calculation
+*--
+REAL t := -1.0 ;
+THM FMAP := THM: FMAP ::
+ EDIT 9
+ TIME <<t>> (* s *)
+ FPUISS 0.93
+ INLET 330000.0 (*Pa*) 318.15 (*K*)
+ INLET-Q 8.0E-5 (*m2*) 0.375 (*inlet mass flow rate kg/s*)
+ CRITFL 8.5E6 (* W/m^2 *)
+ ASSMB 1 0
+ RADIUS 4.5E-3 4.6E-3 5.0E-3 5.0E-3 (* m *)
+ RODMESH 15 20
+ MONO
+ RAD-PROF
+ ! SPRC radial power profile
+ 0.0 0.97
+ 2.8776564975E-3 0.97
+ 3.8067819209E-3 1.05
+ 4.0696022599E-3 1.12
+ 4.3164847458E-3 1.18
+ 4.4348361582E-3 1.20
+ 4.5E-3 1.22
+ ;
+
+EVALUATE pow1 := powi ;
+INTEGER istep := 0 ;
+
+WHILE t 0.3 <= DO
+ EVALUATE istep := istep 1 + ;
+ ECHO "istep=" istep "t=" t "dt=" dt ;
+
+*--
+* perform a time stage:
+*--
+ EVALUATE ratiop := 2.0 ;
+ WHILE ratiop 1.0 > DO
+ EVALUATE dt2 := dt ;
+
+ FMAP := PKINS: FMAP ::
+ EDIT 2
+ TIME <<t>> <<dt2>> PICK >>pow2<<
+ ;
+ EVALUATE ratiop := pow1 LN dpow / pow2 LN dpow / - ABS ;
+ IF ratiop 1.0 > THEN
+ EVALUATE dt := dt 0.5 * 2 _TRIM_ ;
+ ENDIF ;
+ ECHO "after PKINS: ratiop=" ratiop "dt=" dt ;
+ ENDWHILE ;
+ ECHO "#PKINS#:" istep t pow2 ;
+ EVALUATE powmax := powmax pow2 _MAX_ ;
+
+ THM FMAP := THM: THM FMAP ::
+ EDIT 4
+ TIME <<t>> <<dt>>
+ PICK >>ratiox<<
+ ;
+
+*--
+* time step control:
+*--
+ EVALUATE ratiop := pow1 LN dpow / pow2 LN dpow / - ABS ;
+ ECHO "ratiop=" ratiop "ratiox=" ratiox ;
+ EVALUATE ratiox := ratiop ratiox _MAX_ ;
+ IF ratiox 0.0 > THEN
+ EVALUATE test := 0.9 ratiox / 1.2 _MIN_ ;
+ ECHO "test=" test "ratiox=" ratiox ;
+ EVALUATE dt2 := dt test * 2 _TRIM_ ;
+ ELSE
+ EVALUATE dt2 := dt 1.2 * 2 _TRIM_ ;
+ ENDIF ;
+ ECHO "dt2=" dt2 ;
+
+ EVALUATE t := t dt + ;
+ ECHO "previous time step=" dt ;
+ EVALUATE dt := dt2 ;
+ EVALUATE pow1 := pow2 ;
+ ECHO "next time step=" dt "t=" t ;
+ENDWHILE ;
+
+REAL REFVALUE := 13.32290 ;
+REAL DELTA := powmax REFVALUE - REFVALUE / ABS ;
+IF DELTA 1.0E-3 < THEN
+ ECHO "TEST SUCCESSFUL; DELTA=" DELTA ;
+ELSE
+ ECHO "------------" ;
+ ECHO "TEST FAILURE" ;
+ ECHO "------------" ;
+ ECHO "REFERENCE=" REFVALUE " CALCULATED=" powmax ;
+ ABORT: ;
+ENDIF ;
+
+ECHO "test pulseTHM_0d completed" ;
+END: ;