From 7dfcc480ba1e19bd3232349fc733caef94034292 Mon Sep 17 00:00:00 2001 From: stainer_t Date: Mon, 8 Sep 2025 13:48:49 +0200 Subject: Initial commit from Polytechnique Montreal --- .../Equivalence_SPH_SN_APEX_proc/SPHPicardSN.c2m | 100 +++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100755 Donjon/data/Equivalence_SPH_SN_APEX_proc/SPHPicardSN.c2m (limited to 'Donjon/data/Equivalence_SPH_SN_APEX_proc') 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 <> + VAR-VAL-MAX <> + OUT-STEP-EPS <> OUT-CONV-TST >>Conv<< >>rmsval<< ; + ELSE + OPTIM := FPSPH: OPTIM EDIT MACRO1 :: EDIT 1 + VAR-VAL-MIN <> + VAR-VAL-MAX <> + 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: ; -- cgit v1.2.3