summaryrefslogtreecommitdiff
path: root/Donjon/data/rep1300_reflector_proc/reflectorOpt.c2m
diff options
context:
space:
mode:
Diffstat (limited to 'Donjon/data/rep1300_reflector_proc/reflectorOpt.c2m')
-rwxr-xr-xDonjon/data/rep1300_reflector_proc/reflectorOpt.c2m160
1 files changed, 160 insertions, 0 deletions
diff --git a/Donjon/data/rep1300_reflector_proc/reflectorOpt.c2m b/Donjon/data/rep1300_reflector_proc/reflectorOpt.c2m
new file mode 100755
index 0000000..c66e214
--- /dev/null
+++ b/Donjon/data/rep1300_reflector_proc/reflectorOpt.c2m
@@ -0,0 +1,160 @@
+****************************************************************
+* *
+* Procedure : reflectorOpt.c2m *
+* Purpose : Compute optimal reflector parameters using *
+* the OPTEX approach *
+* Author : A. Hebert *
+* *
+* CALL : *
+* Macro2 Optim := reflectorOpt Macro1 Macrogeom Track *
+* :: (data) ; *
+* *
+* Output object: *
+* Macro2 : Corrected macrolib *
+* Optim : L_OPTIMIZE object *
+* *
+* Input objects: *
+* Macro1 : Reference macrolib for the macro-geometry *
+* Macrogeom : Macro-geometry *
+* Track : Tracking of the macro-geometry *
+* *
+* Input data: *
+* mat1 : maximum mixture index in the core *
+* mat2 : maximum mixture index in the core+reflector *
+* fmin : minimum acceptable correction factor *
+* fmax : maximum acceptable correction factor *
+* epsout : convergence criterion for outer iterations *
+* *
+****************************************************************
+PARAMETER MACRO2 OPTIM MACRO1 MACROGEOM TRACK ::
+ ::: LINKED_LIST MACRO2 OPTIM MACRO1 MACROGEOM TRACK ; ;
+MODULE DLEAK: TRIVAA: FLUD: GREP: OUT: DREF: GPTFLU: DELETE:
+ DELTA: GRAD: PLQ: MAC: ERROR: END: ;
+LINKED_LIST DMACRO1 SYSTEM CALC EDIT DSYSTEM GPTD GPTA DCALCA ;
+INTEGER LConv mat1p1 IterE nlf ;
+REAL Keff rmsval ;
+LOGICAL Conv ;
+STRING htype ;
+INTEGER IterEmax := 1000 ;
+INTEGER mat1 mat2 ;
+ :: >>mat1<< >>mat2<< ;
+REAL fmin fmax epsout ;
+ :: >>fmin<< >>fmax<< >>epsout<< ;
+
+!****************************************
+!****************************************
+!******* EXTERNAL ITERATIONS ********
+!****************************************
+!****************************************
+
+GREP: TRACK :: GETVAL 'STATE-VECTOR' 30 >>nlf<< ;
+IF nlf 0 = THEN
+ ECHO "Diffusion theory" ;
+ EVALUATE htype := "DIFF" ;
+ELSE
+ ECHO "SPN theory" ;
+ EVALUATE htype := "NTOT1" ;
+ENDIF ;
+
+EVALUATE mat1p1 := mat1 1 + ;
+DMACRO1 OPTIM := DLEAK: MACRO1 ::
+ EDIT 2
+ TYPE <<htype>> DELTA FACTOR MIXMIN <<mat1p1>> MIXMAX <<mat2>> ;
+
+MACRO2 := MACRO1 ;
+
+EVALUATE IterE := 0 ;
+REPEAT
+
+ EVALUATE IterE := IterE 1 + ;
+ ECHO "#------------------------------" ;
+ IF IterE 10 < THEN
+ ECHO "#-------------" IterE "--------------" ;
+ ELSE
+ ECHO "#------------" IterE "--------------" ;
+ ENDIF ;
+ ECHO "#------------------------------" ;
+
+ SYSTEM := TRIVAA: MACRO2 TRACK :: EDIT 0 ;
+ CALC := FLUD: SYSTEM TRACK ::
+ EDIT 0 ADI 5 EXTE 300 1.0E-6 ACCE 5 3 ADJ ;
+
+ GREP: CALC :: GETVAL 'K-EFFECTIVE ' 1 >>Keff<< ;
+
+ EDIT := OUT: CALC MACROGEOM MACRO2 TRACK ::
+ EDIT 0 INTG MIX ;
+ IF IterE 1 = THEN
+ ECHO "Error statistics before correction" ;
+ ERROR: MACRO1 EDIT :: NREG <<mat1>> ;
+ ENDIF ;
+*----
+* IMPLICIT SOLUTION.
+* SOLUTION OF AN ADJOINT FIXED SOURCE EIGENVALUE PROBLEM.
+*----
+ GPTA OPTIM := DREF: OPTIM CALC TRACK EDIT MACRO1 ::
+ EDIT 1 RMS >>rmsval<< ;
+ DCALCA := GPTFLU: GPTA CALC SYSTEM TRACK ::
+ EDIT 0 ADI 5 EXTE 300 1.0E-6 ACCE 5 3 IMPLICIT FROM-TO ALL ;
+ ECHO "iter=" IterE "rmsval=" rmsval "Keff=" Keff ;
+ EDIT := DELETE: EDIT ;
+*----
+* DIRECT SOURCE CALCULATION
+*----
+ DSYSTEM := TRIVAA: MACRO2 TRACK DMACRO1 :: EDIT 0 DERI ;
+ GPTD := DELTA: CALC SYSTEM DSYSTEM TRACK :: EDIT 0 ;
+ SYSTEM DSYSTEM GPTA := DELETE: SYSTEM DSYSTEM GPTA ;
+*----
+* IMPLICIT GRADIENT CALCULATION
+*----
+ OPTIM := GRAD: OPTIM DCALCA GPTD :: EDIT 2
+ VAR-VAL-MIN ALL <<fmin>>
+ VAR-VAL-MAX ALL <<fmax>>
+ ;
+ CALC DCALCA GPTD := DELETE: CALC DCALCA GPTD ;
+*----
+* COMPUTE NEW CONTROL VARIABLES BY SOLVING A QUASI-LINEAR PROBLEM
+*----
+ IF IterE 1 = THEN
+ OPTIM := PLQ: OPTIM ::
+ EDIT 1
+ METHOD SIMPLEX
+ STEP-REDUCT PARABOLIC
+ OUT-STEP-LIM 0.1
+ OUT-STEP-EPS <<epsout>>
+ CST-QUAD-EPS <<epsout>>
+ CALCUL-DX
+ OUT-CONV-TST >>Conv<<
+ ;
+ ELSE
+ OPTIM := PLQ: OPTIM ::
+ EDIT 1
+ CALCUL-DX
+ OUT-CONV-TST >>Conv<<
+ ;
+ ENDIF ;
+ GREP: OPTIM :: GETVAL STATE-VECTOR 4 >>LConv<< ;
+ ECHO "Convergence" Conv LConv ;
+
+ IF LConv 1 < THEN
+ ECHO "Outer iteration --> no convergence" ;
+ ENDIF ;
+*----
+* UPDATE MACROLIB WITH NEW CONTROL VARIABLES
+*----
+ MACRO2 := MACRO2 MACRO1 :: ERAS ;
+ MACRO2 := MAC: MACRO2 OPTIM ;
+
+UNTIL Conv IterE IterEmax > + ;
+*----
+* VERIFICATION CALCULATION
+*----
+SYSTEM := TRIVAA: MACRO2 TRACK :: EDIT 0 ;
+CALC := FLUD: SYSTEM TRACK ::
+ EDIT 0 ADI 5 EXTE 300 1.0E-6 ACCE 5 3 ;
+
+EDIT := OUT: CALC MACROGEOM MACRO2 TRACK ::
+ EDIT 0 INTG MIX ;
+
+ECHO "Error statistics after correction" ;
+ERROR: MACRO1 EDIT :: NREG <<mat1>> ;
+END: ;