blob: 6dc624b5df9da540f7205bdfef8f8ac328f31a0e (
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
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
|
* DRAGON MAIN INPUT DECK
***********************************************************************
* Purpose:
* compute cross-sections for 2-D cell of CANDU reactor with the
* feedback model using CFC.
* ~40 minutes execution time
*
* author:
* MAJID FASSI FEHRI 09/08/28
* CNSC
*
* Modified:
* Richard CHAMBON 11/03/23
* Ecole Polytechnique
*
* Notes:
* The properties values, which are perturbed for the FBM, are provided
* in the "PERTRB.c2m" and "POWER.c2m" files and the other ones in the
* "LIBRY.c2m" file. All the dimensions for the 2D cell geometry are
* given in the "GEOMTY.c2m" file, except for the PT creep values,
* which are in the "CREEP.c2m" file.
*
* Nburn := 45 ; Number of burnup steps
* MaxBurn := 30000.0 ; Maximum burnup (MWd/t)
*
***********************************************************************
MODULE END: CFC: DELETE: ;
PROCEDURE GEOMTY LIBRY FLUX FLUXP PERTRB POWER ;
PROCEDURE assertS ;
SEQ_BINARY TLINES TLINEF ;
LINKED_LIST TRKS TRKF COMPO COMPOR LIBR EDITN BURNUP EDIREF BRNREF
CFLUX ;
SEQ_ASCII CALC1 CALC2 CALC3 CALC4 CALC5 CALC6 CALC7
CALC8 CALC9 CALC10 CALC11 CALC12 CALC13 CALC14
CALC15 CALC16 CALC17 CALC18 CALC19 CALC20 CALC21
CALC22 CALC23 CALC24 CALC25 CALC26 CALC27 CALC28 ;
SEQ_ASCII FCALC1 FCALC2 FCALC3 FCALC4 FCALC5 FCALC6 FCALC7
FCALC8 FCALC9 FCALC10 FCALC11 FCALC12 FCALC13 FCALC14
FCALC15 FCALC16 FCALC17 FCALC18 FCALC19 FCALC20 FCALC21
FCALC22 FCALC23 FCALC24 FCALC25 FCALC26 FCALC27 FCALC28
;
SEQ_ASCII FBMDT1 FBMDT2 FBMDT3 FBMDT4 FBMDT5 FBMDT6 FBMDT7
FBMDT8 FBMDT9 FBMDT10 FBMDT11 FBMDT12 FBMDT13 FBMDT14
FBMDT15 FBMDT16 FBMDT17 FBMDT18 FBMDT19 FBMDT20 FBMDT21
FBMDT22 FBMDT23 FBMDT24 FBMDT25 FBMDT26 FBMDT27 FBMDT28
FBMDT29 FBMDT30 FBMDT31 FBMDT32 FBMDT33 FBMDT34 FBMDT35
;
LINKED_LIST ECALC1 ECALC2 ECALC3 ECALC4 ECALC5 ECALC6 ECALC7
ECALC8 ECALC9 ECALC10 ECALC11 ECALC12 ECALC13 ECALC14
ECALC15 ECALC16 ECALC17 ECALC18 ECALC19 ECALC20 ECALC21
ECALC22 ECALC23 ECALC24 ECALC25 ECALC26 ECALC27 ECALC28
CSDATA ;
SEQ_ASCII FBMDT0 :: FILE './FBMDT0.txt' ;
SEQ_ASCII AEDIT ABURN ;
INTEGER CALCU ICREEP Nburn ;
REAL MaxBurn ;
REAL TFuel TCool TMode DCool DMode
PCool PMode Bor Xe Sm Np Gad ;
REAL TFuelU TFuelD TCoolU TCoolD TModeU TModeD DCoolU DCoolD
DModeU DModeD PModeD BorU XeU SmU NpU ;
REAL PModecfc PModeDcfc ;
REAL POW PowRef ;
REAL PowBundRef PowBundU PowBundI PowBundD ;
STRING FBMNAM ;
PERTRB :: 0
>>TFuel<< >>TCool<< >>TMode<< >>DCool<< >>DMode<<
>>PCool<< >>PMode<< >>Bor<< >>Xe<< >>Sm<< >>Np<<
>>Gad<<
>>TFuelU<< >>TFuelD<< >>TCoolU<< >>TCoolD<< >>TModeU<< >>TModeD<<
>>DCoolU<< >>DCoolD<< >>DModeU<< >>DModeD<< >>PModeD<<
>>BorU<< >>XeU<< >>SmU<< >>NpU<< ;
* Purity in fraction (instead of%) in CFC:
EVALUATE PModecfc := PMode 100.0 / ;
EVALUATE PModeDcfc := PModeD 100.0 / ;
POWER :: 0
>>POW<< >>PowRef<<
>>PowBundRef<< >>PowBundU<< >>PowBundI<< >>PowBundD<< ;
ECHO TFuel TCool TMode DCool DMode
PCool PMode Bor Xe Sm Np Gad ;
ECHO TFuelU TFuelD TCoolU TCoolD TModeU TModeD DCoolU DCoolD
DModeU DModeD PModeD BorU XeU SmU NpU ;
ECHO POW PowRef ;
ECHO PowBundRef PowBundU PowBundI PowBundD ;
* Number of burnup steps
EVALUATE Nburn := 3 ; (*replace by 45*)
* Maximum burnup (MWd/t)
EVALUATE MaxBurn := 10000.0 ; (*replace by 30000.0*)
EVALUATE ICREEP := 0 ;
* Calculation between 1 & 21: nominal & pertubated, fuel & reflector
EVALUATE CALCU := 1 ;
TRKS TRKF TLINES TLINEF := GEOMTY :: <<ICREEP>> ;
WHILE CALCU 22 < DO
ECHO "CALCULATION " CALCU " STARTED, Creep = " ICREEP ;
LIBR := LIBRY :: <<CALCU>> ;
* Reference case & modified power cases
IF CALCU 1 = CALCU 18 > + THEN
EDITN COMPO COMPOR LIBR BURNUP := FLUX
LIBR TRKS TRKF TLINES TLINEF ::
<<CALCU>> <<Nburn>> <<MaxBurn>> ;
* Perturbated cases
ELSE
EDITN COMPO COMPOR LIBR := FLUXP
LIBR EDIREF BRNREF TRKS TRKF TLINES TLINEF ::
<<CALCU>> <<Nburn>> ;
ENDIF ;
* Save reference case
IF CALCU 1 = THEN
BRNREF := BURNUP ;
EDIREF := EDITN ;
ENDIF ;
* Save COMPO for CFC: module later on
IF CALCU 1 = THEN
ECALC1 := COMPO ;
ECALC22 := COMPOR ;
CFLUX := EDITN :: STEP UP "REF-CASE0001" STEP UP MFLUXG
STEP UP CFLUX ;
assertS CFLUX :: 'K-INFINITY' 1 1.120110 ;
CFLUX := DELETE: CFLUX ;
CFLUX := EDITN :: STEP UP "REF-CASE0003" STEP UP MFLUXG
STEP UP CFLUX ;
assertS CFLUX :: 'K-INFINITY' 1 0.9561486 ;
CFLUX := DELETE: CFLUX ;
ELSEIF CALCU 2 = THEN
ECALC2 := COMPO ;
ELSEIF CALCU 3 = THEN
ECALC3 := COMPO ;
ELSEIF CALCU 4 = THEN
ECALC4 := COMPO ;
ELSEIF CALCU 5 = THEN
ECALC5 := COMPO ;
ELSEIF CALCU 6 = THEN
ECALC6 := COMPO ;
ECALC23 := COMPOR ;
ELSEIF CALCU 7 = THEN
ECALC7 := COMPO ;
ECALC24 := COMPOR ;
ELSEIF CALCU 8 = THEN
ECALC8 := COMPO ;
ELSEIF CALCU 9 = THEN
ECALC9 := COMPO ;
ELSEIF CALCU 10 = THEN
ECALC10 := COMPO ;
ECALC25 := COMPOR ;
ELSEIF CALCU 11 = THEN
ECALC11 := COMPO ;
ECALC26 := COMPOR ;
ELSEIF CALCU 12 = THEN
ECALC12 := COMPO ;
ECALC27 := COMPOR ;
ELSEIF CALCU 13 = THEN
ECALC13 := COMPO ;
ECALC28 := COMPOR ;
ELSEIF CALCU 14 = THEN
ECALC14 := COMPO ;
ELSEIF CALCU 15 = THEN
ECALC15 := COMPO ;
ELSEIF CALCU 16 = THEN
ECALC16 := COMPO ;
ELSEIF CALCU 17 = THEN
ECALC17 := COMPO ;
ELSEIF CALCU 18 = THEN
ECALC18 := COMPO ;
ELSEIF CALCU 19 = THEN
ECALC19 := COMPO ;
ELSEIF CALCU 20 = THEN
ECALC20 := COMPO ;
ELSEIF CALCU 21 = THEN
ECALC21 := COMPO ;
ENDIF ;
* Cleaning for next CALCU
EDITN COMPO COMPOR LIBR := DELETE: EDITN COMPO COMPOR LIBR ;
IF CALCU 1 = CALCU 18 > + THEN
BURNUP := DELETE: BURNUP ;
ENDIF ;
ECHO "CALCULATION " CALCU " FINISHED, Creep = " ICREEP ;
EVALUATE CALCU := CALCU 1 + ;
* end for CALCU
ENDWHILE ;
* Save COMPO in ASCII for CREEP = 0 for FBM: validation.
IF ICREEP 0 = THEN
CALC1 := ECALC1 ;
CALC2 := ECALC2 ;
CALC3 := ECALC3 ;
CALC4 := ECALC4 ;
CALC5 := ECALC5 ;
CALC6 := ECALC6 ;
CALC7 := ECALC7 ;
CALC8 := ECALC8 ;
CALC9 := ECALC9 ;
CALC10 := ECALC10 ;
CALC11 := ECALC11 ;
CALC12 := ECALC12 ;
CALC13 := ECALC13 ;
CALC14 := ECALC14 ;
CALC15 := ECALC15 ;
CALC16 := ECALC16 ;
CALC17 := ECALC17 ;
CALC18 := ECALC18 ;
CALC19 := ECALC19 ;
CALC20 := ECALC20 ;
CALC21 := ECALC21 ;
CALC22 := ECALC22 ;
CALC23 := ECALC23 ;
CALC24 := ECALC24 ;
CALC25 := ECALC25 ;
CALC26 := ECALC26 ;
CALC27 := ECALC27 ;
CALC28 := ECALC28 ;
ABURN := BRNREF ;
AEDIT := EDIREF ;
ENDIF ;
* Building FBM database
EVALUATE FBMNAM := "C6_FBM_CRP" ICREEP I_TO_S + ;
CSDATA := CFC:
ECALC1 ECALC2 ECALC3 ECALC4 ECALC5 ECALC6 ECALC7
ECALC8 ECALC9 ECALC10 ECALC11 ECALC12 ECALC13 ECALC14
ECALC15 ECALC16 ECALC17 ECALC18 ECALC19 ECALC20 ECALC21
ECALC22 ECALC23 ECALC24 ECALC25 ECALC26 ECALC27 ECALC28 ::
EDIT 0
INFOR <<FBMNAM>> DNAME FBMDATA
PWR <<PowBundRef>> <<PowBundU>> <<PowBundI>> <<PowBundD>>
TCOOL <<TCool>> <<TCoolU>> <<TCoolD>>
TMODE <<TMode>> <<TModeU>> <<TModeD>>
TFUEL <<TFuel>> <<TFuelU>> <<TFuelD>>
RHOM <<DMode>>
RHOC <<DCool>>
XIR <<PModecfc>> <<PModeDcfc>> ;
* Saving FBM database
FBMDT0 := CSDATA ;
* Cleaning
CSDATA
TRKS TRKF TLINES TLINEF EDIREF BRNREF
ECALC1 ECALC2 ECALC3 ECALC4 ECALC5 ECALC6 ECALC7
ECALC8 ECALC9 ECALC10 ECALC11 ECALC12 ECALC13 ECALC14
ECALC15 ECALC16 ECALC17 ECALC18 ECALC19 ECALC20 ECALC21
ECALC22 ECALC23 ECALC24 ECALC25 ECALC26 ECALC27 ECALC28
:= DELETE:
CSDATA
TRKS TRKF TLINES TLINEF EDIREF BRNREF
ECALC1 ECALC2 ECALC3 ECALC4 ECALC5 ECALC6 ECALC7
ECALC8 ECALC9 ECALC10 ECALC11 ECALC12 ECALC13 ECALC14
ECALC15 ECALC16 ECALC17 ECALC18 ECALC19 ECALC20 ECALC21
ECALC22 ECALC23 ECALC24 ECALC25 ECALC26 ECALC27 ECALC28 ;
END: ;
QUIT .
|