summaryrefslogtreecommitdiff
path: root/Donjon/data/pulseTHM_0d.x2m
blob: 902f01290631b6fce64514621c2ab119e066e69d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
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: ;