blob: 0a19039d9da7c0cf5deee52cc9b8aff247939b40 (
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
|
*----
* Name : rep900_msap.x2m
* Type : DONJON CLE2000 procedure
*
* Local parameters:
* densB1 boron density for the first calculation
* densB2 boron density for the second calculation
*
* Calculation options:
* Splitx Radial mesh-splitting of assemblies
* Splitz Axial mesh-splitting of assemblies
* TypeCal Boron concentration computation option: "critical" or
* "fixed"
*
*----
* STRUCTURES, MODULES and PROCEDURES definitions
*----
LINKED_LIST GeoCoeur Track Flux Sap L0 Reseau Matex
Lib Macro2 Fmap ;
MODULE TRIVAT: GREP: FIND0: UTL: DELETE: ABORT: END: ;
PROCEDURE GetDim GeoCo SetFuelMap SetParam ThermoParam ;
PROCEDURE assertS ;
SEQ_ASCII _ASaphyb ;
REAL DELTA REFVALUE ;
*----
* Local Parameters
*----
REAL densB1 := 2000.0 ;
REAL densB2 := 1000.0 ;
*----
* Calculation options
*----
INTEGER Splitx Splitz := 1 1 ;
STRING TypeCal := "critical" ;
REAL powi := 2775.0 ;
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
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
temp_comb_0 temp_mode_0 dens_mode_0 ;
*----
* Recover the Multicompo
*----
Sap := _ASaphyb ;
UTL: Sap :: DIR ;
REAL ORF IRC ORC IRCGT ORCGT ORAG ORAN
IRCA ORCA ORDET ORDETC Lame LPitch Height ;
REAL pbore_0 := 500. ; ! natural boron concentration in ppm
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_0<< >>temp_mode_0<< >>dens_mode_0<< ;
EVALUATE temp_comb temp_mode dens_mode := 800.0 600.0 0.659 ;
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 ;
GeoCoeur Matex := GeoCo ::
<<Splitx>> <<Splitz>> <<MaxR>> <<dx>> ;
Track := TRIVAT: GeoCoeur ::
EDIT 1 MAXR <<MaxR>> DUAL 2 3 ;
*--
* Fuel map definition
*--
Fmap Matex := SetFuelMap Matex :: <<dx>> ;
Fmap := SetParam Fmap :: <<densB1>> <<temp_comb_0>> <<temp_mode_0>>
<<dens_mode_0>> ;
*--
* Calculation
*--
Fmap Matex Flux := ThermoParam Fmap Matex Sap Track
:: <<powi>> <<densB1>> <<pbore_0>> <<temp_comb_0>> <<temp_mode_0>>
<<dens_mode_0>> ;
GREP: Flux ::
GETVAL 'K-EFFECTIVE ' 1 >>keff1<< ;
ECHO "densB1=" densB1 "K-effective 1 = " keff1 ;
IF Splitx Splitz * 1 = THEN
assertS Flux :: 'K-EFFECTIVE' 1 0.9939350 ;
ELSEIF Splitx Splitz * 4 = THEN
assertS Flux :: 'K-EFFECTIVE' 1 0.9940079 ;
ENDIF ;
IF TypeCal "critical" = THEN
Flux DELETE: Flux ;
Fmap Matex Flux := ThermoParam Fmap Matex Sap Track
:: <<powi>> <<densB2>> <<pbore_0>> <<temp_comb_0>> <<temp_mode_0>>
<<dens_mode_0>> ;
GREP: Flux ::
GETVAL 'K-EFFECTIVE ' 1 >>keff2<< ;
ECHO "densB2=" densB2 "K-effective 2 = " keff2 ;
IF Splitx Splitz * 1 = THEN
assertS Flux :: 'K-EFFECTIVE' 1 1.024997 ;
ELSEIF Splitx Splitz * 4 = THEN
assertS Flux :: 'K-EFFECTIVE' 1 1.025040 ;
ENDIF ;
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
Flux DELETE: Flux ;
EVALUATE densB := ROOT ;
Fmap Matex Flux := ThermoParam Fmap Matex Sap Track
:: <<powi>> <<densB>> <<pbore_0>> <<temp_comb_0>> <<temp_mode_0>>
<<dens_mode_0>> ;
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 ;
IF Splitx Splitz * 1 = THEN
EVALUATE REFVALUE := 1.804303E+03 ;
ELSEIF Splitx Splitz * 4 = THEN
EVALUATE REFVALUE := 1.807026E+03 ;
ENDIF ;
EVALUATE DELTA := ROOT REFVALUE - REFVALUE / ABS ;
IF DELTA 5.0E-4 < THEN
ECHO "TEST SUCCESSFUL; DELTA=" DELTA ;
ELSE
ECHO "------------" ;
ECHO "TEST FAILURE" ;
ECHO "------------" ;
ECHO "REFERENCE=" REFVALUE " CALCULATED=" ROOT ;
ABORT: ;
ENDIF ;
ENDIF ;
ECHO "test rep900_msap.x2m completed" ;
END: ;
QUIT "LIST" .
|