summaryrefslogtreecommitdiff
path: root/PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardRT.c2m
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 /PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardRT.c2m
Initial commit from Polytechnique Montreal
Diffstat (limited to 'PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardRT.c2m')
-rw-r--r--PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardRT.c2m96
1 files changed, 96 insertions, 0 deletions
diff --git a/PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardRT.c2m b/PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardRT.c2m
new file mode 100644
index 0000000..09f7cfd
--- /dev/null
+++ b/PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardRT.c2m
@@ -0,0 +1,96 @@
+****************************************************************
+* *
+* Procedure : SPHPicardRT.c2m *
+* Purpose : Compute SPH factors using a fixed point approach *
+* Author : A. Hebert *
+* *
+* CALL : *
+* Macro2 Optim := SPHPicardRT 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 TRIVAA: FLUD: GREP: OUT: FPSPH: MAC: ERROR: DELETE: DREF: END: ;
+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 ;
+
+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 2 ADI 3 EXTE 1.0E-7 200 ;
+
+ 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 PN
+ VAR-VAL-MIN <<fmin>>
+ VAR-VAL-MAX <<fmax>>
+ OUT-STEP-EPS <<epsout>> OUT-CONV-TST >>Conv<< ;
+ ELSE
+ OPTIM := FPSPH: OPTIM EDIT MACRO1 :: EDIT 1
+ VAR-VAL-MIN <<fmin>>
+ VAR-VAL-MAX <<fmax>>
+ OUT-CONV-TST >>Conv<< ;
+ ENDIF ;
+ GPTA OPTIM := DREF: OPTIM CALC TRACK EDIT MACRO1 ::
+ EDIT 1 NODERIV RMS >>rmsval<< ;
+ ECHO "outer iteration=" IterE "rmsval=" rmsval D_TO_R "Keff=" Keff ;
+ GPTA EDIT SYSTEM CALC := DELETE: GPTA EDIT SYSTEM CALC ;
+ MACRO2 := MACRO2 MACRO1 ;
+ MACRO2 := MAC: MACRO2 OPTIM ;
+
+UNTIL Conv IterE IterEmax > + ;
+*----
+* VERIFICATION CALCULATION
+*----
+SYSTEM := TRIVAA: MACRO2 TRACK :: EDIT 0 ;
+CALC := FLUD: SYSTEM TRACK :: EDIT 2 ADI 3 EXTE 1.E-07 200 ;
+
+EDIT := OUT: CALC MACROGEOM MACRO2 TRACK :: EDIT 0 INTG MIX ;
+
+ECHO "Error statistics after SPH correction" ;
+ERROR: MACRO1 EDIT :: HREA 'NFTOT' ;
+END: ;