*---- * 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 <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> 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 :: <> ; *-- * set global parameters: *-- FMAP := RESINI: FMAP :: EDIT 2 SET-PARAM 'T-FUEL' <> SET-PARAM 'T-COOL' <> SET-PARAM 'D-FUEL' <> SET-PARAM 'D-COOL' <> 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 :: <
> <> ; *-- * THM single-stage calculation *-- REAL t := -1.0 ; THM FMAP := THM: FMAP :: EDIT 9 TIME <> (* 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 <> <> 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 <> <
> 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: ;