summaryrefslogtreecommitdiff
path: root/Donjon/data/rep900_sim.x2m
diff options
context:
space:
mode:
authorstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
committerstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
commit7dfcc480ba1e19bd3232349fc733caef94034292 (patch)
tree03ee104eb8846d5cc1a981d267687a729185d3f3 /Donjon/data/rep900_sim.x2m
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/data/rep900_sim.x2m')
-rw-r--r--Donjon/data/rep900_sim.x2m526
1 files changed, 526 insertions, 0 deletions
diff --git a/Donjon/data/rep900_sim.x2m b/Donjon/data/rep900_sim.x2m
new file mode 100644
index 0000000..bdf5c40
--- /dev/null
+++ b/Donjon/data/rep900_sim.x2m
@@ -0,0 +1,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" .