diff options
Diffstat (limited to 'Donjon/data/pulseTHM_0d.x2m')
| -rw-r--r-- | Donjon/data/pulseTHM_0d.x2m | 210 |
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: ; |
