blob: 7a5a8a9e792f18e08ce4d187e1505326f418139f (
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
|
*----
* Nom : rep900.x2m
* Type : fichier DONJON
*
* Parametres Locaux :
* densB1 densite de bore pour le 1er calcul
* densB2 densite de bore pour le 2eme calcul
*
* Options de calcul :
* Splitx Discretisation par assemblage
* Splitz Discretisation axiale
* TypeCal Concentration de bore : "critique" ou "fixe"
*
*----
* Definition STRUCTURES, MODULES et PROCEDURES
*----
LINKED_LIST GeoRes MacroF Track System Flux Cpo L0 Reseau Matex
Lib Macro1 Macro2 Fmap Micro ;
MODULE TRIVAT: TRIVAA: FLUD: GREP: FIND0: MACINI: UTL: NCR:
DELETE: ABORT: END: ;
PROCEDURE GetDim GeoCo SetFuelMap SetParam ;
PROCEDURE assertS ;
SEQ_ASCII _ACompo ;
REAL DELTA REFVALUE ;
*----
* Parametres Locaux
*----
REAL densB1 := 2000.0 ;
REAL densB2 := 0.0 ;
*----
* Options de calcul
*----
INTEGER Splitx Splitz := 2 2 ;
STRING TypeCal := "critique" ;
STRING Dir := "EDI2B" ;
REAL Rcomb1 Rcomb2 Rcomb3 Rcomb4
R_int_TG R_ext_TG R_int_TI R_ext_TI R_int_G R_ext_G
Cote CoteL ! on ne declare pas la lame car c'est fait en dessous
RmodeN1 RmodeN2
R_ext_G2 R_ext_TGm R_ext_TIm
N_U5_UOX N_U5_MOX
N_Pu8 N_Pu9 N_Pu0 N_Pu1 N_Pu2 N_Am1
densU_UOX densU_MOX densPu_MOX
teneur1_Pu teneur2_Pu teneur3_Pu
temp_comb temp_mode dens_mode ;
*----
* Recover the Multicompo
*----
Cpo := _ACompo ;
UTL: Cpo :: DIR ;
*----
* Enchainement du calcul
*----
REAL ORF IRC ORC IRCGT ORCGT ORAG ORAN
IRCA ORCA ORDET ORDETC Lame LPitch Height ;
GetDim ::
>>Rcomb1<< >>Rcomb2<< >>Rcomb3<< >>Rcomb4<<
>>R_int_TG<< >>R_ext_TG<< >>R_int_TI<< >>R_ext_TI<<
>>R_int_G<< >>R_ext_G<< >>Cote<< >>Lame<< >>CoteL<<
>>RmodeN1<< >>RmodeN2<< >>R_ext_G2<< >>R_ext_TGm<< >>R_ext_TIm<<
>>N_U5_UOX<< >>N_U5_MOX<< >>N_Pu8<< >>N_Pu9<< >>N_Pu0<<
>>N_Pu1<< >>N_Pu2<< >>N_Am1<< >>densU_UOX<< >>densU_MOX<<
>>densPu_MOX<< >>teneur1_Pu<< >>teneur2_Pu<< >>teneur3_Pu<<
>>temp_comb<< >>temp_mode<< >>dens_mode<< ;
EVALUATE
ORF IRC ORC IRCGT ORCGT
ORAG ORAN IRCA ORCA
ORDET ORDETC
Lame LPitch Height
:=
Rcomb4 R_int_TG R_ext_TG R_int_TI R_ext_TI
R_int_TG R_ext_TG R_int_TI R_ext_TI
R_int_TG R_ext_TG
Lame Cote 10.0
;
REAL rPavX := 17.0 ; ! assemblage 17 x 17
INTEGER iPavX := 17 ; ! assemblage 17 x 17
REAL dx := rPavX LPitch * 2.0 Lame * + ;
INTEGER MaxR := iPavX iPavX * 33 * Splitx * Splitx * Splitz * ;
INTEGER Iter := 1 ;
REAL keff1 keff2 keffn ;
REAL Y1 Y2 ROOT YNEW ;
REAL densB ;
LOGICAL CONV ;
GeoRes Matex := GeoCo ::
<<Splitx>> <<Splitz>> <<MaxR>> <<dx>> ;
Track := TRIVAT: GeoRes ::
MAXR <<MaxR>> DUAL 2 3 ;
*--
* Definition de la map de combustible et zones de combustion
*--
Fmap Matex := SetFuelMap Matex :: <<dx>> ;
Fmap := SetParam Fmap :: <<densB1>> <<temp_comb>> <<temp_mode>>
<<dens_mode>> ;
Micro := NCR: Cpo Fmap ::
EDIT 2
LINEAR
TABLE Cpo <<Dir>> 'burnup'
MIX 1 INST-BURN ENDMIX
;
MacroF := Micro :: STEP UP MACROLIB ;
Micro := DELETE: Micro ;
Micro := NCR: Cpo ::
* dummy reflector -- please use more realistic data
EDIT 2
LINEAR NMIX 2
COMPO Cpo <<Dir>>
MIX 2 SET 'burnup' 0.0
SET 'ppmBore' <<densB1>>
ENDMIX
;
Macro1 := Micro :: STEP UP MACROLIB ;
Micro := DELETE: Micro ;
Macro2 Matex := MACINI: Matex Macro1 MacroF ;
System := TRIVAA: Macro2 Track ;
Macro1 Macro2 := DELETE: Macro1 Macro2 ;
Flux := FLUD: System Track ::
EDIT 1 ADI 2 ;
GREP: Flux ::
GETVAL 'K-EFFECTIVE ' 1 >>keff1<< ;
ECHO "densB1=" densB1 "K-effective 1 = " keff1 ;
assertS Flux :: 'K-EFFECTIVE' 1 0.9917999 ;
IF TypeCal "critique" = THEN
System Flux MacroF DELETE: System Flux MacroF ;
Fmap := SetParam Fmap :: <<densB2>> <<temp_comb>> <<temp_mode>>
<<dens_mode>> ;
Micro := NCR: Cpo Fmap ::
EDIT 2
LINEAR
TABLE Cpo <<Dir>> 'burnup'
MIX 1 INST-BURN ENDMIX
;
MacroF := Micro :: STEP UP MACROLIB ;
Micro := DELETE: Micro ;
Micro := NCR: Cpo ::
* dummy reflector -- please use more realistic data
EDIT 2
LINEAR NMIX 2
COMPO Cpo <<Dir>>
MIX 2 SET 'burnup' 0.0
SET 'ppmBore' <<densB2>>
ENDMIX
;
Macro1 := Micro :: STEP UP MACROLIB ;
Micro := DELETE: Micro ;
Macro2 Matex := MACINI: Matex Macro1 MacroF ;
System := TRIVAA: Macro2 Track ;
Macro1 Macro2 := DELETE: Macro1 Macro2 ;
Flux := FLUD: System Track ::
EDIT 1 ;
GREP: Flux ::
GETVAL 'K-EFFECTIVE ' 1 >>keff2<< ;
ECHO "densB2=" densB2 "K-effective 2 = " keff2 ;
assertS Flux :: 'K-EFFECTIVE' 1 1.052038 ;
EVALUATE Y1 := 1.0 1.0 keff1 / - ;
EVALUATE Y2 := 1.0 1.0 keff2 / - ;
L0 := FIND0: :: ITMAX 20 TOL 1.0E-4
POINT X <<densB1>> Y <<Y1>>
POINT X <<densB2>> Y <<Y2>>
>>CONV<< >>ROOT<< ;
REPEAT
System Flux MacroF DELETE: System Flux MacroF ;
EVALUATE densB := ROOT ;
Fmap := SetParam Fmap :: <<densB>> <<temp_comb>> <<temp_mode>>
<<dens_mode>> ;
Micro := NCR: Cpo Fmap ::
EDIT 2
LINEAR
TABLE Cpo <<Dir>> 'burnup'
MIX 1 INST-BURN ENDMIX
;
MacroF := Micro :: STEP UP MACROLIB ;
Micro := DELETE: Micro ;
Micro := NCR: Cpo ::
* dummy reflector -- please use more realistic data
EDIT 2
LINEAR NMIX 2
COMPO Cpo <<Dir>>
MIX 2 SET 'burnup' 0.0
SET 'ppmBore' <<densB>>
ENDMIX
;
Macro1 := Micro :: STEP UP MACROLIB ;
Micro := DELETE: Micro ;
Macro2 Matex := MACINI: Matex Macro1 MacroF ;
System := TRIVAA: Macro2 Track ;
Macro1 Macro2 := DELETE: Macro1 Macro2 ;
Flux := FLUD: System Track ::
EDIT 1 ;
GREP: Flux ::
GETVAL 'K-EFFECTIVE ' 1 >>keffn<< ;
ECHO "K-effective iter " Iter "et bore " ROOT " = " keffn ;
EVALUATE YNEW := 1.0 1.0 keffn / - ;
L0 := FIND0: L0 :: Y <<YNEW>>
>>CONV<< >>ROOT<< ;
EVALUATE Iter := Iter 1 + ;
UNTIL CONV ;
ECHO "Zero is =" ROOT ;
EVALUATE REFVALUE := 1.705336E+03 ;
EVALUATE DELTA := ROOT REFVALUE - REFVALUE / ABS ;
IF DELTA 5.0E-5 < THEN
PRINT "TEST SUCCESSFUL; DELTA=" DELTA ;
ELSE
PRINT "------------" ;
PRINT "TEST FAILURE" ;
PRINT "------------" ;
PRINT "REFERENCE=" REFVALUE " CALCULATED=" ROOT ;
ABORT: ;
ENDIF ;
ENDIF ;
ECHO "test rep900.x2m completed" ;
END: ;
QUIT "LIST" .
|