summaryrefslogtreecommitdiff
path: root/Donjon/data/rep1300_reflector.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/rep1300_reflector.x2m
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/data/rep1300_reflector.x2m')
-rw-r--r--Donjon/data/rep1300_reflector.x2m138
1 files changed, 138 insertions, 0 deletions
diff --git a/Donjon/data/rep1300_reflector.x2m b/Donjon/data/rep1300_reflector.x2m
new file mode 100644
index 0000000..d252b16
--- /dev/null
+++ b/Donjon/data/rep1300_reflector.x2m
@@ -0,0 +1,138 @@
+*----
+* Name : rep1300_reflector.x2m
+* Type : DONJON CLE2000 procedure
+* Author : Alain Hebert
+*
+* Compute the reflector parameters using a 26-group reference
+* solution and a sequence of 2-group macro-calculations.
+*
+*----
+* STRUCTURES, MODULES and PROCEDURES definitions
+*----
+MODULE GEO: UTL: GREP: SCR: TRIVAT: EDI: DELETE: ABORT: END: ;
+LINKED_LIST SAPOBJ MACRO MACRO2 EDIT2 MACROGEOM TRACK MACRO3 OPTIM
+ EDIOUT ;
+INTEGER itype ;
+REAL REFVALUE DELTA ;
+DOUBLE Fobj ;
+SEQ_ASCII _ASaphyb :: FILE 'referenceSaphybCalculation.sap' ;
+XSM_FILE SAPFIL :: FILE 'SAPFIL' ;
+PROCEDURE reflectorOpt ;
+*----
+* Check the Saphyb signature. Add one if missing. Extract MACRO.
+*----
+SAPOBJ := _ASaphyb ;
+GREP: SAPOBJ :: TYPE 'SIGNATURE' >>itype<< ;
+ECHO "type signature=" itype ;
+IF itype 99 = THEN
+ SAPOBJ := UTL: SAPOBJ
+ :: CREA 'SIGNATURE' 3 = 'L_SA' 'PHYB' ' ' ;
+ENDIF ;
+MACRO := SCR: SAPOBJ :: EDIT 2 NMIX 55 SAPHYB SAPOBJ
+ MIX 1 USE SET 'BURN' 0.0 ENDMIX MIX 2 USE SET 'BURN' 0.0 ENDMIX
+ MIX 3 USE SET 'BURN' 0.0 ENDMIX MIX 4 USE SET 'BURN' 0.0 ENDMIX
+ MIX 5 USE SET 'BURN' 0.0 ENDMIX MIX 6 USE SET 'BURN' 0.0 ENDMIX
+ MIX 7 USE SET 'BURN' 0.0 ENDMIX MIX 8 USE SET 'BURN' 0.0 ENDMIX
+ MIX 9 USE SET 'BURN' 0.0 ENDMIX MIX 10 USE SET 'BURN' 0.0 ENDMIX
+ MIX 11 USE SET 'BURN' 0.0 ENDMIX MIX 12 USE SET 'BURN' 0.0 ENDMIX
+ MIX 13 USE SET 'BURN' 0.0 ENDMIX MIX 14 USE SET 'BURN' 0.0 ENDMIX
+ MIX 15 USE SET 'BURN' 0.0 ENDMIX MIX 16 USE SET 'BURN' 0.0 ENDMIX
+ MIX 17 USE SET 'BURN' 0.0 ENDMIX MIX 18 USE SET 'BURN' 0.0 ENDMIX
+ MIX 19 USE SET 'BURN' 0.0 ENDMIX MIX 20 USE SET 'BURN' 0.0 ENDMIX
+ MIX 21 USE SET 'BURN' 0.0 ENDMIX MIX 22 USE SET 'BURN' 0.0 ENDMIX
+ MIX 23 USE SET 'BURN' 0.0 ENDMIX MIX 24 USE SET 'BURN' 0.0 ENDMIX
+ MIX 25 USE SET 'BURN' 0.0 ENDMIX MIX 26 USE SET 'BURN' 0.0 ENDMIX
+ MIX 27 USE SET 'BURN' 0.0 ENDMIX MIX 28 USE SET 'BURN' 0.0 ENDMIX
+ MIX 29 USE SET 'BURN' 0.0 ENDMIX MIX 30 USE SET 'BURN' 0.0 ENDMIX
+ MIX 31 USE SET 'BURN' 0.0 ENDMIX MIX 32 USE SET 'BURN' 0.0 ENDMIX
+ MIX 33 USE SET 'BURN' 0.0 ENDMIX MIX 34 USE SET 'BURN' 0.0 ENDMIX
+ MIX 35 USE SET 'BURN' 0.0 ENDMIX MIX 36 USE SET 'BURN' 0.0 ENDMIX
+ MIX 37 USE SET 'BURN' 0.0 ENDMIX MIX 38 USE SET 'BURN' 0.0 ENDMIX
+ MIX 39 USE SET 'BURN' 0.0 ENDMIX MIX 40 USE SET 'BURN' 0.0 ENDMIX
+ MIX 41 USE SET 'BURN' 0.0 ENDMIX MIX 42 USE SET 'BURN' 0.0 ENDMIX
+ MIX 43 USE SET 'BURN' 0.0 ENDMIX MIX 44 USE SET 'BURN' 0.0 ENDMIX
+ MIX 45 USE SET 'BURN' 0.0 ENDMIX MIX 46 USE SET 'BURN' 0.0 ENDMIX
+ MIX 47 USE SET 'BURN' 0.0 ENDMIX MIX 48 USE SET 'BURN' 0.0 ENDMIX
+ MIX 49 USE SET 'BURN' 0.0 ENDMIX MIX 50 USE SET 'BURN' 0.0 ENDMIX
+ MIX 51 USE SET 'BURN' 0.0 ENDMIX MIX 52 USE SET 'BURN' 0.0 ENDMIX
+ MIX 53 USE SET 'BURN' 0.0 ENDMIX MIX 54 USE SET 'BURN' 0.0 ENDMIX
+ MIX 55 USE SET 'BURN' 0.0 ENDMIX ;
+*----
+* Define the macro geometry (MACROGEOM)
+*----
+MACROGEOM := GEO: :: CAR2D 11 11 (*EIGHTH OF A REP1300 REACTOR*)
+ X- DIAG X+ VOID
+ Y- SYME Y+ DIAG
+
+ MIX 1 2 3 4 5 6 7 8 9 34 34
+ 10 11 12 13 14 15 16 17 34 34
+ 18 19 20 21 22 23 34 34 34
+ 24 25 26 27 28 34 34 34
+ 29 30 31 34 34 34 0
+ 32 33 34 34 34 0
+ 34 34 34 0 0
+ 34 34 0 0
+ 0 0 0
+ 0 0
+ 0
+
+ MESHX 0.0 21.611253 43.222506 64.833759 86.445012 108.056265
+ 129.667518 151.278771 172.890024 194.501277 216.112530
+ 237.723783
+ MESHY 0.0 21.611253 43.222506 64.833759 86.445012 108.056265
+ 129.667518 151.278771 172.890024 194.501277 216.112530
+ 237.723783
+ SPLITX 2 2 2 2 2 2 2 2 2 2 2
+ SPLITY 2 2 2 2 2 2 2 2 2 2 2
+ ;
+
+TRACK := TRIVAT: MACROGEOM :: DUAL (*IELEM=*) 3 (*ICOL=*) 3
+ MAXR 500 ;
+*----
+* Define the 26-group reference macrolib (MACRO)
+*----
+EDIT2 := EDI: MACRO :: EDIT 3
+ MERG MIX 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 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 0 SAVE ;
+MACRO := DELETE: MACRO ;
+MACRO := EDIT2 :: STEP UP 'REF-CASE0001' STEP UP MACROLIB ;
+EDIT2 := DELETE: EDIT2 ;
+*----
+* Define the 2-group reference macrolib (MACRO2)
+*----
+EDIT2 := EDI: MACRO :: EDIT 3
+ COND 19 26
+ MERG MIX 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 SAVE ;
+MACRO := DELETE: MACRO ;
+MACRO2 := EDIT2 :: STEP UP 'REF-CASE0001' STEP UP MACROLIB ;
+*----
+* Compute optimal reflector
+*----
+MACRO3 OPTIM := reflectorOpt MACRO2 MACROGEOM TRACK
+ :: 33 34 0.5 1.5 1.0E-4 ;
+
+*----
+* Edit some output results
+*----
+ECHO "control variables at convergence" ;
+UTL: OPTIM :: IMPR 'VAR-VALUE' * ;
+
+GREP: OPTIM :: GETVAL 'FOBJ-CST-VAL' 1 >>Fobj<< ;
+ECHO "optimal objective function=" Fobj ;
+EVALUATE REFVALUE := 2.554216E-05 ;
+EVALUATE DELTA := Fobj D_TO_R REFVALUE - REFVALUE / ABS ;
+IF DELTA 5.0E-4 < THEN
+ PRINT "TEST SUCCESSFUL; DELTA=" DELTA ;
+ELSE
+ PRINT "------------" ;
+ PRINT "TEST FAILURE" ;
+ PRINT "------------" ;
+ PRINT "REFERENCE=" REFVALUE " CALCULATED=" Fobj ;
+ ABORT: ;
+ENDIF ;
+
+ECHO "test rep1300_reflector completed" ;
+END: ;
+QUIT "LIST" .