diff options
Diffstat (limited to 'Donjon/data/rep1300_reflector_proc/reflectorOpt.c2m')
| -rwxr-xr-x | Donjon/data/rep1300_reflector_proc/reflectorOpt.c2m | 160 |
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: ; |
