From 328eea10b113420c21fece1bd302c684b4aca251 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Fri, 9 Jan 2026 11:55:35 -0500 Subject: [PATCH 01/14] Initial implementation of step/stage preprocessing, as well as failed step postprocessing --- doc/arkode/guide/source/Constants.rst | 4 +- include/arkode/arkode.h | 9 +- src/arkode/arkode.c | 29 +- src/arkode/arkode_arkstep.c | 21 +- src/arkode/arkode_erkstep.c | 19 +- src/arkode/arkode_impl.h | 11 +- src/arkode/arkode_io.c | 81 +++++- src/arkode/arkode_lsrkstep.c | 364 +++++++++++++++++++++----- src/arkode/arkode_mristep.c | 80 +++++- src/arkode/arkode_sprkstep.c | 34 ++- 10 files changed, 547 insertions(+), 105 deletions(-) diff --git a/doc/arkode/guide/source/Constants.rst b/doc/arkode/guide/source/Constants.rst index a739dbade7..d7e13d8adc 100644 --- a/doc/arkode/guide/source/Constants.rst +++ b/doc/arkode/guide/source/Constants.rst @@ -470,9 +470,9 @@ contains the ARKODE output constants. Commented-out table rows: +-------------------------------------+------+------------------------------------------------------------+ - | :index:`ARK_POSTPROCESS_STEP_FAIL` | -37 | An error occurred when calling the user-provided | + | :index:`ARK_POSTPROCESS_STEP_FAIL` | -37 | An error occurred when calling a user-provided. | | | | step-based :c:func:`ARKPostProcessFn` routine. | +-------------------------------------+------+------------------------------------------------------------+ - | :index:`ARK_POSTPROCESS_STAGE_FAIL` | -38 | An error occurred when calling the user-provided | + | :index:`ARK_POSTPROCESS_STAGE_FAIL` | -38 | An error occurred when calling a user-provided | | | | stage-based :c:func:`ARKPostProcessFn` routine. | +-------------------------------------+------+------------------------------------------------------------+ diff --git a/include/arkode/arkode.h b/include/arkode/arkode.h index 78ad5edb9a..d595074409 100644 --- a/include/arkode/arkode.h +++ b/include/arkode/arkode.h @@ -124,7 +124,8 @@ extern "C" { #define ARK_INNERTOOUTER_FAIL -36 /* ARK_POSTPROCESS_FAIL equals ARK_POSTPROCESS_STEP_FAIL - for backwards compatibility */ + for backwards compatibility. Note that we use these + same constants for step and stage preprocessing errors */ #define ARK_POSTPROCESS_FAIL -37 #define ARK_POSTPROCESS_STEP_FAIL -37 #define ARK_POSTPROCESS_STAGE_FAIL -38 @@ -275,8 +276,14 @@ SUNDIALS_EXPORT int ARKodeClearStopTime(void* arkode_mem); SUNDIALS_EXPORT int ARKodeSetFixedStep(void* arkode_mem, sunrealtype hfixed); SUNDIALS_EXPORT int ARKodeSetStepDirection(void* arkode_mem, sunrealtype stepdir); SUNDIALS_EXPORT int ARKodeSetUserData(void* arkode_mem, void* user_data); +SUNDIALS_EXPORT int ARKodeSetPreprocessStepFn(void* arkode_mem, + ARKPostProcessFn ProcessStep); SUNDIALS_EXPORT int ARKodeSetPostprocessStepFn(void* arkode_mem, ARKPostProcessFn ProcessStep); +SUNDIALS_EXPORT int ARKodeSetPostprocessStepFailFn(void* arkode_mem, + ARKPostProcessFn ProcessStep); +SUNDIALS_EXPORT int ARKodeSetPreprocessStageFn(void* arkode_mem, + ARKPostProcessFn ProcessStage); SUNDIALS_EXPORT int ARKodeSetPostprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage); diff --git a/src/arkode/arkode.c b/src/arkode/arkode.c index 8e44a139c7..5095643d58 100644 --- a/src/arkode/arkode.c +++ b/src/arkode/arkode.c @@ -903,6 +903,13 @@ int ARKodeEvolve(void* arkode_mem, sunrealtype tout, N_Vector yout, "step = %li, tn = " SUN_FORMAT_G ", h = " SUN_FORMAT_G, ark_mem->nst + 1, ark_mem->tn, ark_mem->h); + /* call the user-supplied step preprocessing function (if it exists) */ + if (ark_mem->PreProcessStep != NULL) + { + retval = ark_mem->PreProcessStep(ark_mem->tcur, ark_mem->ycur, ark_mem->ps_data); + if (retval != 0) { return (ARK_POSTPROCESS_STEP_FAIL); } + } + /* Call time stepper module to attempt a step: 0 => step completed successfully >0 => step encountered recoverable failure; reduce step if possible @@ -1000,6 +1007,13 @@ int ARKodeEvolve(void* arkode_mem, sunrealtype tout, N_Vector yout, ark_mem->h *= ark_mem->eta; ark_mem->next_h = ark_mem->hprime = ark_mem->h; + /* since the previous step attempt failed, call the user-supplied step failure postprocessing function (if it exists) */ + if (ark_mem->PostProcessStepFail != NULL) + { + retval = ark_mem->PostProcessStepFail(ark_mem->tcur, ark_mem->ycur, ark_mem->ps_data); + if (retval != 0) { return (ARK_POSTPROCESS_STEP_FAIL); } + } + } /* end looping for step attempts */ /* If step attempt loop succeeded, complete step (update current time, solution, @@ -1586,12 +1600,15 @@ ARKodeMem arkCreate(SUNContext sunctx) ark_mem->VRabstolMallocDone = SUNFALSE; ark_mem->MallocDone = SUNFALSE; - /* No user-supplied step postprocessing function yet */ - ark_mem->ProcessStep = NULL; + /* No user-supplied step pre- or post-processing functions yet */ + ark_mem->PreProcessStep = NULL; + ark_mem->PostProcessStep = NULL; + ark_mem->PostProcessStepFail = NULL; ark_mem->ps_data = NULL; - /* No user-supplied stage postprocessing function yet */ - ark_mem->ProcessStage = NULL; + /* No user-supplied stage pre- or post-processing functions yet */ + ark_mem->PreProcessStage = NULL; + ark_mem->PostProcessStage = NULL; /* No user_data pointer yet */ ark_mem->user_data = NULL; @@ -2726,9 +2743,9 @@ int arkCompleteStep(ARKodeMem ark_mem, sunrealtype dsm) } /* apply user-supplied step postprocessing function (if supplied) */ - if (ark_mem->ProcessStep != NULL) + if (ark_mem->PostProcessStep != NULL) { - retval = ark_mem->ProcessStep(ark_mem->tcur, ark_mem->ycur, ark_mem->ps_data); + retval = ark_mem->PostProcessStep(ark_mem->tcur, ark_mem->ycur, ark_mem->ps_data); if (retval != 0) { return (ARK_POSTPROCESS_STEP_FAIL); } } diff --git a/src/arkode/arkode_arkstep.c b/src/arkode/arkode_arkstep.c index fe1d386b72..c46490a362 100644 --- a/src/arkode/arkode_arkstep.c +++ b/src/arkode/arkode_arkstep.c @@ -1917,6 +1917,21 @@ int arkStep_TakeStep_Z(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) "stage = %i, implicit = %i, tcur = " SUN_FORMAT_G, is, implicit_stage, ark_mem->tcur); + /* apply user-supplied stage preprocessing function (if supplied) */ + /* NOTE: with internally inconsistent IMEX methods (c_i^E != c_i^I) the value + of tcur corresponds to the stage time from the implicit table (c_i^I). */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* setup time-dependent mass matrix */ if ((step_mem->mass_type == MASS_TIMEDEP) && (step_mem->msetup != NULL)) { @@ -2015,10 +2030,10 @@ int arkStep_TakeStep_Z(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* apply user-supplied stage postprocessing function (if supplied) */ /* NOTE: with internally inconsistent IMEX methods (c_i^E != c_i^I) the value of tcur corresponds to the stage time from the implicit table (c_i^I). */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", diff --git a/src/arkode/arkode_erkstep.c b/src/arkode/arkode_erkstep.c index c4282fe150..50552a3d26 100644 --- a/src/arkode/arkode_erkstep.c +++ b/src/arkode/arkode_erkstep.c @@ -823,6 +823,19 @@ int erkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) SUNLogInfo(ARK_LOGGER, "begin-stages-list", "stage = %i, tcur = " SUN_FORMAT_G, is, ark_mem->tcur); + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn + step_mem->B->c[is-1] * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* Set ycur to current stage solution */ nvec = 0; for (js = 0; js < is; js++) @@ -857,10 +870,10 @@ int erkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", diff --git a/src/arkode/arkode_impl.h b/src/arkode/arkode_impl.h index a89f57b8e2..eb9a0a90f9 100644 --- a/src/arkode/arkode_impl.h +++ b/src/arkode/arkode_impl.h @@ -564,12 +564,15 @@ struct ARKodeMemRec sunbooleantype relax_enabled; /* is relaxation enabled? */ ARKodeRelaxMem relax_mem; /* relaxation data structure */ - /* User-supplied step solution post-processing function */ - ARKPostProcessFn ProcessStep; + /* User-supplied step solution pre/post-processing functions */ + ARKPostProcessFn PreProcessStep; + ARKPostProcessFn PostProcessStep; + ARKPostProcessFn PostProcessStepFail; void* ps_data; /* pointer to user_data */ - /* User-supplied stage solution post-processing function */ - ARKPostProcessFn ProcessStage; + /* User-supplied stage solution pre/post-processing functions */ + ARKPostProcessFn PreProcessStage; + ARKPostProcessFn PostProcessStage; sunbooleantype use_compensated_sums; diff --git a/src/arkode/arkode_io.c b/src/arkode/arkode_io.c index cb70bbd19f..7532eba29e 100644 --- a/src/arkode/arkode_io.c +++ b/src/arkode/arkode_io.c @@ -874,7 +874,8 @@ int ARKodeSetUserData(void* arkode_mem, void* user_data) if (ark_mem->root_mem != NULL) { ark_mem->root_mem->root_data = user_data; } /* Set data for post-processing a step */ - if (ark_mem->ProcessStep != NULL) { ark_mem->ps_data = user_data; } + if ((ark_mem->PreProcessStep != NULL) || (ark_mem->PostProcessStep != NULL) || + (ark_mem->PostProcessStepFail != NULL)) { ark_mem->ps_data = user_data; } /* Set user data into stepper (if provided) */ if (ark_mem->step_setuserdata) @@ -1490,16 +1491,40 @@ int ARKodeSetNoInactiveRootWarn(void* arkode_mem) } /*--------------------------------------------------------------- + ARKodeSetPreprocessStepFn: ARKodeSetPostprocessStepFn: + ARKodeSetPostprocessStepFailFn: - Specifies a user-provided step postprocessing function having - type ARKPostProcessFn. A NULL input function disables step - postprocessing. + Specifies user-provided step pre- and post-processing functions + having type ARKPostProcessFn. A NULL input function disables step + pre- or post-step processing. + + The "Preprocess" function is called just prior to taking a step, + while the "Postprocess" function is called immediately after + a successful step. The "PostprocessStepFail" function is called + immediately after a failed step. IF THE SUPPLIED FUNCTION MODIFIES ANY OF THE ACTIVE STATE DATA, THEN ALL THEORETICAL GUARANTEES OF SOLUTION ACCURACY AND STABILITY ARE LOST. ---------------------------------------------------------------*/ +int ARKodeSetPreprocessStepFn(void* arkode_mem, ARKPostProcessFn ProcessStep) +{ + ARKodeMem ark_mem; + if (arkode_mem == NULL) + { + arkProcessError(NULL, ARK_MEM_NULL, __LINE__, __func__, __FILE__, + MSG_ARK_NO_MEM); + return (ARK_MEM_NULL); + } + ark_mem = (ARKodeMem)arkode_mem; + + /* NULL argument sets default, otherwise set inputs */ + ark_mem->PreProcessStep = ProcessStep; + ark_mem->ps_data = ark_mem->user_data; + + return (ARK_SUCCESS); +} int ARKodeSetPostprocessStepFn(void* arkode_mem, ARKPostProcessFn ProcessStep) { ARKodeMem ark_mem; @@ -1512,18 +1537,40 @@ int ARKodeSetPostprocessStepFn(void* arkode_mem, ARKPostProcessFn ProcessStep) ark_mem = (ARKodeMem)arkode_mem; /* NULL argument sets default, otherwise set inputs */ - ark_mem->ProcessStep = ProcessStep; + ark_mem->PostProcessStep = ProcessStep; + ark_mem->ps_data = ark_mem->user_data; + + return (ARK_SUCCESS); +} +int ARKodeSetPostprocessStepFailFn(void* arkode_mem, ARKPostProcessFn ProcessStep) +{ + ARKodeMem ark_mem; + if (arkode_mem == NULL) + { + arkProcessError(NULL, ARK_MEM_NULL, __LINE__, __func__, __FILE__, + MSG_ARK_NO_MEM); + return (ARK_MEM_NULL); + } + ark_mem = (ARKodeMem)arkode_mem; + + /* NULL argument sets default, otherwise set inputs */ + ark_mem->PostProcessStepFail = ProcessStep; ark_mem->ps_data = ark_mem->user_data; return (ARK_SUCCESS); } /*--------------------------------------------------------------- + ARKodeSetPreprocessStageFn: ARKodeSetPostprocessStageFn: - Specifies a user-provided stage postprocessing function having - type ARKPostProcessFn. A NULL input function disables - stage postprocessing. + Specifies user-provided stage pre- and post-processing + functions having type ARKPostProcessFn. A NULL input function + disables pre- or post-stage processing. + + The "Preprocess" function is called just prior to taking a stage, + while the "Postprocess" function is called immediately after + computing a stage. IF THE SUPPLIED FUNCTION MODIFIES ANY OF THE ACTIVE STATE DATA, THEN ALL THEORETICAL GUARANTEES OF SOLUTION ACCURACY AND @@ -1536,6 +1583,22 @@ int ARKodeSetPostprocessStepFn(void* arkode_mem, ARKPostProcessFn ProcessStep) ARKodeSetDeduceImplicitRhs in order to guarantee postprocessing constraints are enforced. ---------------------------------------------------------------*/ +int ARKodeSetPreprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) +{ + ARKodeMem ark_mem; + if (arkode_mem == NULL) + { + arkProcessError(NULL, ARK_MEM_NULL, __LINE__, __func__, __FILE__, + MSG_ARK_NO_MEM); + return (ARK_MEM_NULL); + } + ark_mem = (ARKodeMem)arkode_mem; + + /* NULL argument sets default, otherwise set inputs */ + ark_mem->PreProcessStage = ProcessStage; + + return (ARK_SUCCESS); +} int ARKodeSetPostprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) { ARKodeMem ark_mem; @@ -1548,7 +1611,7 @@ int ARKodeSetPostprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) ark_mem = (ARKodeMem)arkode_mem; /* NULL argument sets default, otherwise set inputs */ - ark_mem->ProcessStage = ProcessStage; + ark_mem->PostProcessStage = ProcessStage; return (ARK_SUCCESS); } diff --git a/src/arkode/arkode_lsrkstep.c b/src/arkode/arkode_lsrkstep.c index ec09b323d7..8cae80fb63 100644 --- a/src/arkode/arkode_lsrkstep.c +++ b/src/arkode/arkode_lsrkstep.c @@ -641,6 +641,19 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) bjm1 = ONE / SUNSQR(TWO * w0); bjm2 = bjm1; + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + /* Evaluate the first stage */ N_VScale(ONE, ark_mem->yn, ark_mem->tempv1); @@ -652,10 +665,10 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) N_VLinearSum(ONE, ark_mem->yn, ark_mem->h * mus, ark_mem->fn, ark_mem->tempv2); /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tn + ark_mem->h * mus, - ark_mem->tempv2, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tn + ark_mem->h * mus, + ark_mem->tempv2, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -685,6 +698,19 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) nu = -bj / bjm2; mus = mu * w1 / w0; + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * thjm1, + ark_mem->tempv2, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + /* Use the ycur array for temporary storage here */ retval = step_mem->fe(ark_mem->tcur + ark_mem->h * thjm1, ark_mem->tempv2, ark_mem->ycur, ark_mem->user_data); @@ -727,9 +753,9 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL && j < step_mem->req_stages) + if (ark_mem->PostProcessStage != NULL && j < step_mem->req_stages) { - retval = ark_mem->ProcessStage(ark_mem->tcur + ark_mem->h * thj, + retval = ark_mem->PostProcessStage(ark_mem->tcur + ark_mem->h * thj, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -922,6 +948,19 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + /* Compute RHS function, if necessary. */ if ((!ark_mem->fn_is_current && ark_mem->initsetup) || (step_mem->step_nst != ark_mem->nst)) @@ -962,10 +1001,10 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) N_VLinearSum(ONE, ark_mem->yn, ark_mem->h * mus, ark_mem->fn, ark_mem->tempv2); /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tn + ark_mem->h * mus, - ark_mem->tempv2, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tn + ark_mem->h * mus, + ark_mem->tempv2, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -985,6 +1024,19 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) mus = w1 * mu; cj = temj * w1 / FOUR; + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * cjm1, + ark_mem->tempv2, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + /* Use the ycur array for temporary storage here */ retval = step_mem->fe(ark_mem->tcur + ark_mem->h * cjm1, ark_mem->tempv2, ark_mem->ycur, ark_mem->user_data); @@ -1023,10 +1075,10 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL && j < step_mem->req_stages) + if (ark_mem->PostProcessStage != NULL && j < step_mem->req_stages) { - retval = ark_mem->ProcessStage(ark_mem->tcur + ark_mem->h * cj, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + ark_mem->h * cj, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1166,6 +1218,19 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr bt3 = (rs - ONE) / (rs * rs); } + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + SUNLogInfo(ARK_LOGGER, "begin-stages-list", "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); @@ -1200,10 +1265,10 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tn + sm1inv * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tn + sm1inv * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1215,6 +1280,19 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* Evaluate stages j = 2,...,step_mem->req_stages - 1 */ for (int j = 2; j < step_mem->req_stages; j++) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + (j-1) * sm1inv * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ((sunrealtype)j - ONE) * sm1inv * ark_mem->h, ark_mem->ycur, ark_mem->tempv2, ark_mem->user_data); @@ -1242,14 +1320,14 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur + j * sm1inv * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + j * sm1inv * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed vector op, retval = %i", retval); + "status = failed postprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1355,6 +1433,19 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + /* The method is not FSAL. Therefore, fn ​is computed at the beginning of the step unless ARKODE updated fn. */ if (!ark_mem->fn_is_current) @@ -1384,10 +1475,10 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tn + ark_mem->h * rat, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tn + ark_mem->h * rat, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1399,6 +1490,19 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* Evaluate stages j = 2,...,step_mem->req_stages */ for (int j = 2; j <= ((in - 1) * (in - 2) / 2); j++) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + (j-1) * rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, ark_mem->ycur, ark_mem->tempv3, ark_mem->user_data); @@ -1426,10 +1530,10 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur + j * rat * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + j * rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1443,6 +1547,19 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr for (int j = ((in - 1) * (in - 2) / 2 + 1); j <= (in * (in + 1) / 2 - 1); j++) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + (j-1) * rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, ark_mem->ycur, ark_mem->tempv3, ark_mem->user_data); @@ -1470,10 +1587,10 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur + j * rat * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + j * rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1483,6 +1600,20 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } } + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + + rat * (rn * (rn + ONE) / TWO - ONE) * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + rat * (rn * (rn + ONE) / TWO - ONE) * ark_mem->h, ark_mem->ycur, ark_mem->tempv3, ark_mem->user_data); @@ -1523,16 +1654,35 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur + - rat * (rn * (rn - ONE) / TWO) * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); - if (retval != 0) { return ARK_POSTPROCESS_STAGE_FAIL; } + retval = ark_mem->PostProcessStage(ark_mem->tcur + + rat * (rn * (rn - ONE) / TWO) * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed postprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } } for (int j = (in * (in + 1) / 2 + 1); j <= step_mem->req_stages; j++) { + /* apply user-supplied stage postprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + + ((sunrealtype)j - rn - ONE) * rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed postprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ((sunrealtype)j - rn - ONE) * rat * ark_mem->h, ark_mem->ycur, ark_mem->tempv3, ark_mem->user_data); @@ -1560,11 +1710,11 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL && j < step_mem->req_stages) + if (ark_mem->PostProcessStage != NULL && j < step_mem->req_stages) { - retval = ark_mem->ProcessStage(ark_mem->tcur + - ((sunrealtype)j - rn) * rat * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + + ((sunrealtype)j - rn) * rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1640,6 +1790,19 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + /* The method is not FSAL. Therefore, fn ​is computed at the beginning of the step unless ARKODE updated fn. */ if (!ark_mem->fn_is_current) @@ -1669,10 +1832,10 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tn + ark_mem->h * p5, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tn + ark_mem->h * p5, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1681,6 +1844,19 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } } + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * p5, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ark_mem->h * p5, ark_mem->ycur, ark_mem->tempv3, ark_mem->user_data); step_mem->nfe++; @@ -1705,10 +1881,10 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur + ark_mem->h, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + ark_mem->h, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1717,6 +1893,19 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } } + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->tempv3, ark_mem->user_data); step_mem->nfe++; @@ -1754,10 +1943,10 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur + ark_mem->h * p5, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + ark_mem->h * p5, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1845,6 +2034,19 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + /* The method is not FSAL. Therefore, fn ​is computed at the beginning of the step unless ARKODE updated fn. */ if (!ark_mem->fn_is_current) @@ -1877,19 +2079,32 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt ark_mem->tempv1); } + /* apply user-supplied stage postprocessing function (if supplied) */ + if (ark_mem->PostProcessStage != NULL) + { + retval = ark_mem->PostProcessStage(ark_mem->tn + onesixth * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed postprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + /* Evaluate stages j = 2,...,step_mem->req_stages */ for (int j = 2; j <= 5; j++) { - /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur + ((sunrealtype)j - ONE) * - onesixth * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessStage(ark_mem->tcur + + ((sunrealtype)j - ONE) * onesixth * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed postprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1919,8 +2134,25 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt N_VLinearSum(ONE, ark_mem->tempv1, SUN_RCONST(0.3) * ark_mem->h, ark_mem->tempv3, ark_mem->tempv1); } + + /* apply user-supplied stage postprocessing function (if supplied) */ + if (ark_mem->PostProcessStage != NULL) + { + retval = ark_mem->PostProcessStage(ark_mem->tn + j * onesixth * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed postprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + } + /* no need to call stage preprocessing here, since the stage does not require + a RHS function evaluation */ + SUNLogInfo(ARK_LOGGER, "end-stages-list", "status = success"); SUNLogInfo(ARK_LOGGER, "begin-stages-list", "stage = %i, tcur = " SUN_FORMAT_G, 6, ark_mem->tn + TWO * onesixth * ark_mem->h); @@ -1932,10 +2164,10 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt ark_mem->ycur, ark_mem->ycur); /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur + TWO * onesixth * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + TWO * onesixth * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1946,6 +2178,20 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt for (int j = 6; j <= 9; j++) { + /* apply user-supplied stage prerocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + + ((sunrealtype)j - FOUR) * onesixth * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ((sunrealtype)j - FOUR) * onesixth * ark_mem->h, ark_mem->ycur, ark_mem->tempv3, ark_mem->user_data); @@ -1978,11 +2224,11 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur + ((sunrealtype)j - THREE) * - onesixth * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + ((sunrealtype)j - THREE) * + onesixth * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", diff --git a/src/arkode/arkode_mristep.c b/src/arkode/arkode_mristep.c index 39189bda5c..833b068ccf 100644 --- a/src/arkode/arkode_mristep.c +++ b/src/arkode/arkode_mristep.c @@ -1909,6 +1909,19 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt "stage = %i, stage type = %d, tcur = " SUN_FORMAT_G, is, step_mem->stagetypes[is], ark_mem->tcur); + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t0, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* Determine current stage type, and call corresponding routine; the vector ark_mem->ycur stores the previous stage solution on input, and should store the result of this stage solution on output. */ @@ -1953,11 +1966,11 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt SUNLogExtraDebugVec(ARK_LOGGER, "slow stage", ark_mem->ycur, "z_%i(:) =", is); /* apply user-supplied stage postprocessing function (if supplied) */ - if ((ark_mem->ProcessStage != NULL) && + if ((ark_mem->PostProcessStage != NULL) && (step_mem->stagetypes[is] != MRISTAGE_STIFF_ACC)) { - retval = ark_mem->ProcessStage(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1970,7 +1983,7 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt if (step_mem->stagetypes[is] != MRISTAGE_STIFF_ACC) { if ((step_mem->stagetypes[is] != MRISTAGE_ERK_FAST) || - (ark_mem->ProcessStage != NULL)) + (ark_mem->PostProcessStage != NULL)) { retval = mriStepInnerStepper_Reset(step_mem->stepper, tf, ark_mem->ycur); if (retval != ARK_SUCCESS) @@ -2168,6 +2181,19 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt "stage = %i, stage type = %d, tcur = " SUN_FORMAT_G, is, step_mem->stagetypes[is], ark_mem->tcur); + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t0, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* Determine final stage type, and call corresponding routine; the vector ark_mem->ycur stores the previous stage solution on input, and should store the result of this stage solution on output. */ @@ -2212,11 +2238,11 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt SUNLogExtraDebugVec(ARK_LOGGER, "slow stage", ark_mem->ycur, "z_%i(:) =", is); /* apply user-supplied stage postprocessing function (if supplied) */ - if ((ark_mem->ProcessStage != NULL) && + if ((ark_mem->PostProcessStage != NULL) && (step_mem->stagetypes[is] != MRISTAGE_STIFF_ACC)) { - retval = ark_mem->ProcessStage(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -2229,7 +2255,7 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt if (step_mem->stagetypes[is] != MRISTAGE_STIFF_ACC) { if ((step_mem->stagetypes[is] != MRISTAGE_ERK_FAST) || - (ark_mem->ProcessStage != NULL)) + (ark_mem->PostProcessStage != NULL)) { retval = mriStepInnerStepper_Reset(step_mem->stepper, tf, ark_mem->ycur); if (retval != ARK_SUCCESS) @@ -2453,6 +2479,19 @@ int mriStep_TakeStepMRISR(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) "stage = %i, stage type = %d, tcur = " SUN_FORMAT_G, stage, MRISTAGE_ERK_FAST, ark_mem->tn + cstage * ark_mem->h); + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* Compute forcing function for inner solver */ retval = mriStep_ComputeInnerForcing(ark_mem, step_mem, stage, ark_mem->tn, ark_mem->tn + cstage * ark_mem->h); @@ -2600,10 +2639,10 @@ int mriStep_TakeStepMRISR(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* apply user-supplied stage postprocessing function (if supplied), and reset the inner integrator with the modified stage solution */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -2892,6 +2931,19 @@ int mriStep_TakeStepMERK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) lowest_stage = SUNMIN(lowest_stage, step_mem->MRIC->group[ig][il]); } + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* Set up fast RHS for this stage group */ retval = mriStep_ComputeInnerForcing(ark_mem, step_mem, lowest_stage, ark_mem->tn, ark_mem->tn + ark_mem->h); @@ -2990,10 +3042,10 @@ int mriStep_TakeStepMERK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* apply user-supplied stage postprocessing function (if supplied), and reset the inner integrator with the modified stage solution */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", diff --git a/src/arkode/arkode_sprkstep.c b/src/arkode/arkode_sprkstep.c index cbf88749aa..e187677cbe 100644 --- a/src/arkode/arkode_sprkstep.c +++ b/src/arkode/arkode_sprkstep.c @@ -560,6 +560,19 @@ int sprkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) ark_mem->tn + ci * ark_mem->h, ark_mem->tn + chati * ark_mem->h); SUNLogExtraDebugVec(ARK_LOGGER, "stage", prev_stage, "z2_%i(:) =", is); + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn + ci * ark_mem->h, prev_stage, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* evaluate p' with the previous velocity */ if (SUNRabs(ahati) > TINY) { @@ -613,10 +626,10 @@ int sprkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } /* apply user-supplied stage postprocessing function (if supplied) */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->ProcessStage(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -686,6 +699,19 @@ int sprkStep_TakeStep_Compensated(ARKodeMem ark_mem, sunrealtype* dsmPtr, "stage = %i, t = " SUN_FORMAT_G ", that = " SUN_FORMAT_G, is, ark_mem->tn + ci * ark_mem->h, ark_mem->tn + chati * ark_mem->h); + /* if user-supplied stage preprocessing function, we error out since it + * won't work with the increment form */ + if (ark_mem->PreProcessStage != NULL) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed preprocess stage, retval = %i", retval); + arkProcessError(ark_mem, ARK_POSTPROCESS_STAGE_FAIL, __LINE__, __func__, + __FILE__, + "Compensated summation is not compatible with stage " + "PreProcessing!\n"); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + /* [ ] + [ ] [ q_n ] + [ \Delta Q_i ] */ N_VLinearSum(ONE, ark_mem->yn, ONE, delta_Yi, yn_plus_delta_Yi); @@ -751,7 +777,7 @@ int sprkStep_TakeStep_Compensated(ARKodeMem ark_mem, sunrealtype* dsmPtr, /* if user-supplied stage postprocessing function, we error out since it * won't work with the increment form */ - if (ark_mem->ProcessStage != NULL) + if (ark_mem->PostProcessStage != NULL) { SUNLogInfo(ARK_LOGGER, "end-stages-list", "status = failed postprocess stage, retval = %i", retval); From 9195cdaa92529dded58b83a310fd822ec3eb76e2 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 14:54:42 -0500 Subject: [PATCH 02/14] Regenerated SWIG --- src/arkode/fmod_int32/farkode_mod.c | 42 +++++++++++++++ src/arkode/fmod_int32/farkode_mod.f90 | 78 +++++++++++++++++++++++++++ src/arkode/fmod_int64/farkode_mod.c | 42 +++++++++++++++ src/arkode/fmod_int64/farkode_mod.f90 | 78 +++++++++++++++++++++++++++ 4 files changed, 240 insertions(+) diff --git a/src/arkode/fmod_int32/farkode_mod.c b/src/arkode/fmod_int32/farkode_mod.c index 8f74f81e25..1dcc8ef708 100644 --- a/src/arkode/fmod_int32/farkode_mod.c +++ b/src/arkode/fmod_int32/farkode_mod.c @@ -650,6 +650,20 @@ SWIGEXPORT int _wrap_FARKodeSetUserData(void *farg1, void *farg2) { } +SWIGEXPORT int _wrap_FARKodeSetPreprocessStepFn(void *farg1, ARKPostProcessFn farg2) { + int fresult ; + void *arg1 = (void *) 0 ; + ARKPostProcessFn arg2 = (ARKPostProcessFn) 0 ; + int result; + + arg1 = (void *)(farg1); + arg2 = (ARKPostProcessFn)(farg2); + result = (int)ARKodeSetPreprocessStepFn(arg1,arg2); + fresult = (int)(result); + return fresult; +} + + SWIGEXPORT int _wrap_FARKodeSetPostprocessStepFn(void *farg1, ARKPostProcessFn farg2) { int fresult ; void *arg1 = (void *) 0 ; @@ -664,6 +678,34 @@ SWIGEXPORT int _wrap_FARKodeSetPostprocessStepFn(void *farg1, ARKPostProcessFn f } +SWIGEXPORT int _wrap_FARKodeSetPostprocessStepFailFn(void *farg1, ARKPostProcessFn farg2) { + int fresult ; + void *arg1 = (void *) 0 ; + ARKPostProcessFn arg2 = (ARKPostProcessFn) 0 ; + int result; + + arg1 = (void *)(farg1); + arg2 = (ARKPostProcessFn)(farg2); + result = (int)ARKodeSetPostprocessStepFailFn(arg1,arg2); + fresult = (int)(result); + return fresult; +} + + +SWIGEXPORT int _wrap_FARKodeSetPreprocessStageFn(void *farg1, ARKPostProcessFn farg2) { + int fresult ; + void *arg1 = (void *) 0 ; + ARKPostProcessFn arg2 = (ARKPostProcessFn) 0 ; + int result; + + arg1 = (void *)(farg1); + arg2 = (ARKPostProcessFn)(farg2); + result = (int)ARKodeSetPreprocessStageFn(arg1,arg2); + fresult = (int)(result); + return fresult; +} + + SWIGEXPORT int _wrap_FARKodeSetPostprocessStageFn(void *farg1, ARKPostProcessFn farg2) { int fresult ; void *arg1 = (void *) 0 ; diff --git a/src/arkode/fmod_int32/farkode_mod.f90 b/src/arkode/fmod_int32/farkode_mod.f90 index 4ccf120bbd..347a826f64 100644 --- a/src/arkode/fmod_int32/farkode_mod.f90 +++ b/src/arkode/fmod_int32/farkode_mod.f90 @@ -145,7 +145,10 @@ module farkode_mod public :: FARKodeSetFixedStep public :: FARKodeSetStepDirection public :: FARKodeSetUserData + public :: FARKodeSetPreprocessStepFn public :: FARKodeSetPostprocessStepFn + public :: FARKodeSetPostprocessStepFailFn + public :: FARKodeSetPreprocessStageFn public :: FARKodeSetPostprocessStageFn public :: FARKodeSetNonlinearSolver public :: FARKodeSetLinear @@ -705,6 +708,15 @@ function swigc_FARKodeSetUserData(farg1, farg2) & integer(C_INT) :: fresult end function +function swigc_FARKodeSetPreprocessStepFn(farg1, farg2) & +bind(C, name="_wrap_FARKodeSetPreprocessStepFn") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +type(C_FUNPTR), value :: farg2 +integer(C_INT) :: fresult +end function + function swigc_FARKodeSetPostprocessStepFn(farg1, farg2) & bind(C, name="_wrap_FARKodeSetPostprocessStepFn") & result(fresult) @@ -714,6 +726,24 @@ function swigc_FARKodeSetPostprocessStepFn(farg1, farg2) & integer(C_INT) :: fresult end function +function swigc_FARKodeSetPostprocessStepFailFn(farg1, farg2) & +bind(C, name="_wrap_FARKodeSetPostprocessStepFailFn") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +type(C_FUNPTR), value :: farg2 +integer(C_INT) :: fresult +end function + +function swigc_FARKodeSetPreprocessStageFn(farg1, farg2) & +bind(C, name="_wrap_FARKodeSetPreprocessStageFn") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +type(C_FUNPTR), value :: farg2 +integer(C_INT) :: fresult +end function + function swigc_FARKodeSetPostprocessStageFn(farg1, farg2) & bind(C, name="_wrap_FARKodeSetPostprocessStageFn") & result(fresult) @@ -2896,6 +2926,22 @@ function FARKodeSetUserData(arkode_mem, user_data) & swig_result = fresult end function +function FARKodeSetPreprocessStepFn(arkode_mem, processstep) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(C_PTR) :: arkode_mem +type(C_FUNPTR), intent(in), value :: processstep +integer(C_INT) :: fresult +type(C_PTR) :: farg1 +type(C_FUNPTR) :: farg2 + +farg1 = arkode_mem +farg2 = processstep +fresult = swigc_FARKodeSetPreprocessStepFn(farg1, farg2) +swig_result = fresult +end function + function FARKodeSetPostprocessStepFn(arkode_mem, processstep) & result(swig_result) use, intrinsic :: ISO_C_BINDING @@ -2912,6 +2958,38 @@ function FARKodeSetPostprocessStepFn(arkode_mem, processstep) & swig_result = fresult end function +function FARKodeSetPostprocessStepFailFn(arkode_mem, processstep) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(C_PTR) :: arkode_mem +type(C_FUNPTR), intent(in), value :: processstep +integer(C_INT) :: fresult +type(C_PTR) :: farg1 +type(C_FUNPTR) :: farg2 + +farg1 = arkode_mem +farg2 = processstep +fresult = swigc_FARKodeSetPostprocessStepFailFn(farg1, farg2) +swig_result = fresult +end function + +function FARKodeSetPreprocessStageFn(arkode_mem, processstage) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(C_PTR) :: arkode_mem +type(C_FUNPTR), intent(in), value :: processstage +integer(C_INT) :: fresult +type(C_PTR) :: farg1 +type(C_FUNPTR) :: farg2 + +farg1 = arkode_mem +farg2 = processstage +fresult = swigc_FARKodeSetPreprocessStageFn(farg1, farg2) +swig_result = fresult +end function + function FARKodeSetPostprocessStageFn(arkode_mem, processstage) & result(swig_result) use, intrinsic :: ISO_C_BINDING diff --git a/src/arkode/fmod_int64/farkode_mod.c b/src/arkode/fmod_int64/farkode_mod.c index b4c8222881..58dc396136 100644 --- a/src/arkode/fmod_int64/farkode_mod.c +++ b/src/arkode/fmod_int64/farkode_mod.c @@ -650,6 +650,20 @@ SWIGEXPORT int _wrap_FARKodeSetUserData(void *farg1, void *farg2) { } +SWIGEXPORT int _wrap_FARKodeSetPreprocessStepFn(void *farg1, ARKPostProcessFn farg2) { + int fresult ; + void *arg1 = (void *) 0 ; + ARKPostProcessFn arg2 = (ARKPostProcessFn) 0 ; + int result; + + arg1 = (void *)(farg1); + arg2 = (ARKPostProcessFn)(farg2); + result = (int)ARKodeSetPreprocessStepFn(arg1,arg2); + fresult = (int)(result); + return fresult; +} + + SWIGEXPORT int _wrap_FARKodeSetPostprocessStepFn(void *farg1, ARKPostProcessFn farg2) { int fresult ; void *arg1 = (void *) 0 ; @@ -664,6 +678,34 @@ SWIGEXPORT int _wrap_FARKodeSetPostprocessStepFn(void *farg1, ARKPostProcessFn f } +SWIGEXPORT int _wrap_FARKodeSetPostprocessStepFailFn(void *farg1, ARKPostProcessFn farg2) { + int fresult ; + void *arg1 = (void *) 0 ; + ARKPostProcessFn arg2 = (ARKPostProcessFn) 0 ; + int result; + + arg1 = (void *)(farg1); + arg2 = (ARKPostProcessFn)(farg2); + result = (int)ARKodeSetPostprocessStepFailFn(arg1,arg2); + fresult = (int)(result); + return fresult; +} + + +SWIGEXPORT int _wrap_FARKodeSetPreprocessStageFn(void *farg1, ARKPostProcessFn farg2) { + int fresult ; + void *arg1 = (void *) 0 ; + ARKPostProcessFn arg2 = (ARKPostProcessFn) 0 ; + int result; + + arg1 = (void *)(farg1); + arg2 = (ARKPostProcessFn)(farg2); + result = (int)ARKodeSetPreprocessStageFn(arg1,arg2); + fresult = (int)(result); + return fresult; +} + + SWIGEXPORT int _wrap_FARKodeSetPostprocessStageFn(void *farg1, ARKPostProcessFn farg2) { int fresult ; void *arg1 = (void *) 0 ; diff --git a/src/arkode/fmod_int64/farkode_mod.f90 b/src/arkode/fmod_int64/farkode_mod.f90 index e0628131b6..7f90862f55 100644 --- a/src/arkode/fmod_int64/farkode_mod.f90 +++ b/src/arkode/fmod_int64/farkode_mod.f90 @@ -145,7 +145,10 @@ module farkode_mod public :: FARKodeSetFixedStep public :: FARKodeSetStepDirection public :: FARKodeSetUserData + public :: FARKodeSetPreprocessStepFn public :: FARKodeSetPostprocessStepFn + public :: FARKodeSetPostprocessStepFailFn + public :: FARKodeSetPreprocessStageFn public :: FARKodeSetPostprocessStageFn public :: FARKodeSetNonlinearSolver public :: FARKodeSetLinear @@ -705,6 +708,15 @@ function swigc_FARKodeSetUserData(farg1, farg2) & integer(C_INT) :: fresult end function +function swigc_FARKodeSetPreprocessStepFn(farg1, farg2) & +bind(C, name="_wrap_FARKodeSetPreprocessStepFn") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +type(C_FUNPTR), value :: farg2 +integer(C_INT) :: fresult +end function + function swigc_FARKodeSetPostprocessStepFn(farg1, farg2) & bind(C, name="_wrap_FARKodeSetPostprocessStepFn") & result(fresult) @@ -714,6 +726,24 @@ function swigc_FARKodeSetPostprocessStepFn(farg1, farg2) & integer(C_INT) :: fresult end function +function swigc_FARKodeSetPostprocessStepFailFn(farg1, farg2) & +bind(C, name="_wrap_FARKodeSetPostprocessStepFailFn") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +type(C_FUNPTR), value :: farg2 +integer(C_INT) :: fresult +end function + +function swigc_FARKodeSetPreprocessStageFn(farg1, farg2) & +bind(C, name="_wrap_FARKodeSetPreprocessStageFn") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +type(C_FUNPTR), value :: farg2 +integer(C_INT) :: fresult +end function + function swigc_FARKodeSetPostprocessStageFn(farg1, farg2) & bind(C, name="_wrap_FARKodeSetPostprocessStageFn") & result(fresult) @@ -2896,6 +2926,22 @@ function FARKodeSetUserData(arkode_mem, user_data) & swig_result = fresult end function +function FARKodeSetPreprocessStepFn(arkode_mem, processstep) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(C_PTR) :: arkode_mem +type(C_FUNPTR), intent(in), value :: processstep +integer(C_INT) :: fresult +type(C_PTR) :: farg1 +type(C_FUNPTR) :: farg2 + +farg1 = arkode_mem +farg2 = processstep +fresult = swigc_FARKodeSetPreprocessStepFn(farg1, farg2) +swig_result = fresult +end function + function FARKodeSetPostprocessStepFn(arkode_mem, processstep) & result(swig_result) use, intrinsic :: ISO_C_BINDING @@ -2912,6 +2958,38 @@ function FARKodeSetPostprocessStepFn(arkode_mem, processstep) & swig_result = fresult end function +function FARKodeSetPostprocessStepFailFn(arkode_mem, processstep) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(C_PTR) :: arkode_mem +type(C_FUNPTR), intent(in), value :: processstep +integer(C_INT) :: fresult +type(C_PTR) :: farg1 +type(C_FUNPTR) :: farg2 + +farg1 = arkode_mem +farg2 = processstep +fresult = swigc_FARKodeSetPostprocessStepFailFn(farg1, farg2) +swig_result = fresult +end function + +function FARKodeSetPreprocessStageFn(arkode_mem, processstage) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(C_PTR) :: arkode_mem +type(C_FUNPTR), intent(in), value :: processstage +integer(C_INT) :: fresult +type(C_PTR) :: farg1 +type(C_FUNPTR) :: farg2 + +farg1 = arkode_mem +farg2 = processstage +fresult = swigc_FARKodeSetPreprocessStageFn(farg1, farg2) +swig_result = fresult +end function + function FARKodeSetPostprocessStageFn(arkode_mem, processstage) & result(swig_result) use, intrinsic :: ISO_C_BINDING From 876b0168a5d26ad9bbee672298892f83f6dd823c Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 14:55:12 -0500 Subject: [PATCH 03/14] Ran formatter --- src/arkode/arkode.c | 17 +++++----- src/arkode/arkode_erkstep.c | 3 +- src/arkode/arkode_io.c | 14 ++++++--- src/arkode/arkode_lsrkstep.c | 61 +++++++++++++++++++----------------- src/arkode/arkode_mristep.c | 6 ++-- src/arkode/arkode_sprkstep.c | 4 +-- 6 files changed, 58 insertions(+), 47 deletions(-) diff --git a/src/arkode/arkode.c b/src/arkode/arkode.c index 5095643d58..a4b124cd62 100644 --- a/src/arkode/arkode.c +++ b/src/arkode/arkode.c @@ -906,7 +906,8 @@ int ARKodeEvolve(void* arkode_mem, sunrealtype tout, N_Vector yout, /* call the user-supplied step preprocessing function (if it exists) */ if (ark_mem->PreProcessStep != NULL) { - retval = ark_mem->PreProcessStep(ark_mem->tcur, ark_mem->ycur, ark_mem->ps_data); + retval = ark_mem->PreProcessStep(ark_mem->tcur, ark_mem->ycur, + ark_mem->ps_data); if (retval != 0) { return (ARK_POSTPROCESS_STEP_FAIL); } } @@ -1010,7 +1011,8 @@ int ARKodeEvolve(void* arkode_mem, sunrealtype tout, N_Vector yout, /* since the previous step attempt failed, call the user-supplied step failure postprocessing function (if it exists) */ if (ark_mem->PostProcessStepFail != NULL) { - retval = ark_mem->PostProcessStepFail(ark_mem->tcur, ark_mem->ycur, ark_mem->ps_data); + retval = ark_mem->PostProcessStepFail(ark_mem->tcur, ark_mem->ycur, + ark_mem->ps_data); if (retval != 0) { return (ARK_POSTPROCESS_STEP_FAIL); } } @@ -1601,13 +1603,13 @@ ARKodeMem arkCreate(SUNContext sunctx) ark_mem->MallocDone = SUNFALSE; /* No user-supplied step pre- or post-processing functions yet */ - ark_mem->PreProcessStep = NULL; - ark_mem->PostProcessStep = NULL; + ark_mem->PreProcessStep = NULL; + ark_mem->PostProcessStep = NULL; ark_mem->PostProcessStepFail = NULL; - ark_mem->ps_data = NULL; + ark_mem->ps_data = NULL; /* No user-supplied stage pre- or post-processing functions yet */ - ark_mem->PreProcessStage = NULL; + ark_mem->PreProcessStage = NULL; ark_mem->PostProcessStage = NULL; /* No user_data pointer yet */ @@ -2745,7 +2747,8 @@ int arkCompleteStep(ARKodeMem ark_mem, sunrealtype dsm) /* apply user-supplied step postprocessing function (if supplied) */ if (ark_mem->PostProcessStep != NULL) { - retval = ark_mem->PostProcessStep(ark_mem->tcur, ark_mem->ycur, ark_mem->ps_data); + retval = ark_mem->PostProcessStep(ark_mem->tcur, ark_mem->ycur, + ark_mem->ps_data); if (retval != 0) { return (ARK_POSTPROCESS_STEP_FAIL); } } diff --git a/src/arkode/arkode_erkstep.c b/src/arkode/arkode_erkstep.c index 50552a3d26..1b4c89941a 100644 --- a/src/arkode/arkode_erkstep.c +++ b/src/arkode/arkode_erkstep.c @@ -826,7 +826,8 @@ int erkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn + step_mem->B->c[is-1] * ark_mem->h, + retval = ark_mem->PreProcessStage(ark_mem->tn + + step_mem->B->c[is - 1] * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { diff --git a/src/arkode/arkode_io.c b/src/arkode/arkode_io.c index 7532eba29e..76383b93c4 100644 --- a/src/arkode/arkode_io.c +++ b/src/arkode/arkode_io.c @@ -875,7 +875,10 @@ int ARKodeSetUserData(void* arkode_mem, void* user_data) /* Set data for post-processing a step */ if ((ark_mem->PreProcessStep != NULL) || (ark_mem->PostProcessStep != NULL) || - (ark_mem->PostProcessStepFail != NULL)) { ark_mem->ps_data = user_data; } + (ark_mem->PostProcessStepFail != NULL)) + { + ark_mem->ps_data = user_data; + } /* Set user data into stepper (if provided) */ if (ark_mem->step_setuserdata) @@ -1521,10 +1524,11 @@ int ARKodeSetPreprocessStepFn(void* arkode_mem, ARKPostProcessFn ProcessStep) /* NULL argument sets default, otherwise set inputs */ ark_mem->PreProcessStep = ProcessStep; - ark_mem->ps_data = ark_mem->user_data; + ark_mem->ps_data = ark_mem->user_data; return (ARK_SUCCESS); } + int ARKodeSetPostprocessStepFn(void* arkode_mem, ARKPostProcessFn ProcessStep) { ARKodeMem ark_mem; @@ -1538,10 +1542,11 @@ int ARKodeSetPostprocessStepFn(void* arkode_mem, ARKPostProcessFn ProcessStep) /* NULL argument sets default, otherwise set inputs */ ark_mem->PostProcessStep = ProcessStep; - ark_mem->ps_data = ark_mem->user_data; + ark_mem->ps_data = ark_mem->user_data; return (ARK_SUCCESS); } + int ARKodeSetPostprocessStepFailFn(void* arkode_mem, ARKPostProcessFn ProcessStep) { ARKodeMem ark_mem; @@ -1555,7 +1560,7 @@ int ARKodeSetPostprocessStepFailFn(void* arkode_mem, ARKPostProcessFn ProcessSte /* NULL argument sets default, otherwise set inputs */ ark_mem->PostProcessStepFail = ProcessStep; - ark_mem->ps_data = ark_mem->user_data; + ark_mem->ps_data = ark_mem->user_data; return (ARK_SUCCESS); } @@ -1599,6 +1604,7 @@ int ARKodeSetPreprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) return (ARK_SUCCESS); } + int ARKodeSetPostprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) { ARKodeMem ark_mem; diff --git a/src/arkode/arkode_lsrkstep.c b/src/arkode/arkode_lsrkstep.c index 8cae80fb63..dc39c77989 100644 --- a/src/arkode/arkode_lsrkstep.c +++ b/src/arkode/arkode_lsrkstep.c @@ -756,7 +756,7 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PostProcessStage != NULL && j < step_mem->req_stages) { retval = ark_mem->PostProcessStage(ark_mem->tcur + ark_mem->h * thj, - ark_mem->ycur, ark_mem->user_data); + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1283,8 +1283,9 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + (j-1) * sm1inv * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = + ark_mem->PreProcessStage(ark_mem->tcur + (j - 1) * sm1inv * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "begin-stages-list", @@ -1493,7 +1494,7 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + (j-1) * rat * ark_mem->h, + retval = ark_mem->PreProcessStage(ark_mem->tcur + (j - 1) * rat * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1550,7 +1551,7 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + (j-1) * rat * ark_mem->h, + retval = ark_mem->PreProcessStage(ark_mem->tcur + (j - 1) * rat * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1604,7 +1605,8 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (ark_mem->PreProcessStage != NULL) { retval = ark_mem->PreProcessStage(ark_mem->tcur + - rat * (rn * (rn + ONE) / TWO - ONE) * ark_mem->h, + rat * (rn * (rn + ONE) / TWO - ONE) * + ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1656,9 +1658,10 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage postprocessing function (if supplied) */ if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->PostProcessStage(ark_mem->tcur + - rat * (rn * (rn - ONE) / TWO) * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = + ark_mem->PostProcessStage(ark_mem->tcur + + rat * (rn * (rn - ONE) / TWO) * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1672,9 +1675,10 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage postprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + - ((sunrealtype)j - rn - ONE) * rat * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = + ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - rn - ONE) * + rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "begin-stages-list", @@ -1712,8 +1716,8 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage postprocessing function (if supplied) */ if (ark_mem->PostProcessStage != NULL && j < step_mem->req_stages) { - retval = ark_mem->PostProcessStage(ark_mem->tcur + - ((sunrealtype)j - rn) * rat * ark_mem->h, + retval = ark_mem->PostProcessStage(ark_mem->tcur + ((sunrealtype)j - rn) * + rat * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1834,8 +1838,8 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage postprocessing function (if supplied) */ if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->PostProcessStage(ark_mem->tn + ark_mem->h * p5, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tn + ark_mem->h * p5, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -1847,8 +1851,8 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * p5, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * p5, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "begin-stages-list", @@ -1883,8 +1887,8 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage postprocessing function (if supplied) */ if (ark_mem->PostProcessStage != NULL) { - retval = ark_mem->PostProcessStage(ark_mem->tcur + ark_mem->h, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PostProcessStage(ark_mem->tcur + ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -2042,7 +2046,7 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt if (retval != 0) { SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2087,7 +2091,7 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed postprocess stage, retval = %i", retval); + "status = failed postprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2098,8 +2102,8 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + - ((sunrealtype)j - ONE) * onesixth * ark_mem->h, + retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - ONE) * + onesixth * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -2147,7 +2151,6 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt return ARK_POSTPROCESS_STAGE_FAIL; } } - } /* no need to call stage preprocessing here, since the stage does not require @@ -2181,13 +2184,13 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt /* apply user-supplied stage prerocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + - ((sunrealtype)j - FOUR) * onesixth * ark_mem->h, + retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - FOUR) * + onesixth * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2227,7 +2230,7 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt if (ark_mem->PostProcessStage != NULL) { retval = ark_mem->PostProcessStage(ark_mem->tcur + ((sunrealtype)j - THREE) * - onesixth * ark_mem->h, + onesixth * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { diff --git a/src/arkode/arkode_mristep.c b/src/arkode/arkode_mristep.c index 833b068ccf..7731300f48 100644 --- a/src/arkode/arkode_mristep.c +++ b/src/arkode/arkode_mristep.c @@ -1912,8 +1912,7 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(t0, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PreProcessStage(t0, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "begin-stages-list", @@ -2184,8 +2183,7 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(t0, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PreProcessStage(t0, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "begin-stages-list", diff --git a/src/arkode/arkode_sprkstep.c b/src/arkode/arkode_sprkstep.c index e187677cbe..817a805238 100644 --- a/src/arkode/arkode_sprkstep.c +++ b/src/arkode/arkode_sprkstep.c @@ -563,8 +563,8 @@ int sprkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn + ci * ark_mem->h, prev_stage, - ark_mem->user_data); + retval = ark_mem->PreProcessStage(ark_mem->tn + ci * ark_mem->h, + prev_stage, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "begin-stages-list", From 0fa2494d66b031f0ccb20680fafc75dc19db8ad5 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 20:11:09 -0500 Subject: [PATCH 04/14] updated pattern for stage preprocessing in ERKStep --- src/arkode/arkode_erkstep.c | 59 ++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/src/arkode/arkode_erkstep.c b/src/arkode/arkode_erkstep.c index 1b4c89941a..55e6fba6c6 100644 --- a/src/arkode/arkode_erkstep.c +++ b/src/arkode/arkode_erkstep.c @@ -614,6 +614,18 @@ int erkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* compute the RHS if needed */ if (!(ark_mem->fn_is_current)) { + + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + + /* call f */ retval = step_mem->f(t, y, step_mem->F[0], ark_mem->user_data); step_mem->nfe++; if (retval != 0) @@ -652,6 +664,16 @@ int erkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* base RHS call on recomputeRHS argument */ if (recomputeRHS) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* call f */ retval = step_mem->f(t, y, step_mem->F[0], ark_mem->user_data); step_mem->nfe++; @@ -682,6 +704,16 @@ int erkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, case ARK_FULLRHS_OTHER: + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* call f */ retval = step_mem->f(t, y, f, ark_mem->user_data); step_mem->nfe++; @@ -823,20 +855,6 @@ int erkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) SUNLogInfo(ARK_LOGGER, "begin-stages-list", "stage = %i, tcur = " SUN_FORMAT_G, is, ark_mem->tcur); - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn + - step_mem->B->c[is - 1] * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return (ARK_POSTPROCESS_STAGE_FAIL); - } - } - /* Set ycur to current stage solution */ nvec = 0; for (js = 0; js < is; js++) @@ -883,6 +901,19 @@ int erkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } } + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* compute updated RHS */ retval = step_mem->f(ark_mem->tcur, ark_mem->ycur, step_mem->F[is], ark_mem->user_data); From c8bf4cb2c3dce8c549e3e11fb12bd89fe2f4907f Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 20:25:13 -0500 Subject: [PATCH 05/14] updated pattern for stage preprocessing in ARKStep --- src/arkode/arkode_arkstep.c | 130 ++++++++++++++++++++++++------------ 1 file changed, 86 insertions(+), 44 deletions(-) diff --git a/src/arkode/arkode_arkstep.c b/src/arkode/arkode_arkstep.c index c46490a362..906f81e21f 100644 --- a/src/arkode/arkode_arkstep.c +++ b/src/arkode/arkode_arkstep.c @@ -1330,11 +1330,22 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* compute the full RHS */ if (!(ark_mem->fn_is_current)) { - /* compute the explicit component */ - if (step_mem->explicit) + + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) { - retval = step_mem->fe(t, y, step_mem->Fe[0], ark_mem->user_data); - step_mem->nfe++; + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + + /* compute the implicit component */ + if (step_mem->implicit) + { + retval = step_mem->fi(t, y, step_mem->Fi[0], ark_mem->user_data); + step_mem->nfi++; if (retval != 0) { arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, @@ -1342,10 +1353,10 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, return (ARK_RHSFUNC_FAIL); } - /* compute and store M(t)^{-1} fe */ + /* compute and store M(t)^{-1} fi */ if (step_mem->mass_type == MASS_TIMEDEP) { - retval = step_mem->msolve((void*)ark_mem, step_mem->Fe[0], + retval = step_mem->msolve((void*)ark_mem, step_mem->Fi[0], step_mem->nlscoef / ark_mem->h); if (retval) { @@ -1356,11 +1367,11 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, } } - /* compute the implicit component */ - if (step_mem->implicit) + /* compute the explicit component */ + if (step_mem->explicit) { - retval = step_mem->fi(t, y, step_mem->Fi[0], ark_mem->user_data); - step_mem->nfi++; + retval = step_mem->fe(t, y, step_mem->Fe[0], ark_mem->user_data); + step_mem->nfe++; if (retval != 0) { arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, @@ -1368,10 +1379,10 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, return (ARK_RHSFUNC_FAIL); } - /* compute and store M(t)^{-1} fi */ + /* compute and store M(t)^{-1} fe */ if (step_mem->mass_type == MASS_TIMEDEP) { - retval = step_mem->msolve((void*)ark_mem, step_mem->Fi[0], + retval = step_mem->msolve((void*)ark_mem, step_mem->Fe[0], step_mem->nlscoef / ark_mem->h); if (retval) { @@ -1455,11 +1466,22 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* recompute RHS functions */ if (recomputeRHS) { - /* compute the explicit component */ - if (step_mem->explicit) + + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) { - retval = step_mem->fe(t, y, step_mem->Fe[0], ark_mem->user_data); - step_mem->nfe++; + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + + /* compute the implicit component */ + if (step_mem->implicit) + { + retval = step_mem->fi(t, y, step_mem->Fi[0], ark_mem->user_data); + step_mem->nfi++; if (retval != 0) { arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, @@ -1470,7 +1492,7 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* compute and store M(t)^{-1} fi */ if (step_mem->mass_type == MASS_TIMEDEP) { - retval = step_mem->msolve((void*)ark_mem, step_mem->Fe[0], + retval = step_mem->msolve((void*)ark_mem, step_mem->Fi[0], step_mem->nlscoef / ark_mem->h); if (retval) { @@ -1481,11 +1503,11 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, } } - /* compute the implicit component */ - if (step_mem->implicit) + /* compute the explicit component */ + if (step_mem->explicit) { - retval = step_mem->fi(t, y, step_mem->Fi[0], ark_mem->user_data); - step_mem->nfi++; + retval = step_mem->fe(t, y, step_mem->Fe[0], ark_mem->user_data); + step_mem->nfe++; if (retval != 0) { arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, @@ -1496,7 +1518,7 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* compute and store M(t)^{-1} fi */ if (step_mem->mass_type == MASS_TIMEDEP) { - retval = step_mem->msolve((void*)ark_mem, step_mem->Fi[0], + retval = step_mem->msolve((void*)ark_mem, step_mem->Fe[0], step_mem->nlscoef / ark_mem->h); if (retval) { @@ -1564,16 +1586,13 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, case ARK_FULLRHS_OTHER: - /* compute the explicit component and store in ark_tempv2 */ - if (step_mem->explicit) + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) { - retval = step_mem->fe(t, y, ark_mem->tempv2, ark_mem->user_data); - step_mem->nfe++; + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); if (retval != 0) { - arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, __FILE__, - MSG_ARK_RHSFUNC_FAILED, t); - return (ARK_RHSFUNC_FAIL); + return (ARK_POSTPROCESS_STAGE_FAIL); } } @@ -1590,6 +1609,19 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, } } + /* compute the explicit component and store in ark_tempv2 */ + if (step_mem->explicit) + { + retval = step_mem->fe(t, y, ark_mem->tempv2, ark_mem->user_data); + step_mem->nfe++; + if (retval != 0) + { + arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, __FILE__, + MSG_ARK_RHSFUNC_FAILED, t); + return (ARK_RHSFUNC_FAIL); + } + } + /* combine RHS vector(s) into output */ if (step_mem->explicit && step_mem->implicit) { /* ImEx */ @@ -1845,6 +1877,16 @@ int arkStep_TakeStep_Z(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } else { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } retval = step_mem->fi(ark_mem->tn, ark_mem->yn, step_mem->Fi[0], ark_mem->user_data); step_mem->nfi++; @@ -1917,21 +1959,6 @@ int arkStep_TakeStep_Z(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) "stage = %i, implicit = %i, tcur = " SUN_FORMAT_G, is, implicit_stage, ark_mem->tcur); - /* apply user-supplied stage preprocessing function (if supplied) */ - /* NOTE: with internally inconsistent IMEX methods (c_i^E != c_i^I) the value - of tcur corresponds to the stage time from the implicit table (c_i^I). */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return (ARK_POSTPROCESS_STAGE_FAIL); - } - } - /* setup time-dependent mass matrix */ if ((step_mem->mass_type == MASS_TIMEDEP) && (step_mem->msetup != NULL)) { @@ -2083,6 +2110,21 @@ int arkStep_TakeStep_Z(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } } + /* apply user-supplied stage preprocessing function (if supplied) */ + /* NOTE: with internally inconsistent IMEX methods (c_i^E != c_i^I) the value + of tcur corresponds to the stage time from the implicit table (c_i^I). */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* store implicit RHS (value in Fi[is] is from preceding nonlinear iteration) */ if (step_mem->implicit) { From 4b24a20e6e9f5bec0fcd6bf9f725064c13a35266 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 20:32:35 -0500 Subject: [PATCH 06/14] updated pattern for stage preprocessing in SPRKStep --- src/arkode/arkode_sprkstep.c | 81 +++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/src/arkode/arkode_sprkstep.c b/src/arkode/arkode_sprkstep.c index 817a805238..912a6459c5 100644 --- a/src/arkode/arkode_sprkstep.c +++ b/src/arkode/arkode_sprkstep.c @@ -560,25 +560,26 @@ int sprkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) ark_mem->tn + ci * ark_mem->h, ark_mem->tn + chati * ark_mem->h); SUNLogExtraDebugVec(ARK_LOGGER, "stage", prev_stage, "z2_%i(:) =", is); - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn + ci * ark_mem->h, - prev_stage, ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return (ARK_POSTPROCESS_STAGE_FAIL); - } - } - /* evaluate p' with the previous velocity */ if (SUNRabs(ahati) > TINY) { N_VConst(ZERO, step_mem->sdata); /* either have to do this or ask user to set other outputs to zero */ + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn + chati * ark_mem->h, + prev_stage, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + + /* evaluate p' */ retval = sprkStep_f1(step_mem, ark_mem->tn + chati * ark_mem->h, prev_stage, step_mem->sdata, ark_mem->user_data); @@ -608,6 +609,20 @@ int sprkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) N_VConst(ZERO, step_mem->sdata); /* either have to do this or ask user to set other outputs to zero */ + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn + ci * ark_mem->h, + curr_stage, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + + /* evaluate q' */ retval = sprkStep_f2(step_mem, ark_mem->tn + ci * ark_mem->h, curr_stage, step_mem->sdata, ark_mem->user_data); @@ -682,6 +697,20 @@ int sprkStep_TakeStep_Compensated(ARKodeMem ark_mem, sunrealtype* dsmPtr, [ \Delta Q_0 ] = [ 0 ] */ N_VConst(ZERO, delta_Yi); + /* if user-supplied stage preprocessing or postprocessing functions, + * we error out since those won't work with the increment form */ + if ((ark_mem->PreProcessStage != NULL) || (ark_mem->PostProcessStage != NULL)) + { + SUNLogInfo(ARK_LOGGER, "begin-stages-list", + "status = failed stage stage processing, retval = %i", + ARK_POSTPROCESS_STAGE_FAIL); + arkProcessError(ark_mem, ARK_POSTPROCESS_STAGE_FAIL, __LINE__, __func__, + __FILE__, + "Compensated summation is not compatible with stage " + "Pre- or PostProcessing!\n"); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + /* loop over internal stages to the step */ for (is = 0; is < step_mem->method->stages; is++) { @@ -699,19 +728,6 @@ int sprkStep_TakeStep_Compensated(ARKodeMem ark_mem, sunrealtype* dsmPtr, "stage = %i, t = " SUN_FORMAT_G ", that = " SUN_FORMAT_G, is, ark_mem->tn + ci * ark_mem->h, ark_mem->tn + chati * ark_mem->h); - /* if user-supplied stage preprocessing function, we error out since it - * won't work with the increment form */ - if (ark_mem->PreProcessStage != NULL) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - arkProcessError(ark_mem, ARK_POSTPROCESS_STAGE_FAIL, __LINE__, __func__, - __FILE__, - "Compensated summation is not compatible with stage " - "PreProcessing!\n"); - return (ARK_POSTPROCESS_STAGE_FAIL); - } - /* [ ] + [ ] [ q_n ] + [ \Delta Q_i ] */ N_VLinearSum(ONE, ark_mem->yn, ONE, delta_Yi, yn_plus_delta_Yi); @@ -775,19 +791,6 @@ int sprkStep_TakeStep_Compensated(ARKodeMem ark_mem, sunrealtype* dsmPtr, N_VLinearSum(ONE, delta_Yi, ark_mem->h * ai, step_mem->sdata, delta_Yi); } - /* if user-supplied stage postprocessing function, we error out since it - * won't work with the increment form */ - if (ark_mem->PostProcessStage != NULL) - { - SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed postprocess stage, retval = %i", retval); - arkProcessError(ark_mem, ARK_POSTPROCESS_STAGE_FAIL, __LINE__, __func__, - __FILE__, - "Compensated summation is not compatible with stage " - "PostProcessing!\n"); - return (ARK_POSTPROCESS_STAGE_FAIL); - } - SUNLogInfo(ARK_LOGGER, "end-stages-list", "status = success"); } From e16f6f26b0dde460a9c22c5c62430a86bb6d6639 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 20:34:52 -0500 Subject: [PATCH 07/14] updated pattern for stage preprocessing in SPRKStep --- src/arkode/arkode_sprkstep.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/arkode/arkode_sprkstep.c b/src/arkode/arkode_sprkstep.c index 912a6459c5..08f9bf8eca 100644 --- a/src/arkode/arkode_sprkstep.c +++ b/src/arkode/arkode_sprkstep.c @@ -492,6 +492,16 @@ int sprkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, case ARK_FULLRHS_END: case ARK_FULLRHS_OTHER: + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* Since f1 and f2 do not have overlapping outputs and so the f vector is passed to both RHS functions. */ From 0e0b8d27df0119b543253eb0b9c39d8aec8e993a Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 20:48:57 -0500 Subject: [PATCH 08/14] updated pattern for stage preprocessing in MRIStep; fixed ordering of RHS calls for ImEx methods so that fsi always precedes fse (as with ARKStep) --- src/arkode/arkode_mristep.c | 345 ++++++++++++++++++++---------------- 1 file changed, 190 insertions(+), 155 deletions(-) diff --git a/src/arkode/arkode_mristep.c b/src/arkode/arkode_mristep.c index 7731300f48..01a8bb9ac6 100644 --- a/src/arkode/arkode_mristep.c +++ b/src/arkode/arkode_mristep.c @@ -1476,20 +1476,14 @@ int mriStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, step_mem->Xvecs[nvec] = f; nvec++; - /* compute the explicit component and store in ark_tempv2 */ - if (step_mem->explicit_rhs) + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) { - retval = step_mem->fse(t, y, ark_mem->tempv2, ark_mem->user_data); - step_mem->nfse++; + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); if (retval != 0) { - arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, __FILE__, - MSG_ARK_RHSFUNC_FAILED, t); - return (ARK_RHSFUNC_FAIL); + return (ARK_POSTPROCESS_STAGE_FAIL); } - step_mem->cvals[nvec] = ONE; - step_mem->Xvecs[nvec] = ark_mem->tempv2; - nvec++; } /* compute the implicit component and store in sdata */ @@ -1508,6 +1502,22 @@ int mriStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, nvec++; } + /* compute the explicit component and store in ark_tempv2 */ + if (step_mem->explicit_rhs) + { + retval = step_mem->fse(t, y, ark_mem->tempv2, ark_mem->user_data); + step_mem->nfse++; + if (retval != 0) + { + arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, __FILE__, + MSG_ARK_RHSFUNC_FAILED, t); + return (ARK_RHSFUNC_FAIL); + } + step_mem->cvals[nvec] = ONE; + step_mem->Xvecs[nvec] = ark_mem->tempv2; + nvec++; + } + /* Add external forcing components to linear combination */ if (step_mem->expforcing || step_mem->impforcing) { @@ -1597,32 +1607,15 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, /* update the RHS components */ - /* explicit component */ - if (step_mem->explicit_rhs) + /* apply user-supplied stage preprocessing function (if supplied) */ + if ((ark_mem->PreProcessStage != NULL) && + ((!step_mem->fse_is_current || !ark_mem->fn_is_current) || + (!step_mem->fsi_is_current || !ark_mem->fn_is_current))) { - /* if either ARKODE or MRIStep consider Fse[0] stale, then recompute */ - if (!step_mem->fse_is_current || !ark_mem->fn_is_current) + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) { - retval = step_mem->fse(t, y, step_mem->Fse[0], ark_mem->user_data); - step_mem->nfse++; - if (retval != 0) - { - arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, - __FILE__, MSG_ARK_RHSFUNC_FAILED, t); - return (ARK_RHSFUNC_FAIL); - } - step_mem->fse_is_current = SUNTRUE; - - /* Add external forcing, if applicable */ - if (step_mem->expforcing) - { - step_mem->cvals[0] = ONE; - step_mem->Xvecs[0] = step_mem->Fse[0]; - nvec = 1; - mriStep_ApplyForcing(step_mem, t, ONE, &nvec); - N_VLinearCombination(nvec, step_mem->cvals, step_mem->Xvecs, - step_mem->Fse[0]); - } + return (ARK_POSTPROCESS_STAGE_FAIL); } } @@ -1655,15 +1648,11 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, } } - break; - - case ARK_FULLRHS_END: - - /* compute the full RHS */ - if (!(ark_mem->fn_is_current)) + /* explicit component */ + if (step_mem->explicit_rhs) { - /* compute the explicit component */ - if (step_mem->explicit_rhs) + /* if either ARKODE or MRIStep consider Fse[0] stale, then recompute */ + if (!step_mem->fse_is_current || !ark_mem->fn_is_current) { retval = step_mem->fse(t, y, step_mem->Fse[0], ark_mem->user_data); step_mem->nfse++; @@ -1675,7 +1664,7 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, } step_mem->fse_is_current = SUNTRUE; - /* Add external forcing, as appropriate */ + /* Add external forcing, if applicable */ if (step_mem->expforcing) { step_mem->cvals[0] = ONE; @@ -1686,6 +1675,25 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, step_mem->Fse[0]); } } + } + + break; + + case ARK_FULLRHS_END: + + /* compute the full RHS */ + if (!(ark_mem->fn_is_current)) + { + + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } /* compute the implicit component */ if (step_mem->implicit_rhs) @@ -1711,6 +1719,32 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, step_mem->Fsi[0]); } } + + /* compute the explicit component */ + if (step_mem->explicit_rhs) + { + retval = step_mem->fse(t, y, step_mem->Fse[0], ark_mem->user_data); + step_mem->nfse++; + if (retval != 0) + { + arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, + __FILE__, MSG_ARK_RHSFUNC_FAILED, t); + return (ARK_RHSFUNC_FAIL); + } + step_mem->fse_is_current = SUNTRUE; + + /* Add external forcing, as appropriate */ + if (step_mem->expforcing) + { + step_mem->cvals[0] = ONE; + step_mem->Xvecs[0] = step_mem->Fse[0]; + nvec = 1; + mriStep_ApplyForcing(step_mem, t, ONE, &nvec); + N_VLinearCombination(nvec, step_mem->cvals, step_mem->Xvecs, + step_mem->Fse[0]); + } + } + } break; @@ -1909,18 +1943,6 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt "stage = %i, stage type = %d, tcur = " SUN_FORMAT_G, is, step_mem->stagetypes[is], ark_mem->tcur); - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(t0, ark_mem->ycur, ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return (ARK_POSTPROCESS_STAGE_FAIL); - } - } - /* Determine current stage type, and call corresponding routine; the vector ark_mem->ycur stores the previous stage solution on input, and should store the result of this stage solution on output. */ @@ -2007,32 +2029,17 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt } if (calc_fslow) { - /* store explicit slow rhs */ - if (step_mem->explicit_rhs) - { - retval = step_mem->fse(ark_mem->tcur, ark_mem->ycur, - step_mem->Fse[step_mem->stage_map[is]], - ark_mem->user_data); - step_mem->nfse++; - - SUNLogExtraDebugVec(ARK_LOGGER, "slow explicit RHS", - step_mem->Fse[step_mem->stage_map[is]], - "Fse_%i(:) =", is); - SUNLogInfoIf(retval != 0, ARK_LOGGER, "end-stages-list", - "status = failed explicit rhs eval, retval = %i", retval); - if (retval < 0) { return (ARK_RHSFUNC_FAIL); } - if (retval > 0) { return (ARK_UNREC_RHSFUNC_ERR); } - - /* Add external forcing to Fse, if applicable */ - if (step_mem->expforcing) + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) { - step_mem->cvals[0] = ONE; - step_mem->Xvecs[0] = step_mem->Fse[step_mem->stage_map[is]]; - nvec = 1; - mriStep_ApplyForcing(step_mem, tf, ONE, &nvec); - N_VLinearCombination(nvec, step_mem->cvals, step_mem->Xvecs, - step_mem->Fse[step_mem->stage_map[is]]); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); } } @@ -2078,6 +2085,35 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt "Fsi_%i(:) =", is); } } + + /* store explicit slow rhs */ + if (step_mem->explicit_rhs) + { + retval = step_mem->fse(ark_mem->tcur, ark_mem->ycur, + step_mem->Fse[step_mem->stage_map[is]], + ark_mem->user_data); + step_mem->nfse++; + + SUNLogExtraDebugVec(ARK_LOGGER, "slow explicit RHS", + step_mem->Fse[step_mem->stage_map[is]], + "Fse_%i(:) =", is); + SUNLogInfoIf(retval != 0, ARK_LOGGER, "end-stages-list", + "status = failed explicit rhs eval, retval = %i", retval); + + if (retval < 0) { return (ARK_RHSFUNC_FAIL); } + if (retval > 0) { return (ARK_UNREC_RHSFUNC_ERR); } + + /* Add external forcing to Fse, if applicable */ + if (step_mem->expforcing) + { + step_mem->cvals[0] = ONE; + step_mem->Xvecs[0] = step_mem->Fse[step_mem->stage_map[is]]; + nvec = 1; + mriStep_ApplyForcing(step_mem, tf, ONE, &nvec); + N_VLinearCombination(nvec, step_mem->cvals, step_mem->Xvecs, + step_mem->Fse[step_mem->stage_map[is]]); + } + } } /* compute slow RHS */ SUNLogInfo(ARK_LOGGER, "end-stages-list", "status = success"); @@ -2180,18 +2216,6 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt "stage = %i, stage type = %d, tcur = " SUN_FORMAT_G, is, step_mem->stagetypes[is], ark_mem->tcur); - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(t0, ark_mem->ycur, ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return (ARK_POSTPROCESS_STAGE_FAIL); - } - } - /* Determine final stage type, and call corresponding routine; the vector ark_mem->ycur stores the previous stage solution on input, and should store the result of this stage solution on output. */ @@ -2477,19 +2501,6 @@ int mriStep_TakeStepMRISR(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) "stage = %i, stage type = %d, tcur = " SUN_FORMAT_G, stage, MRISTAGE_ERK_FAST, ark_mem->tn + cstage * ark_mem->h); - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->ycur, - ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return (ARK_POSTPROCESS_STAGE_FAIL); - } - } - /* Compute forcing function for inner solver */ retval = mriStep_ComputeInnerForcing(ark_mem, step_mem, stage, ark_mem->tn, ark_mem->tn + cstage * ark_mem->h); @@ -2662,30 +2673,17 @@ int mriStep_TakeStepMRISR(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* Compute updated slow RHS (except for final solution or embedding) */ if ((!solution) && (!embedding)) { - /* store explicit slow rhs */ - if (step_mem->explicit_rhs) - { - retval = step_mem->fse(ark_mem->tcur, ark_mem->ycur, - step_mem->Fse[stage], ark_mem->user_data); - step_mem->nfse++; - - SUNLogExtraDebugVec(ARK_LOGGER, "slow explicit RHS", - step_mem->Fse[stage], "Fse_%i(:) =", stage); - SUNLogInfoIf(retval != 0, ARK_LOGGER, "end-stages-list", - "status = failed explicit rhs eval, retval = %i", retval); - - if (retval < 0) { return (ARK_RHSFUNC_FAIL); } - if (retval > 0) { return (ARK_UNREC_RHSFUNC_ERR); } - /* Add external forcing to Fse[stage], if applicable */ - if (step_mem->expforcing) + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) { - step_mem->cvals[0] = ONE; - step_mem->Xvecs[0] = step_mem->Fse[stage]; - nvec = 1; - mriStep_ApplyForcing(step_mem, ark_mem->tcur, ONE, &nvec); - N_VLinearCombination(nvec, step_mem->cvals, step_mem->Xvecs, - step_mem->Fse[stage]); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); } } @@ -2728,6 +2726,33 @@ int mriStep_TakeStepMRISR(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } } + /* store explicit slow rhs */ + if (step_mem->explicit_rhs) + { + retval = step_mem->fse(ark_mem->tcur, ark_mem->ycur, + step_mem->Fse[stage], ark_mem->user_data); + step_mem->nfse++; + + SUNLogExtraDebugVec(ARK_LOGGER, "slow explicit RHS", + step_mem->Fse[stage], "Fse_%i(:) =", stage); + SUNLogInfoIf(retval != 0, ARK_LOGGER, "end-stages-list", + "status = failed explicit rhs eval, retval = %i", retval); + + if (retval < 0) { return (ARK_RHSFUNC_FAIL); } + if (retval > 0) { return (ARK_UNREC_RHSFUNC_ERR); } + + /* Add external forcing to Fse[stage], if applicable */ + if (step_mem->expforcing) + { + step_mem->cvals[0] = ONE; + step_mem->Xvecs[0] = step_mem->Fse[stage]; + nvec = 1; + mriStep_ApplyForcing(step_mem, ark_mem->tcur, ONE, &nvec); + N_VLinearCombination(nvec, step_mem->cvals, step_mem->Xvecs, + step_mem->Fse[stage]); + } + } + /* combine both RHS into Fse for ImEx problems since fast forcing function only depends on Omega coefficients */ if (step_mem->implicit_rhs && step_mem->explicit_rhs) @@ -2929,19 +2954,6 @@ int mriStep_TakeStepMERK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) lowest_stage = SUNMIN(lowest_stage, step_mem->MRIC->group[ig][il]); } - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->ycur, - ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return (ARK_POSTPROCESS_STAGE_FAIL); - } - } - /* Set up fast RHS for this stage group */ retval = mriStep_ComputeInnerForcing(ark_mem, step_mem, lowest_stage, ark_mem->tn, ark_mem->tn + ark_mem->h); @@ -3070,6 +3082,19 @@ int mriStep_TakeStepMERK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* Compute updated slow RHS (except for final solution or embedding) */ if ((!solution) && (!embedding)) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* store explicit slow rhs */ retval = step_mem->fse(ark_mem->tcur, ark_mem->ycur, step_mem->Fse[stage], ark_mem->user_data); @@ -4216,12 +4241,22 @@ int mriStep_SlowRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, retval = mriStep_AccessStepMem(ark_mem, __func__, &step_mem); if (retval != ARK_SUCCESS) { return (retval); } - /* call fse if the problem has an explicit component */ - if (step_mem->explicit_rhs) + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) { - retval = step_mem->fse(t, y, step_mem->Fse[0], ark_mem->user_data); - step_mem->nfse++; - step_mem->fse_is_current = SUNTRUE; + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + + /* call fsi if the problem has an implicit component */ + if (step_mem->implicit_rhs) + { + retval = step_mem->fsi(t, y, step_mem->Fsi[0], ark_mem->user_data); + step_mem->nfsi++; + step_mem->fsi_is_current = SUNTRUE; if (retval != 0) { arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, __FILE__, @@ -4230,23 +4265,23 @@ int mriStep_SlowRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, } /* Add external forcing, if applicable */ - if (step_mem->expforcing) + if (step_mem->impforcing) { step_mem->cvals[0] = ONE; - step_mem->Xvecs[0] = step_mem->Fse[0]; + step_mem->Xvecs[0] = step_mem->Fsi[0]; nvec = 1; mriStep_ApplyForcing(step_mem, t, ONE, &nvec); N_VLinearCombination(nvec, step_mem->cvals, step_mem->Xvecs, - step_mem->Fse[0]); + step_mem->Fsi[0]); } } - /* call fsi if the problem has an implicit component */ - if (step_mem->implicit_rhs) + /* call fse if the problem has an explicit component */ + if (step_mem->explicit_rhs) { - retval = step_mem->fsi(t, y, step_mem->Fsi[0], ark_mem->user_data); - step_mem->nfsi++; - step_mem->fsi_is_current = SUNTRUE; + retval = step_mem->fse(t, y, step_mem->Fse[0], ark_mem->user_data); + step_mem->nfse++; + step_mem->fse_is_current = SUNTRUE; if (retval != 0) { arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, __FILE__, @@ -4255,14 +4290,14 @@ int mriStep_SlowRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, } /* Add external forcing, if applicable */ - if (step_mem->impforcing) + if (step_mem->expforcing) { step_mem->cvals[0] = ONE; - step_mem->Xvecs[0] = step_mem->Fsi[0]; + step_mem->Xvecs[0] = step_mem->Fse[0]; nvec = 1; mriStep_ApplyForcing(step_mem, t, ONE, &nvec); N_VLinearCombination(nvec, step_mem->cvals, step_mem->Xvecs, - step_mem->Fsi[0]); + step_mem->Fse[0]); } } From 84f706b81ed77cecd4f27b4db1f1ee86e1c6369b Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 21:22:15 -0500 Subject: [PATCH 09/14] updated pattern for stage preprocessing in LSRKStep --- src/arkode/arkode_lsrkstep.c | 393 ++++++++++++++++++++++------------- 1 file changed, 252 insertions(+), 141 deletions(-) diff --git a/src/arkode/arkode_lsrkstep.c b/src/arkode/arkode_lsrkstep.c index dc39c77989..ced04e8abf 100644 --- a/src/arkode/arkode_lsrkstep.c +++ b/src/arkode/arkode_lsrkstep.c @@ -451,6 +451,15 @@ int lsrkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* compute the RHS */ if (!ark_mem->fn_is_current) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } retval = step_mem->fe(t, y, f, ark_mem->user_data); step_mem->nfe++; if (retval != 0) @@ -470,6 +479,15 @@ int lsrkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, ark_mem->fn_is_current is changed by ARKODE. */ if (step_mem->is_SSP) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } retval = step_mem->fe(t, y, ark_mem->fn, ark_mem->user_data); step_mem->nfe++; ark_mem->fn_is_current = SUNTRUE; @@ -486,6 +504,16 @@ int lsrkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, case ARK_FULLRHS_OTHER: + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + if (retval != 0) + { + return (ARK_POSTPROCESS_STAGE_FAIL); + } + } + /* call f */ retval = step_mem->fe(t, y, f, ark_mem->user_data); step_mem->nfe++; @@ -610,6 +638,21 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if ((!ark_mem->fn_is_current && ark_mem->initsetup) || (step_mem->step_nst != ark_mem->nst)) { + + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + + /* call fe */ retval = step_mem->fe(ark_mem->tn, ark_mem->yn, ark_mem->fn, ark_mem->user_data); step_mem->nfe++; @@ -641,19 +684,6 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) bjm1 = ONE / SUNSQR(TWO * w0); bjm2 = bjm1; - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return ARK_POSTPROCESS_STAGE_FAIL; - } - } - /* Evaluate the first stage */ N_VScale(ONE, ark_mem->yn, ark_mem->tempv1); @@ -705,8 +735,8 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) ark_mem->tempv2, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -795,6 +825,19 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* Compute yerr (if step adaptivity enabled) */ if (!ark_mem->fixedstep) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->tempv2, ark_mem->user_data); step_mem->nfe++; @@ -828,6 +871,19 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } else { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->tempv2, ark_mem->user_data); step_mem->nfe++; @@ -948,23 +1004,22 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return ARK_POSTPROCESS_STAGE_FAIL; - } - } - /* Compute RHS function, if necessary. */ if ((!ark_mem->fn_is_current && ark_mem->initsetup) || (step_mem->step_nst != ark_mem->nst)) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } retval = step_mem->fe(ark_mem->tn, ark_mem->yn, ark_mem->fn, ark_mem->user_data); step_mem->nfe++; @@ -1031,8 +1086,8 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) ark_mem->tempv2, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1107,20 +1162,33 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) SUNLogExtraDebugVec(ARK_LOGGER, "updated solution", ark_mem->ycur, "ycur(:) ="); SUNLogInfo(ARK_LOGGER, "begin-compute-embedding", ""); - /* Compute yerr (if step adaptivity enabled) */ - if (!ark_mem->fixedstep) + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) { - retval = step_mem->fe(ark_mem->tcur + ark_mem->h, ark_mem->ycur, - ark_mem->tempv2, ark_mem->user_data); - step_mem->nfe++; + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } - SUNLogExtraDebugVec(ARK_LOGGER, "solution RHS", ark_mem->tempv2, "F_n(:) ="); - SUNLogInfoIf(retval != 0, ARK_LOGGER, "end-compute-embedding", - "status = failed rhs eval, retval = %i", retval); + retval = step_mem->fe(ark_mem->tcur + ark_mem->h, ark_mem->ycur, + ark_mem->tempv2, ark_mem->user_data); + step_mem->nfe++; - if (retval < 0) { return ARK_RHSFUNC_FAIL; } - if (retval > 0) { return RHSFUNC_RECVR; } + SUNLogExtraDebugVec(ARK_LOGGER, "solution RHS", ark_mem->tempv2, "F_n(:) ="); + SUNLogInfoIf(retval != 0, ARK_LOGGER, "end-compute-embedding", + "status = failed rhs eval, retval = %i", retval); + if (retval < 0) { return ARK_RHSFUNC_FAIL; } + if (retval > 0) { return RHSFUNC_RECVR; } + + /* Compute yerr (if step adaptivity enabled) */ + if (!ark_mem->fixedstep) + { /* Estimate the local error and compute its weighted RMS norm */ cvals[0] = p8; Xvecs[0] = ark_mem->yn; @@ -1143,17 +1211,6 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } else { - retval = step_mem->fe(ark_mem->tcur + ark_mem->h, ark_mem->ycur, - ark_mem->tempv2, ark_mem->user_data); - step_mem->nfe++; - - SUNLogExtraDebugVec(ARK_LOGGER, "solution RHS", ark_mem->tempv2, "F_n(:) ="); - SUNLogInfoIf(retval != 0, ARK_LOGGER, "end-compute-embedding", - "status = failed rhs eval, retval = %i", retval); - - if (retval < 0) { return ARK_RHSFUNC_FAIL; } - if (retval > 0) { return RHSFUNC_RECVR; } - lsrkStep_DomEigUpdateLogic(ark_mem, step_mem, *dsmPtr); } @@ -1218,19 +1275,6 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr bt3 = (rs - ONE) / (rs * rs); } - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return ARK_POSTPROCESS_STAGE_FAIL; - } - } - SUNLogInfo(ARK_LOGGER, "begin-stages-list", "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); @@ -1239,6 +1283,19 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr of the step unless a renewed step or ARKODE updated fn. */ if (!ark_mem->fn_is_current) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tn, ark_mem->yn, ark_mem->fn, ark_mem->user_data); step_mem->nfe++; @@ -1280,16 +1337,16 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* Evaluate stages j = 2,...,step_mem->req_stages - 1 */ for (int j = 2; j < step_mem->req_stages; j++) { + /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = - ark_mem->PreProcessStage(ark_mem->tcur + (j - 1) * sm1inv * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - ONE) * sm1inv * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1335,6 +1392,18 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* Evaluate the last stage for j = step_mem->req_stages */ + + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } retval = step_mem->fe(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->tempv2, ark_mem->user_data); step_mem->nfe++; @@ -1434,23 +1503,23 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return ARK_POSTPROCESS_STAGE_FAIL; - } - } - /* The method is not FSAL. Therefore, fn ​is computed at the beginning of the step unless ARKODE updated fn. */ if (!ark_mem->fn_is_current) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tn, ark_mem->yn, ark_mem->fn, ark_mem->user_data); step_mem->nfe++; @@ -1494,12 +1563,12 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + (j - 1) * rat * ark_mem->h, + retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1551,12 +1620,12 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + (j - 1) * rat * ark_mem->h, + retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1605,13 +1674,12 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (ark_mem->PreProcessStage != NULL) { retval = ark_mem->PreProcessStage(ark_mem->tcur + - rat * (rn * (rn + ONE) / TWO - ONE) * - ark_mem->h, + rat * (rn * (rn + ONE) / TWO - ONE) * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1672,17 +1740,16 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr for (int j = (in * (in + 1) / 2 + 1); j <= step_mem->req_stages; j++) { - /* apply user-supplied stage postprocessing function (if supplied) */ + /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = - ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - rn - ONE) * - rat * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessStage(ark_mem->tcur + + ((sunrealtype)j - rn - ONE) * rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed postprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1794,23 +1861,23 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return ARK_POSTPROCESS_STAGE_FAIL; - } - } - /* The method is not FSAL. Therefore, fn ​is computed at the beginning of the step unless ARKODE updated fn. */ if (!ark_mem->fn_is_current) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tn, ark_mem->yn, ark_mem->fn, ark_mem->user_data); step_mem->nfe++; @@ -1855,8 +1922,8 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1900,12 +1967,12 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, ark_mem->ycur, - ark_mem->user_data); + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1959,6 +2026,19 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } } + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * p5, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ark_mem->h * p5, ark_mem->ycur, ark_mem->tempv3, ark_mem->user_data); step_mem->nfe++; @@ -2038,23 +2118,23 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt "stage = %i, tcur = " SUN_FORMAT_G, 0, ark_mem->tcur); SUNLogExtraDebugVec(ARK_LOGGER, "stage", ark_mem->yn, "z_0(:) ="); - /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) - { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); - if (retval != 0) - { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); - return ARK_POSTPROCESS_STAGE_FAIL; - } - } - /* The method is not FSAL. Therefore, fn ​is computed at the beginning of the step unless ARKODE updated fn. */ if (!ark_mem->fn_is_current) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tn, ark_mem->yn, ark_mem->fn, ark_mem->user_data); step_mem->nfe++; @@ -2102,13 +2182,13 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - ONE) * - onesixth * ark_mem->h, + retval = ark_mem->PreProcessStage(ark_mem->tcur + + ((sunrealtype)j - ONE) * onesixth * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2181,16 +2261,16 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt for (int j = 6; j <= 9; j++) { - /* apply user-supplied stage prerocessing function (if supplied) */ + /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessStage != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - FOUR) * - onesixth * ark_mem->h, + retval = ark_mem->PreProcessStage(ark_mem->tcur + + ((sunrealtype)j - FOUR) * onesixth * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { - SUNLogInfo(ARK_LOGGER, "begin-stages-list", - "status = failed preprocess stage, retval = %i", retval); + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2241,6 +2321,19 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt } } + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + ark_mem->ycur, ark_mem->user_data); + if (retval != 0) + { + SUNLogInfo(ARK_LOGGER, "end-stages-list", + "status = failed preprocess stage, retval = %i", retval); + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->tempv3, ark_mem->user_data); step_mem->nfe++; @@ -2650,6 +2743,17 @@ int lsrkStep_DQJtimes(void* arkode_mem, N_Vector v, N_Vector Jv) if ((!ark_mem->fn_is_current && ark_mem->initsetup) || (step_mem->step_nst != ark_mem->nst)) { + /* apply user-supplied stage preprocessing function (if supplied) */ + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + ark_mem->user_data); + if (retval != 0) + { + return ARK_POSTPROCESS_STAGE_FAIL; + } + } + retval = step_mem->fe(ark_mem->tn, ark_mem->yn, ark_mem->fn, ark_mem->user_data); step_mem->nfeDQ++; @@ -2673,7 +2777,14 @@ int lsrkStep_DQJtimes(void* arkode_mem, N_Vector v, N_Vector Jv) N_VLinearSum(sig, v, ONE, y, work); /* Set Jv = f(tn, y+sig*v) */ - //TODO:Needs to be update when LSRK Supports IMEX + if (ark_mem->PreProcessStage != NULL) + { + retval = ark_mem->PreProcessStage(t, work, ark_mem->user_data); + if (retval != 0) + { + return ARK_POSTPROCESS_STAGE_FAIL; + } + } retval = step_mem->fe(t, work, Jv, ark_mem->user_data); step_mem->nfeDQ++; if (retval == 0) { break; } From 98864f9af0864ce2397412f80d9bc16afdf8f673 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 21:34:30 -0500 Subject: [PATCH 10/14] Renamed PreProcessStage to PreProcessRHS to clarify its role --- include/arkode/arkode.h | 4 +- src/arkode/arkode.c | 2 +- src/arkode/arkode_arkstep.c | 20 +++---- src/arkode/arkode_erkstep.c | 16 ++--- src/arkode/arkode_impl.h | 6 +- src/arkode/arkode_io.c | 34 +++++++---- src/arkode/arkode_lsrkstep.c | 112 +++++++++++++++++------------------ src/arkode/arkode_mristep.c | 28 ++++----- src/arkode/arkode_sprkstep.c | 14 ++--- 9 files changed, 126 insertions(+), 110 deletions(-) diff --git a/include/arkode/arkode.h b/include/arkode/arkode.h index d595074409..5ee781b7f8 100644 --- a/include/arkode/arkode.h +++ b/include/arkode/arkode.h @@ -282,8 +282,8 @@ SUNDIALS_EXPORT int ARKodeSetPostprocessStepFn(void* arkode_mem, ARKPostProcessFn ProcessStep); SUNDIALS_EXPORT int ARKodeSetPostprocessStepFailFn(void* arkode_mem, ARKPostProcessFn ProcessStep); -SUNDIALS_EXPORT int ARKodeSetPreprocessStageFn(void* arkode_mem, - ARKPostProcessFn ProcessStage); +SUNDIALS_EXPORT int ARKodeSetPreprocessRHSFn(void* arkode_mem, + ARKPostProcessFn ProcessRHS); SUNDIALS_EXPORT int ARKodeSetPostprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage); diff --git a/src/arkode/arkode.c b/src/arkode/arkode.c index a4b124cd62..cb985d63c5 100644 --- a/src/arkode/arkode.c +++ b/src/arkode/arkode.c @@ -1609,7 +1609,7 @@ ARKodeMem arkCreate(SUNContext sunctx) ark_mem->ps_data = NULL; /* No user-supplied stage pre- or post-processing functions yet */ - ark_mem->PreProcessStage = NULL; + ark_mem->PreProcessRHS = NULL; ark_mem->PostProcessStage = NULL; /* No user_data pointer yet */ diff --git a/src/arkode/arkode_arkstep.c b/src/arkode/arkode_arkstep.c index 906f81e21f..1c042d5e30 100644 --- a/src/arkode/arkode_arkstep.c +++ b/src/arkode/arkode_arkstep.c @@ -1332,9 +1332,9 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -1468,9 +1468,9 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -1587,9 +1587,9 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, case ARK_FULLRHS_OTHER: /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -1878,9 +1878,9 @@ int arkStep_TakeStep_Z(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) else { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, ark_mem->user_data); if (retval != 0) { @@ -2113,9 +2113,9 @@ int arkStep_TakeStep_Z(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* apply user-supplied stage preprocessing function (if supplied) */ /* NOTE: with internally inconsistent IMEX methods (c_i^E != c_i^I) the value of tcur corresponds to the stage time from the implicit table (c_i^I). */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { diff --git a/src/arkode/arkode_erkstep.c b/src/arkode/arkode_erkstep.c index 55e6fba6c6..18fdebb766 100644 --- a/src/arkode/arkode_erkstep.c +++ b/src/arkode/arkode_erkstep.c @@ -616,9 +616,9 @@ int erkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -665,9 +665,9 @@ int erkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (recomputeRHS) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -705,9 +705,9 @@ int erkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, case ARK_FULLRHS_OTHER: /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -902,9 +902,9 @@ int erkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) } /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { diff --git a/src/arkode/arkode_impl.h b/src/arkode/arkode_impl.h index eb9a0a90f9..5a46791ac1 100644 --- a/src/arkode/arkode_impl.h +++ b/src/arkode/arkode_impl.h @@ -570,10 +570,12 @@ struct ARKodeMemRec ARKPostProcessFn PostProcessStepFail; void* ps_data; /* pointer to user_data */ - /* User-supplied stage solution pre/post-processing functions */ - ARKPostProcessFn PreProcessStage; + /* User-supplied stage solution post-processing function */ ARKPostProcessFn PostProcessStage; + /* User-supplied RHS function pre-processing function */ + ARKPostProcessFn PreProcessRHS; + sunbooleantype use_compensated_sums; /* Adjoint solver data */ diff --git a/src/arkode/arkode_io.c b/src/arkode/arkode_io.c index 76383b93c4..2e08cd5434 100644 --- a/src/arkode/arkode_io.c +++ b/src/arkode/arkode_io.c @@ -1566,15 +1566,13 @@ int ARKodeSetPostprocessStepFailFn(void* arkode_mem, ARKPostProcessFn ProcessSte } /*--------------------------------------------------------------- - ARKodeSetPreprocessStageFn: ARKodeSetPostprocessStageFn: - Specifies user-provided stage pre- and post-processing - functions having type ARKPostProcessFn. A NULL input function - disables pre- or post-stage processing. + Specifies user-provided stage post-processing + function having type ARKPostProcessFn. A NULL input function + disables post-stage processing. - The "Preprocess" function is called just prior to taking a stage, - while the "Postprocess" function is called immediately after + The "ProcessStage" function is called immediately after computing a stage. IF THE SUPPLIED FUNCTION MODIFIES ANY OF THE ACTIVE STATE DATA, @@ -1588,7 +1586,7 @@ int ARKodeSetPostprocessStepFailFn(void* arkode_mem, ARKPostProcessFn ProcessSte ARKodeSetDeduceImplicitRhs in order to guarantee postprocessing constraints are enforced. ---------------------------------------------------------------*/ -int ARKodeSetPreprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) +int ARKodeSetPostprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) { ARKodeMem ark_mem; if (arkode_mem == NULL) @@ -1600,12 +1598,28 @@ int ARKodeSetPreprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) ark_mem = (ARKodeMem)arkode_mem; /* NULL argument sets default, otherwise set inputs */ - ark_mem->PreProcessStage = ProcessStage; + ark_mem->PostProcessStage = ProcessStage; return (ARK_SUCCESS); } -int ARKodeSetPostprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) +/*--------------------------------------------------------------- + ARKodeSetPreprocessRHSFn: + + Specifies user-provided pre-processing function having type + ARKPostProcessFn. A NULL input function disables pre-RHS + processing. + + The "PreprocessRHS" function is called on a state vector + just prior to computing the RHS. For problems with partitioned + RHS functions that are called with identical inputs, this is + only called before the first RHS evaluation. + + IF THE SUPPLIED FUNCTION MODIFIES ANY OF THE ACTIVE STATE DATA, + THEN ALL THEORETICAL GUARANTEES OF SOLUTION ACCURACY AND + STABILITY ARE LOST. + ---------------------------------------------------------------*/ +int ARKodeSetPreprocessRHSFn(void* arkode_mem, ARKPostProcessFn PreprocessRHS) { ARKodeMem ark_mem; if (arkode_mem == NULL) @@ -1617,7 +1631,7 @@ int ARKodeSetPostprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage) ark_mem = (ARKodeMem)arkode_mem; /* NULL argument sets default, otherwise set inputs */ - ark_mem->PostProcessStage = ProcessStage; + ark_mem->PreProcessRHS = PreprocessRHS; return (ARK_SUCCESS); } diff --git a/src/arkode/arkode_lsrkstep.c b/src/arkode/arkode_lsrkstep.c index ced04e8abf..5e83ea4144 100644 --- a/src/arkode/arkode_lsrkstep.c +++ b/src/arkode/arkode_lsrkstep.c @@ -452,9 +452,9 @@ int lsrkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (!ark_mem->fn_is_current) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -480,9 +480,9 @@ int lsrkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (step_mem->is_SSP) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -505,9 +505,9 @@ int lsrkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, case ARK_FULLRHS_OTHER: /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -640,9 +640,9 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, ark_mem->user_data); if (retval != 0) { @@ -729,9 +729,9 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) mus = mu * w1 / w0; /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * thjm1, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h * thjm1, ark_mem->tempv2, ark_mem->user_data); if (retval != 0) { @@ -826,9 +826,9 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (!ark_mem->fixedstep) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -872,9 +872,9 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) else { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1009,9 +1009,9 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) (step_mem->step_nst != ark_mem->nst)) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, ark_mem->user_data); if (retval != 0) { @@ -1080,9 +1080,9 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) cj = temj * w1 / FOUR; /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * cjm1, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h * cjm1, ark_mem->tempv2, ark_mem->user_data); if (retval != 0) { @@ -1163,9 +1163,9 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) SUNLogInfo(ARK_LOGGER, "begin-compute-embedding", ""); /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1284,9 +1284,9 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (!ark_mem->fn_is_current) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, ark_mem->user_data); if (retval != 0) { @@ -1339,9 +1339,9 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - ONE) * sm1inv * ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * sm1inv * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1393,9 +1393,9 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* Evaluate the last stage for j = step_mem->req_stages */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1508,9 +1508,9 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (!ark_mem->fn_is_current) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, ark_mem->user_data); if (retval != 0) { @@ -1561,9 +1561,9 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr for (int j = 2; j <= ((in - 1) * (in - 2) / 2); j++) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1618,9 +1618,9 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr for (int j = ((in - 1) * (in - 2) / 2 + 1); j <= (in * (in + 1) / 2 - 1); j++) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1671,9 +1671,9 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + + retval = ark_mem->PreProcessRHS(ark_mem->tcur + rat * (rn * (rn + ONE) / TWO - ONE) * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) @@ -1741,9 +1741,9 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr for (int j = (in * (in + 1) / 2 + 1); j <= step_mem->req_stages; j++) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - rn - ONE) * rat * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) @@ -1866,9 +1866,9 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (!ark_mem->fn_is_current) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, ark_mem->user_data); if (retval != 0) { @@ -1916,9 +1916,9 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * p5, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h * p5, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -1965,9 +1965,9 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -2027,9 +2027,9 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr } /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h * p5, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h * p5, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -2123,9 +2123,9 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt if (!ark_mem->fn_is_current) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, ark_mem->user_data); if (retval != 0) { @@ -2180,9 +2180,9 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt for (int j = 2; j <= 5; j++) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * onesixth * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) @@ -2262,9 +2262,9 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt for (int j = 6; j <= 9; j++) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - FOUR) * onesixth * ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) @@ -2322,9 +2322,9 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt } /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur + ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -2744,9 +2744,9 @@ int lsrkStep_DQJtimes(void* arkode_mem, N_Vector v, N_Vector Jv) (step_mem->step_nst != ark_mem->nst)) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn, ark_mem->yn, + retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, ark_mem->user_data); if (retval != 0) { @@ -2777,9 +2777,9 @@ int lsrkStep_DQJtimes(void* arkode_mem, N_Vector v, N_Vector Jv) N_VLinearSum(sig, v, ONE, y, work); /* Set Jv = f(tn, y+sig*v) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, work, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, work, ark_mem->user_data); if (retval != 0) { return ARK_POSTPROCESS_STAGE_FAIL; diff --git a/src/arkode/arkode_mristep.c b/src/arkode/arkode_mristep.c index 01a8bb9ac6..fde9045e69 100644 --- a/src/arkode/arkode_mristep.c +++ b/src/arkode/arkode_mristep.c @@ -1477,9 +1477,9 @@ int mriStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, nvec++; /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -1608,11 +1608,11 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, /* update the RHS components */ /* apply user-supplied stage preprocessing function (if supplied) */ - if ((ark_mem->PreProcessStage != NULL) && + if ((ark_mem->PreProcessRHS != NULL) && ((!step_mem->fse_is_current || !ark_mem->fn_is_current) || (!step_mem->fsi_is_current || !ark_mem->fn_is_current))) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -1686,9 +1686,9 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -2031,9 +2031,9 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -2675,9 +2675,9 @@ int mriStep_TakeStepMRISR(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -3083,9 +3083,9 @@ int mriStep_TakeStepMERK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if ((!solution) && (!embedding)) { /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tcur, ark_mem->ycur, + retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, ark_mem->user_data); if (retval != 0) { @@ -4242,9 +4242,9 @@ int mriStep_SlowRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (retval != ARK_SUCCESS) { return (retval); } /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); diff --git a/src/arkode/arkode_sprkstep.c b/src/arkode/arkode_sprkstep.c index 08f9bf8eca..38509151b2 100644 --- a/src/arkode/arkode_sprkstep.c +++ b/src/arkode/arkode_sprkstep.c @@ -493,9 +493,9 @@ int sprkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, case ARK_FULLRHS_OTHER: /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(t, y, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); @@ -577,9 +577,9 @@ int sprkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) set other outputs to zero */ /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn + chati * ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tn + chati * ark_mem->h, prev_stage, ark_mem->user_data); if (retval != 0) { @@ -620,9 +620,9 @@ int sprkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) set other outputs to zero */ /* apply user-supplied stage preprocessing function (if supplied) */ - if (ark_mem->PreProcessStage != NULL) + if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessStage(ark_mem->tn + ci * ark_mem->h, + retval = ark_mem->PreProcessRHS(ark_mem->tn + ci * ark_mem->h, curr_stage, ark_mem->user_data); if (retval != 0) { @@ -709,7 +709,7 @@ int sprkStep_TakeStep_Compensated(ARKodeMem ark_mem, sunrealtype* dsmPtr, /* if user-supplied stage preprocessing or postprocessing functions, * we error out since those won't work with the increment form */ - if ((ark_mem->PreProcessStage != NULL) || (ark_mem->PostProcessStage != NULL)) + if ((ark_mem->PreProcessRHS != NULL) || (ark_mem->PostProcessStage != NULL)) { SUNLogInfo(ARK_LOGGER, "begin-stages-list", "status = failed stage stage processing, retval = %i", From f8736eabdf928f21d86a2de77fcf80c617b71cb7 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 21:40:00 -0500 Subject: [PATCH 11/14] Regenerated SWIG --- src/arkode/fmod_int32/farkode_mod.c | 4 ++-- src/arkode/fmod_int32/farkode_mod.f90 | 14 +++++++------- src/arkode/fmod_int64/farkode_mod.c | 4 ++-- src/arkode/fmod_int64/farkode_mod.f90 | 14 +++++++------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/arkode/fmod_int32/farkode_mod.c b/src/arkode/fmod_int32/farkode_mod.c index 1dcc8ef708..8b1823a253 100644 --- a/src/arkode/fmod_int32/farkode_mod.c +++ b/src/arkode/fmod_int32/farkode_mod.c @@ -692,7 +692,7 @@ SWIGEXPORT int _wrap_FARKodeSetPostprocessStepFailFn(void *farg1, ARKPostProcess } -SWIGEXPORT int _wrap_FARKodeSetPreprocessStageFn(void *farg1, ARKPostProcessFn farg2) { +SWIGEXPORT int _wrap_FARKodeSetPreprocessRHSFn(void *farg1, ARKPostProcessFn farg2) { int fresult ; void *arg1 = (void *) 0 ; ARKPostProcessFn arg2 = (ARKPostProcessFn) 0 ; @@ -700,7 +700,7 @@ SWIGEXPORT int _wrap_FARKodeSetPreprocessStageFn(void *farg1, ARKPostProcessFn f arg1 = (void *)(farg1); arg2 = (ARKPostProcessFn)(farg2); - result = (int)ARKodeSetPreprocessStageFn(arg1,arg2); + result = (int)ARKodeSetPreprocessRHSFn(arg1,arg2); fresult = (int)(result); return fresult; } diff --git a/src/arkode/fmod_int32/farkode_mod.f90 b/src/arkode/fmod_int32/farkode_mod.f90 index 347a826f64..2e26e4f62e 100644 --- a/src/arkode/fmod_int32/farkode_mod.f90 +++ b/src/arkode/fmod_int32/farkode_mod.f90 @@ -148,7 +148,7 @@ module farkode_mod public :: FARKodeSetPreprocessStepFn public :: FARKodeSetPostprocessStepFn public :: FARKodeSetPostprocessStepFailFn - public :: FARKodeSetPreprocessStageFn + public :: FARKodeSetPreprocessRHSFn public :: FARKodeSetPostprocessStageFn public :: FARKodeSetNonlinearSolver public :: FARKodeSetLinear @@ -735,8 +735,8 @@ function swigc_FARKodeSetPostprocessStepFailFn(farg1, farg2) & integer(C_INT) :: fresult end function -function swigc_FARKodeSetPreprocessStageFn(farg1, farg2) & -bind(C, name="_wrap_FARKodeSetPreprocessStageFn") & +function swigc_FARKodeSetPreprocessRHSFn(farg1, farg2) & +bind(C, name="_wrap_FARKodeSetPreprocessRHSFn") & result(fresult) use, intrinsic :: ISO_C_BINDING type(C_PTR), value :: farg1 @@ -2974,19 +2974,19 @@ function FARKodeSetPostprocessStepFailFn(arkode_mem, processstep) & swig_result = fresult end function -function FARKodeSetPreprocessStageFn(arkode_mem, processstage) & +function FARKodeSetPreprocessRHSFn(arkode_mem, processrhs) & result(swig_result) use, intrinsic :: ISO_C_BINDING integer(C_INT) :: swig_result type(C_PTR) :: arkode_mem -type(C_FUNPTR), intent(in), value :: processstage +type(C_FUNPTR), intent(in), value :: processrhs integer(C_INT) :: fresult type(C_PTR) :: farg1 type(C_FUNPTR) :: farg2 farg1 = arkode_mem -farg2 = processstage -fresult = swigc_FARKodeSetPreprocessStageFn(farg1, farg2) +farg2 = processrhs +fresult = swigc_FARKodeSetPreprocessRHSFn(farg1, farg2) swig_result = fresult end function diff --git a/src/arkode/fmod_int64/farkode_mod.c b/src/arkode/fmod_int64/farkode_mod.c index 58dc396136..29add22fe2 100644 --- a/src/arkode/fmod_int64/farkode_mod.c +++ b/src/arkode/fmod_int64/farkode_mod.c @@ -692,7 +692,7 @@ SWIGEXPORT int _wrap_FARKodeSetPostprocessStepFailFn(void *farg1, ARKPostProcess } -SWIGEXPORT int _wrap_FARKodeSetPreprocessStageFn(void *farg1, ARKPostProcessFn farg2) { +SWIGEXPORT int _wrap_FARKodeSetPreprocessRHSFn(void *farg1, ARKPostProcessFn farg2) { int fresult ; void *arg1 = (void *) 0 ; ARKPostProcessFn arg2 = (ARKPostProcessFn) 0 ; @@ -700,7 +700,7 @@ SWIGEXPORT int _wrap_FARKodeSetPreprocessStageFn(void *farg1, ARKPostProcessFn f arg1 = (void *)(farg1); arg2 = (ARKPostProcessFn)(farg2); - result = (int)ARKodeSetPreprocessStageFn(arg1,arg2); + result = (int)ARKodeSetPreprocessRHSFn(arg1,arg2); fresult = (int)(result); return fresult; } diff --git a/src/arkode/fmod_int64/farkode_mod.f90 b/src/arkode/fmod_int64/farkode_mod.f90 index 7f90862f55..291ca02c8a 100644 --- a/src/arkode/fmod_int64/farkode_mod.f90 +++ b/src/arkode/fmod_int64/farkode_mod.f90 @@ -148,7 +148,7 @@ module farkode_mod public :: FARKodeSetPreprocessStepFn public :: FARKodeSetPostprocessStepFn public :: FARKodeSetPostprocessStepFailFn - public :: FARKodeSetPreprocessStageFn + public :: FARKodeSetPreprocessRHSFn public :: FARKodeSetPostprocessStageFn public :: FARKodeSetNonlinearSolver public :: FARKodeSetLinear @@ -735,8 +735,8 @@ function swigc_FARKodeSetPostprocessStepFailFn(farg1, farg2) & integer(C_INT) :: fresult end function -function swigc_FARKodeSetPreprocessStageFn(farg1, farg2) & -bind(C, name="_wrap_FARKodeSetPreprocessStageFn") & +function swigc_FARKodeSetPreprocessRHSFn(farg1, farg2) & +bind(C, name="_wrap_FARKodeSetPreprocessRHSFn") & result(fresult) use, intrinsic :: ISO_C_BINDING type(C_PTR), value :: farg1 @@ -2974,19 +2974,19 @@ function FARKodeSetPostprocessStepFailFn(arkode_mem, processstep) & swig_result = fresult end function -function FARKodeSetPreprocessStageFn(arkode_mem, processstage) & +function FARKodeSetPreprocessRHSFn(arkode_mem, processrhs) & result(swig_result) use, intrinsic :: ISO_C_BINDING integer(C_INT) :: swig_result type(C_PTR) :: arkode_mem -type(C_FUNPTR), intent(in), value :: processstage +type(C_FUNPTR), intent(in), value :: processrhs integer(C_INT) :: fresult type(C_PTR) :: farg1 type(C_FUNPTR) :: farg2 farg1 = arkode_mem -farg2 = processstage -fresult = swigc_FARKodeSetPreprocessStageFn(farg1, farg2) +farg2 = processrhs +fresult = swigc_FARKodeSetPreprocessRHSFn(farg1, farg2) swig_result = fresult end function From d6d209e1bb3ef9434de69f10d9bf8b0cde8adc6b Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 21:40:29 -0500 Subject: [PATCH 12/14] Ran formatter --- src/arkode/arkode_arkstep.c | 26 ++---- src/arkode/arkode_erkstep.c | 18 +--- src/arkode/arkode_lsrkstep.c | 166 ++++++++++++++++------------------- src/arkode/arkode_mristep.c | 32 ++----- src/arkode/arkode_sprkstep.c | 13 ++- 5 files changed, 98 insertions(+), 157 deletions(-) diff --git a/src/arkode/arkode_arkstep.c b/src/arkode/arkode_arkstep.c index 1c042d5e30..e7e1438a1f 100644 --- a/src/arkode/arkode_arkstep.c +++ b/src/arkode/arkode_arkstep.c @@ -1330,15 +1330,11 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* compute the full RHS */ if (!(ark_mem->fn_is_current)) { - /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* compute the implicit component */ @@ -1466,15 +1462,11 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* recompute RHS functions */ if (recomputeRHS) { - /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* compute the implicit component */ @@ -1590,10 +1582,7 @@ int arkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* compute the implicit component and store in sdata */ @@ -1881,11 +1870,8 @@ int arkStep_TakeStep_Z(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + ark_mem->user_data); + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } retval = step_mem->fi(ark_mem->tn, ark_mem->yn, step_mem->Fi[0], ark_mem->user_data); @@ -2116,7 +2102,7 @@ int arkStep_TakeStep_Z(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", diff --git a/src/arkode/arkode_erkstep.c b/src/arkode/arkode_erkstep.c index 18fdebb766..452f32c3db 100644 --- a/src/arkode/arkode_erkstep.c +++ b/src/arkode/arkode_erkstep.c @@ -614,15 +614,11 @@ int erkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, /* compute the RHS if needed */ if (!(ark_mem->fn_is_current)) { - /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* call f */ @@ -668,10 +664,7 @@ int erkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* call f */ @@ -708,10 +701,7 @@ int erkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* call f */ @@ -905,7 +895,7 @@ int erkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", diff --git a/src/arkode/arkode_lsrkstep.c b/src/arkode/arkode_lsrkstep.c index 5e83ea4144..eb4e7b5539 100644 --- a/src/arkode/arkode_lsrkstep.c +++ b/src/arkode/arkode_lsrkstep.c @@ -455,10 +455,7 @@ int lsrkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } retval = step_mem->fe(t, y, f, ark_mem->user_data); step_mem->nfe++; @@ -483,10 +480,7 @@ int lsrkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } retval = step_mem->fe(t, y, ark_mem->fn, ark_mem->user_data); step_mem->nfe++; @@ -508,10 +502,7 @@ int lsrkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* call f */ @@ -638,16 +629,15 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if ((!ark_mem->fn_is_current && ark_mem->initsetup) || (step_mem->step_nst != ark_mem->nst)) { - /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -732,11 +722,11 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h * thjm1, - ark_mem->tempv2, ark_mem->user_data); + ark_mem->tempv2, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -828,12 +818,12 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -874,12 +864,12 @@ int lsrkStep_TakeStepRKC(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1012,11 +1002,11 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1083,11 +1073,11 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h * cjm1, - ark_mem->tempv2, ark_mem->user_data); + ark_mem->tempv2, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1165,12 +1155,12 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1181,7 +1171,7 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) SUNLogExtraDebugVec(ARK_LOGGER, "solution RHS", ark_mem->tempv2, "F_n(:) ="); SUNLogInfoIf(retval != 0, ARK_LOGGER, "end-compute-embedding", - "status = failed rhs eval, retval = %i", retval); + "status = failed rhs eval, retval = %i", retval); if (retval < 0) { return ARK_RHSFUNC_FAIL; } if (retval > 0) { return RHSFUNC_RECVR; } @@ -1209,10 +1199,7 @@ int lsrkStep_TakeStepRKL(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) *dsmPtr = N_VWrmsNorm(ark_mem->tempv1, ark_mem->ewt); lsrkStep_DomEigUpdateLogic(ark_mem, step_mem, *dsmPtr); } - else - { - lsrkStep_DomEigUpdateLogic(ark_mem, step_mem, *dsmPtr); - } + else { lsrkStep_DomEigUpdateLogic(ark_mem, step_mem, *dsmPtr); } SUNLogInfo(ARK_LOGGER, "end-compute-embedding", "status = success"); @@ -1287,11 +1274,11 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1337,16 +1324,16 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* Evaluate stages j = 2,...,step_mem->req_stages - 1 */ for (int j = 2; j < step_mem->req_stages; j++) { - /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * sm1inv * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * + sm1inv * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1395,12 +1382,12 @@ int lsrkStep_TakeStepSSPs2(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1511,11 +1498,11 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1563,12 +1550,13 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * + rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1620,12 +1608,13 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * rat * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * + rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1673,13 +1662,14 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + - rat * (rn * (rn + ONE) / TWO - ONE) * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = + ark_mem->PreProcessRHS(ark_mem->tcur + + rat * (rn * (rn + ONE) / TWO - ONE) * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1743,13 +1733,13 @@ int lsrkStep_TakeStepSSPs3(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + - ((sunrealtype)j - rn - ONE) * rat * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - rn - ONE) * + rat * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1869,11 +1859,11 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1919,11 +1909,11 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h * p5, - ark_mem->ycur, ark_mem->user_data); + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -1967,12 +1957,12 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2030,11 +2020,11 @@ int lsrkStep_TakeStepSSP43(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h * p5, - ark_mem->ycur, ark_mem->user_data); + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2126,11 +2116,11 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2182,13 +2172,13 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + - ((sunrealtype)j - ONE) * onesixth * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - ONE) * + onesixth * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2264,13 +2254,13 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + - ((sunrealtype)j - FOUR) * onesixth * ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ((sunrealtype)j - FOUR) * + onesixth * ark_mem->h, + ark_mem->ycur, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2324,12 +2314,12 @@ int lsrkStep_TakeStepSSP104(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { - retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, - ark_mem->ycur, ark_mem->user_data); + retval = ark_mem->PreProcessRHS(ark_mem->tcur + ark_mem->h, ark_mem->ycur, + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return ARK_POSTPROCESS_STAGE_FAIL; } } @@ -2747,11 +2737,8 @@ int lsrkStep_DQJtimes(void* arkode_mem, N_Vector v, N_Vector Jv) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn, ark_mem->yn, - ark_mem->user_data); - if (retval != 0) - { - return ARK_POSTPROCESS_STAGE_FAIL; - } + ark_mem->user_data); + if (retval != 0) { return ARK_POSTPROCESS_STAGE_FAIL; } } retval = step_mem->fe(ark_mem->tn, ark_mem->yn, ark_mem->fn, @@ -2780,10 +2767,7 @@ int lsrkStep_DQJtimes(void* arkode_mem, N_Vector v, N_Vector Jv) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, work, ark_mem->user_data); - if (retval != 0) - { - return ARK_POSTPROCESS_STAGE_FAIL; - } + if (retval != 0) { return ARK_POSTPROCESS_STAGE_FAIL; } } retval = step_mem->fe(t, work, Jv, ark_mem->user_data); step_mem->nfeDQ++; diff --git a/src/arkode/arkode_mristep.c b/src/arkode/arkode_mristep.c index fde9045e69..9057ce4c55 100644 --- a/src/arkode/arkode_mristep.c +++ b/src/arkode/arkode_mristep.c @@ -1480,10 +1480,7 @@ int mriStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* compute the implicit component and store in sdata */ @@ -1613,10 +1610,7 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, (!step_mem->fsi_is_current || !ark_mem->fn_is_current))) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* implicit component */ @@ -1684,15 +1678,11 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, /* compute the full RHS */ if (!(ark_mem->fn_is_current)) { - /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* compute the implicit component */ @@ -1744,7 +1734,6 @@ int mriStep_UpdateF0(ARKodeMem ark_mem, ARKodeMRIStepMem step_mem, step_mem->Fse[0]); } } - } break; @@ -2029,12 +2018,11 @@ int mriStep_TakeStepMRIGARK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPt } if (calc_fslow) { - /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -2673,12 +2661,11 @@ int mriStep_TakeStepMRISR(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) /* Compute updated slow RHS (except for final solution or embedding) */ if ((!solution) && (!embedding)) { - /* apply user-supplied stage preprocessing function (if supplied) */ if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", @@ -3086,11 +3073,11 @@ int mriStep_TakeStepMERK(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tcur, ark_mem->ycur, - ark_mem->user_data); + ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return (ARK_POSTPROCESS_STAGE_FAIL); } } @@ -4245,10 +4232,7 @@ int mriStep_SlowRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* call fsi if the problem has an implicit component */ diff --git a/src/arkode/arkode_sprkstep.c b/src/arkode/arkode_sprkstep.c index 38509151b2..a2ae4d57fc 100644 --- a/src/arkode/arkode_sprkstep.c +++ b/src/arkode/arkode_sprkstep.c @@ -496,10 +496,7 @@ int sprkStep_FullRHS(ARKodeMem ark_mem, sunrealtype t, N_Vector y, N_Vector f, if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(t, y, ark_mem->user_data); - if (retval != 0) - { - return (ARK_POSTPROCESS_STAGE_FAIL); - } + if (retval != 0) { return (ARK_POSTPROCESS_STAGE_FAIL); } } /* Since f1 and f2 do not have overlapping outputs and so the f vector is @@ -580,11 +577,11 @@ int sprkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn + chati * ark_mem->h, - prev_stage, ark_mem->user_data); + prev_stage, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return (ARK_POSTPROCESS_STAGE_FAIL); } } @@ -623,11 +620,11 @@ int sprkStep_TakeStep(ARKodeMem ark_mem, sunrealtype* dsmPtr, int* nflagPtr) if (ark_mem->PreProcessRHS != NULL) { retval = ark_mem->PreProcessRHS(ark_mem->tn + ci * ark_mem->h, - curr_stage, ark_mem->user_data); + curr_stage, ark_mem->user_data); if (retval != 0) { SUNLogInfo(ARK_LOGGER, "end-stages-list", - "status = failed preprocess stage, retval = %i", retval); + "status = failed preprocess stage, retval = %i", retval); return (ARK_POSTPROCESS_STAGE_FAIL); } } From 801108cf2f00fd44fc57b859ba26dbefafac77be Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 22:21:05 -0500 Subject: [PATCH 13/14] Updated logging output to reflect reordering of explicit and implicit RHS functions --- .../test_logging_arkode_mristep_lvl5_1_0.out | 32 ++-- .../test_logging_arkode_mristep_lvl5_2_0.out | 86 ++++----- ...test_logging_arkode_mristep_lvl5_2_1_0.out | 176 +++++++++--------- ...test_logging_arkode_mristep_lvl5_2_1_1.out | 82 ++++---- .../test_logging_arkode_mristep_lvl5_5_0.out | 70 +++---- ...test_logging_arkode_mristep_lvl5_5_1_1.out | 64 +++---- 6 files changed, 255 insertions(+), 255 deletions(-) diff --git a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_1_0.out b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_1_0.out index e55fe2d3ca..75f4529add 100644 --- a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_1_0.out +++ b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_1_0.out @@ -219,10 +219,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 2.618808553544664 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 2.61880855354466 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0007928652557594945 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.000792865255759495 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -2.964220317650217e-08 @@ -318,10 +318,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 10.47508400821115 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 10.4750840082111 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.003186689134194484 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.00318668913419448 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -8.826759722826945e-08 @@ -417,7 +417,7 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 23.56852920005934 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 23.5685292000593 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.00721853154020951 @@ -532,10 +532,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 18.33117208795071 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 18.3311720879507 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.005605053590958301 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0056050535909583 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -9.769081861380291e-08 @@ -631,10 +631,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 41.89912728811152 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 41.8991272881115 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.01281058040587073 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0128105804058707 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -2.243720669363767e-07 @@ -730,10 +730,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 70.70323030003219 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 70.7032303000322 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.02165342185632685 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0216534218563268 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.062465506470602e-07 @@ -845,10 +845,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 34.04320255383404 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 34.043202553834 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.01041601086238914 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0104160108623891 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.657393533499818e-07 @@ -947,7 +947,7 @@ Using fixed-point nonlinear solver [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 73.3217906642831 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.02243147136763779 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0224314713676378 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.604763568846829e-07 @@ -1043,10 +1043,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 117.8347848202942 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 117.834784820294 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.03608300450072507 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0360830045007251 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -5.104138961564322e-07 diff --git a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_0.out b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_0.out index 6d7892458b..7168402c3e 100644 --- a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_0.out +++ b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_0.out @@ -225,7 +225,7 @@ Using fixed-point nonlinear solver [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 4.47758963639177 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.001381168840331406 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.00138116884033141 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.897138685890125e-11 @@ -235,12 +235,12 @@ Using fixed-point nonlinear solver 1.224744871372617e+00 1.732039839126277e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.000435866521508459 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = --8.897087832239859e-05 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_2(:) = -3.874078017985966e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = +-8.897087832239859e-05 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 3, stage type = 0, tcur = 0.00071793326075423 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -324,10 +324,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 12.14796270582734 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 12.1479627058273 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.003729401476738584 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.00372940147673858 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.532439656993041e-08 @@ -337,12 +337,12 @@ Using fixed-point nonlinear solver 1.224744836067192e+00 1.732021049568848e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00071793326075423 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = --1.465475048226711e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_4(:) = -3.456082655460544e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = +-1.465475048226711e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 5, stage type = 0, tcur = 0.001 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -426,10 +426,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 23.56857053287391 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 23.5685705328739 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.007204341456196956 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.00720434145619696 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.302435561799672e-07 @@ -439,12 +439,12 @@ Using fixed-point nonlinear solver 1.224744741148033e+00 1.731993073504206e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.001 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = --2.041241329185004e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_6(:) = 5.636297178910438e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = +-2.041241329185004e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 7, stage type = 1, tcur = 0.001 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow stage] z_7(:) = @@ -551,10 +551,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 25.02295754400716 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 25.0229575440072 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.007673490841839432 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.00767349084183943 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -8.899932215363059e-08 @@ -564,12 +564,12 @@ Using fixed-point nonlinear solver 1.224744680311620e+00 1.731931778624167e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00143586652150846 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = --2.930949713846630e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_2(:) = -3.868466374409285e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = +-2.930949713846630e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 3, stage type = 0, tcur = 0.00171793326075423 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -653,10 +653,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 45.98839423695283 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 45.9883942369528 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.01409326137946229 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0140932613794623 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.818969806161295e-07 @@ -666,12 +666,12 @@ Using fixed-point nonlinear solver 1.224744587413962e+00 1.731880422875505e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00171793326075423 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = --3.506715672368343e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_4(:) = -3.447347325160531e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = +-3.506715672368343e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 5, stage type = 0, tcur = 0.002 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -755,10 +755,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 70.70326789489287 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 70.7032678948929 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.02163921128615576 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0216392112861558 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.344145077803560e-07 @@ -768,12 +768,12 @@ Using fixed-point nonlinear solver 1.224744434896435e+00 1.731819882857588e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.002 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = --4.082481637967301e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_6(:) = 5.649384883634026e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = +-4.082481637967301e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 7, stage type = 1, tcur = 0.002 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow stage] z_7(:) = @@ -880,7 +880,7 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 45.56773766986903 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 45.567737669869 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0139640883068901 @@ -893,12 +893,12 @@ Using fixed-point nonlinear solver 1.224744285079746e+00 1.731708273800530e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00243586652150846 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = --4.972189179277549e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_2(:) = -3.853486828457860e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = +-4.972189179277549e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 3, stage type = 0, tcur = 0.00271793326075423 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -982,10 +982,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 79.82720625171295 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 79.827206251713 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.02445379030804438 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0244537903080444 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.284693989193380e-07 @@ -995,12 +995,12 @@ Using fixed-point nonlinear solver 1.224744134589932e+00 1.731624362133668e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00271793326075423 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = --5.547954543508839e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_4(:) = -3.429250892967503e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = +-5.547954543508839e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 5, stage type = 0, tcur = 0.003 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -1084,10 +1084,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 117.8348216736332 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 117.834821673633 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.03606875840854498 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.036068758408545 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -5.385851829263963e-07 @@ -1097,12 +1097,12 @@ Using fixed-point nonlinear solver 1.224743924474148e+00 1.731531270273480e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.003 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = --6.123719905959306e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_6(:) = 5.671821873797286e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = +-6.123719905959306e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 7, stage type = 1, tcur = 0.003 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow stage] z_7(:) = diff --git a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_1_0.out b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_1_0.out index 133719dd90..177c810152 100644 --- a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_1_0.out +++ b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_1_0.out @@ -223,21 +223,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 4.47758963639177, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 4.47758963639177, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 6.332267990526456, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 6.33226799052646, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.001953262537794067 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.00195326253779407 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.487161031816153e-15 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.48716103181615e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.487161031816153e-15 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 4.477589426747882 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.48716103181615e-15 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 4.47758942674788 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 3.392821120378325e-09, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 3.39282112037832e-09, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -249,12 +249,12 @@ Using GMRES iterative linear solver 1.224744871374707e+00 1.732039839126277e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.000435866521508459 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = --8.897087832224679e-05 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_2(:) = -3.874495965781953e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = +-8.897087832224679e-05 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 3, stage type = 0, tcur = 0.00071793326075423 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -338,21 +338,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 12.14796270408155, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 12.1479627040815, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 17.17981361131466, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 17.1798136113147, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.005274126908384101 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0052741269083841 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 3.622257051912133e-16 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 3.62225705191213e-16 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 3.622257051912133e-16 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 12.14796838632732 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 3.62225705191213e-16 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 12.1479683863273 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 2.95110171963532e-08, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 2.95110171963532e-08, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -364,12 +364,12 @@ Using GMRES iterative linear solver 1.224744836074958e+00 1.732021049568849e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00071793326075423 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = --1.465475048217419e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_4(:) = -3.457635846419825e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = +-1.465475048217419e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 5, stage type = 0, tcur = 0.001 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -453,21 +453,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 23.56857051937634, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 23.5685705193763, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 33.33099207424872, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 33.3309920742487, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.01018828512439107 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0101882851243911 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.214393153928069e-15 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.21439315392807e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.214393153928069e-15 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 23.56859238029067 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.21439315392807e-15 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 23.5685923802907 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.15912027137731e-07, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.15912027137731e-07, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -479,12 +479,12 @@ Using GMRES iterative linear solver 1.224744741166875e+00 1.731993073504207e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.001 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = --2.041241329153601e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_6(:) = 5.632528877341102e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = +-2.041241329153601e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 7, stage type = 1, tcur = 0.001 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow stage] z_7(:) = @@ -591,21 +591,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 25.02295754230141, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 25.0229575423014, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 35.38780592700878, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 35.3878059270088, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.01085175829557421 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0108517582955742 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 4.310220087272934e-15 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 4.31022008727293e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 4.310220087272934e-15 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 25.02297210770477 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 4.31022008727293e-15 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 25.0229721077048 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.309935552076447e-07, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.30993555207645e-07, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -617,12 +617,12 @@ Using GMRES iterative linear solver 1.224744680342249e+00 1.731931778624172e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00143586652150846 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = --2.930949713773332e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_2(:) = -3.874591903012436e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = +-2.930949713773332e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 3, stage type = 0, tcur = 0.00171793326075423 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -706,21 +706,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 45.98839421997347, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 45.9883942199735, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 65.03741081764694, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 65.0374108176469, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.01993022435379269 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0199302243537927 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 4.755385191836388e-15 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 4.75538519183639e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 4.755385191836388e-15 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 4.75538519183639e-15 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 45.9884242098754 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 4.508449673731598e-07, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 4.5084496737316e-07, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -732,12 +732,12 @@ Using GMRES iterative linear solver 1.224744587466616e+00 1.731880422875515e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00171793326075423 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = --3.506715672217582e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_4(:) = -3.457877693462479e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = +-3.506715672217582e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 5, stage type = 0, tcur = 0.002 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -821,21 +821,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 70.70326784098599, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 70.703267840986, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 99.98952028481987, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 99.9895202848199, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.03060090279475537 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0306009027947554 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.730302057214856e-15 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.73030205721486e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.730302057214856e-15 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 70.70332355610354 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.73030205721486e-15 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 70.7033235561035 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.073884204481654e-06, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.07388420448165e-06, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -847,12 +847,12 @@ Using GMRES iterative linear solver 1.224744434983606e+00 1.731819882857605e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.002 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = --4.082481637676731e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_6(:) = 5.631951555615774e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = +-4.082481637676731e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 7, stage type = 1, tcur = 0.002 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow stage] z_7(:) = @@ -959,21 +959,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 45.56773766224821, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 45.5677376622482, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 64.4425126086107, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.01974755058191297 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.019747550581913 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.326802582649019e-14 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.32680258264902e-14 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.326802582649019e-14 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 45.56776698106854 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.32680258264902e-14 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 45.5677669810685 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 4.425034142015078e-07, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 4.42503414201508e-07, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -985,12 +985,12 @@ Using GMRES iterative linear solver 1.224744285188675e+00 1.731708273800566e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00243586652150846 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = --4.972189178835323e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_2(:) = -3.875270711647729e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = +-4.972189178835323e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 3, stage type = 0, tcur = 0.00271793326075423 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -1074,21 +1074,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 79.82720621181305, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 79.827206211813, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 112.8927176710998, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 112.8927176711, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.03458090468243458 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0345809046824346 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 4.710652380983711e-14 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 4.71065238098371e-14 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 4.710652380983711e-14 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 79.82726049766872 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 4.71065238098371e-14 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 79.8272604976687 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.371022988742507e-06, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.37102298874251e-06, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -1100,12 +1100,12 @@ Using GMRES iterative linear solver 1.224744134738065e+00 1.731624362133719e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00271793326075423 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = --5.547954542837812e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_4(:) = -3.458874981663813e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = +-5.547954542837812e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 5, stage type = 0, tcur = 0.003 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -1189,21 +1189,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 117.8348215690057, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 117.834821569006, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 166.6436027827016, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 166.643602782702, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.05100462411782345 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0510046241178235 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 5.154650887905549e-14 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 5.15465088790555e-14 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 5.154650887905549e-14 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 117.8349111207286 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 5.15465088790555e-14 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 117.834911120729 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 2.999444834513892e-06, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 2.99944483451389e-06, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -1215,12 +1215,12 @@ Using GMRES iterative linear solver 1.224743924681878e+00 1.731531270273552e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.003 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = --6.123719904920655e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_6(:) = 5.630279479280135e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = +-6.123719904920655e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 7, stage type = 1, tcur = 0.003 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow stage] z_7(:) = diff --git a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_1_1.out b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_1_1.out index dc43fb1bb9..56dbc27b6c 100644 --- a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_1_1.out +++ b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_2_1_1.out @@ -225,12 +225,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 4.475638659455317 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 4.47563865945532 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.001949917579925701 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.0019499175799257 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.688716585288429e-11 @@ -240,12 +240,12 @@ Using dense direct linear solver 1.224744871374702e+00 1.732039839128359e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.000435866521508459 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = --8.897087832224718e-05 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_2(:) = -3.874390811900406e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = +-8.897087832224718e-05 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 3, stage type = 0, tcur = 0.00071793326075423 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -331,12 +331,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 12.14267813732762 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 12.1426781373276 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.005287100222960252 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.00528710022296025 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.531668548149428e-08 @@ -346,12 +346,12 @@ Using dense direct linear solver 1.224744836074903e+00 1.732021049576574e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00071793326075423 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = --1.465475048217485e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_4(:) = -3.457238563029700e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = +-1.465475048217485e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 5, stage type = 0, tcur = 0.001 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -437,12 +437,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 23.55833268405183 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 23.5583326840518 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.01025211853930287 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.0102521185393029 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.302249691495050e-07 @@ -452,12 +452,12 @@ Using dense direct linear solver 1.224744741166620e+00 1.731993073522876e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.001 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = --2.041241329154026e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_6(:) = 5.633513289323019e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = +-2.041241329154026e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 7, stage type = 1, tcur = 0.001 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow stage] z_7(:) = @@ -566,12 +566,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 25.01207820816763 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 25.0120782081676 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.01088917366864544 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.0108891736686454 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -8.898775461780424e-08 @@ -581,12 +581,12 @@ Using dense direct linear solver 1.224744680341775e+00 1.731931778654458e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00143586652150846 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = --2.930949713774468e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_2(:) = -3.872982667138039e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = +-2.930949713774468e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 3, stage type = 0, tcur = 0.00171793326075423 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -677,7 +677,7 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.02001100770865585 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.0200110077086558 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.818641587644074e-07 @@ -687,12 +687,12 @@ Using dense direct linear solver 1.224744587465371e+00 1.731880422927156e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00171793326075423 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = --3.506715672221149e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_4(:) = -3.455046521575918e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = +-3.506715672221149e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 5, stage type = 0, tcur = 0.002 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -778,12 +778,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 70.67253645863913 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 70.6725364586391 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.03076033257676168 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.0307603325767617 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.343490240444961e-07 @@ -793,12 +793,12 @@ Using dense direct linear solver 1.224744434980505e+00 1.731819882942072e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.002 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = --4.082481637687065e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_6(:) = 5.636794928714210e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = +-4.082481637687065e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 7, stage type = 1, tcur = 0.002 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow stage] z_7(:) = @@ -907,7 +907,7 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 45.54793022210226 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 45.5479302221023 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.779486220103395e-07 @@ -917,12 +917,12 @@ Using dense direct linear solver 1.224744285194780e+00 1.731708322471386e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00243586652150846 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = --4.972189178810538e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_2(:) = -1.442950754707516e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_2(:) = +-4.972189178810538e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 3, stage type = 0, tcur = 0.00271793326075423 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -1008,7 +1008,7 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 79.77268774518882 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 79.7726877451888 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.283783577065699e-07 @@ -1018,12 +1018,12 @@ Using dense direct linear solver 1.224744134765044e+00 1.731624495883745e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.00271793326075423 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = --5.547954542715601e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_4(:) = 3.223230302717166e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_4(:) = +-5.547954542715601e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 5, stage type = 0, tcur = 0.003 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -1109,7 +1109,7 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 117.7290852921697 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 117.72908529217 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -5.384377455891717e-07 @@ -1119,12 +1119,12 @@ Using dense direct linear solver 1.224743924705656e+00 1.731531529558495e+00 [DEBUG][rank 0][mriStepInnerStepper_Reset][reset-inner-state] tR = 0.003 -[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = --6.123719904801765e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow implicit RHS] Fsi_6(:) = 1.858977001219174e-07 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow explicit RHS] Fse_6(:) = +-6.123719904801765e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRIGARK][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRIGARK][begin-stages-list] stage = 7, stage type = 1, tcur = 0.003 [DEBUG][rank 0][mriStep_TakeStepMRIGARK][slow stage] z_7(:) = diff --git a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_0.out b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_0.out index 6217f87262..ee41854b38 100644 --- a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_0.out +++ b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_0.out @@ -217,10 +217,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 8.484739573686154 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 8.48473957368615 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.002872021135550911 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.00287202113555091 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.986443443133593e-11 @@ -229,12 +229,12 @@ Using fixed-point nonlinear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_1(:) = 1.224744871351725e+00 1.732030023087570e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = --1.224744797946763e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_1(:) = -7.340312367691422e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = +-1.224744797946763e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 2, stage type = 0, tcur = 0.000266666666666667 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -314,7 +314,7 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 1.676051713900995 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 1.67605171390099 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.000555028872656497 @@ -326,12 +326,12 @@ Using fixed-point nonlinear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_2(:) = 1.224744849149295e+00 1.732046701970666e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = --5.443310573859504e-05 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_2(:) = 2.996851189225796e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = +-5.443310573859504e-05 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 3, stage type = 0, tcur = 0.001 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -411,10 +411,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 23.56853099966965 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 23.5685309996697 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.007921345619572666 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.00792134561957267 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.020105221181502e-07 @@ -518,10 +518,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 36.76651861107406 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 36.7665186110741 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.01237684727403708 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0123768472740371 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.225968906490633e-07 @@ -530,12 +530,12 @@ Using fixed-point nonlinear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_1(:) = 1.224744646784176e+00 1.731903012201602e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = --3.265985529176539e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_1(:) = -7.334526689234511e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = +-3.265985529176539e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 2, stage type = 0, tcur = 0.00126666666666667 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -615,10 +615,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 14.24598132523308 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 14.2459813252331 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.004779612504363237 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.00477961250436324 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -7.668243400267920e-08 @@ -627,12 +627,12 @@ Using fixed-point nonlinear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_2(:) = 1.224744692698633e+00 1.731958177393267e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = --2.585572192110587e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_2(:) = 2.987532724605689e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = +-2.585572192110587e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 3, stage type = 0, tcur = 0.002 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -712,10 +712,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 70.70322900226219 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 70.7032290022622 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.02376157169307341 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0237615716930734 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.061609969229756e-07 @@ -819,10 +819,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 65.04718221192611 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 65.0471822119261 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.02187885806561487 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0218788580656149 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -2.450607205391799e-07 @@ -831,12 +831,12 @@ Using fixed-point nonlinear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_1(:) = 1.224744218159349e+00 1.731660562748428e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = --5.307224627226973e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_1(:) = -7.342085020533207e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = +-5.307224627226973e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 2, stage type = 0, tcur = 0.00226666666666667 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -916,10 +916,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 26.81570536954298 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 26.815705369543 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.009003158261553504 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0090031582615535 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.311224885430741e-07 @@ -928,12 +928,12 @@ Using fixed-point nonlinear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_2(:) = 1.224744332097581e+00 1.731754203213892e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = --4.626812033999880e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_2(:) = 2.983481981856377e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = +-4.626812033999880e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 3, stage type = 0, tcur = 0.003 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -1013,10 +1013,10 @@ Using fixed-point nonlinear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-solver] solver = Fixed-Point [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 117.8347804233192 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 1, update-norm = 117.834780423319 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][begin-iterations-list] -[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.03959595686322268 +[INFO][rank 0][SUNNonlinSolSolve_FixedPoint][nonlinear-iterate] cur-iter = 2, update-norm = 0.0395959568632227 [INFO][rank 0][SUNNonlinSolSolve_FixedPoint][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -5.103111738986100e-07 diff --git a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_1_1.out b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_1_1.out index 9286d35fb3..3a10010014 100644 --- a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_1_1.out +++ b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_1_1.out @@ -220,12 +220,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 8.480683168344489 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 8.48068316834449 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.004053988673538109 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.00405398867353811 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -3.510922608160773e-11 @@ -234,12 +234,12 @@ Using dense direct linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_1(:) = 1.224744871356480e+00 1.732030023092318e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = --1.224744797942008e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_1(:) = -7.341025925915888e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = +-1.224744797942008e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 2, stage type = 0, tcur = 0.000266666666666667 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -321,12 +321,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 1.675256885913521 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 1.67525688591352 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.0007986236837143737 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.000798623683714374 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -2.224137351523309e-08 @@ -335,12 +335,12 @@ Using dense direct linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_2(:) = 1.224744849150216e+00 1.732046701971602e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = --5.443310573855413e-05 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_2(:) = 2.996713889663234e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = +-5.443310573855413e-05 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 3, stage type = 0, tcur = 0.001 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -422,12 +422,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 23.55729306364141 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 23.5572930636414 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.01125102523959608 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.0112510252395961 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.019974050768401e-07 @@ -533,12 +533,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 36.74898235634446 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 36.7489823563445 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.01755499643143604 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.017554996431436 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.225895223600063e-07 @@ -547,12 +547,12 @@ Using dense direct linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_1(:) = 1.224744646804662e+00 1.731903012222166e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = --3.265985529121911e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_1(:) = -7.337595593553204e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = +-3.265985529121911e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 2, stage type = 0, tcur = 0.00126666666666667 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -634,12 +634,12 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 14.23919293854171 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 14.2391929385417 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.006799198459613769 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0.00679919845961377 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -7.667452361008834e-08 @@ -648,12 +648,12 @@ Using dense direct linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_2(:) = 1.224744692719660e+00 1.731958177414409e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = --2.585572192066196e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_2(:) = 2.984384338680091e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = +-2.585572192066196e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 3, stage type = 0, tcur = 0.002 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -735,7 +735,7 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 70.66951636344861 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 70.6695163634486 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 @@ -846,7 +846,7 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 65.01617199523695 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 65.0161719952369 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -2.450469858076038e-07 @@ -855,12 +855,12 @@ Using dense direct linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_1(:) = 1.224744218225516e+00 1.731660638862276e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = --5.307224626940249e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_1(:) = -3.549626042518400e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = +-5.307224626940249e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 2, stage type = 0, tcur = 0.00226666666666667 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -942,7 +942,7 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 26.80292351487314 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 26.8029235148731 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -1.311066262520789e-07 @@ -951,12 +951,12 @@ Using dense direct linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_2(:) = 1.224744332165876e+00 1.731754234631864e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = --4.626812033741879e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_2(:) = 4.540721694471736e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = +-4.626812033741879e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 3, stage type = 0, tcur = 0.003 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -1038,7 +1038,7 @@ Using dense direct linear solver [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] [INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 0 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 0, p-solves = 0, resnorm = 0 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 117.7785945803303 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 117.77859458033 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success [DEBUG][rank 0][mriStep_Nls][correction] zcor(:) = -5.102176540643530e-07 From a76be018619d1eb82bb7ae1cff0c36d17745dbe4 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Tue, 13 Jan 2026 23:47:38 -0500 Subject: [PATCH 14/14] One more .out file --- ...test_logging_arkode_mristep_lvl5_5_1_0.out | 146 +++++++++--------- 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_1_0.out b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_1_0.out index c671ba351a..764614d882 100644 --- a/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_1_0.out +++ b/test/unit_tests/logging/test_logging_arkode_mristep_lvl5_5_1_0.out @@ -218,21 +218,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 8.484739573686154, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 8.48473957368615, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 11.99923377831067, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 11.9992337783107, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.00406162884130716 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.063059984369675e-15 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.06305998436967e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.063059984369675e-15 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 8.484739095390244 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.06305998436967e-15 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 8.48473909539024 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.518442601738134e-08, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.51844260173813e-08, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -243,12 +243,12 @@ Using GMRES iterative linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_1(:) = 1.224744871356505e+00 1.732030023087570e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = --1.224744797941982e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_1(:) = -7.341268391760586e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = +-1.224744797941982e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 2, stage type = 0, tcur = 0.000266666666666667 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -328,21 +328,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.676051713893393, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.67605171389339, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 2.370295065026708, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 2.37029506502671, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0007849097524979764 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.000784909752497976 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 3.383351982668269e-16 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 3.38335198266827e-16 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 3.383351982668269e-16 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 1.676055870102968 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 3.38335198266827e-16 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 1.67605587010297 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 2.704347032731375e-10, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 2.70434703273138e-10, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -353,12 +353,12 @@ Using GMRES iterative linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_2(:) = 1.224744849150216e+00 1.732046701970666e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = --5.443310573855411e-05 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_2(:) = 2.996667026040624e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = +-5.443310573855411e-05 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 3, stage type = 0, tcur = 0.001 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -438,21 +438,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 23.56853099966687, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 23.5685309996669, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 33.3309361849396, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.01120227584213543 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0112022758421354 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 6.60368777501544e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 6.60368777501544e-15 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 23.56854944242167 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 23.5685494424217 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.271888306615336e-07, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.27188830661534e-07, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -558,21 +558,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 36.7665186233225, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 36.7665186233225, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 51.99570927834566, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 51.9957092783457, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.01750303644230491 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0175030364423049 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 1.604262223531045e-15 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 1.60426222353105e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 1.604262223531045e-15 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 36.76654034473295 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 1.60426222353105e-15 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 36.7665403447329 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 3.144297547459707e-07, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 3.14429754745971e-07, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -583,12 +583,12 @@ Using GMRES iterative linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_1(:) = 1.224744646805198e+00 1.731903012201602e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = --3.265985529120480e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_1(:) = -7.338731096471370e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = +-3.265985529120480e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 2, stage type = 0, tcur = 0.00126666666666667 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -668,21 +668,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 14.24598132451491, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 14.2459813245149, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 20.14685999844282, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 20.1468599984428, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.006759308947688205 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.00675930894768821 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.608861273900752e-15 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.60886127390075e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.608861273900752e-15 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 14.24599536090235 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.60886127390075e-15 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 14.2459953609024 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 4.511849085671779e-08, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 4.51184908567178e-08, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -693,12 +693,12 @@ Using GMRES iterative linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_2(:) = 1.224744692719953e+00 1.731958177393268e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = --2.585572192065578e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_2(:) = 2.983268832342997e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = +-2.585572192065578e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 3, stage type = 0, tcur = 0.002 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -778,21 +778,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 70.70322899958907, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 70.7032289995891, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 99.98946535478959, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 99.9894653547896, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.03360221435494776 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0336022143549478 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.00549274449084e-14 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success [INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.00549274449084e-14 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 70.70328434748892 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 70.7032843474889 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.178330244583246e-06, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.17833024458325e-06, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -898,21 +898,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 65.04718225429083, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 65.0471822542908, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 91.99060733817259, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 91.9906073381726, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.03093990190327634 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0309399019032763 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.683452123191181e-14 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.68345212319118e-14 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.683452123191181e-14 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 65.04722612053793 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.68345212319118e-14 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 65.0472261205379 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 9.960147476444905e-07, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 9.96014747644491e-07, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -923,12 +923,12 @@ Using GMRES iterative linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_1(:) = 1.224744218210551e+00 1.731660562748439e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = --5.307224627005096e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_1(:) = -7.352324912711484e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_1(:) = +-5.307224627005096e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 2, stage type = 0, tcur = 0.00226666666666667 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -1008,21 +1008,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 26.81570536668555, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 26.8157053666855, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 37.9231342141677, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.01273212495287925 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0127321249528793 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 1.329909818489109e-15 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 1.32990981848911e-15 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 1.329909818489109e-15 -[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 26.81572924537169 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 1.32990981848911e-15 +[INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 26.8157292453717 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.655080232345353e-07, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 1.65508023234535e-07, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success @@ -1033,12 +1033,12 @@ Using GMRES iterative linear solver [DEBUG][rank 0][mriStep_TakeStepMRISR][slow stage] z_2(:) = 1.224744332167409e+00 1.731754203213906e+00 -[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = --4.626812033736085e-04 - 0.000000000000000e+00 [DEBUG][rank 0][mriStep_TakeStepMRISR][slow implicit RHS] Fsi_2(:) = 2.969517044376617e-08 0.000000000000000e+00 +[DEBUG][rank 0][mriStep_TakeStepMRISR][slow explicit RHS] Fse_2(:) = +-4.626812033736085e-04 + 0.000000000000000e+00 [INFO][rank 0][mriStep_TakeStepMRISR][end-stages-list] status = success [INFO][rank 0][mriStep_TakeStepMRISR][begin-stages-list] stage = 3, stage type = 0, tcur = 0.003 [DEBUG][rank 0][mriStep_ComputeInnerForcing][forcing] forcing_0(:) = @@ -1118,21 +1118,21 @@ Using GMRES iterative linear solver [INFO][rank 0][mriStep_Nls][begin-nonlinear-solve] tol = 0.1 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-solver] solver = Newton [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 117.834780412349, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 117.834780412349, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][SUNLinSolSolve_SPGMR][linear-solver] solver = spgmr [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 166.6435445783995, status = continue +[INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] cur-iter = 0, total-iters = 0, res-norm = 166.6435445784, status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.05599239103857365 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 1, total-iters = 1, res-norm = 0.0559923910385736 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = continue [INFO][rank 0][SUNLinSolSolve_SPGMR][begin-iterations-list] -[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.047361656823588e-14 +[INFO][rank 0][SUNLinSolSolve_SPGMR][linear-iterate] cur-iter = 2, total-iters = 2, res-norm = 2.04736165682359e-14 [INFO][rank 0][SUNLinSolSolve_SPGMR][end-iterations-list] status = success -[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.047361656823588e-14 +[INFO][rank 0][arkLsSolve][end-linear-solve] status = success, iters = 2, p-solves = 0, resnorm = 2.04736165682359e-14 [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 1, total-iters = 1, update-norm = 117.834872652557 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = continue [INFO][rank 0][SUNNonlinSolSolve_Newton][begin-iterations-list] -[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 3.291178273336047e-06, b-tol = 0.0005000000000000001, res-tol = 0.0007071067811865477 +[INFO][rank 0][arkLsSolve][begin-linear-solve] iterative = 1, b-norm = 3.29117827333605e-06, b-tol = 0.0005, res-tol = 0.000707106781186548 [INFO][rank 0][arkLsSolve][end-linear-solve] status = success small rhs [INFO][rank 0][SUNNonlinSolSolve_Newton][nonlinear-iterate] cur-iter = 2, total-iters = 2, update-norm = 0 [INFO][rank 0][SUNNonlinSolSolve_Newton][end-iterations-list] status = success