summaryrefslogtreecommitdiff
path: root/Dragon/data/tdraglib_proc/SPH_FixedPt.c2m
diff options
context:
space:
mode:
authorHEBERT Alain <alain.hebert@polymtl.ca>2025-12-23 11:34:01 -0500
committerHEBERT Alain <alain.hebert@polymtl.ca>2025-12-23 11:34:01 -0500
commitc4db2987ef7214cb11537e6805bc319807e11866 (patch)
treeff7bea851c1ce9685d26fc5080f65fcf9110086b /Dragon/data/tdraglib_proc/SPH_FixedPt.c2m
parent0fbdc50700be08e00ecad828d9c99b5c045b382b (diff)
parentbd7171d346ad4f079aa89b2d9fdd6a56aa0a3b1c (diff)
Merge branch '19-depreciate-use-of-version-4-and-5-0-draglibs' into 'main'
Resolve "Depreciate use of Version 4 and 5.0 Draglibs" See merge request dragon/5.1!38
Diffstat (limited to 'Dragon/data/tdraglib_proc/SPH_FixedPt.c2m')
-rw-r--r--Dragon/data/tdraglib_proc/SPH_FixedPt.c2m105
1 files changed, 105 insertions, 0 deletions
diff --git a/Dragon/data/tdraglib_proc/SPH_FixedPt.c2m b/Dragon/data/tdraglib_proc/SPH_FixedPt.c2m
new file mode 100644
index 0000000..83d9996
--- /dev/null
+++ b/Dragon/data/tdraglib_proc/SPH_FixedPt.c2m
@@ -0,0 +1,105 @@
+****************************************************************
+* *
+* Procedure : SPH_FixedPt.c2m *
+* Purpose : Compute SPH factors using a fixed point approach *
+* Author : A. Hebert *
+* *
+* CALL : *
+* Macro2 Optim := SPH_FixedPt 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 BIVACA: FLUD: GREP: OUT: FPSPH: MAC: ERROR: DELETE: END: ;
+LINKED_LIST SYSTEM CALC EDIT ;
+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 := BIVACA: MACRO2 TRACK :: EDIT 0 ;
+ IF IterE 1 = THEN
+ CALC := FLUD: SYSTEM TRACK ::
+ EDIT 0 ADI 5 EXTE 50 1.0E-6 ACCE 5 3 ;
+ ELSE
+ CALC := FLUD: CALC SYSTEM TRACK ::
+ EDIT 0 ADI 5 EXTE 50 1.0E-6 ACCE 5 3 ;
+ ENDIF ;
+ SYSTEM := DELETE: SYSTEM ;
+
+ 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<< >>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 ;
+ EDIT := DELETE: EDIT ;
+ MACRO2 := MACRO2 MACRO1 ;
+ MACRO2 := MAC: MACRO2 OPTIM ;
+
+UNTIL Conv IterE IterEmax > + ;
+CALC := DELETE: CALC ;
+*----
+* VERIFICATION CALCULATION
+*----
+SYSTEM := BIVACA: MACRO2 TRACK :: EDIT 0 ;
+CALC := FLUD: SYSTEM TRACK ::
+ EDIT 0 ADI 5 EXTE 50 1.0E-6 ACCE 5 3 ;
+
+EDIT := OUT: CALC MACROGEOM MACRO2 TRACK ::
+ EDIT 0 INTG MIX ;
+
+ECHO "Error statistics after correction" ;
+ERROR: MACRO1 EDIT :: HREA 'NFTOT' ;
+END: ;