summaryrefslogtreecommitdiff
path: root/Donjon/data/rep900.x2m
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" .