summaryrefslogtreecommitdiff
path: root/Donjon/data/Equivalence_SPH_SN_APEX_proc
diff options
context:
space:
mode:
Diffstat (limited to 'Donjon/data/Equivalence_SPH_SN_APEX_proc')
-rwxr-xr-xDonjon/data/Equivalence_SPH_SN_APEX_proc/SPHPicardSN.c2m100
1 files changed, 100 insertions, 0 deletions
diff --git a/Donjon/data/Equivalence_SPH_SN_APEX_proc/SPHPicardSN.c2m b/Donjon/data/Equivalence_SPH_SN_APEX_proc/SPHPicardSN.c2m
new file mode 100755
index 0000000..41a0279
--- /dev/null
+++ b/Donjon/data/Equivalence_SPH_SN_APEX_proc/SPHPicardSN.c2m
@@ -0,0 +1,100 @@
+****************************************************************
+* *
+* Procedure : SPHPicardSN.c2m *
+* Purpose : Compute SPH factors using a fixed point approach *
+* Author : A. Hebert *
+* *
+* CALL : *
+* Macro2 Optim := SPHPicardSN 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: *
+* fmin : minimum acceptable correction factor *
+* fmax : maximum acceptable correction factor *
+* epsout : convergence criterion for outer iterations *
+* IterEmax : maximum number of iterations *
+* *
+****************************************************************
+PARAMETER MACRO2 OPTIM MACRO1 MACROGEOM TRACK ::
+ ::: LINKED_LIST MACRO2 OPTIM MACRO1 MACROGEOM TRACK ; ;
+MODULE ASM: FLU: GREP: OUT: FPSPH: MAC: ERROR: DELETE: DREF: END: UTL: ;
+LINKED_LIST SYSTEM CALC EDIT GPTA ;
+LOGICAL Conv ;
+REAL Keff fmin fmax epsout ;
+DOUBLE rmsval ;
+INTEGER IterE IterEmax ;
+ :: >>fmin<< >>fmax<< >>epsout<< >>IterEmax<< ;
+
+!****************************************
+!****************************************
+!********** SPH ITERATIONS **********
+!****************************************
+!****************************************
+
+MACRO2 := MACRO1 ;
+
+UTL: MACRO2 :: DIR ;
+
+EVALUATE IterE := 0 ;
+REPEAT
+
+ EVALUATE IterE := IterE 1 + ;
+ ECHO "#------------------------------" ;
+ IF IterE 10 < THEN
+ ECHO "#-------------" IterE "--------------" ;
+ ELSE
+ ECHO "#------------" IterE "--------------" ;
+ ENDIF ;
+ ECHO "#------------------------------" ;
+
+ SYSTEM := ASM: MACRO2 TRACK :: EDIT 0 ARM ;
+ CALC := FLU: MACRO2 TRACK SYSTEM :: EDIT 1 TYPE K LKRD SIGS IDEM ;
+
+ 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 :: HREA 'NFTOT' ;
+ ENDIF ;
+ IF IterE 1 = THEN
+ OPTIM := FPSPH: EDIT MACRO1 :: EDIT 2 SPH SN
+ VAR-VAL-MIN <<fmin>>
+ VAR-VAL-MAX <<fmax>>
+ OUT-STEP-EPS <<epsout>> OUT-CONV-TST >>Conv<< >>rmsval<< ;
+ ELSE
+ OPTIM := FPSPH: OPTIM EDIT MACRO1 :: EDIT 1
+ VAR-VAL-MIN <<fmin>>
+ VAR-VAL-MAX <<fmax>>
+ OUT-CONV-TST >>Conv<< >>rmsval<< ;
+ ENDIF ;
+ ECHO "outer iteration=" IterE "rmsval=" rmsval D_TO_R "Keff=" Keff "Conv=" Conv ;
+ GPTA OPTIM := DREF: OPTIM CALC TRACK EDIT MACRO1 ::
+ EDIT 1 NODERIV RMS >>rmsval<< ;
+ ERROR: MACRO1 EDIT :: HREA 'NTOT0' ;
+ ECHO "outer iteration=" IterE "rmsval_gpt=" rmsval D_TO_R ;
+ GPTA EDIT SYSTEM CALC := DELETE: GPTA EDIT SYSTEM CALC ;
+ MACRO2 := MACRO2 MACRO1 ;
+ MACRO2 := MAC: MACRO2 OPTIM ;
+
+UNTIL Conv IterE IterEmax > + ;
+*----
+* VERIFICATION CALCULATION
+*----
+SYSTEM := ASM: MACRO2 TRACK :: EDIT 0 ARM ;
+CALC := FLU: MACRO2 TRACK SYSTEM :: EDIT 1 TYPE K B0 SIGS ;
+
+EDIT := OUT: CALC MACROGEOM MACRO2 TRACK :: EDIT 0 INTG MIX ;
+
+ECHO "Error statistics after SPH correction" ;
+ERROR: MACRO1 EDIT :: HREA 'NFTOT' ;
+END: ;