blob: eed3d79f3478f17f2edfabaf0026b915a15d565c (
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
|
*DECK CalcFlux
*----
* Name : CalcFlux.c2m
* Type : DRAGON procedure
* Use : Two-level flux calculation using the extended
* Le Tellier scheme.
* Author : A. Hebert, based on a procedure from R. Vallerent
*
* Procedure called as:
*
* LIBRARY2 FLUX1 FLUX2 BURN164 LIBEQ := CalcFlux LIBRARY2 FLUX1
* FLUX2 BURN164 LIBEQ LIBRARY TRACKSS TRACKN1 TRACKN2 TRKFILN2
* :: (data) ;
*
* Input data :
* LIBRARY : Microlib with subgroups
* LIBRARY2 : Self-shielded microlib
* TRACKSS : Tracking of the self-shielding geometry
* TRACKN1 : Tracking of the level 1 geometry
* TRACKN2 : Tracking of the level 2 geometry
* TRKFILN2 : Sequential tracking file of the level 2 geometry
* FLUX1 : Multigroup flux of the first level
* FLUX2 : Multigroup flux of the second level
* BURN164 : Burnup object of level 2
* Output data :
* LIBRARY2 : Self-shielded microlib
* FLUX1 : Multigroup flux of the first level
* FLUX2 : Multigroup flux of the second level
* BURN164 : Burnup object of level 2
* LIBEQ : 26-group microlib
* Parameters :
* istep : Burnup step index corresponding to the calculation
* Fuel : Type of fuel ("MOX" or "UOX")
* NbRegions : Number of regions (32 for MOX, 20 or 32 for UOX)
* BUend : Burnup corresponding to the calculation
* BUnextSS : Burnup corresponding to the next self-shielding
* calculation
* Fuelpwr : Fuel power in MW/tonne
PARAMETER LIBRARY2 FLUX1 FLUX2 BURN164 LIBEQ LIBRARY TRACKSS TRACKN1
TRACKN2 TRKFILN2 ::
EDIT 1
::: LINKED_LIST LIBRARY2 FLUX1 FLUX2 BURN164 LIBEQ LIBRARY
TRACKSS TRACKN1 TRACKN2 ;
::: SEQ_BINARY TRKFILN2 ;
;
* ;
*----
* Modules used in this procedure
*----
MODULE LIB: ASM: FLU: EDI: EVO: GREP: ABORT: DELETE: END: ;
PROCEDURE Autop1 Autop2 ConcLIBEQ MultLIBEQ_20 MultLIBEQ_32 ;
LINKED_LIST EDITION SYS ;
REAL B2 Kinf1 Kinf2 Keff2 Tend ;
STRING Fuel ;
INTEGER istep NbRegions ;
REAL BUend BUnextSS Fuelpwr ;
:: >>istep<< >>Fuel<< >>NbRegions<< >>BUend<< >>BUnextSS<<
>>Fuelpwr<< ;
EVALUATE Tend := BUend Fuelpwr / ;
ECHO "-----------------------------------------------------------" ;
ECHO "Two-level flux calculation at step=" istep ;
ECHO "BURNUP_sortie = " BUend "Next SS = " BUnextSS ;
IF BUend BUnextSS - ABS 1E-5 < THEN
ECHO "Perform a self-shielding calculation" ;
ECHO "-----------------------------------------------------------" ;
IF istep 1 = THEN
LIBRARY2 := Autop1 LIBRARY TRACKSS :: <<Fuel>> <<NbRegions>> ;
ELSE
LIBRARY2 := Autop2 LIBRARY2 LIBRARY TRACKSS
:: <<Fuel>> <<NbRegions>> ;
ENDIF ;
ELSE
ECHO "No self-shielding calculation" ;
ECHO "-----------------------------------------------------------" ;
ENDIF ;
************************************************************************
* BEGIN FLUX CALCULATION *
************************************************************************
SYS := ASM: LIBRARY2 TRACKN1 ::
EDIT 0 ARM ;
IF istep 1 = THEN
FLUX1 := FLU: SYS LIBRARY2 TRACKN1
:: EDIT 0 TYPE B B1 SIGS ;
ELSE
FLUX1 := FLU: FLUX1 SYS LIBRARY2 TRACKN1
:: EDIT 0 TYPE B B1 SIGS ;
ENDIF ;
GREP: FLUX1 :: GETVAL 'B2 B1HOM ' 1 1 1 >>B2<< ;
ECHO "B2-1 = " B2 " at BU = " BUend ;
GREP: FLUX1 :: GETVAL 'K-INFINITY ' 1 1 1 >>Kinf1<< ;
ECHO "K-inf1_sortie is " Kinf1 " at BU = " BUend ;
*----
* 26 groups energy condensation
*----
EDITION := EDI: FLUX1 LIBRARY2 TRACKN1 ::
EDIT 0
MICR ALL
MERG MIX
COND 10 14 18 26 33 40 49 56 65 74 86 196 227
230 233 238 241 244 247 254 259 263 267 272 277
SAVE ON COND26
;
LIBEQ := EDITION ::
STEP UP COND26
;
SYS := DELETE: SYS ;
*----
* Second level flux calculation (MOC)
*----
* added by remi(
IF NbRegions 20 = THEN
LIBEQ := MultLIBEQ_20 LIBEQ ;
ELSEIF NbRegions 32 = THEN
LIBEQ := MultLIBEQ_32 LIBEQ ;
ENDIF ;
IF istep 1 > THEN
LIBEQ := ConcLIBEQ LIBEQ BURN164 :: <<istep>> ;
ENDIF ;
LIBEQ := LIB: LIBEQ :: EDIT 0 MACR MIXS ;
* )added by remi
SYS := ASM: LIBEQ TRACKN2 TRKFILN2 ::
EDIT 0 ARM ;
IF istep 1 = THEN
FLUX2 := FLU: SYS LIBEQ TRACKN2 TRKFILN2 ::
EDIT 0
TYPE K B1 PNL BUCK <<B2>>
THER 5 5E-5 EXTE 30 1E-5 UNKT 1E-4 ;
ELSE
FLUX2 := FLU: FLUX2 SYS LIBEQ TRACKN2 TRKFILN2 ::
EDIT 0
TYPE K B1 PNL BUCK <<B2>>
THER 5 5E-5 EXTE 30 1E-5 UNKT 1E-4 ;
ENDIF ;
GREP: FLUX2 :: GETVAL 'K-INFINITY ' 1 1 1 >>Kinf2<< ;
ECHO "K-inf2_sortie is " Kinf2 " at BU = " BUend ;
GREP: FLUX2 :: GETVAL 'K-EFFECTIVE ' 1 1 1 >>Keff2<< ;
ECHO "K-eff2_sortie is " Keff2 " at BU = " BUend ;
GREP: FLUX2 :: GETVAL 'B2 B1HOM ' 1 1 1 >>B2<< ;
ECHO "B2-2 = " B2 " at BU = " BUend ;
SYS EDITION := DELETE: SYS EDITION ;
************************************************************************
* END FLUX CALCULATION *
************************************************************************
IF istep 1 = THEN
BURN164 LIBEQ := EVO: LIBEQ FLUX2 TRACKN2 ::
EDIT 0
SAVE <<Tend>> DAY POWR <<Fuelpwr>>
;
ELSE
BURN164 LIBEQ := EVO: BURN164 LIBEQ FLUX2 TRACKN2 ::
EDIT 0
SAVE <<Tend>> DAY POWR <<Fuelpwr>>
;
ENDIF ;
END: ;
QUIT .
|