summaryrefslogtreecommitdiff
path: root/Donjon/data/rep900_sim.x2m
blob: bdf5c4055f5f293b4a8840d0770456b0613c68e5 (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
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
*----
*  Name          : rep900_sim.x2m
*  Type          : DONJON procedure
*  Author        : V. Salino (IRSN), basis by A. Hebert
*  Date          : 01/11/2014
*
*  Compute a simple cycle depletion with critical boron.
*  Compute equilibrium cycle for a fictive UOX/MOX loading pattern.
*  Simulate various additionnal cycle sequences.
*----
*  References
*
*    Loading pattern freely inspired from public data:
*      Exploitation des coeurs REP (p.36),
*      N. Kerkar, P. Paulin,
*      EDP Sciences, 2008.
*----
*  STRUCTURES, MODULES and PROCEDURES definitions
*----
LINKED_LIST GeoRes Track MacroRefl Matex Fmap Power PrevPower
            Refl.XS SapUOX SapMOX ;
SEQ_ASCII   Saphyb_UOX :: FILE './Saphyb_UOX' ;
SEQ_ASCII   Saphyb_MOX :: FILE './Saphyb_MOX' ;
SEQ_ASCII   Refl.XS_as :: FILE './Refl.XS_as' ;
MODULE      TRIVAT: RESINI: SIM: DELETE: GREP: ABORT: END: ;
PROCEDURE   GeoCo SetFuelMap BoronCrit assertS ;

*----
*  Local parameters
*----
REAL BUcycle PrevBUcycle ;
REAL keff CB PrevCB PredicCB BURNSTEP NextBURNSTEP Yintrcpt Slope ;
REAL CBinit := 2000.0 ;
REAL DELTA REFVALUE CALCULATED ;
INTEGER BUindex ;
LOGICAL EoC ; ! End-of-Cycle reached (TRUE) or not (FALSE)

*----
*  Calculation options
*----
INTEGER Splitx Splitz := 1 1 ;
STRING  Dir := "EDI2B" ;

*----
*  Recover the reflector Macrolib and Saphybs
*----
Refl.XS := Refl.XS_as :: EDIT 0 ;
SapUOX := Saphyb_UOX :: EDIT 0 ;
SapMOX := Saphyb_MOX :: EDIT 0 ;

*----
*  Set reflector cross sections (Lefebvre-Lebigot)
*----
MacroRefl := Refl.XS ;

*----
*  Define geometric properties
*----
REAL rPavX     := 17.0 ;  ! assemblage 17 x 17
INTEGER iPavX  := 17 ; ! assemblage 17 x 17
REAL LPitch    := 1.26 ;
REAL Lame      := 0.04 ;
REAL dx        := rPavX LPitch * 2.0 Lame * + ;
INTEGER MaxR   := iPavX iPavX * 33 * Splitx * Splitx * Splitz * ;
GeoRes Matex := GeoCo  ::
   <<Splitx>> <<Splitz>> <<MaxR>> <<dx>> ;
Track := TRIVAT: GeoRes ::
   MAXR <<MaxR>> DUAL 2 3 ;

*--
* Define the fuel map
*--
Fmap Matex := SetFuelMap Matex :: <<dx>> ;

*----
*  A simple cycle depletion
*----
STRING Cycle := "T1" ;
INTEGER CycleIndex := 1 ;
Fmap := SIM: Fmap ::
 EDIT 10
 CYCLE <<Cycle>>
  QMAP
      H   G   F   E   D   C   B   A
   8 SPC SPC SPC SPC SPC SPC NEW SPC
   9 SPC SPC NEW SPC SPC SPC NEW SPC
  10 SPC NEW SPC SPC SPC SPC NEW  |
  11 SPC SPC SPC SPC SPC NEW NEW  |
  12 SPC SPC SPC SPC SPC NEW  |   |
  13 SPC SPC SPC NEW NEW  |   |   |
  14 NEW NEW NEW NEW  |   |   |   |
  15 SPC SPC  |   |   |   |   |   |
  SPEC
  E09 J11 L07 G05 G11 L09 J05 E07
  D10 K12 M06 F04 F12 M10 K04 D06 SET AVGB 12500. ! UOX
  E10 K11 L06 F05 F11 L10 K05 E06
  D09 J12 M07 G04 G12 M09 J04 D07 SET AVGB 12500. ! MOX
  C09 J13 N07 G03 G13 N09 J03 C07
  C10 K13 N06 F03 F13 N10 K03 C06 SET AVGB 25000.
  A09 J15 R07 G01 G15 R09 J01 A07
  D11 L12 M05 E04 E12 M11 L04 D05 SET AVGB 37500.
  G08 H09 J08 H07
  F08 H10 K08 H06
  D08 H12 M08 H04
  E11 L11 L05 E05 SET AVGB 12500.
  F10 K10 K06 F06
  D12 M12 M04 D04
  E08 H11 L08 H05 SET AVGB 25000.
  C08 H13 N08 H03
  A08 H15 R08 H01
  G09 J09 J07 G07 SET AVGB 37500.
  H08 SET AVGB 12500.
 ENDCYCLE ;

assertS Fmap :: 'BURN-INST' 1  37500.00 ;
assertS Fmap :: 'BURN-INST' 13 25000.00 ;

EVALUATE BUcycle BUindex := 0.0 1 ;
Power Fmap Matex := BoronCrit Fmap Matex SapUOX SapMOX MacroRefl
                    Track :: <<CBinit>> >>CB<< >>keff<< ;
ECHO "BUcycle(" BUindex ")=" BUcycle "CB=" CB "keff=" keff ;

EVALUATE REFVALUE := 1771.018 ;
EVALUATE DELTA := CB REFVALUE - ABS ;
IF DELTA 0.1 < THEN
  PRINT "TEST SUCCESSFUL; DELTA=" DELTA ;
ELSE
  PRINT "------------" ;
  PRINT "TEST FAILURE" ;
  PRINT "------------" ;
  PRINT "REFERENCE=" REFVALUE " CALCULATED=" CB ;
  ABORT: ;
ENDIF ;

EVALUATE BURNSTEP := 1000.0 ;
REPEAT
  ECHO "BURNSTEP(" BUindex ") =" BURNSTEP ;
  EVALUATE BUcycle := BUcycle BURNSTEP + ;
  Fmap := SIM: Fmap Power ::
   EDIT 11
   CYCLE <<Cycle>>
     BURN-STEP <<BURNSTEP>>
   ENDCYCLE ;

  Power := DELETE: Power ;
  Power Fmap Matex := BoronCrit Fmap Matex SapUOX SapMOX MacroRefl
                      Track :: <<CB>> >>CB<< >>keff<< ;
  ECHO "BUcycle(" BUindex ")=" BUcycle "CB=" CB "keff=" keff ;

! Simple EoC criteria for the first cycle (below 10 plus or minus 1)
  EVALUATE EoC := CB 10. 1. + <= ;
  IF EoC NOT THEN
    IF BUindex 1 = NOT THEN
      EVALUATE Slope := PrevCB CB - PrevBUcycle BUcycle - / ;
      EVALUATE Yintrcpt := CB Slope BUcycle * - ;
      EVALUATE PredicCB := BUcycle 1000.0 + Slope * Yintrcpt + ;
      IF PredicCB 10.0 < THEN
        EVALUATE BURNSTEP := 10.0 Yintrcpt - Slope / BUcycle - ;
      ELSE
        EVALUATE BURNSTEP := 1000.0 ;
      ENDIF ;
    ENDIF ;
    EVALUATE PrevCB PrevBUcycle := CB BUcycle ;
    EVALUATE BUindex := BUindex 1 + ;
  ENDIF ;
UNTIL EoC ;

Power := DELETE: Power ;

*----
*  Returning to a previous step (FROM directive)
*----
Fmap := SIM: Fmap ::
 EDIT 10
 CYCLE ANTE FROM <<Cycle>> BURN <<BUindex>> ! Before last performed step
  QMAP
      H   G   F   E   D   C   B   A
   8 H08 G08 F08 E08 D08 C08 B08 A08
   9 H09 G09 F09 E09 D09 C09 B09 A09
  10 H10 G10 F10 E10 D10 C10 B10  |
  11 H11 G11 F11 E11 D11 C11 B11  |
  12 H12 G12 F12 E12 D12 C12  |   |
  13 H13 G13 F13 E13 D13  |   |   |
  14 H14 G14 F14 E14  |   |   |   |
  15 H15 G15  |   |   |   |   |   |
 ENDCYCLE ;
Power Fmap Matex := BoronCrit Fmap Matex SapUOX SapMOX MacroRefl
                    Track :: <<CBinit>> >>CB<< >>keff<< ;
ECHO "BUcycle(" BUindex ")=" BUcycle "CB=" CB "keff=" keff ;
ECHO "BURNSTEP(" BUindex ") =" BURNSTEP ;
Fmap := SIM: Fmap Power ::
 EDIT 1
 CYCLE ANTE
   BURN-STEP <<BURNSTEP>> ! Reperform last step
 ENDCYCLE ;
Power := DELETE: Power ;
Power Fmap Matex := BoronCrit Fmap Matex SapUOX SapMOX MacroRefl
                    Track :: <<CBinit>> >>CB<< >>keff<< ;
ECHO "BUcycle(" BUindex ")=" BUcycle "CB=" CB "keff=" keff ;
Power := DELETE: Power ;

* Compute the maximum discrepancy on burnup and power distribution
REAL MaxDiffBU MaxDiffPow ;
Fmap := SIM: Fmap ::
 EDIT 1
 COMPARE <<Cycle>> ANTE DIST-BURN >>MaxDiffBU<<
 COMPARE <<Cycle>> ANTE DIST-POWR >>MaxDiffPow<< ;
ECHO "Delta BUlocal =" MaxDiffBU ;
ECHO "Delta Powlocal =" MaxDiffPow ;

IF MaxDiffPow 1.0E-3 > MaxDiffBU 1.0E-2 > + THEN
  PRINT "------------" ;
  PRINT "TEST FAILURE" ;
  PRINT "------------" ;
  ABORT: ;
ELSE
  PRINT "TEST SUCCESSFUL" ;
ENDIF ;

*----
*  Equilibrium cycle convergence
*----

LOGICAL EquilibrCycl := $False_L ;
REAL BUprevCycle ; ! Mean burnup added during the previous cycle
REAL DiffBUCycle ;
EVALUATE BUprevCycle := BUcycle ;
STRING   PrevCycle := Cycle ;
STRING   MainCycle ;
EVALUATE CycleIndex := 2 ;
INTEGER Return PrevBUindex RtnBUindex ;
STRING ReturnCycle PrevRtnCycle ;

REAL epsBUcycle      epsBUlocal      epsPowlocal :=
     5.0 (* MWd/t *) 10. (* MWd/t *) 0.5E-2 (* Relative error *) ;

REPEAT
  EVALUATE MainCycle := "T" CycleIndex I_TO_S + ;
  EVALUATE Return := 0 ;
  EVALUATE Cycle := MainCycle ;
* Equilibrium cycle loading pattern
  Fmap := SIM: Fmap ::
   EDIT 11
   CYCLE <<Cycle>> FROM <<PrevCycle>>
    QMAP
        H   G   F   E   D   C   B   A
     8 B08 C12 D13 E11 G10 E08 NEW F10
     9 M13 D12 NEW B10 B09 E09 NEW C10
    10 N12 NEW F08 C11 B11 D10 NEW  |
    11 L11 F14 E13 F09 C09 NEW NEW  |
    12 K09 G14 E14 G13 G08 NEW  |   |
    13 H11 G11 F12 NEW NEW  |   |   |
    14 NEW NEW NEW NEW  |   |   |   |
    15 K10 F13  |   |   |   |   |   |
   ENDCYCLE ;

  EVALUATE BURNSTEP := 1000.0 ;
  EVALUATE BUcycle BUindex := 0.0 1 ;
  Power Fmap Matex := BoronCrit Fmap Matex SapUOX SapMOX MacroRefl
                      Track ::  <<CBinit>> >>CB<< >>keff<< ;
  ECHO "BUcycle(" BUindex ")=" BUcycle "CB=" CB "keff=" keff ;

  REPEAT
    ECHO "BURNSTEP(" BUindex ") =" BURNSTEP ;
    EVALUATE BUcycle := BUcycle BURNSTEP + ;
    Fmap := SIM: Fmap Power ::
     EDIT 11
     CYCLE <<Cycle>>
       BURN-STEP <<BURNSTEP>>
     ENDCYCLE ;
    
    PrevPower := Power ;
    Power := DELETE: Power ;
    Power Fmap Matex := BoronCrit Fmap Matex SapUOX SapMOX MacroRefl
                        Track ::  <<CB>> >>CB<< >>keff<< ;
    ECHO "BUcycle(" BUindex ")=" BUcycle "CB=" CB "keff=" keff ;
    
    IF CB 10.0 - ABS 1.0 < THEN ! Narrower criteria for equilibrium
      EVALUATE EoC := $True_L ;
    ELSE
      EVALUATE EoC := $False_L ;
*     Find end-of-cycle using a Newton's method
      IF BUindex 1 = NOT Return 0 = NOT + THEN
        EVALUATE Slope := PrevCB CB - PrevBUcycle BUcycle - / ;
        EVALUATE Yintrcpt := CB Slope BUcycle * - ;
        EVALUATE PredicCB := BUcycle 1000.0 + Slope * Yintrcpt + ;
        IF PredicCB 10.0 < THEN
          EVALUATE NextBURNSTEP := 10.0 Yintrcpt - Slope / BUcycle - ;
        ELSE
          EVALUATE NextBURNSTEP := 1000.0 ;
        ENDIF ;
      ELSE
        EVALUATE NextBURNSTEP := 1000.0 ;
      ENDIF ;
*     Use the previous step for future BURNSTEP evaluation
      EVALUATE PrevCB PrevBUcycle := CB BUcycle ;
      IF NextBURNSTEP 0.0 < THEN
*       Return back in time
        EVALUATE BUcycle := BUcycle BURNSTEP - ;
        IF BUindex 1 = NOT THEN
          EVALUATE ReturnCycle RtnBUindex := Cycle BUindex ;
        ELSE
          EVALUATE ReturnCycle RtnBUindex := PrevRtnCycle PrevBUindex ;
        ENDIF ;
        EVALUATE Return := Return 1 + ;
        EVALUATE Cycle := MainCycle "rtn" Return I_TO_S + + ;
        Fmap := SIM: Fmap ::
         EDIT 10
         CYCLE <<Cycle>> FROM <<ReturnCycle>> BURN <<RtnBUindex>>
          QMAP
              H   G   F   E   D   C   B   A
           8 H08 G08 F08 E08 D08 C08 B08 A08
           9 H09 G09 F09 E09 D09 C09 B09 A09
          10 H10 G10 F10 E10 D10 C10 B10  |
          11 H11 G11 F11 E11 D11 C11 B11  |
          12 H12 G12 F12 E12 D12 C12  |   |
          13 H13 G13 F13 E13 D13  |   |   |
          14 H14 G14 F14 E14  |   |   |   |
          15 H15 G15  |   |   |   |   |   |
         ENDCYCLE ;
*       Reuse previous power distribution
        Power := DELETE: Power ;
        Power := PrevPower ;
        IF BUindex 1 = NOT THEN
*         For the next step, use previous step if CB still not above 10
          EVALUATE PrevRtnCycle := ReturnCycle ;
          EVALUATE PrevBUindex := BUindex ;
        ENDIF ;
*       Reestablishing cycle implies BUindex reboot
        EVALUATE BUindex := 1 ;
*       Recompute a smaller step
        EVALUATE BURNSTEP := BURNSTEP NextBURNSTEP + ;
      ELSE
        EVALUATE BURNSTEP := NextBURNSTEP ;
        EVALUATE BUindex := BUindex 1 + ;
      ENDIF ;
    ENDIF ;
    PrevPower := DELETE: PrevPower ;
  UNTIL EoC ;
  ECHO "Duration of cycle =" BUcycle "MWj/t, for cycle" Cycle ;
  Power := DELETE: Power ;
  
  Fmap := SIM: Fmap ::
   EDIT 1
   COMPARE <<Cycle>> <<PrevCycle>> DIST-BURN >>MaxDiffBU<<
   COMPARE <<Cycle>> <<PrevCycle>> DIST-POWR >>MaxDiffPow<< ;
  EVALUATE DiffBUCycle := BUprevCycle BUcycle - ABS ;
  ECHO "Delta BUcycle =" DiffBUCycle ;
  ECHO "Delta BUlocal =" MaxDiffBU ;
  ECHO "Delta Powlocal =" MaxDiffPow ;
  EVALUATE EquilibrCycl := ! 3 convergence criterion
   BUprevCycle BUcycle - ABS epsBUcycle  <
   MaxDiffBU                 epsBUlocal  < *
   MaxDiffPow                epsPowlocal < * ;
  EVALUATE BUprevCycle := BUcycle ;
  EVALUATE PrevCycle := Cycle ;
  EVALUATE CycleIndex := CycleIndex 1 + ;
  IF CycleIndex 20 > THEN
    ECHO "Non-convergence " ;
    ECHO "Equibrium cycle was not found after 20 iterations." ;
    ABORT: ;
  ENDIF ;
UNTIL EquilibrCycl ;

EVALUATE REFVALUE := 12155.97 ;
EVALUATE DELTA := BUcycle REFVALUE - ABS ;
IF DELTA epsBUcycle < THEN
  PRINT "TEST SUCCESSFUL; DELTA=" DELTA ;
ELSE
  PRINT "------------" ;
  PRINT "TEST FAILURE" ;
  PRINT "------------" ;
  PRINT "REFERENCE=" REFVALUE " CALCULATED=" BUcycle ;
  ABORT: ;
ENDIF ;

*----
*  Different average burnup, but using the same burnup distribution
*----

Fmap := SIM: Fmap ::
 EDIT 13
 CYCLE EQUI-FIT FROM <<PrevCycle>>
  QMAP
      H   G   F   E   D   C   B   A
   8 SPC SPC SPC SPC SPC SPC SPC SPC
   9 SPC SPC SPC SPC SPC SPC SPC SPC
  10 SPC SPC SPC SPC SPC SPC SPC  |
  11 SPC SPC SPC SPC SPC SPC SPC  |
  12 SPC SPC SPC SPC SPC SPC  |   |
  13 SPC SPC SPC SPC SPC  |   |   |
  14 SPC SPC SPC SPC  |   |   |   |
  15 SPC SPC  |   |   |   |   |   |
  SPEC
      E09 J11 L07 G05 G11 L09 J05 E07 SET AVGB 29500. ! UOX
      D10 K12 M06 F04 F12 M10 K04 D06 SET AVGB 24000. ! UOX
      E10 K11 L06 F05 F11 L10 K05 E06 SET AVGB 30200. ! MOX
      D09 J12 M07 G04 G12 M09 J04 D07 SET AVGB 27300. ! MOX
      C09 J13 N07 G03 G13 N09 J03 C07 SET AVGB 40200.
      C10 K13 N06 F03 F13 N10 K03 C06 SET AVGB 36000.
      A09 J15 R07 G01 G15 R09 J01 A07 SET AVGB 39500.
      D11 L12 M05 E04 E12 M11 L04 D05 SET AVGB 49900.
      G08 H09 J08 H07 SET AVGB 29200.
      F08 H10 K08 H06 SET AVGB 29500.
      D08 H12 M08 H04 SET AVGB 35500.
      E11 L11 L05 E05 SET AVGB 35200.
      F10 K10 K06 F06 SET AVGB 45700.
      D12 M12 M04 D04 SET AVGB 37500.
      E08 H11 L08 H05 SET AVGB 50000.
      C08 H13 N08 H03 SET AVGB 58700.
      A08 H15 R08 H01 SET AVGB 49500.
      G09 J09 J07 G07 SET AVGB 54200.
      H08 SET AVGB 32500.
      F09 G10 J10 K09 K07 J06 G06 F07 SET AVGB 23500.
      B09 G14 J14 P09 P07 J02 G02 B07 SET AVGB 12300.
      B10 F14 K14 P10 P06 K02 F02 B06 SET AVGB 12100.
      C11 E13 L13 N11 N05 L03 E03 C05 SET AVGB 13500.
      B11 E14 L14 P11 P05 L02 E02 B05 SET AVGB 9400.
      C12 D13 M13 N12 N04 M03 D03 C04 SET AVGB 9000.
      B08 H14 P08 H02 SET AVGB 12300.
  DIST-AX
      E09 J11 L07 G05 G11 L09 J05 E07 FROM <<PrevCycle>> AT E09
      D10 K12 M06 F04 F12 M10 K04 D06 FROM <<PrevCycle>> AT D10
      E10 K11 L06 F05 F11 L10 K05 E06 FROM <<PrevCycle>> AT E10
      D09 J12 M07 G04 G12 M09 J04 D07 FROM <<PrevCycle>> AT D09
      C09 J13 N07 G03 G13 N09 J03 C07 FROM <<PrevCycle>> AT C09
      C10 K13 N06 F03 F13 N10 K03 C06 FROM <<PrevCycle>> AT C10
      A09 J15 R07 G01 G15 R09 J01 A07 FROM <<PrevCycle>> AT A09
      D11 L12 M05 E04 E12 M11 L04 D05 FROM <<PrevCycle>> AT D11
      G08 H09 J08 H07                 FROM <<PrevCycle>> AT G08
      F08 H10 K08 H06                 FROM <<PrevCycle>> AT F08
      D08 H12 M08 H04                 FROM <<PrevCycle>> AT D08
      E11 L11 L05 E05                 FROM <<PrevCycle>> AT E11
      F10 K10 K06 F06                 FROM <<PrevCycle>> AT F10
      D12 M12 M04 D04                 FROM <<PrevCycle>> AT D12
      E08 H11 L08 H05                 FROM <<PrevCycle>> AT E08
      C08 H13 N08 H03                 FROM <<PrevCycle>> AT C08
      A08 H15 R08 H01                 FROM <<PrevCycle>> AT A08
      G09 J09 J07 G07                 FROM <<PrevCycle>> AT G09
      H08                             FROM <<PrevCycle>> AT H08
      F09 G10 J10 K09 K07 J06 G06 F07 FROM <<PrevCycle>> AT F09
      B09 G14 J14 P09 P07 J02 G02 B07 FROM <<PrevCycle>> AT B09
      B10 F14 K14 P10 P06 K02 F02 B06 FROM <<PrevCycle>> AT B10
      C11 E13 L13 N11 N05 L03 E03 C05 FROM <<PrevCycle>> AT C11
      B11 E14 L14 P11 P05 L02 E02 B05 FROM <<PrevCycle>> AT B11
      C12 D13 M13 N12 N04 M03 D03 C04 FROM <<PrevCycle>> AT C12
      B08 H14 P08 H02                 FROM <<PrevCycle>> AT B08
 ENDCYCLE ;

GREP: Fmap :: GETVAL 'BURN-INST' 1 >>CALCULATED<< ;
EVALUATE REFVALUE := 20760.51 ;
EVALUATE DELTA := CALCULATED REFVALUE - ABS ;
IF DELTA epsBUlocal < THEN
  PRINT "TEST SUCCESSFUL; DELTA=" DELTA ;
ELSE
  PRINT "------------" ;
  PRINT "TEST FAILURE" ;
  PRINT "------------" ;
  PRINT "REFERENCE=" REFVALUE " CALCULATED=" CALCULATED ;
  ABORT: ;
ENDIF ;

REAL Ptot := 2775.0 ;
REAL BundPow := Ptot 157.0 / 29.0 / 1.0E+3 * (* MW to kW *) ;
Fmap := RESINI: Fmap ::
  EDIT 0
  BUNDLE-POW SAME <<BundPow>> ;
Fmap := SIM: Fmap ::
 EDIT 1
 CYCLE EQUI-FIT
   BURN-STEP 0.001 ! renders EQUI-FIT available for subsequent SIM: calls
 ENDCYCLE ;
 
*----
*  Mixing several cycles into one
*----

Fmap := SIM: Fmap ::
 EDIT 1
 CYCLE MIXED FROM <<PrevCycle>>
  QMAP
      H   G   F   E   D   C   B   A
   8 B08 C12 D13 E11 G10 E08 NEW SPC
   9 M13 D12 NEW B10 B09 E09 NEW C10
  10 N12 NEW F08 C11 B11 D10 NEW  |
  11 L11 F14 E13 F09 C09 NEW NEW  |
  12 K09 G14 E14 G13 G08 NEW  |   |
  13 H11 G11 F12 NEW NEW  |   |   |
  14 NEW NEW NEW NEW  |   |   |   |
  15 SPC F13  |   |   |   |   |   |
  SPEC
  A08 FROM EQUI-FIT AT F10
  H15 FROM EQUI-FIT AT K10
  R08 FROM EQUI-FIT AT K06
  H01 FROM EQUI-FIT AT F06
 ENDCYCLE ;

GREP: Fmap :: GETVAL 'BURN-INST' 1 >>CALCULATED<< ;
EVALUATE REFVALUE := 17661.87 ;
EVALUATE DELTA := CALCULATED REFVALUE - ABS ;
IF DELTA epsBUlocal < THEN
  PRINT "TEST SUCCESSFUL; DELTA=" DELTA ;
ELSE
  PRINT "------------" ;
  PRINT "TEST FAILURE" ;
  PRINT "------------" ;
  PRINT "REFERENCE=" REFVALUE " CALCULATED=" CALCULATED ;
  ABORT: ;
ENDIF ;

GREP: Fmap :: GETVAL 'BURN-INST' 2 >>CALCULATED<< ;
EVALUATE REFVALUE := 25944.61 ;
EVALUATE DELTA := CALCULATED REFVALUE - ABS ;
IF DELTA epsBUlocal < THEN
  PRINT "TEST SUCCESSFUL; DELTA=" DELTA ;
ELSE
  PRINT "------------" ;
  PRINT "TEST FAILURE" ;
  PRINT "------------" ;
  PRINT "REFERENCE=" REFVALUE " CALCULATED=" CALCULATED ;
  ABORT: ;
ENDIF ;
ECHO "test rep900_sim completed" ;

END: ;
QUIT "LIST" .