diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardSN.c2m | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardSN.c2m')
| -rw-r--r-- | PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardSN.c2m | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardSN.c2m b/PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardSN.c2m new file mode 100644 index 0000000..056fef6 --- /dev/null +++ b/PyGan/data/Equivalence_SPH_APEX_proc/SPHPicardSN.c2m @@ -0,0 +1,96 @@ +**************************************************************** +* * +* 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: ; +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 := ASM: MACRO2 TRACK :: EDIT 0 ARM ; + CALC := FLU: MACRO2 TRACK SYSTEM :: EDIT 1 TYPE K B0 SIGS ; + + 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<< ; + 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 := 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: ; |
