From 0d5c597043da69210a36052093f00db1d24c25e9 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Fri, 16 Jan 2026 11:00:41 -0500 Subject: [PATCH 01/16] Added optional routine to request that ARKODE preallocate internal stage-related data prior to calling ARKodeEvolve --- CHANGELOG.md | 5 + .../guide/source/Usage/User_callable.rst | 34 ++++ doc/shared/RecentChanges.rst | 5 + include/arkode/arkode.h | 1 + src/arkode/arkode.c | 23 ++- src/arkode/arkode_arkstep.c | 67 +++---- src/arkode/arkode_arkstep_impl.h | 3 + src/arkode/arkode_erkstep.c | 9 +- src/arkode/arkode_forcingstep.c | 4 +- src/arkode/arkode_impl.h | 42 +++- src/arkode/arkode_io.c | 51 +++++ src/arkode/arkode_mristep.c | 146 ++++++++------ src/arkode/arkode_mristep_impl.h | 3 + src/arkode/arkode_sprkstep.c | 7 +- src/arkode/fmod_int32/farkode_mod.c | 12 ++ src/arkode/fmod_int32/farkode_mod.f90 | 22 +++ src/arkode/fmod_int64/farkode_mod.c | 12 ++ src/arkode/fmod_int64/farkode_mod.f90 | 22 +++ .../arkode/CXX_serial/CMakeLists.txt | 10 +- .../CXX_serial/ark_test_prealloc_arkstep.cpp | 150 ++++++++++++++ .../CXX_serial/ark_test_prealloc_erkstep.cpp | 135 +++++++++++++ .../ark_test_prealloc_forcingstep.cpp | 170 ++++++++++++++++ .../CXX_serial/ark_test_prealloc_lsrkstep.cpp | 144 ++++++++++++++ .../CXX_serial/ark_test_prealloc_mristep.cpp | 185 ++++++++++++++++++ .../ark_test_prealloc_splittingstep.cpp | 170 ++++++++++++++++ .../CXX_serial/ark_test_prealloc_sprkstep.cpp | 124 ++++++++++++ 26 files changed, 1434 insertions(+), 122 deletions(-) create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep.cpp create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep.cpp create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_forcingstep.cpp create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep.cpp create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_splittingstep.cpp create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep.cpp diff --git a/CHANGELOG.md b/CHANGELOG.md index 03cd6f947a..1143e1ff1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,11 @@ and IDAS, respectively. Removed extraneous copy of output vector when using ARKODE in ONE_STEP mode. +Added the function `ARKodeAllocateInternalData` to ARKODE to enable stage-related +data allocation before the first call to `ARKodeEvolve` (but after all other +optional input routines have been called), to support users who measure memory +usage before beginning a simulation. + ### Bug Fixes On the initial time step with a user-supplied initial step size, ARKODE and diff --git a/doc/arkode/guide/source/Usage/User_callable.rst b/doc/arkode/guide/source/Usage/User_callable.rst index fe99fd99c1..ee77cabff6 100644 --- a/doc/arkode/guide/source/Usage/User_callable.rst +++ b/doc/arkode/guide/source/Usage/User_callable.rst @@ -5069,6 +5069,40 @@ Output all ARKODE solver parameters :c:func:`ARKodeWriteParameters` .. versionadded:: 6.1.0 +.. _ARKODE.Usage.Preallocation: + +ARKODE data preallocation function +---------------------------------- + +Since the multi-stage structure of most ARKODE methods results in data +requirements that depend on the number of stages, ARKODE generally defers +allocation of stage-related internal data until the first call to +:c:func:`ARKodeEvolve`. However, in some cases the user may wish to +preallocate this data earlier, for example to measure the memory footprint +before beginning a calculation, or to check for allocation errors at an +earlier time. To request that that ARKODE preallocate all stage-related +internal data before the first call to :c:func:`ARKodeEvolve`, the user +may call the function :c:func:`ARKodeAllocateInternalData`. + + +.. c:function:: int ARKodeAllocateInternalData(void* arkode_mem) + + Optionally allocates stage-related internal data for the current ARKODE time-stepper module. + + :param arkode_mem: pointer to the ARKODE memory block. + + :retval ARK_SUCCESS: the function exited successfully. + :retval ARK_MEM_NULL: ``arkode_mem`` was ``NULL``. + :retval ARK_MEM_FAIL: a memory allocation failed. + + .. warning:: + + This must be called **after** all other optional input routines have been called, + and **before** the first call to :c:func:`ARKodeEvolve`. This routine should + be called at most once per ARKODE memory block. + + .. versionadded:: x.y.z + .. _ARKODE.Usage.Reset: diff --git a/doc/shared/RecentChanges.rst b/doc/shared/RecentChanges.rst index 89ff185822..f4bf91c737 100644 --- a/doc/shared/RecentChanges.rst +++ b/doc/shared/RecentChanges.rst @@ -10,6 +10,11 @@ and IDAS, respectively. Removed extraneous copy of output vector when using ARKODE in ONE_STEP mode. +Added the function :c:func:`ARKodeAllocateInternalData` to ARKODE to enable stage-related +data allocation before the first call to :c:func:`ARKodeEvolve` (but after all other +optional input routines have been called), to support users who measure memory +usage before beginning a simulation. + **Bug Fixes** On the initial time step with a user-supplied initial step size, ARKODE and diff --git a/include/arkode/arkode.h b/include/arkode/arkode.h index 5ee781b7f8..1bfa9b4dae 100644 --- a/include/arkode/arkode.h +++ b/include/arkode/arkode.h @@ -286,6 +286,7 @@ SUNDIALS_EXPORT int ARKodeSetPreprocessRHSFn(void* arkode_mem, ARKPostProcessFn ProcessRHS); SUNDIALS_EXPORT int ARKodeSetPostprocessStageFn(void* arkode_mem, ARKPostProcessFn ProcessStage); +SUNDIALS_EXPORT int ARKodeAllocateInternalData(void* arkode_mem); /* Optional input functions (implicit solver) */ SUNDIALS_EXPORT int ARKodeSetNonlinearSolver(void* arkode_mem, diff --git a/src/arkode/arkode.c b/src/arkode/arkode.c index 776133eced..5fab50cb67 100644 --- a/src/arkode/arkode.c +++ b/src/arkode/arkode.c @@ -1727,12 +1727,23 @@ int arkRwtSet(N_Vector y, N_Vector weight, void* data) arkInit allocates and initializes memory for a problem. All inputs are checked for errors. If any error occurs during - initialization, an error flag is returned. Otherwise, it returns - ARK_SUCCESS. This routine should be called by an ARKODE - timestepper module (not by the user). This routine must be - called prior to calling ARKodeEvolve to evolve the problem. The - initialization type indicates if the values of internal counters - should be reinitialized (FIRST_INIT) or retained (RESET_INIT). + initialization, an error flag is returned. Otherwise, it + returns ARK_SUCCESS. + + This routine should only be called by + (a) ARKodeReset (with the input init_type == RESET_INIT), + (b) an ARKODE timestepper module creation routine (with + init_type == FIRST_INIT), or + (c) an ARKODE timestepper module re-initialization routine + (with init_type == FIRST_INIT). + This should never by the user. + + The initialization type indicates if the values of internal + counters should be reinitialized (FIRST_INIT) or retained + (RESET_INIT). + + This routine must be called prior to calling ARKodeEvolve + to evolve the problem. ---------------------------------------------------------------*/ int arkInit(ARKodeMem ark_mem, sunrealtype t0, N_Vector y0, int init_type) { diff --git a/src/arkode/arkode_arkstep.c b/src/arkode/arkode_arkstep.c index 5c0587a6d0..e4e7dc8855 100644 --- a/src/arkode/arkode_arkstep.c +++ b/src/arkode/arkode_arkstep.c @@ -184,6 +184,9 @@ void* ARKStepCreate(ARKRhsFn fe, ARKRhsFn fi, sunrealtype t0, N_Vector y0, return (NULL); } + /* Initialize preallocated flag */ + step_mem->preallocated = SUNFALSE; + /* Copy the input parameters into ARKODE state */ step_mem->fe = fe; step_mem->fi = fi; @@ -920,6 +923,17 @@ int arkStep_GetGammas(ARKodeMem ark_mem, sunrealtype* gamma, sunrealtype* gamrat For all initialization types, this routine sets the relevant TakeStep routine based on the current problem configuration. + With initialization type RESET_INIT, this routine does nothing. + + For other initialization types, this routine: + - sets the relevant TakeStep routine based on the current + problem configuration + - checks for consistency between the system and mass matrix + linear solvers (if applicable) + - initializes and sets up the system and mass matrix linear + solvers (if applicable) + - initializes and sets up the nonlinear solver (if applicable) + With initialization type FIRST_INIT this routine: - sets/checks the ARK Butcher tables to be used - allocates any memory that depends on the number of ARK stages, @@ -932,17 +946,6 @@ int arkStep_GetGammas(ARKodeMem ark_mem, sunrealtype* gamma, sunrealtype* gamrat - allocates the interpolation data structure (if needed based on ARKStep solver options) - updates the call_fullrhs flag if necessary - - With initialization type FIRST_INIT or RESIZE_INIT, this routine: - - sets the relevant TakeStep routine based on the current - problem configuration - - checks for consistency between the system and mass matrix - linear solvers (if applicable) - - initializes and sets up the system and mass matrix linear - solvers (if applicable) - - initializes and sets up the nonlinear solver (if applicable) - - With initialization type RESET_INIT, this routine does nothing. ---------------------------------------------------------------*/ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, int init_type) @@ -959,7 +962,7 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, if (init_type == RESET_INIT) { return (ARK_SUCCESS); } /* initializations/checks for (re-)initialization call */ - if (init_type == FIRST_INIT) + if (init_type == ALLOC_INIT || init_type == FIRST_INIT) { /* enforce use of arkEwtSmallReal if using a fixed step size for an explicit method, an internal error weight function, not @@ -1044,16 +1047,13 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, { if (step_mem->Fe == NULL) { - step_mem->Fe = (N_Vector*)calloc(step_mem->stages, sizeof(N_Vector)); - } - for (j = 0; j < step_mem->stages; j++) - { - if (!arkAllocVec(ark_mem, ark_mem->ewt, &(step_mem->Fe[j]))) + if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, + &(step_mem->Fe), ark_mem->lrw1, &(ark_mem->lrw), + ark_mem->liw1, &(ark_mem->liw))) { return (ARK_MEM_FAIL); } } - ark_mem->liw += step_mem->stages; /* pointers */ } /* Allocate Fi[0] ... Fi[stages-1] if needed */ @@ -1061,16 +1061,13 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, { if (step_mem->Fi == NULL) { - step_mem->Fi = (N_Vector*)calloc(step_mem->stages, sizeof(N_Vector)); - } - for (j = 0; j < step_mem->stages; j++) - { - if (!arkAllocVec(ark_mem, ark_mem->ewt, &(step_mem->Fi[j]))) + if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, + &(step_mem->Fi), ark_mem->lrw1, &(ark_mem->lrw), + ark_mem->liw1, &(ark_mem->liw))) { return (ARK_MEM_FAIL); } } - ark_mem->liw += step_mem->stages; /* pointers */ } /* Allocate stage storage for relaxation with implicit/IMEX methods or if a @@ -1080,16 +1077,13 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, { if (step_mem->z == NULL) { - step_mem->z = (N_Vector*)calloc(step_mem->stages, sizeof(N_Vector)); - } - for (j = 0; j < step_mem->stages; j++) - { - if (!arkAllocVec(ark_mem, ark_mem->ewt, &(step_mem->z[j]))) + if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, + &(step_mem->z), ark_mem->lrw1, &(ark_mem->lrw), + ark_mem->liw1, &(ark_mem->liw))) { return (ARK_MEM_FAIL); } } - ark_mem->liw += step_mem->stages; /* pointers */ } /* Allocate reusable arrays for fused vector operations */ @@ -1169,7 +1163,7 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, } /* Perform mass matrix solver initialization and setup (if applicable) */ - if (step_mem->mass_type != MASS_IDENTITY) + if (step_mem->mass_type != MASS_IDENTITY && !step_mem->preallocated) { /* Call minit (if it exists) */ if (step_mem->minit != NULL) @@ -1198,7 +1192,7 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, } /* Call linit (if it exists) */ - if (step_mem->linit) + if (step_mem->linit && !step_mem->preallocated) { retval = step_mem->linit(ark_mem); if (retval != 0) @@ -1210,7 +1204,7 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, } /* Initialize the nonlinear solver object (if it exists) */ - if (step_mem->NLS) + if (step_mem->NLS && !step_mem->preallocated) { retval = arkStep_NlsInit(ark_mem); if (retval != ARK_SUCCESS) @@ -1224,6 +1218,13 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, /* Signal to shared arkode module that full RHS evaluations are required */ ark_mem->call_fullrhs = SUNTRUE; + /* if init_type == ALLOC_INIT then store preallocated flag */ + if (init_type == ALLOC_INIT) { step_mem->preallocated = SUNTRUE; } + + /* if init_type == FIRST_INIT then reset preallocated flag (in case + of an eventual resize or reinit) */ + if (init_type == FIRST_INIT) { step_mem->preallocated = SUNFALSE; } + return (ARK_SUCCESS); } diff --git a/src/arkode/arkode_arkstep_impl.h b/src/arkode/arkode_arkstep_impl.h index c0ac1c15b3..48a7aa39c2 100644 --- a/src/arkode/arkode_arkstep_impl.h +++ b/src/arkode/arkode_arkstep_impl.h @@ -79,6 +79,9 @@ typedef struct ARKodeARKStepMemRec sunbooleantype implicit; /* SUNTRUE if fi is enabled */ sunbooleantype deduce_rhs; /* SUNTRUE if fi is deduced after a nonlinear solve */ + sunbooleantype preallocated; /* SUNTRUE if data has been + preallocated in a call to + arkStep_Init with ALLOC_INIT */ /* Adjoint problem specification */ SUNAdjRhsFn adj_fe; diff --git a/src/arkode/arkode_erkstep.c b/src/arkode/arkode_erkstep.c index 2aef6d96df..4ef1ef5ce7 100644 --- a/src/arkode/arkode_erkstep.c +++ b/src/arkode/arkode_erkstep.c @@ -465,16 +465,13 @@ int erkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, /* Allocate F[0] ... F[stages-1] if needed */ if (step_mem->F == NULL) { - step_mem->F = (N_Vector*)calloc(step_mem->stages, sizeof(N_Vector)); - } - for (j = 0; j < step_mem->stages; j++) - { - if (!arkAllocVec(ark_mem, ark_mem->ewt, &(step_mem->F[j]))) + if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, + &(step_mem->F), ark_mem->lrw1, &(ark_mem->lrw), + ark_mem->liw1, &(ark_mem->liw))) { return (ARK_MEM_FAIL); } } - ark_mem->liw += step_mem->stages; /* pointers */ /* Allocate reusable arrays for fused vector interface */ step_mem->nfusedopvecs = 2 * step_mem->stages + 2 + step_mem->nforcing; diff --git a/src/arkode/arkode_forcingstep.c b/src/arkode/arkode_forcingstep.c index 79ade2be18..102be646b0 100644 --- a/src/arkode/arkode_forcingstep.c +++ b/src/arkode/arkode_forcingstep.c @@ -90,8 +90,8 @@ static int forcingStep_Init(ARKodeMem ark_mem, return ARK_ILL_INPUT; } - /* immediately return if resize or reset */ - if (init_type == RESIZE_INIT || init_type == RESET_INIT) + /* immediately return if not called in FIRST_INIT mode */ + if (init_type != FIRST_INIT) { return ARK_SUCCESS; } diff --git a/src/arkode/arkode_impl.h b/src/arkode/arkode_impl.h index 5a46791ac1..f7c2dd4a5f 100644 --- a/src/arkode/arkode_impl.h +++ b/src/arkode/arkode_impl.h @@ -99,9 +99,10 @@ extern "C" { /*--------------------------------------------------------------- Initialization types ---------------------------------------------------------------*/ -#define FIRST_INIT 0 /* first step (re-)initialization */ -#define RESET_INIT 1 /* reset initialization */ -#define RESIZE_INIT 2 /* resize initialization */ +#define FIRST_INIT 0 /* first step (re-)initialization */ +#define RESET_INIT 1 /* reset initialization */ +#define RESIZE_INIT 2 /* resize initialization */ +#define ALLOC_INIT 3 /* allocate data (before FIRST_INIT) */ /*--------------------------------------------------------------- Control constants for lower-level time-stepping functions @@ -720,7 +721,7 @@ int arkGetLastKFlag(void* arkode_mem, int* last_kflag); #define MSG_ARK_NO_MEM "arkode_mem = NULL illegal." #define MSG_ARK_ARKMEM_FAIL "Allocation of arkode_mem failed." #define MSG_ARK_MEM_FAIL "A memory request failed." -#define MSG_ARK_NO_MALLOC "Attempt to call before ARKodeInit." +#define MSG_ARK_NO_MALLOC "Attempt to call before ARKODE initialized." #define MSG_ARK_BAD_HMIN_HMAX "Inconsistent step size limits: hmin > hmax." #define MSG_ARK_BAD_RELTOL "reltol < 0 illegal." #define MSG_ARK_BAD_ABSTOL "abstol has negative component(s) (illegal)." @@ -1015,12 +1016,26 @@ int arkGetLastKFlag(void* arkode_mem, int* last_kflag); ARKTimestepInitFn This routine is called just prior to performing internal time - steps (after all user "set" routines have been called) from - within arkInitialSetup. It should complete initializations for - a specific ARKODE time stepping module, such as verifying - compatibility of user-specified linear and nonlinear solver - objects. The input init_type flag indicates if the call is - for (re-)initializing, resizing, or resetting the problem. + steps (after all user "set" routines have been called), either + from within arkInitialSetup or ARKodeAllocateInternalData. + It should perform initializations for a specific ARKODE time + stepping module, such as verifying compatibility of user- + specified linear and nonlinear solver objects. + + The input init_type flag indicates the type of call: + * FIRST_INIT -- called during arkInitialSetup for the first + time step of a simulation. + * RESIZE_INIT -- called during ARKodeResize to resize + internal stepper data structures after a change in problem size. + * RESET_INIT -- called during ARKodeReset to reset the current + (t,y) state in the stepper. + * ALLOC_INIT -- called during the optional routine + ARKodeAllocateInternalData to allocate and initialize + internal stepper data structures. Note that the routine + will be called again with FIRST_INIT. Thus a time-stepper + can either ignore this flag (and just return), or if it + performs allocations here then it should not re-allocate + the same data when called with FIRST_INIT. This routine should return 0 if it has successfully initialized the ARKODE time stepper module and a negative value otherwise. @@ -1242,6 +1257,13 @@ int arkGetLastKFlag(void* arkode_mem, int* last_kflag); requested method order parameter that was passed to ARKodeSetOrder. + --------------------------------------------------------------- + + ARKTimestepSetOptions + + This optional routine allows the stepper to accept any user- + requested method options that were passed to ARKodeSetOptions. + =============================================================== Internal Interface to Time Steppers -- Temporal Adaptivity diff --git a/src/arkode/arkode_io.c b/src/arkode/arkode_io.c index 2e08cd5434..a504f2b1e8 100644 --- a/src/arkode/arkode_io.c +++ b/src/arkode/arkode_io.c @@ -2242,6 +2242,13 @@ int ARKodeResetAccumulatedError(void* arkode_mem) return (ARK_SUCCESS); } +/*--------------------------------------------------------------- + ARKodeSetAdjointCheckpointScheme: + ARKodeSetAdjointCheckpointIndex: + + Specifies the checkpointing scheme and index to be used for adjoint + sensitivity analysis. + ---------------------------------------------------------------*/ int ARKodeSetAdjointCheckpointScheme(void* arkode_mem, SUNAdjointCheckpointScheme checkpoint_scheme) @@ -2283,6 +2290,12 @@ int ARKodeSetAdjointCheckpointIndex(void* arkode_mem, suncountertype step_index) return (ARK_SUCCESS); } +/*--------------------------------------------------------------- + ARKodeSetUseCompensatedSums: + + Specifies that ARKode should use compensated summation to reduce + the effects of floating-point roundoff. + ---------------------------------------------------------------*/ int ARKodeSetUseCompensatedSums(void* arkode_mem, sunbooleantype onoff) { ARKodeMem ark_mem; @@ -2305,6 +2318,44 @@ int ARKodeSetUseCompensatedSums(void* arkode_mem, sunbooleantype onoff) return (ARK_SUCCESS); } +/*--------------------------------------------------------------- + ARKodeAllocateInternalData: + + Allocates internal data structures for an ARKODE stepper module + before the first call to ARKodeEvolve. + + **THIS MUST BE CALLED AFTER ALL "SET" ROUTINES.** + ---------------------------------------------------------------*/ +int ARKodeAllocateInternalData(void* arkode_mem) +{ + ARKodeMem ark_mem; + int retval; + 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; + + /* Call step_init routine with "ALLOC_INIT" flag, requesting + that the time stepper module allocate any remaining internal + data */ + if (ark_mem->step_init == NULL) + { + arkProcessError(ark_mem, ARK_ILL_INPUT, __LINE__, __func__, __FILE__, + "Time stepper module is missing"); + return (ARK_ILL_INPUT); + } + retval = ark_mem->step_init(ark_mem, ZERO, ALLOC_INIT); + if (retval != ARK_SUCCESS) + { + arkProcessError(ark_mem, retval, __LINE__, __func__, __FILE__, + "Error in initialization of time stepper module"); + } + return (retval); +} + /*=============================================================== ARKODE optional output utility functions ===============================================================*/ diff --git a/src/arkode/arkode_mristep.c b/src/arkode/arkode_mristep.c index 2f48ffc13f..5a7b03f26b 100644 --- a/src/arkode/arkode_mristep.c +++ b/src/arkode/arkode_mristep.c @@ -915,7 +915,18 @@ int mriStep_GetGammas(ARKodeMem ark_mem, sunrealtype* gamma, sunrealtype* gamrat steps (after all user "set" routines have been called) from within arkInitialSetup. - With initialization types FIRST_INIT this routine: + With initialization type RESET_INIT, this routine does nothing. + + For other initialization types, this routine: + - initializes and sets up the linear and nonlinear solvers + (if applicable) + - initializes and sets up the nonlinear solver (if applicable) + - performs timestep adaptivity checks and initial setup, + including setting the initial time step size if needed + + With initialization type FIRST_INIT this routine additionally: + - sets the relevant TakeStep routine based on the current + problem configuration - sets/checks the coefficient tables to be used - allocates any internal memory that depends on the MRI method structure or solver options @@ -937,7 +948,8 @@ int mriStep_Init(ARKodeMem ark_mem, sunrealtype tout, int init_type) if (init_type == RESET_INIT) { return (ARK_SUCCESS); } /* initializations/checks for (re-)initialization call */ - if (init_type == FIRST_INIT) + if (init_type == ALLOC_INIT || + (init_type == FIRST_INIT && !step_mem->preallocated)) { /* enforce use of arkEwtSmallReal if using a fixed step size for an explicit method, an internal error weight function, and not performing @@ -1260,7 +1272,7 @@ int mriStep_Init(ARKodeMem ark_mem, sunrealtype tout, int init_type) } /* Call linit (if it exists) */ - if (step_mem->linit) + if (step_mem->linit && !step_mem->preallocated) { retval = step_mem->linit(ark_mem); if (retval != 0) @@ -1272,7 +1284,7 @@ int mriStep_Init(ARKodeMem ark_mem, sunrealtype tout, int init_type) } /* Initialize the nonlinear solver object (if it exists) */ - if (step_mem->NLS) + if (step_mem->NLS && !step_mem->preallocated) { retval = mriStep_NlsInit(ark_mem); if (retval != ARK_SUCCESS) @@ -1283,80 +1295,90 @@ int mriStep_Init(ARKodeMem ark_mem, sunrealtype tout, int init_type) } } - /*** Perform timestep adaptivity checks and initial setup ***/ - - /* get timestep adaptivity type */ - adapt_type = SUNAdaptController_GetType(ark_mem->hadapt_mem->hcontroller); - - if (ark_mem->fixedstep) - { - /* Fixed step sizes: user must supply the initial step size */ - if (ark_mem->hin == ZERO) - { - arkProcessError(ark_mem, ARK_ILL_INPUT, __LINE__, __func__, - __FILE__, "Timestep adaptivity disabled, but missing user-defined fixed stepsize"); - return (ARK_ILL_INPUT); - } - } - else + /*** Perform timestep adaptivity checks and initial setup (skip on ALLOC_INIT) ***/ + if (init_type != ALLOC_INIT) { - /* ensure that a compatible adaptivity controller is provided */ - if ((adapt_type != SUN_ADAPTCONTROLLER_MRI_H_TOL) && - (adapt_type != SUN_ADAPTCONTROLLER_H)) - { - arkProcessError(ark_mem, ARK_ILL_INPUT, __LINE__, __func__, __FILE__, - "SUNAdaptController type is unsupported by MRIStep"); - return (ARK_ILL_INPUT); - } - /* Controller provides adaptivity (at least at the slow time scale): - - verify that the MRI method includes an embedding, and - - estimate initial slow step size (store in ark_mem->hin) */ - if (step_mem->MRIC->p <= 0) + /* get timestep adaptivity type */ + adapt_type = SUNAdaptController_GetType(ark_mem->hadapt_mem->hcontroller); + + if (ark_mem->fixedstep) { - arkProcessError(ark_mem, ARK_ILL_INPUT, __LINE__, __func__, - __FILE__, "Timestep adaptivity enabled, but non-embedded MRI table specified"); - return (ARK_ILL_INPUT); + /* Fixed step sizes: user must supply the initial step size */ + if (ark_mem->hin == ZERO) + { + arkProcessError(ark_mem, ARK_ILL_INPUT, __LINE__, __func__, + __FILE__, "Timestep adaptivity disabled, but missing user-defined fixed stepsize"); + return (ARK_ILL_INPUT); + } } - if (ark_mem->hin == ZERO) + else { - /* initialize (tcur,ycur) to (t0,y0) */ - ark_mem->tcur = ark_mem->tn; - N_VScale(ONE, ark_mem->yn, ark_mem->ycur); + /* ensure that a compatible adaptivity controller is provided */ + if ((adapt_type != SUN_ADAPTCONTROLLER_MRI_H_TOL) && + (adapt_type != SUN_ADAPTCONTROLLER_H)) + { + arkProcessError(ark_mem, ARK_ILL_INPUT, __LINE__, __func__, __FILE__, + "SUNAdaptController type is unsupported by MRIStep"); + return (ARK_ILL_INPUT); + } - /* tempv1 = fslow(t0, y0) */ - if (mriStep_SlowRHS(ark_mem, ark_mem->tcur, ark_mem->ycur, - ark_mem->tempv1, ARK_FULLRHS_START) != ARK_SUCCESS) + /* Controller provides adaptivity (at least at the slow time scale): + - verify that the MRI method includes an embedding, and + - estimate initial slow step size (store in ark_mem->hin) */ + if (step_mem->MRIC->p <= 0) { - arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, __FILE__, - "error calling slow RHS function(s)"); - return (ARK_RHSFUNC_FAIL); + arkProcessError(ark_mem, ARK_ILL_INPUT, __LINE__, __func__, + __FILE__, "Timestep adaptivity enabled, but non-embedded MRI table specified"); + return (ARK_ILL_INPUT); } - retval = mriStep_Hin(ark_mem, ark_mem->tcur, tout, ark_mem->tempv1, - &(ark_mem->hin)); - if (retval != ARK_SUCCESS) + if (ark_mem->hin == ZERO) { - retval = arkHandleFailure(ark_mem, retval); - return (retval); + /* initialize (tcur,ycur) to (t0,y0) */ + ark_mem->tcur = ark_mem->tn; + N_VScale(ONE, ark_mem->yn, ark_mem->ycur); + + /* tempv1 = fslow(t0, y0) */ + if (mriStep_SlowRHS(ark_mem, ark_mem->tcur, ark_mem->ycur, + ark_mem->tempv1, ARK_FULLRHS_START) != ARK_SUCCESS) + { + arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, __FILE__, + "error calling slow RHS function(s)"); + return (ARK_RHSFUNC_FAIL); + } + retval = mriStep_Hin(ark_mem, ark_mem->tcur, tout, ark_mem->tempv1, + &(ark_mem->hin)); + if (retval != ARK_SUCCESS) + { + retval = arkHandleFailure(ark_mem, retval); + return (retval); + } } } - } - /* Perform additional setup for (H,tol) controller */ - if (adapt_type == SUN_ADAPTCONTROLLER_MRI_H_TOL) - { - /* Verify that adaptivity type is supported by inner stepper */ - if (!mriStepInnerStepper_SupportsRTolAdaptivity(step_mem->stepper)) + /* Perform additional setup for (H,tol) controller */ + if (adapt_type == SUN_ADAPTCONTROLLER_MRI_H_TOL) { - arkProcessError(ark_mem, ARK_ILL_INPUT, __LINE__, __func__, - __FILE__, "MRI H-TOL SUNAdaptController provided, but unsupported by inner stepper"); - return (ARK_ILL_INPUT); - } + /* Verify that adaptivity type is supported by inner stepper */ + if (!mriStepInnerStepper_SupportsRTolAdaptivity(step_mem->stepper)) + { + arkProcessError(ark_mem, ARK_ILL_INPUT, __LINE__, __func__, + __FILE__, "MRI H-TOL SUNAdaptController provided, but unsupported by inner stepper"); + return (ARK_ILL_INPUT); + } - /* initialize fast stepper to use the same relative tolerance as MRIStep */ - step_mem->inner_rtol_factor = ONE; + /* initialize fast stepper to use the same relative tolerance as MRIStep */ + step_mem->inner_rtol_factor = ONE; + } } + /* if init_type == ALLOC_INIT then store preallocated flag */ + if (init_type == ALLOC_INIT) { step_mem->preallocated = SUNTRUE; } + + /* if init_type == FIRST_INIT then reset preallocated flag (in case + of an eventual resize or reinit) */ + if (init_type == FIRST_INIT) { step_mem->preallocated = SUNFALSE; } + return (ARK_SUCCESS); } diff --git a/src/arkode/arkode_mristep_impl.h b/src/arkode/arkode_mristep_impl.h index ead502cbb3..482fe51c18 100644 --- a/src/arkode/arkode_mristep_impl.h +++ b/src/arkode/arkode_mristep_impl.h @@ -75,6 +75,9 @@ typedef struct ARKodeMRIStepMemRec sunbooleantype implicit_rhs; /* SUNTRUE if fsi is provided */ sunbooleantype deduce_rhs; /* SUNTRUE if fi is deduced after a nonlinear solve */ + sunbooleantype preallocated; /* SUNTRUE if data has been + preallocated in a call to + mriStep_Init with ALLOC_INIT */ /* Outer RK method storage and parameters */ N_Vector* Fse; /* explicit RHS at each stage */ diff --git a/src/arkode/arkode_sprkstep.c b/src/arkode/arkode_sprkstep.c index a2ae4d57fc..cb4ab1fd2b 100644 --- a/src/arkode/arkode_sprkstep.c +++ b/src/arkode/arkode_sprkstep.c @@ -374,8 +374,8 @@ int sprkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, /* immediately return if reset */ if (init_type == RESET_INIT) { return (ARK_SUCCESS); } - /* initializations/checks for (re-)initialization call */ - if (init_type == FIRST_INIT) + /* initializations/checks for (re-)initialization or allocation */ + if (init_type == FIRST_INIT || init_type == ALLOC_INIT) { if (!step_mem->method) { @@ -414,6 +414,9 @@ int sprkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, break; } } + + /* Immediately return if called for allocation */ + if (init_type == ALLOC_INIT) { return (ARK_SUCCESS); } } /* Override the interpolant degree (if needed), used in arkInitialSetup */ diff --git a/src/arkode/fmod_int32/farkode_mod.c b/src/arkode/fmod_int32/farkode_mod.c index 8b1823a253..62a30445d8 100644 --- a/src/arkode/fmod_int32/farkode_mod.c +++ b/src/arkode/fmod_int32/farkode_mod.c @@ -720,6 +720,18 @@ SWIGEXPORT int _wrap_FARKodeSetPostprocessStageFn(void *farg1, ARKPostProcessFn } +SWIGEXPORT int _wrap_FARKodeAllocateInternalData(void *farg1) { + int fresult ; + void *arg1 = (void *) 0 ; + int result; + + arg1 = (void *)(farg1); + result = (int)ARKodeAllocateInternalData(arg1); + fresult = (int)(result); + return fresult; +} + + SWIGEXPORT int _wrap_FARKodeSetNonlinearSolver(void *farg1, SUNNonlinearSolver 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 2e26e4f62e..77ef9123e0 100644 --- a/src/arkode/fmod_int32/farkode_mod.f90 +++ b/src/arkode/fmod_int32/farkode_mod.f90 @@ -150,6 +150,7 @@ module farkode_mod public :: FARKodeSetPostprocessStepFailFn public :: FARKodeSetPreprocessRHSFn public :: FARKodeSetPostprocessStageFn + public :: FARKodeAllocateInternalData public :: FARKodeSetNonlinearSolver public :: FARKodeSetLinear public :: FARKodeSetNonlinear @@ -753,6 +754,14 @@ function swigc_FARKodeSetPostprocessStageFn(farg1, farg2) & integer(C_INT) :: fresult end function +function swigc_FARKodeAllocateInternalData(farg1) & +bind(C, name="_wrap_FARKodeAllocateInternalData") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +integer(C_INT) :: fresult +end function + function swigc_FARKodeSetNonlinearSolver(farg1, farg2) & bind(C, name="_wrap_FARKodeSetNonlinearSolver") & result(fresult) @@ -3006,6 +3015,19 @@ function FARKodeSetPostprocessStageFn(arkode_mem, processstage) & swig_result = fresult end function +function FARKodeAllocateInternalData(arkode_mem) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(C_PTR) :: arkode_mem +integer(C_INT) :: fresult +type(C_PTR) :: farg1 + +farg1 = arkode_mem +fresult = swigc_FARKodeAllocateInternalData(farg1) +swig_result = fresult +end function + function FARKodeSetNonlinearSolver(arkode_mem, nls) & 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 29add22fe2..33370377a7 100644 --- a/src/arkode/fmod_int64/farkode_mod.c +++ b/src/arkode/fmod_int64/farkode_mod.c @@ -720,6 +720,18 @@ SWIGEXPORT int _wrap_FARKodeSetPostprocessStageFn(void *farg1, ARKPostProcessFn } +SWIGEXPORT int _wrap_FARKodeAllocateInternalData(void *farg1) { + int fresult ; + void *arg1 = (void *) 0 ; + int result; + + arg1 = (void *)(farg1); + result = (int)ARKodeAllocateInternalData(arg1); + fresult = (int)(result); + return fresult; +} + + SWIGEXPORT int _wrap_FARKodeSetNonlinearSolver(void *farg1, SUNNonlinearSolver 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 291ca02c8a..cdc14241a6 100644 --- a/src/arkode/fmod_int64/farkode_mod.f90 +++ b/src/arkode/fmod_int64/farkode_mod.f90 @@ -150,6 +150,7 @@ module farkode_mod public :: FARKodeSetPostprocessStepFailFn public :: FARKodeSetPreprocessRHSFn public :: FARKodeSetPostprocessStageFn + public :: FARKodeAllocateInternalData public :: FARKodeSetNonlinearSolver public :: FARKodeSetLinear public :: FARKodeSetNonlinear @@ -753,6 +754,14 @@ function swigc_FARKodeSetPostprocessStageFn(farg1, farg2) & integer(C_INT) :: fresult end function +function swigc_FARKodeAllocateInternalData(farg1) & +bind(C, name="_wrap_FARKodeAllocateInternalData") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +integer(C_INT) :: fresult +end function + function swigc_FARKodeSetNonlinearSolver(farg1, farg2) & bind(C, name="_wrap_FARKodeSetNonlinearSolver") & result(fresult) @@ -3006,6 +3015,19 @@ function FARKodeSetPostprocessStageFn(arkode_mem, processstage) & swig_result = fresult end function +function FARKodeAllocateInternalData(arkode_mem) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(C_PTR) :: arkode_mem +integer(C_INT) :: fresult +type(C_PTR) :: farg1 + +farg1 = arkode_mem +fresult = swigc_FARKodeAllocateInternalData(farg1) +swig_result = fresult +end function + function FARKodeSetNonlinearSolver(arkode_mem, nls) & result(swig_result) use, intrinsic :: ISO_C_BINDING diff --git a/test/unit_tests/arkode/CXX_serial/CMakeLists.txt b/test/unit_tests/arkode/CXX_serial/CMakeLists.txt index 46331024ca..f07725855d 100644 --- a/test/unit_tests/arkode/CXX_serial/CMakeLists.txt +++ b/test/unit_tests/arkode/CXX_serial/CMakeLists.txt @@ -69,7 +69,14 @@ set(unit_tests "ark_test_adjoint_ark.cpp\;--check-freq 5\;" "ark_test_adjoint_ark.cpp\;--check-freq 1 --dont-keep\;" "ark_test_adjoint_ark.cpp\;--check-freq 2 --dont-keep\;" - "ark_test_adjoint_ark.cpp\;--check-freq 5 --dont-keep\;") + "ark_test_adjoint_ark.cpp\;--check-freq 5 --dont-keep\;" + "ark_test_prealloc_arkstep.cpp\;1\;" + "ark_test_prealloc_erkstep.cpp\;1\;" + "ark_test_prealloc_forcingstep.cpp\;1\;" + "ark_test_prealloc_lsrkstep.cpp\;1\;" + "ark_test_prealloc_mristep.cpp\;1\;" + "ark_test_prealloc_splittingstep.cpp\;1\;" + "ark_test_prealloc_sprkstep.cpp\;1\;") # Add the build and install targets for each test foreach(test_tuple ${unit_tests}) @@ -110,6 +117,7 @@ foreach(test_tuple ${unit_tests}) sundials_nvecmanyvector_obj sundials_sunlinsolband_obj sundials_sunlinsoldense_obj + sundials_sunlinsolspgmr_obj sundials_sunnonlinsolnewton_obj sundials_sunnonlinsolfixedpoint_obj sundials_sunadaptcontrollerimexgus_obj diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep.cpp new file mode 100644 index 0000000000..959800eb71 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep.cpp @@ -0,0 +1,150 @@ +/* ----------------------------------------------------------------------------- + * Programmer(s): Daniel R. Reynolds @ UMBC + * based on test_logging_arkode_arkstep.cpp by David J. Gardner @ LLNL + * ----------------------------------------------------------------------------- + * SUNDIALS Copyright Start + * Copyright (c) 2025, Lawrence Livermore National Security, + * University of Maryland Baltimore County, and the SUNDIALS contributors. + * Copyright (c) 2013-2025, Lawrence Livermore National Security + * and Southern Methodist University. + * Copyright (c) 2002-2013, Lawrence Livermore National Security. + * All rights reserved. + * + * See the top-level LICENSE and NOTICE files for details. + * + * SPDX-License-Identifier: BSD-3-Clause + * SUNDIALS Copyright End + * ----------------------------------------------------------------------------- + * Test data preallocation in ARKStep + * ---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include + +// Include desired integrators, vectors, linear solvers, and nonlinear solvers +#include "arkode/arkode_arkstep.h" +#include "nvector/nvector_serial.h" +#include "sundials/sundials_context.hpp" +#include "sundials/sundials_iterative.h" +#include "sundials/sundials_nonlinearsolver.h" +#include "sunlinsol/sunlinsol_spgmr.h" + +#include "problems/kpr.hpp" +#include "utilities/check_return.hpp" + +using namespace std; +using namespace problems::kpr; + +int main(int argc, char* argv[]) +{ + cout << "Start ARKStep preallocation test" << endl; + + // SUNDIALS context object for this simulation + sundials::Context sunctx; + + // Preallocate data + bool preallocate_data = false; + if (argc > 1) { preallocate_data = stoi(argv[1]); } + + // Create initial condition + N_Vector y = N_VNew_Serial(2, sunctx); + if (check_ptr(y, "N_VNew_Serial")) { return 1; } + + sunrealtype utrue, vtrue; + int flag = true_sol(zero, &utrue, &vtrue); + if (check_flag(flag, "true_sol")) { return 1; } + + sunrealtype* ydata = N_VGetArrayPointer(y); + ydata[0] = utrue; + ydata[1] = vtrue; + + // Create ARKStep memory structure + void* arkode_mem = nullptr; + cout << "Using DIRK method" << endl; + arkode_mem = ARKStepCreate(nullptr, ode_rhs, zero, y, sunctx); + if (check_ptr(arkode_mem, "ARKStepCreate")) { return 1; } + + flag = ARKodeSetUserData(arkode_mem, &problem_data); + if (check_flag(flag, "ARKodeSetUserData")) { return 1; } + + // Relative and absolute tolerances + const sunrealtype rtol = SUN_RCONST(1.0e-6); + const sunrealtype atol = SUN_RCONST(1.0e-10); + flag = ARKodeSStolerances(arkode_mem, rtol, atol); + if (check_flag(flag, "ARKodeSStolerances")) { return 1; } + + // Implicit algebraic solvers + SUNMatrix A = nullptr; + SUNLinearSolver LS = nullptr; + cout << "Using Newton nonlinear solver" << endl; + cout << "Using GMRES iterative linear solver" << endl; + LS = SUNLinSol_SPGMR(y, SUN_PREC_NONE, 0, sunctx); + if (check_ptr(LS, "SUNLinSol_SPGMR")) { return 1; } + flag = ARKodeSetLinearSolver(arkode_mem, LS, A); + if (check_flag(flag, "ARKodeSetLinearSolver")) { return 1; } + + // Data preallocation + if (preallocate_data) + { + flag = ARKodeAllocateInternalData(arkode_mem); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + } + + // Initial time and fist output time + const sunrealtype dtout = one; // output interval + const int nout = 3; // number of outputs + sunrealtype tret = zero; + sunrealtype tout = tret + dtout; + + // Output initial contion + cout << scientific; + cout << setprecision(numeric_limits::digits10); + cout << " t "; + cout << " u "; + cout << " v "; + cout << " u err "; + cout << " v err " << endl; + for (int i = 0; i < 9; i++) { cout << "--------------"; } + cout << endl; + + cout << setw(22) << tret << setw(25) << ydata[0] << setw(25) << ydata[1] + << setw(25) << abs(ydata[0] - utrue) << setw(25) << abs(ydata[1] - vtrue) + << endl; + + // Advance in time + for (int i = 0; i < nout; i++) + { + flag = ARKodeEvolve(arkode_mem, tout, y, &tret, ARK_ONE_STEP); + if (check_flag(flag, "ARKode")) { return 1; } + + flag = true_sol(tret, &utrue, &vtrue); + if (check_flag(flag, "true_sol")) { return 1; } + + cout << setw(22) << tret << setw(25) << ydata[0] << setw(25) << ydata[1] + << setw(25) << abs(ydata[0] - utrue) << setw(25) + << abs(ydata[1] - vtrue) << endl; + + // update output time + tout += dtout; + } + for (int i = 0; i < 9; i++) { cout << "--------------"; } + cout << endl; + + // Print some final statistics + flag = ARKodePrintAllStats(arkode_mem, stdout, SUN_OUTPUTFORMAT_TABLE); + if (check_flag(flag, "ARKodePrintAllStats")) { return 1; } + + // Clean up and return with successful completion + N_VDestroy(y); + SUNLinSolFree(LS); + ARKodeFree(&arkode_mem); + + cout << "End ARKStep preallocation test" << endl; + + return 0; +} + +/*---- end of file ----*/ diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep.cpp new file mode 100644 index 0000000000..ffa2cd6187 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep.cpp @@ -0,0 +1,135 @@ +/* ----------------------------------------------------------------------------- + * Programmer(s): Daniel R. Reynolds @ UMBC + * based on test_logging_arkode_erkstep.cpp by David J. Gardner @ LLNL + * ----------------------------------------------------------------------------- + * SUNDIALS Copyright Start + * Copyright (c) 2025, Lawrence Livermore National Security, + * University of Maryland Baltimore County, and the SUNDIALS contributors. + * Copyright (c) 2013-2025, Lawrence Livermore National Security + * and Southern Methodist University. + * Copyright (c) 2002-2013, Lawrence Livermore National Security. + * All rights reserved. + * + * See the top-level LICENSE and NOTICE files for details. + * + * SPDX-License-Identifier: BSD-3-Clause + * SUNDIALS Copyright End + * ----------------------------------------------------------------------------- + * Test data preallocation in ERKStep + * ---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include + +// Include desired integrators, vectors, linear solvers, and nonlinear solvers +#include "arkode/arkode_erkstep.h" +#include "nvector/nvector_serial.h" +#include "sundials/sundials_context.hpp" + +#include "problems/kpr.hpp" +#include "utilities/check_return.hpp" + +using namespace std; +using namespace problems::kpr; + +int main(int argc, char* argv[]) +{ + cout << "Start ERKStep preallocation test" << endl; + + // SUNDIALS context object for this simulation + sundials::Context sunctx; + + // Preallocate data + bool preallocate_data = false; + if (argc > 1) { preallocate_data = stoi(argv[1]); } + + // Create initial condition + N_Vector y = N_VNew_Serial(2, sunctx); + if (check_ptr(y, "N_VNew_Serial")) { return 1; } + + sunrealtype utrue, vtrue; + int flag = true_sol(zero, &utrue, &vtrue); + if (check_flag(flag, "true_sol")) { return 1; } + + sunrealtype* ydata = N_VGetArrayPointer(y); + ydata[0] = utrue; + ydata[1] = vtrue; + + // Create ERKStep memory structure + void* arkode_mem = ERKStepCreate(ode_rhs, zero, y, sunctx); + if (check_ptr(arkode_mem, "ERKStepCreate")) { return 1; } + + flag = ARKodeSetUserData(arkode_mem, &problem_data); + if (check_flag(flag, "ARKodeSetUserData")) { return 1; } + + // Relative and absolute tolerances + const sunrealtype rtol = SUN_RCONST(1.0e-6); + const sunrealtype atol = SUN_RCONST(1.0e-10); + + flag = ARKodeSStolerances(arkode_mem, rtol, atol); + if (check_flag(flag, "ARKodeSStolerances")) { return 1; } + + // Data preallocation + if (preallocate_data) + { + flag = ARKodeAllocateInternalData(arkode_mem); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + } + + // Initial time and fist output time + const sunrealtype dtout = one; // output interval + const int nout = 3; // number of outputs + sunrealtype tret = zero; + sunrealtype tout = tret + dtout; + + // Output initial contion + cout << scientific; + cout << setprecision(numeric_limits::digits10); + cout << " t "; + cout << " u "; + cout << " v "; + cout << " u err "; + cout << " v err " << endl; + for (int i = 0; i < 9; i++) { cout << "--------------"; } + cout << endl; + + cout << setw(22) << tret << setw(25) << ydata[0] << setw(25) << ydata[1] + << setw(25) << abs(ydata[0] - utrue) << setw(25) << abs(ydata[1] - vtrue) + << endl; + + // Advance in time + for (int i = 0; i < nout; i++) + { + flag = ARKodeEvolve(arkode_mem, tout, y, &tret, ARK_ONE_STEP); + if (check_flag(flag, "ARKodeEvolve")) { return 1; } + + flag = true_sol(tret, &utrue, &vtrue); + if (check_flag(flag, "true_sol")) { return 1; } + + cout << setw(22) << tret << setw(25) << ydata[0] << setw(25) << ydata[1] + << setw(25) << abs(ydata[0] - utrue) << setw(25) + << abs(ydata[1] - vtrue) << endl; + + // update output time + tout += dtout; + } + for (int i = 0; i < 9; i++) { cout << "--------------"; } + cout << endl; + + // Print some final statistics + flag = ARKodePrintAllStats(arkode_mem, stdout, SUN_OUTPUTFORMAT_TABLE); + if (check_flag(flag, "ARKodePrintAllStats")) { return 1; } + + // Clean up and return with successful completion + N_VDestroy(y); + ARKodeFree(&arkode_mem); + + cout << "End ERKStep preallocation test" << endl; + + return 0; +} + +/*---- end of file ----*/ diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_forcingstep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_forcingstep.cpp new file mode 100644 index 0000000000..1c0bfd8cc9 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_forcingstep.cpp @@ -0,0 +1,170 @@ +/* ----------------------------------------------------------------------------- + * Programmer(s): Daniel R. Reynolds @ UMBC + * based on test_logging_arkode_forcingstep.cpp by David J. Gardner @ LLNL + * ----------------------------------------------------------------------------- + * SUNDIALS Copyright Start + * Copyright (c) 2025, Lawrence Livermore National Security, + * University of Maryland Baltimore County, and the SUNDIALS contributors. + * Copyright (c) 2013-2025, Lawrence Livermore National Security + * and Southern Methodist University. + * Copyright (c) 2002-2013, Lawrence Livermore National Security. + * All rights reserved. + * + * See the top-level LICENSE and NOTICE files for details. + * + * SPDX-License-Identifier: BSD-3-Clause + * SUNDIALS Copyright End + * ----------------------------------------------------------------------------- + * Test data preallocation in ForcingStep + * ---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include + +// Include desired integrators and vectors +#include "arkode/arkode_erkstep.h" +#include "arkode/arkode_forcingstep.h" +#include "nvector/nvector_serial.h" +#include "sundials/sundials_context.hpp" + +#include "problems/estep.hpp" +#include "utilities/check_return.hpp" + +using namespace std; +using namespace problems::estep; + +int main(int argc, char* argv[]) +{ + cout << "Start ForcingStep preallocation test" << endl; + + // SUNDIALS context object for this simulation + sundials::Context sunctx; + + // Preallocate data + bool preallocate_data = false; + if (argc > 1) { preallocate_data = stoi(argv[1]); } + + // Step sizes: overall, partition 1, partition 2 + sunrealtype dt = SUN_RCONST(0.001); + sunrealtype dt_1 = dt / 2; + sunrealtype dt_2 = dt / 4; + + // Create initial condition + N_Vector y = N_VNew_Serial(1, sunctx); + if (check_ptr(y, "N_VNew_Serial")) { return 1; } + + int flag = initial_condition(y); + if (check_flag(flag, "initial_condition")) { return 1; } + + // Create partition 1 integrator + void* stepper_1 = ERKStepCreate(ode_rhs_1, zero, y, sunctx); + if (check_ptr(stepper_1, "ERKStepCreate")) { return 1; } + + flag = ARKodeSetUserData(stepper_1, &problem_data); + if (check_flag(flag, "ARKodeSetUserData")) { return 1; } + + flag = ARKodeSetFixedStep(stepper_1, dt_1); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + // Create partition 1 integrator + void* stepper_2 = ERKStepCreate(ode_rhs_2, zero, y, sunctx); + if (check_ptr(stepper_2, "ERKStepCreate")) { return 1; } + + flag = ARKodeSetFixedStep(stepper_2, dt_2); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + // Create the overall integrator + SUNStepper steppers[2]; + + flag = ARKodeCreateSUNStepper(stepper_1, &steppers[0]); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + flag = ARKodeCreateSUNStepper(stepper_2, &steppers[1]); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + void* arkode_mem = ForcingStepCreate(steppers[0], steppers[1], zero, y, sunctx); + if (check_ptr(arkode_mem, "ForcingStepCreate")) { return 1; } + + flag = ARKodeSetFixedStep(arkode_mem, dt); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + // True solution vector + N_Vector yt = N_VClone(y); + + flag = true_solution(zero, problem_data, yt); + if (check_flag(flag, "true_solution")) { return 1; } + + // Data preallocation (all steppers) + if (preallocate_data) + { + flag = ARKodeAllocateInternalData(stepper_1); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + flag = ARKodeAllocateInternalData(stepper_2); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + flag = ARKodeAllocateInternalData(arkode_mem); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + } + + // Initial time and fist output time + const sunrealtype dtout = one; // output interval + const int nout = 3; // number of outputs + sunrealtype tret = zero; + sunrealtype tout = tret + dtout; + + const int width = numeric_limits::digits10 + 8; + + // Output initial contion + cout << scientific; + cout << setprecision(numeric_limits::digits10); + cout << setw(width) << " t"; + cout << setw(width) << " y"; + cout << setw(width) << " y err" << endl; + for (int i = 0; i < 3 * width; i++) { cout << "-"; } + cout << endl; + + sunrealtype* y_data = N_VGetArrayPointer(y); + sunrealtype* yt_data = N_VGetArrayPointer(yt); + + cout << setw(width) << tret << setw(width) << y_data[0] << setw(width) + << abs(y_data[0] - yt_data[0]) << endl; + + // Advance in time + for (int i = 0; i < nout; i++) + { + flag = ARKodeEvolve(arkode_mem, tout, y, &tret, ARK_ONE_STEP); + if (check_flag(flag, "ARKodeEvolve")) { return 1; } + + flag = true_solution(tret, problem_data, yt); + if (check_flag(flag, "true_solution")) { return 1; } + + cout << setw(width) << tret << setw(width) << y_data[0] << setw(width) + << abs(y_data[0] - yt_data[0]) << endl; + + // update output time + tout += dtout; + } + for (int i = 0; i < 3 * width; i++) { cout << "-"; } + cout << endl; + + // Print some final statistics + flag = ARKodePrintAllStats(arkode_mem, stdout, SUN_OUTPUTFORMAT_TABLE); + if (check_flag(flag, "ARKodePrintAllStats")) { return 1; } + + // Clean up and return with successful completion + N_VDestroy(y); + N_VDestroy(yt); + ARKodeFree(&arkode_mem); + ARKodeFree(&stepper_1); + ARKodeFree(&stepper_2); + SUNStepper_Destroy(&steppers[0]); + SUNStepper_Destroy(&steppers[1]); + + cout << "End ForcingStep preallocation test" << endl; + + return 0; +} + +/*---- end of file ----*/ diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp new file mode 100644 index 0000000000..7eaa24b4f2 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp @@ -0,0 +1,144 @@ +/* ----------------------------------------------------------------------------- + * Programmer(s): Daniel R. Reynolds @ UMBC + * based on test_logging_arkode_lsrkstep.cpp by David J. Gardner @ LLNL + * ----------------------------------------------------------------------------- + * SUNDIALS Copyright Start + * Copyright (c) 2025, Lawrence Livermore National Security, + * University of Maryland Baltimore County, and the SUNDIALS contributors. + * Copyright (c) 2013-2025, Lawrence Livermore National Security + * and Southern Methodist University. + * Copyright (c) 2002-2013, Lawrence Livermore National Security. + * All rights reserved. + * + * See the top-level LICENSE and NOTICE files for details. + * + * SPDX-License-Identifier: BSD-3-Clause + * SUNDIALS Copyright End + * ----------------------------------------------------------------------------- + * Test data preallocation in LSRKStep + * ---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include + +// Include desired integrators, vectors, linear solvers, and nonlinear solvers +#include "arkode/arkode_lsrkstep.h" +#include "nvector/nvector_serial.h" + +#include "problems/prv.hpp" +#include "sundials/sundials_nvector.h" +#include "utilities/check_return.hpp" + +using namespace std; +using namespace problems::prv; + +int main(int argc, char* argv[]) +{ + cout << "Start LSRKStep preallocation test" << endl; + + // SUNDIALS context object for this simulation + sundials::Context sunctx; + + // Preallocate data + bool preallocate_data = false; + if (argc > 1) { preallocate_data = stoi(argv[1]); } + + // Ensure logging output goes to stdout + SUNLogger logger; + int flag = SUNContext_GetLogger(sunctx, &logger); + if (check_flag(flag, "SUNContext_GetLogger")) { return 1; } + + SUNLogger_SetErrorFilename(logger, "stdout"); + SUNLogger_SetWarningFilename(logger, "stdout"); + SUNLogger_SetInfoFilename(logger, "stdout"); + SUNLogger_SetDebugFilename(logger, "stdout"); + + // Create initial condition + N_Vector y = N_VNew_Serial(1, sunctx); + if (check_ptr(y, "N_VNew_Serial")) { return 1; } + N_VConst(true_solution(zero), y); + + // Create LSRKStep memory structure + void* arkode_mem = nullptr; + arkode_mem = LSRKStepCreateSTS(ode_rhs, zero, y, sunctx); + if (check_ptr(arkode_mem, "LSRKStepCreate")) { return 1; } + + // Select method + flag = LSRKStepSetSTSMethodByName(arkode_mem, "ARKODE_LSRK_RKC_2"); + if (check_flag(flag, "LSRKStepSetSTSMethodByName")) { return 1; } + + flag = ARKodeSetUserData(arkode_mem, &problem_data); + if (check_flag(flag, "ARKodeSetUserData")) { return 1; } + + // Relative and absolute tolerances + const sunrealtype rtol = SUN_RCONST(1.0e-6); + const sunrealtype atol = SUN_RCONST(1.0e-10); + + flag = ARKodeSStolerances(arkode_mem, rtol, atol); + if (check_flag(flag, "ARKodeSStolerances")) { return 1; } + + // Specify dominant eigenvalue function + flag = LSRKStepSetDomEigFn(arkode_mem, ode_dom_eig); + if (check_flag(flag, "LSRKStepSetDomEigFn")) { return 1; } + + // Data preallocation + if (preallocate_data) + { + flag = ARKodeAllocateInternalData(arkode_mem); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + } + + // Initial time and fist output time + const sunrealtype dtout = one; // output interval + const int nout = 3; // number of outputs + sunrealtype tret = zero; + sunrealtype tout = tret + dtout; + + const int width = numeric_limits::digits10 + 8; + + // Output initial contion + cout << scientific; + cout << setprecision(numeric_limits::digits10); + cout << setw(width) << " t"; + cout << setw(width) << " y"; + cout << setw(width) << " y err" << endl; + for (int i = 0; i < 3 * width; i++) { cout << "-"; } + cout << endl; + + sunrealtype* y_data = N_VGetArrayPointer(y); + + cout << setw(width) << tret << setw(width) << y_data[0] << setw(width) + << abs(y_data[0] - true_solution(tret)) << endl; + + // Advance in time + for (int i = 0; i < nout; i++) + { + flag = ARKodeEvolve(arkode_mem, tout, y, &tret, ARK_ONE_STEP); + if (check_flag(flag, "ARKodeEvolve")) { return 1; } + + cout << setw(width) << tret << setw(width) << y_data[0] << setw(width) + << abs(y_data[0] - true_solution(tret)) << endl; + + // update output time + tout += dtout; + } + for (int i = 0; i < 3 * width; i++) { cout << "-"; } + cout << endl; + + // Print some final statistics + flag = ARKodePrintAllStats(arkode_mem, stdout, SUN_OUTPUTFORMAT_TABLE); + if (check_flag(flag, "ARKodePrintAllStats")) { return 1; } + + // Clean up and return with successful completion + N_VDestroy(y); + ARKodeFree(&arkode_mem); + + cout << "End LSRKStep preallocation test" << endl; + + return 0; +} + +/*---- end of file ----*/ diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep.cpp new file mode 100644 index 0000000000..e770d7767b --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep.cpp @@ -0,0 +1,185 @@ +/* ----------------------------------------------------------------------------- + * Programmer(s): Daniel R. Reynolds @ UMBC + * based on test_logging_arkode_mristep.cpp by David J. Gardner @ LLNL + * ----------------------------------------------------------------------------- + * SUNDIALS Copyright Start + * Copyright (c) 2025, Lawrence Livermore National Security, + * University of Maryland Baltimore County, and the SUNDIALS contributors. + * Copyright (c) 2013-2025, Lawrence Livermore National Security + * and Southern Methodist University. + * Copyright (c) 2002-2013, Lawrence Livermore National Security. + * All rights reserved. + * + * See the top-level LICENSE and NOTICE files for details. + * + * SPDX-License-Identifier: BSD-3-Clause + * SUNDIALS Copyright End + * ----------------------------------------------------------------------------- + * Test data preallocation in MRIStep + * ---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include + +// Include desired integrators, vectors, linear solvers, and nonlinear solvers +#include "arkode/arkode.h" +#include "arkode/arkode_arkstep.h" +#include "arkode/arkode_mristep.h" +#include "nvector/nvector_serial.h" +#include "sundials/sundials_context.hpp" +#include "sundials/sundials_iterative.h" +#include "sundials/sundials_matrix.h" +#include "sundials/sundials_nonlinearsolver.h" +#include "sunlinsol/sunlinsol_dense.h" +#include "sunmatrix/sunmatrix_dense.h" + +#include "problems/kpr.hpp" +#include "utilities/check_return.hpp" + +using namespace std; +using namespace problems::kpr; + +int main(int argc, char* argv[]) +{ + cout << "Start MRIStep preallocation test" << endl; + + // SUNDIALS context object for this simulation + sundials::Context sunctx; + + // Preallocate data + bool preallocate_data = false; + if (argc > 1) { preallocate_data = stoi(argv[1]); } + + // Create initial condition + N_Vector y = N_VNew_Serial(2, sunctx); + if (check_ptr(y, "N_VNew_Serial")) { return 1; } + + sunrealtype utrue, vtrue; + int flag = true_sol(zero, &utrue, &vtrue); + if (check_flag(flag, "true_sol")) { return 1; } + + sunrealtype* ydata = N_VGetArrayPointer(y); + ydata[0] = utrue; + ydata[1] = vtrue; + + // Create fast stepper + void* inner_arkode_mem = ARKStepCreate(ode_rhs_ff, nullptr, zero, y, sunctx); + if (check_ptr(inner_arkode_mem, "ARKStepCreate")) { return 1; } + + flag = ARKodeSetUserData(inner_arkode_mem, &problem_data); + if (check_flag(flag, "ARKodeSetUserData")) { return 1; } + + // Relative and absolute tolerances + const sunrealtype inner_rtol = SUN_RCONST(1.0e-6); + const sunrealtype inner_atol = SUN_RCONST(1.0e-10); + flag = ARKodeSStolerances(inner_arkode_mem, inner_rtol, inner_atol); + if (check_flag(flag, "ARKodeSStolerances")) { return 1; } + + MRIStepInnerStepper stepper = nullptr; + flag = ARKStepCreateMRIStepInnerStepper(inner_arkode_mem, &stepper); + if (check_flag(flag, "ARKStepCreateMRIStepInnerStepper")) { return 1; } + + // Create MRIStep memory structure + void* arkode_mem = nullptr; + cout << "Using Im-MRI-GARK method" << endl; + arkode_mem = MRIStepCreate(nullptr, ode_rhs_s, zero, y, stepper, sunctx); + if (check_ptr(arkode_mem, "MRIStepCreate")) { return 1; } + flag = ARKodeSetUserData(arkode_mem, &problem_data); + if (check_flag(flag, "ARKodeSetUserData")) { return 1; } + + // Relative and absolute tolerances + const sunrealtype rtol = SUN_RCONST(1.0e-6); + const sunrealtype atol = SUN_RCONST(1.0e-10); + flag = ARKodeSStolerances(arkode_mem, rtol, atol); + if (check_flag(flag, "ARKodeSStolerances")) { return 1; } + + // Implicit algebraic solvers + cout << "Using Newton nonlinear solver" << endl; + cout << "Using dense direct linear solver" << endl; + SUNMatrix A = nullptr; + SUNLinearSolver LS = nullptr; + SUNNonlinearSolver NLS = nullptr; + A = SUNDenseMatrix(2, 2, sunctx); + if (check_ptr(A, "SUNDenseMatrix")) { return 1; } + LS = SUNLinSol_Dense(y, A, sunctx); + if (check_ptr(LS, "SUNLinSol_Dense")) { return 1; } + flag = ARKodeSetLinearSolver(arkode_mem, LS, A); + if (check_flag(flag, "ARKodeSetLinearSolver")) { return 1; } + flag = ARKodeSetJacFn(arkode_mem, ode_rhs_jac); + if (check_flag(flag, "ARKodeSetJacFn")) { return 1; } + + // Data preallocation (all steppers) + if (preallocate_data) + { + flag = ARKodeAllocateInternalData(inner_arkode_mem); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + flag = ARKodeAllocateInternalData(arkode_mem); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + } + + // Initial time and fist output time + const sunrealtype dtout = one; // output interval + const int nout = 3; // number of outputs + sunrealtype tret = zero; + sunrealtype tout = tret + dtout; + + // Output initial contion + cout << scientific; + cout << setprecision(numeric_limits::digits10); + cout << " t "; + cout << " u "; + cout << " v "; + cout << " u err "; + cout << " v err " << endl; + for (int i = 0; i < 9; i++) { cout << "--------------"; } + cout << endl; + + cout << setw(22) << tret << setw(25) << ydata[0] << setw(25) << ydata[1] + << setw(25) << abs(ydata[0] - utrue) << setw(25) << abs(ydata[1] - vtrue) + << endl; + + // Advance in time + for (int i = 0; i < nout; i++) + { + flag = ARKodeEvolve(arkode_mem, tout, y, &tret, ARK_ONE_STEP); + if (check_flag(flag, "ARKode")) { return 1; } + + flag = true_sol(tret, &utrue, &vtrue); + if (check_flag(flag, "true_sol")) { return 1; } + + cout << setw(22) << tret << setw(25) << ydata[0] << setw(25) << ydata[1] + << setw(25) << abs(ydata[0] - utrue) << setw(25) + << abs(ydata[1] - vtrue) << endl; + + // update output time + tout += dtout; + } + for (int i = 0; i < 9; i++) { cout << "--------------"; } + cout << endl; + + // Print some final statistics + cout << endl << "Outer integrator statistics:" << endl; + flag = ARKodePrintAllStats(arkode_mem, stdout, SUN_OUTPUTFORMAT_TABLE); + if (check_flag(flag, "ARKodePrintAllStats")) { return 1; } + cout << endl << "Inner integrator statistics:" << endl; + flag = ARKodePrintAllStats(inner_arkode_mem, stdout, SUN_OUTPUTFORMAT_TABLE); + if (check_flag(flag, "ARKodePrintAllStats")) { return 1; } + + // Clean up and return with successful completion + N_VDestroy(y); + SUNMatDestroy(A); + SUNLinSolFree(LS); + SUNNonlinSolFree(NLS); + MRIStepInnerStepper_Free(&stepper); + ARKodeFree(&inner_arkode_mem); + ARKodeFree(&arkode_mem); + + cout << "End MRIStep preallocation test" << endl; + + return 0; +} + +/*---- end of file ----*/ diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_splittingstep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_splittingstep.cpp new file mode 100644 index 0000000000..0223505b43 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_splittingstep.cpp @@ -0,0 +1,170 @@ +/* ----------------------------------------------------------------------------- + * Programmer(s): Daniel R. Reynolds @ UMBC + * based on test_logging_arkode_splittingstep.cpp by David J. Gardner @ LLNL + * ----------------------------------------------------------------------------- + * SUNDIALS Copyright Start + * Copyright (c) 2025, Lawrence Livermore National Security, + * University of Maryland Baltimore County, and the SUNDIALS contributors. + * Copyright (c) 2013-2025, Lawrence Livermore National Security + * and Southern Methodist University. + * Copyright (c) 2002-2013, Lawrence Livermore National Security. + * All rights reserved. + * + * See the top-level LICENSE and NOTICE files for details. + * + * SPDX-License-Identifier: BSD-3-Clause + * SUNDIALS Copyright End + * ----------------------------------------------------------------------------- + * Test data preallocation in SplittingStep + * ---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include + +// Include desired integrators and vectors +#include "arkode/arkode_erkstep.h" +#include "arkode/arkode_splittingstep.h" +#include "nvector/nvector_serial.h" +#include "sundials/sundials_context.hpp" + +#include "problems/estep.hpp" +#include "utilities/check_return.hpp" + +using namespace std; +using namespace problems::estep; + +int main(int argc, char* argv[]) +{ + cout << "Start SplittingStep preallocation test" << endl; + + // SUNDIALS context object for this simulation + sundials::Context sunctx; + + // Preallocate data + bool preallocate_data = false; + if (argc > 1) { preallocate_data = stoi(argv[1]); } + + // Step sizes: overall, partition 1, partition 2 + sunrealtype dt = SUN_RCONST(0.001); + sunrealtype dt_1 = dt / 2; + sunrealtype dt_2 = dt / 4; + + // Create initial condition + N_Vector y = N_VNew_Serial(1, sunctx); + if (check_ptr(y, "N_VNew_Serial")) { return 1; } + + int flag = initial_condition(y); + if (check_flag(flag, "initial_condition")) { return 1; } + + // Create partition 1 integrator + void* stepper_1 = ERKStepCreate(ode_rhs_1, zero, y, sunctx); + if (check_ptr(stepper_1, "ERKStepCreate")) { return 1; } + + flag = ARKodeSetUserData(stepper_1, &problem_data); + if (check_flag(flag, "ARKodeSetUserData")) { return 1; } + + flag = ARKodeSetFixedStep(stepper_1, dt_1); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + // Create partition 1 integrator + void* stepper_2 = ERKStepCreate(ode_rhs_2, zero, y, sunctx); + if (check_ptr(stepper_2, "ERKStepCreate")) { return 1; } + + flag = ARKodeSetFixedStep(stepper_2, dt_2); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + // Create the overall integrator + SUNStepper steppers[2]; + + flag = ARKodeCreateSUNStepper(stepper_1, &steppers[0]); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + flag = ARKodeCreateSUNStepper(stepper_2, &steppers[1]); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + void* arkode_mem = SplittingStepCreate(steppers, 2, zero, y, sunctx); + if (check_ptr(arkode_mem, "SplittingStepCreate")) { return 1; } + + flag = ARKodeSetFixedStep(arkode_mem, dt); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + // True solution vector + N_Vector yt = N_VClone(y); + + flag = true_solution(zero, problem_data, yt); + if (check_flag(flag, "true_solution")) { return 1; } + + // Data preallocation (all steppers) + if (preallocate_data) + { + flag = ARKodeAllocateInternalData(stepper_1); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + flag = ARKodeAllocateInternalData(stepper_2); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + flag = ARKodeAllocateInternalData(arkode_mem); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + } + + // Initial time and fist output time + const sunrealtype dtout = one; // output interval + const int nout = 3; // number of outputs + sunrealtype tret = zero; + sunrealtype tout = tret + dtout; + + const int width = numeric_limits::digits10 + 8; + + // Output initial contion + cout << scientific; + cout << setprecision(numeric_limits::digits10); + cout << setw(width) << " t"; + cout << setw(width) << " y"; + cout << setw(width) << " y err" << endl; + for (int i = 0; i < 3 * width; i++) { cout << "-"; } + cout << endl; + + sunrealtype* y_data = N_VGetArrayPointer(y); + sunrealtype* yt_data = N_VGetArrayPointer(yt); + + cout << setw(width) << tret << setw(width) << y_data[0] << setw(width) + << abs(y_data[0] - yt_data[0]) << endl; + + // Advance in time + for (int i = 0; i < nout; i++) + { + flag = ARKodeEvolve(arkode_mem, tout, y, &tret, ARK_ONE_STEP); + if (check_flag(flag, "ARKodeEvolve")) { return 1; } + + flag = true_solution(tret, problem_data, yt); + if (check_flag(flag, "true_solution")) { return 1; } + + cout << setw(width) << tret << setw(width) << y_data[0] << setw(width) + << abs(y_data[0] - yt_data[0]) << endl; + + // update output time + tout += dtout; + } + for (int i = 0; i < 3 * width; i++) { cout << "-"; } + cout << endl; + + // Print some final statistics + flag = ARKodePrintAllStats(arkode_mem, stdout, SUN_OUTPUTFORMAT_TABLE); + if (check_flag(flag, "ARKodePrintAllStats")) { return 1; } + + // Clean up and return with successful completion + N_VDestroy(y); + N_VDestroy(yt); + ARKodeFree(&arkode_mem); + ARKodeFree(&stepper_1); + ARKodeFree(&stepper_2); + SUNStepper_Destroy(&steppers[0]); + SUNStepper_Destroy(&steppers[1]); + + cout << "End SplittingStep preallocation test" << endl; + + return 0; +} + +/*---- end of file ----*/ diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep.cpp new file mode 100644 index 0000000000..9037fb9776 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep.cpp @@ -0,0 +1,124 @@ +/* ----------------------------------------------------------------------------- + * Programmer(s): Daniel R. Reynolds @ UMBC + * based on test_logging_arkode_sprkstep.cpp by David J. Gardner @ LLNL +* ----------------------------------------------------------------------------- + * SUNDIALS Copyright Start + * Copyright (c) 2025, Lawrence Livermore National Security, + * University of Maryland Baltimore County, and the SUNDIALS contributors. + * Copyright (c) 2013-2025, Lawrence Livermore National Security + * and Southern Methodist University. + * Copyright (c) 2002-2013, Lawrence Livermore National Security. + * All rights reserved. + * + * See the top-level LICENSE and NOTICE files for details. + * + * SPDX-License-Identifier: BSD-3-Clause + * SUNDIALS Copyright End + * ----------------------------------------------------------------------------- + * Test data preallocation in SPRKStep + * ---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include + +// Include desired integrators, vectors, linear solvers, and nonlinear solvers +#include "arkode/arkode_sprkstep.h" +#include "nvector/nvector_serial.h" +#include "sundials/sundials_context.hpp" + +#include "problems/kepler.hpp" +#include "utilities/check_return.hpp" + +using namespace std; +using namespace problems::kepler; + +int main(int argc, char* argv[]) +{ + cout << "Start SPRKStep preallocation test" << endl; + + // SUNDIALS context object for this simulation + sundials::Context sunctx; + + // Preallocate data + bool preallocate_data = false; + if (argc > 1) { preallocate_data = stoi(argv[1]); } + + // Create initial condition + N_Vector y = N_VNew_Serial(4, sunctx); + if (check_ptr(y, "N_VNew_Serial")) { return 1; } + + int flag = initial_condition(y, eccentricity); + if (check_flag(flag, "initial_condition")) { return 1; } + + // Create SPRKStep memory structure + void* arkode_mem = SPRKStepCreate(ode_rhs_force, ode_rhs_velocity, zero, y, + sunctx); + if (check_ptr(arkode_mem, "SPKStepCreate")) { return 1; } + + // Step size + const sunrealtype dt = SUN_RCONST(0.001); + flag = ARKodeSetFixedStep(arkode_mem, dt); + if (check_flag(flag, "ARKodeSetFixedStep")) { return 1; } + + // Data preallocation + if (preallocate_data) + { + flag = ARKodeAllocateInternalData(arkode_mem); + if (check_flag(flag, "ARKodeAllocateInternalData")) { return 1; } + } + + // Initial time and fist output time + const sunrealtype dtout = dt; // output interval + const int nout = 3; // number of outputs + sunrealtype tret = zero; + sunrealtype tout = tret + dtout; + + // Output initial contion + sunrealtype* ydata = N_VGetArrayPointer(y); + if (check_ptr(y, "N_VGetArrayPointer")) { return 1; } + + cout << scientific; + cout << setprecision(numeric_limits::digits10); + cout << " t "; + cout << " q1 "; + cout << " q2 "; + cout << " q3 "; + cout << " q4 " << endl; + for (int i = 0; i < 9; i++) { cout << "--------------"; } + cout << endl; + + cout << setw(22) << tret << setw(25) << ydata[0] << setw(25) << ydata[1] + << setw(25) << ydata[2] << setw(25) << ydata[3] << endl; + + // Advance in time + for (int i = 0; i < nout; i++) + { + flag = ARKodeEvolve(arkode_mem, tout, y, &tret, ARK_ONE_STEP); + if (check_flag(flag, "ARKodeEvolve")) { return 1; } + + cout << setw(22) << tret << setw(25) << ydata[0] << setw(25) << ydata[1] + << setw(25) << ydata[2] << setw(25) << ydata[3] << endl; + + // update output time + tout += dtout; + } + for (int i = 0; i < 9; i++) { cout << "--------------"; } + cout << endl; + + // Print some final statistics + flag = ARKodePrintAllStats(arkode_mem, stdout, SUN_OUTPUTFORMAT_TABLE); + if (check_flag(flag, "ARKodePrintAllStats")) { return 1; } + + // Clean up and return with successful completion + N_VDestroy(y); + ARKodeFree(&arkode_mem); + + cout << "End SPRKStep preallocation test" << endl; + + return 0; +} + +/*---- end of file ----*/ From 58326242a6cdfb8346fc10ff2f437d96278947df Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Fri, 16 Jan 2026 13:40:23 -0500 Subject: [PATCH 02/16] Merged upstream changes, and revised the CHANGELOG.md and RecentChanges.rst files --- CHANGELOG.md | 22 ++++++++++------------ doc/shared/RecentChanges.rst | 23 +++++++++++------------ 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28950fa239..9064f5545d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,20 +10,18 @@ The functions `CVodeGetUserDataB` and `IDAGetUserDataB` were added to CVODES and IDAS, respectively. Multiple minor updates were made to the ARKODE package. We removed an extraneous -copy of the output vector when using ARKODE in `ARK_ONE_STEP` mode. We -standardized calls to the user-supplied right-hand-side functions so that these -are provided the user-supplied solution vector passed to `ARKodeEvolve` whenever -possible -- the notable exceptions are the Hermite temporal interpolation module, -the provided preconditioners ARKBANDPRE and ARKBBDPRE, banded or dense linear -solvers with automatically-approximated Jacobian matrices, iterative linear solvers -with automatically-approximated Jacobian-times-vector product, temporal root-finding, -discrete adjoint modules in ARKStep or ERKStep, the SPRKStep stepper, and LSRKStep's -use of the automated dominant eigenvalue estimation module. - -Added the function `ARKodeAllocateInternalData` to ARKODE to enable stage-related +copy of the output vector when using ARKODE in `ARK_ONE_STEP` mode. We added the +function `ARKodeAllocateInternalData` to ARKODE to enable stage-related data allocation before the first call to `ARKodeEvolve` (but after all other optional input routines have been called), to support users who measure memory -usage before beginning a simulation. +usage before beginning a simulation. Finally, we standardized calls to the user-supplied +right-hand-side functions so that these are provided the user-supplied solution vector +passed to `ARKodeEvolve` whenever possible -- the notable exceptions are the +Hermite temporal interpolation module, the provided preconditioners ARKBANDPRE and +ARKBBDPRE, banded or dense linear solvers with automatically-approximated Jacobian +matrices, iterative linear solvers with automatically-approximated Jacobian-times-vector +product, temporal root-finding, discrete adjoint modules in ARKStep or ERKStep, the +SPRKStep stepper, and LSRKStep's use of the automated dominant eigenvalue estimation module. ### Bug Fixes diff --git a/doc/shared/RecentChanges.rst b/doc/shared/RecentChanges.rst index ebc4750355..5d084070bb 100644 --- a/doc/shared/RecentChanges.rst +++ b/doc/shared/RecentChanges.rst @@ -9,20 +9,19 @@ The functions ``CVodeGetUserDataB`` and ``IDAGetUserDataB`` were added to CVODES and IDAS, respectively. Multiple minor updates were made to the ARKODE package. We removed an extraneous -copy of the output vector when using ARKODE in ``ARK_ONE_STEP`` mode. We -standardized calls to the user-supplied right-hand-side functions so that these -are provided the user-supplied solution vector passed to :c:func:`ARKodeEvolve` whenever -possible -- the notable exceptions are the Hermite temporal interpolation module, -the provided preconditioners ARKBANDPRE and ARKBBDPRE, banded or dense linear -solvers with automatically-approximated Jacobian matrices, iterative linear solvers -with automatically-approximated Jacobian-times-vector product, temporal root-finding, -discrete adjoint modules in ARKStep or ERKStep, the SPRKStep stepper, and LSRKStep's -use of the automated dominant eigenvalue estimation module. - -Added the function :c:func:`ARKodeAllocateInternalData` to ARKODE to enable stage-related +copy of the output vector when using ARKODE in ``ARK_ONE_STEP`` mode. We added the +function :c:func:`ARKodeAllocateInternalData` to ARKODE to enable stage-related data allocation before the first call to :c:func:`ARKodeEvolve` (but after all other optional input routines have been called), to support users who measure memory -usage before beginning a simulation. +usage before beginning a simulation. Finally, we standardized calls to the user-supplied +right-hand-side functions so that these are provided the user-supplied solution vector +passed to :c:func:`ARKodeEvolve` whenever possible -- the notable exceptions are the +Hermite temporal interpolation module, the provided preconditioners ARKBANDPRE and +ARKBBDPRE, banded or dense linear solvers with automatically-approximated Jacobian +matrices, iterative linear solvers with automatically-approximated Jacobian-times-vector +product, temporal root-finding, discrete adjoint modules in ARKStep or ERKStep, the +SPRKStep stepper, and LSRKStep's use of the automated dominant eigenvalue estimation module. + **Bug Fixes** From 8b437acc36467258afbea99b375c48c09b09d750 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sat, 17 Jan 2026 18:52:03 -0500 Subject: [PATCH 03/16] Fixed unused variable warning/error --- src/arkode/arkode_arkstep.c | 2 +- src/arkode/arkode_erkstep.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arkode/arkode_arkstep.c b/src/arkode/arkode_arkstep.c index e4e7dc8855..74ea464b7a 100644 --- a/src/arkode/arkode_arkstep.c +++ b/src/arkode/arkode_arkstep.c @@ -951,7 +951,7 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, int init_type) { ARKodeARKStepMem step_mem; - int j, retval; + int retval; sunbooleantype reset_efun; /* access ARKodeARKStepMem structure */ diff --git a/src/arkode/arkode_erkstep.c b/src/arkode/arkode_erkstep.c index 4ef1ef5ce7..93b6f1cbbd 100644 --- a/src/arkode/arkode_erkstep.c +++ b/src/arkode/arkode_erkstep.c @@ -403,7 +403,7 @@ int erkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, { ARKodeERKStepMem step_mem; sunbooleantype reset_efun; - int retval, j; + int retval; /* access ARKodeERKStepMem structure */ retval = erkStep_AccessStepMem(ark_mem, __func__, &step_mem); From 538b68b1b536e71fba5e3d7ebc81418683317a32 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sat, 17 Jan 2026 18:52:57 -0500 Subject: [PATCH 04/16] Formatting --- src/arkode/arkode_arkstep.c | 18 +++++++++--------- src/arkode/arkode_erkstep.c | 6 +++--- src/arkode/arkode_forcingstep.c | 5 +---- src/arkode/arkode_mristep.c | 5 ++--- 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/arkode/arkode_arkstep.c b/src/arkode/arkode_arkstep.c index 74ea464b7a..1e123bab15 100644 --- a/src/arkode/arkode_arkstep.c +++ b/src/arkode/arkode_arkstep.c @@ -1047,9 +1047,9 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, { if (step_mem->Fe == NULL) { - if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, - &(step_mem->Fe), ark_mem->lrw1, &(ark_mem->lrw), - ark_mem->liw1, &(ark_mem->liw))) + if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, &(step_mem->Fe), + ark_mem->lrw1, &(ark_mem->lrw), ark_mem->liw1, + &(ark_mem->liw))) { return (ARK_MEM_FAIL); } @@ -1061,9 +1061,9 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, { if (step_mem->Fi == NULL) { - if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, - &(step_mem->Fi), ark_mem->lrw1, &(ark_mem->lrw), - ark_mem->liw1, &(ark_mem->liw))) + if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, &(step_mem->Fi), + ark_mem->lrw1, &(ark_mem->lrw), ark_mem->liw1, + &(ark_mem->liw))) { return (ARK_MEM_FAIL); } @@ -1077,9 +1077,9 @@ int arkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, { if (step_mem->z == NULL) { - if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, - &(step_mem->z), ark_mem->lrw1, &(ark_mem->lrw), - ark_mem->liw1, &(ark_mem->liw))) + if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, &(step_mem->z), + ark_mem->lrw1, &(ark_mem->lrw), ark_mem->liw1, + &(ark_mem->liw))) { return (ARK_MEM_FAIL); } diff --git a/src/arkode/arkode_erkstep.c b/src/arkode/arkode_erkstep.c index 93b6f1cbbd..4dcb2e4129 100644 --- a/src/arkode/arkode_erkstep.c +++ b/src/arkode/arkode_erkstep.c @@ -465,9 +465,9 @@ int erkStep_Init(ARKodeMem ark_mem, SUNDIALS_MAYBE_UNUSED sunrealtype tout, /* Allocate F[0] ... F[stages-1] if needed */ if (step_mem->F == NULL) { - if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, - &(step_mem->F), ark_mem->lrw1, &(ark_mem->lrw), - ark_mem->liw1, &(ark_mem->liw))) + if (!arkAllocVecArray(step_mem->stages, ark_mem->ewt, &(step_mem->F), + ark_mem->lrw1, &(ark_mem->lrw), ark_mem->liw1, + &(ark_mem->liw))) { return (ARK_MEM_FAIL); } diff --git a/src/arkode/arkode_forcingstep.c b/src/arkode/arkode_forcingstep.c index 102be646b0..bdbf236ebf 100644 --- a/src/arkode/arkode_forcingstep.c +++ b/src/arkode/arkode_forcingstep.c @@ -91,10 +91,7 @@ static int forcingStep_Init(ARKodeMem ark_mem, } /* immediately return if not called in FIRST_INIT mode */ - if (init_type != FIRST_INIT) - { - return ARK_SUCCESS; - } + if (init_type != FIRST_INIT) { return ARK_SUCCESS; } /* On first initialization, make the SUNStepper consistent with the current * state in case a user provided a different initial condition for the diff --git a/src/arkode/arkode_mristep.c b/src/arkode/arkode_mristep.c index 5a7b03f26b..0811f6f231 100644 --- a/src/arkode/arkode_mristep.c +++ b/src/arkode/arkode_mristep.c @@ -1298,7 +1298,6 @@ int mriStep_Init(ARKodeMem ark_mem, sunrealtype tout, int init_type) /*** Perform timestep adaptivity checks and initial setup (skip on ALLOC_INIT) ***/ if (init_type != ALLOC_INIT) { - /* get timestep adaptivity type */ adapt_type = SUNAdaptController_GetType(ark_mem->hadapt_mem->hcontroller); @@ -1342,8 +1341,8 @@ int mriStep_Init(ARKodeMem ark_mem, sunrealtype tout, int init_type) if (mriStep_SlowRHS(ark_mem, ark_mem->tcur, ark_mem->ycur, ark_mem->tempv1, ARK_FULLRHS_START) != ARK_SUCCESS) { - arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, __FILE__, - "error calling slow RHS function(s)"); + arkProcessError(ark_mem, ARK_RHSFUNC_FAIL, __LINE__, __func__, + __FILE__, "error calling slow RHS function(s)"); return (ARK_RHSFUNC_FAIL); } retval = mriStep_Hin(ark_mem, ark_mem->tcur, tout, ark_mem->tempv1, From 965fac42da0c2f76122a9819f463bf39cdcb9e04 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sat, 17 Jan 2026 20:44:27 -0500 Subject: [PATCH 05/16] Formatting --- .../arkode/CXX_serial/ark_test_prealloc_arkstep.cpp | 2 +- .../arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp | 2 +- .../arkode/CXX_serial/ark_test_prealloc_mristep.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep.cpp index 959800eb71..02c7641e97 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep.cpp +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep.cpp @@ -73,7 +73,7 @@ int main(int argc, char* argv[]) // Relative and absolute tolerances const sunrealtype rtol = SUN_RCONST(1.0e-6); const sunrealtype atol = SUN_RCONST(1.0e-10); - flag = ARKodeSStolerances(arkode_mem, rtol, atol); + flag = ARKodeSStolerances(arkode_mem, rtol, atol); if (check_flag(flag, "ARKodeSStolerances")) { return 1; } // Implicit algebraic solvers diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp index 7eaa24b4f2..47221a81b5 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp @@ -63,7 +63,7 @@ int main(int argc, char* argv[]) // Create LSRKStep memory structure void* arkode_mem = nullptr; - arkode_mem = LSRKStepCreateSTS(ode_rhs, zero, y, sunctx); + arkode_mem = LSRKStepCreateSTS(ode_rhs, zero, y, sunctx); if (check_ptr(arkode_mem, "LSRKStepCreate")) { return 1; } // Select method diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep.cpp index e770d7767b..5403c0706b 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep.cpp +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep.cpp @@ -93,7 +93,7 @@ int main(int argc, char* argv[]) // Relative and absolute tolerances const sunrealtype rtol = SUN_RCONST(1.0e-6); const sunrealtype atol = SUN_RCONST(1.0e-10); - flag = ARKodeSStolerances(arkode_mem, rtol, atol); + flag = ARKodeSStolerances(arkode_mem, rtol, atol); if (check_flag(flag, "ARKodeSStolerances")) { return 1; } // Implicit algebraic solvers @@ -102,7 +102,7 @@ int main(int argc, char* argv[]) SUNMatrix A = nullptr; SUNLinearSolver LS = nullptr; SUNNonlinearSolver NLS = nullptr; - A = SUNDenseMatrix(2, 2, sunctx); + A = SUNDenseMatrix(2, 2, sunctx); if (check_ptr(A, "SUNDenseMatrix")) { return 1; } LS = SUNLinSol_Dense(y, A, sunctx); if (check_ptr(LS, "SUNLinSol_Dense")) { return 1; } From 8e0d64138364420acf1b1dbb13b3fb5315fbd3bc Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sat, 17 Jan 2026 20:54:54 -0500 Subject: [PATCH 06/16] Added missing .out files for new unit tests --- .../ark_test_prealloc_arkstep_1.out | 40 ++++++++++++ .../ark_test_prealloc_erkstep_1.out | 21 +++++++ .../ark_test_prealloc_forcingstep_1.out | 22 +++++++ .../ark_test_prealloc_lsrkstep_1.out | 26 ++++++++ .../ark_test_prealloc_mristep_1.out | 62 +++++++++++++++++++ .../ark_test_prealloc_splittingstep_1.out | 22 +++++++ .../ark_test_prealloc_sprkstep_1.out | 22 +++++++ 7 files changed, 215 insertions(+) create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep_1.out create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep_1.out create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_forcingstep_1.out create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep_1.out create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep_1.out create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_splittingstep_1.out create mode 100644 test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep_1.out diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep_1.out new file mode 100644 index 0000000000..79e9246274 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep_1.out @@ -0,0 +1,40 @@ +Start ARKStep preallocation test +Using DIRK method +Using Newton nonlinear solver +Using GMRES iterative linear solver + t u v u err v err +------------------------------------------------------------------------------------------------------------------------------ + 0.000000000000000e+00 1.224744871391589e+00 1.732050807568877e+00 0.000000000000000e+00 0.000000000000000e+00 + 1.029860256095084e-04 1.224744870316961e+00 1.732050195224250e+00 7.854161765408207e-12 2.731148640577885e-14 + 1.634509895443788e-02 1.224717600094773e+00 1.716694985522809e+00 4.466385261636674e-09 6.044738709576336e-09 + 3.254871529235759e-02 1.224636741653238e+00 1.671973015366888e+00 8.026050712928168e-09 5.988021634095730e-09 +------------------------------------------------------------------------------------------------------------------------------ +Current time = 0.0325487152923576 +Steps = 3 +Step attempts = 3 +Stability limited steps = 0 +Accuracy limited steps = 3 +Error test fails = 0 +NLS step fails = 0 +Inequality constraint fails = 0 +Initial step size = 0.000102986025609508 +Last step size = 0.0162036163379197 +Current step size = 0.0160003634180696 +Explicit RHS fn evals = 0 +Implicit RHS fn evals = 49 +NLS iters = 31 +NLS fails = 0 +NLS iters per step = 10.3333333333333 +LS setups = 0 +Jac fn evals = 0 +LS RHS fn evals = 34 +Prec setup evals = 0 +Prec solves = 0 +LS iters = 34 +LS fails = 0 +Jac-times setups = 0 +Jac-times evals = 34 +LS iters per NLS iter = 1.09677419354839 +Jac evals per NLS iter = 0 +Prec evals per NLS iter = 0 +End ARKStep preallocation test diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep_1.out new file mode 100644 index 0000000000..11002e04ca --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep_1.out @@ -0,0 +1,21 @@ +Start ERKStep preallocation test + t u v u err v err +------------------------------------------------------------------------------------------------------------------------------ + 0.000000000000000e+00 1.224744871391589e+00 1.732050807568877e+00 0.000000000000000e+00 0.000000000000000e+00 + 1.029860256095084e-04 1.224744870309106e+00 1.732050195224277e+00 2.220446049250313e-16 0.000000000000000e+00 + 1.606364534231249e-02 1.224718491293716e+00 1.717217032062862e+00 4.421219967909451e-08 2.910637308950470e-08 + 3.202338818315199e-02 1.224640124009817e+00 1.673862546151861e+00 8.746489865707474e-08 1.494766854737151e-07 +------------------------------------------------------------------------------------------------------------------------------ +Current time = 0.032023388183152 +Steps = 3 +Step attempts = 4 +Stability limited steps = 0 +Accuracy limited steps = 4 +Error test fails = 1 +NLS step fails = 0 +Inequality constraint fails = 0 +Initial step size = 0.000102986025609508 +Last step size = 0.0159597428408395 +Current step size = 0.0166588795525631 +RHS fn evals = 19 +End ERKStep preallocation test diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_forcingstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_forcingstep_1.out new file mode 100644 index 0000000000..3be800b104 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_forcingstep_1.out @@ -0,0 +1,22 @@ +Start ForcingStep preallocation test + t y y err +--------------------------------------------------------------------- + 0.000000000000000e+00 1.000000000000000e+00 0.000000000000000e+00 + 1.000000000000000e-03 9.990010003330001e-01 9.999996670728706e-07 + 2.000000000000000e-03 9.980020006646669e-01 1.997998004599211e-06 + 3.000000000000000e-03 9.970030029929939e-01 2.993993026279007e-06 +--------------------------------------------------------------------- +Current time = 0.003 +Steps = 3 +Step attempts = 3 +Stability limited steps = 0 +Accuracy limited steps = 0 +Error test fails = 0 +NLS step fails = 0 +Inequality constraint fails = 0 +Initial step size = 0.001 +Last step size = 0.001 +Current step size = 0.001 +Partition 1 evolves = 3 +Partition 2 evolves = 3 +End ForcingStep preallocation test diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep_1.out new file mode 100644 index 0000000000..441d468b29 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep_1.out @@ -0,0 +1,26 @@ +Start LSRKStep preallocation test + t y y err +--------------------------------------------------------------------- + 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 + 6.103515625000001e-12 6.103515624999975e-12 2.504160057533580e-26 + 6.104125976562500e-08 6.104125976562474e-08 1.852884572118782e-22 + 1.281744384765625e-06 1.281744384765305e-06 3.822236174485030e-19 +--------------------------------------------------------------------- +Current time = 1.28174438476563e-06 +Steps = 3 +Step attempts = 3 +Stability limited steps = 0 +Accuracy limited steps = 3 +Error test fails = 0 +NLS step fails = 0 +Inequality constraint fails = 0 +Initial step size = 6.103515625e-12 +Last step size = 1.220703125e-06 +Current step size = 2.44140625e-05 +RHS fn evals = 9 +Number of dom_eig updates = 1 +Max. num. of stages used = 2 +Max. num. of stages allowed = 200 +Max. spectral radius = 999.9 +Min. spectral radius = 999.9 +End LSRKStep preallocation test diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep_1.out new file mode 100644 index 0000000000..f200279336 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_mristep_1.out @@ -0,0 +1,62 @@ +Start MRIStep preallocation test +Using Im-MRI-GARK method +Using Newton nonlinear solver +Using dense direct linear solver + t u v u err v err +------------------------------------------------------------------------------------------------------------------------------ + 0.000000000000000e+00 1.224744871391589e+00 1.732050807568877e+00 0.000000000000000e+00 0.000000000000000e+00 + 2.216762984896080e-02 1.224694723648756e+00 1.703912733300302e+00 4.921912433175635e-09 7.285889447317118e-09 + 4.430630505163263e-02 1.224544544576523e+00 1.622472682735258e+00 9.612434626049549e-09 3.868790621197604e-09 + 6.647784899368810e-02 1.224293925250561e+00 1.496297529163339e+00 1.416605432957851e-08 9.184720983768102e-09 +------------------------------------------------------------------------------------------------------------------------------ + +Outer integrator statistics: +Current time = 0.0664778489936881 +Steps = 3 +Step attempts = 5 +Stability limited steps = 0 +Accuracy limited steps = 4 +Error test fails = 1 +NLS step fails = 1 +Inequality constraint fails = 0 +Initial step size = 0.1 +Last step size = 0.0221715439420555 +Current step size = 0.022206678920593 +Explicit slow RHS fn evals = 0 +Implicit slow RHS fn evals = 58 +Inner stepper failures = 0 +NLS iters = 42 +NLS fails = 2 +NLS iters per step = 14 +LS setups = 3 +Jac fn evals = 3 +LS RHS fn evals = 0 +Prec setup evals = 0 +Prec solves = 0 +LS iters = 0 +LS fails = 0 +Jac-times setups = 0 +Jac-times evals = 0 +LS iters per NLS iter = 0 +Jac evals per NLS iter = 0.0714285714285714 +Prec evals per NLS iter = 0 + +Inner integrator statistics: +Current time = 0.0664778489936881 +Steps = 16 +Step attempts = 16 +Stability limited steps = 0 +Accuracy limited steps = 16 +Error test fails = 0 +NLS step fails = 0 +Inequality constraint fails = 0 +Initial step size = 0.000102986177305221 +Last step size = 0.00739051464735181 +Current step size = 0.00739051464735181 +Explicit RHS fn evals = 82 +Implicit RHS fn evals = 0 +NLS iters = 0 +NLS fails = 0 +NLS iters per step = 0 +LS setups = 0 +End MRIStep preallocation test diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_splittingstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_splittingstep_1.out new file mode 100644 index 0000000000..04eef70c30 --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_splittingstep_1.out @@ -0,0 +1,22 @@ +Start SplittingStep preallocation test + t y y err +--------------------------------------------------------------------- + 0.000000000000000e+00 1.000000000000000e+00 0.000000000000000e+00 + 1.000000000000000e-03 9.989990016676641e-01 9.986656689386919e-07 + 2.000000000000000e-03 9.979980073386400e-01 1.995328022363907e-06 + 3.000000000000000e-03 9.969970190148773e-01 2.989985090406932e-06 +--------------------------------------------------------------------- +Current time = 0.003 +Steps = 3 +Step attempts = 3 +Stability limited steps = 0 +Accuracy limited steps = 0 +Error test fails = 0 +NLS step fails = 0 +Inequality constraint fails = 0 +Initial step size = 0.001 +Last step size = 0.001 +Current step size = 0.001 +Partition 1 evolves = 3 +Partition 2 evolves = 3 +End SplittingStep preallocation test diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep_1.out new file mode 100644 index 0000000000..329037de9d --- /dev/null +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep_1.out @@ -0,0 +1,22 @@ +Start SPRKStep preallocation test + t q1 q2 q3 q4 +------------------------------------------------------------------------------------------------------------------------------ + 0.000000000000000e+00 4.000000000000000e-01 0.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 + 1.000000000000000e-03 3.999968750113932e-01 1.999994791691249e-03 -6.249954427477657e-03 1.999984375130207e+00 + 2.000000000000000e-03 3.999875001822874e-01 3.999958334163726e-03 -1.249963542950927e-02 1.999937502083256e+00 + 3.000000000000000e-03 3.999718759228028e-01 5.999859381323369e-03 -1.874876962886015e-02 1.999859385545991e+00 +------------------------------------------------------------------------------------------------------------------------------ +Current time = 0.003 +Steps = 3 +Step attempts = 3 +Stability limited steps = 0 +Accuracy limited steps = 0 +Error test fails = 0 +NLS step fails = 0 +Inequality constraint fails = 0 +Initial step size = 0.001 +Last step size = 0.001 +Current step size = 0.001 +f1 RHS fn evals = 12 +f2 RHS fn evals = 12 +End SPRKStep preallocation test From 6588500cc61cc3934d9d80511c7a64abe6f4c3ae Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sat, 17 Jan 2026 21:13:46 -0500 Subject: [PATCH 07/16] Updated answers submodule commit --- test/answers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/answers b/test/answers index b99da44261..7114ab4918 160000 --- a/test/answers +++ b/test/answers @@ -1 +1 @@ -Subproject commit b99da44261bbc32536f0cb394a5daaef759bb0e1 +Subproject commit 7114ab49185d9b2a6a0877addab62461c195eca3 From 88b09d91bf939446e3201748176e0dc44d2493ad Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sat, 17 Jan 2026 21:54:01 -0500 Subject: [PATCH 08/16] Updated answers submodule commit --- test/answers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/answers b/test/answers index 7114ab4918..f83495b4b6 160000 --- a/test/answers +++ b/test/answers @@ -1 +1 @@ -Subproject commit 7114ab49185d9b2a6a0877addab62461c195eca3 +Subproject commit f83495b4b689a39cc625d1bf115b115e6a53fe67 From fb2a3be91bf4daa259541d97e9b37b90755d22d3 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sat, 17 Jan 2026 22:06:21 -0500 Subject: [PATCH 09/16] Updated answers submodule commit --- test/answers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/answers b/test/answers index f83495b4b6..45cdd5f7cc 160000 --- a/test/answers +++ b/test/answers @@ -1 +1 @@ -Subproject commit f83495b4b689a39cc625d1bf115b115e6a53fe67 +Subproject commit 45cdd5f7ccf13d6c6d081c60d3b3b122fb710e5b From a6f612270f0691bd03b66fcdb95e5d0553a0af39 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sun, 18 Jan 2026 11:01:40 -0500 Subject: [PATCH 10/16] Removed logging commands (leftover from the test problem file it was copied from) --- .../arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp index 47221a81b5..c6a347d302 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep.cpp @@ -46,16 +46,6 @@ int main(int argc, char* argv[]) bool preallocate_data = false; if (argc > 1) { preallocate_data = stoi(argv[1]); } - // Ensure logging output goes to stdout - SUNLogger logger; - int flag = SUNContext_GetLogger(sunctx, &logger); - if (check_flag(flag, "SUNContext_GetLogger")) { return 1; } - - SUNLogger_SetErrorFilename(logger, "stdout"); - SUNLogger_SetWarningFilename(logger, "stdout"); - SUNLogger_SetInfoFilename(logger, "stdout"); - SUNLogger_SetDebugFilename(logger, "stdout"); - // Create initial condition N_Vector y = N_VNew_Serial(1, sunctx); if (check_ptr(y, "N_VNew_Serial")) { return 1; } @@ -67,7 +57,7 @@ int main(int argc, char* argv[]) if (check_ptr(arkode_mem, "LSRKStepCreate")) { return 1; } // Select method - flag = LSRKStepSetSTSMethodByName(arkode_mem, "ARKODE_LSRK_RKC_2"); + int flag = LSRKStepSetSTSMethodByName(arkode_mem, "ARKODE_LSRK_RKC_2"); if (check_flag(flag, "LSRKStepSetSTSMethodByName")) { return 1; } flag = ARKodeSetUserData(arkode_mem, &problem_data); From 24590821c3b353a8429946558b6e05fb690f360c Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sun, 18 Jan 2026 13:01:48 -0500 Subject: [PATCH 11/16] Applied formatting patch from CI --- doc/superbuild/source/conf.py | 4 +--- test/config_cmake.py | 6 ++---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/doc/superbuild/source/conf.py b/doc/superbuild/source/conf.py index 70971fc743..5276512b76 100644 --- a/doc/superbuild/source/conf.py +++ b/doc/superbuild/source/conf.py @@ -93,9 +93,7 @@ copyright = """\ 2025-{year}, Lawrence Livermore National Security, University of Maryland Baltimore County, and the SUNDIALS contributors. Copyright (c) 2013-2025, Lawrence Livermore National Security and Southern Methodist University. - Copyright (c) 2002-2013, Lawrence Livermore National Security""".format( - year=year -) + Copyright (c) 2002-2013, Lawrence Livermore National Security""".format(year=year) # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/test/config_cmake.py b/test/config_cmake.py index 45705e9c7a..842cd8a725 100644 --- a/test/config_cmake.py +++ b/test/config_cmake.py @@ -24,10 +24,8 @@ def main(): import argparse - parser = argparse.ArgumentParser( - description="""Create a SUNDIALS CMake - cache file""" - ) + parser = argparse.ArgumentParser(description="""Create a SUNDIALS CMake + cache file""") parser.add_argument( "--filetype", From 7d8cc833060e912d7efce240ab93a6ad16b6bb08 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Mon, 19 Jan 2026 08:52:11 -0500 Subject: [PATCH 12/16] Updated answers submodule commit --- test/answers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/answers b/test/answers index 45cdd5f7cc..5ab7c953ad 160000 --- a/test/answers +++ b/test/answers @@ -1 +1 @@ -Subproject commit 45cdd5f7ccf13d6c6d081c60d3b3b122fb710e5b +Subproject commit 5ab7c953ad8c7831ea85e5711519baf79e94c9be From 9221ee5761cfcdee6b85d2eea51ac0608829b9f0 Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Thu, 29 Jan 2026 12:19:25 -0500 Subject: [PATCH 13/16] Applied litgen patch for Python bindings --- bindings/sundials4py/arkode/arkode_generated.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bindings/sundials4py/arkode/arkode_generated.hpp b/bindings/sundials4py/arkode/arkode_generated.hpp index e5e6bba6c3..a494d031d4 100644 --- a/bindings/sundials4py/arkode/arkode_generated.hpp +++ b/bindings/sundials4py/arkode/arkode_generated.hpp @@ -202,6 +202,9 @@ m.def("ARKodeSetFixedStep", ARKodeSetFixedStep, nb::arg("arkode_mem"), m.def("ARKodeSetStepDirection", ARKodeSetStepDirection, nb::arg("arkode_mem"), nb::arg("stepdir")); +m.def("ARKodeAllocateInternalData", ARKodeAllocateInternalData, + nb::arg("arkode_mem")); + m.def("ARKodeSetNonlinearSolver", ARKodeSetNonlinearSolver, nb::arg("arkode_mem"), nb::arg("NLS")); From d755c1bd3078bc3dc70a14864353b52d970f4f2c Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Thu, 29 Jan 2026 15:24:53 -0500 Subject: [PATCH 14/16] Updated answers submodule commit --- test/answers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/answers b/test/answers index 3800f57eb6..137c2ea256 160000 --- a/test/answers +++ b/test/answers @@ -1 +1 @@ -Subproject commit 3800f57eb69c7ec314687b72b36357761f58e6cf +Subproject commit 137c2ea256beea87ffc21056dee7c9e47002c8b6 From ac83d21017159270e55af71215750633536b076f Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Fri, 30 Jan 2026 09:29:05 -0500 Subject: [PATCH 15/16] Updated .out files to match floating-point roundoff on Jenkins box --- .../C_parallel/ark_diurnal_kry_bbd_p.out | 104 +-- .../arkode/C_parallel/ark_diurnal_kry_p.out | 53 +- .../arkode/C_parhyp/ark_diurnal_kry_ph.out | 53 +- .../arkode/C_serial/ark_KrylovDemo_prec.out | 652 +++++++++--------- .../arkode/C_serial/ark_KrylovDemo_prec_1.out | 652 +++++++++--------- .../arkode/C_serial/ark_KrylovDemo_prec_2.out | 652 +++++++++--------- .../ark_test_prealloc_arkstep_1.out | 12 +- .../ark_test_prealloc_erkstep_1.out | 12 +- .../ark_test_prealloc_lsrkstep_1.out | 6 +- .../ark_test_prealloc_sprkstep_1.out | 6 +- 10 files changed, 1100 insertions(+), 1102 deletions(-) diff --git a/examples/arkode/C_parallel/ark_diurnal_kry_bbd_p.out b/examples/arkode/C_parallel/ark_diurnal_kry_bbd_p.out index a30074040d..a73795f274 100644 --- a/examples/arkode/C_parallel/ark_diurnal_kry_bbd_p.out +++ b/examples/arkode/C_parallel/ark_diurnal_kry_bbd_p.out @@ -8,57 +8,57 @@ Preconditioner type is: jpre = SUN_PREC_LEFT t = 7.20e+03 no. steps = 70 stepsize = 1.17e+02 -At bottom left: c1, c2 = 1.047e+04 2.527e+11 -At top right: c1, c2 = 1.118e+04 2.700e+11 +At bottom left: c1, c2 = 1.047e+04 2.527e+11 +At top right: c1, c2 = 1.118e+04 2.700e+11 t = 1.44e+04 no. steps = 97 stepsize = 5.42e+02 -At bottom left: c1, c2 = 6.659e+06 2.582e+11 -At top right: c1, c2 = 7.301e+06 2.833e+11 +At bottom left: c1, c2 = 6.659e+06 2.582e+11 +At top right: c1, c2 = 7.301e+06 2.833e+11 t = 2.16e+04 no. steps = 115 stepsize = 6.88e+02 -At bottom left: c1, c2 = 2.665e+07 2.993e+11 -At top right: c1, c2 = 2.931e+07 3.313e+11 +At bottom left: c1, c2 = 2.665e+07 2.993e+11 +At top right: c1, c2 = 2.931e+07 3.313e+11 t = 2.88e+04 no. steps = 133 stepsize = 2.55e+02 -At bottom left: c1, c2 = 8.702e+06 3.380e+11 -At top right: c1, c2 = 9.650e+06 3.751e+11 +At bottom left: c1, c2 = 8.702e+06 3.380e+11 +At top right: c1, c2 = 9.650e+06 3.751e+11 t = 3.60e+04 no. steps = 161 stepsize = 7.55e+01 -At bottom left: c1, c2 = 1.404e+04 3.387e+11 -At top right: c1, c2 = 1.561e+04 3.765e+11 +At bottom left: c1, c2 = 1.404e+04 3.387e+11 +At top right: c1, c2 = 1.561e+04 3.765e+11 t = 4.32e+04 no. steps = 201 stepsize = 1.77e+03 -At bottom left: c1, c2 = -1.994e-07 3.382e+11 -At top right: c1, c2 = 4.533e-06 3.804e+11 +At bottom left: c1, c2 = -1.994e-07 3.382e+11 +At top right: c1, c2 = 4.533e-06 3.804e+11 t = 5.04e+04 no. steps = 206 stepsize = 7.73e+02 -At bottom left: c1, c2 = -2.848e-08 3.358e+11 -At top right: c1, c2 = -1.542e-07 3.864e+11 +At bottom left: c1, c2 = -2.848e-08 3.358e+11 +At top right: c1, c2 = -1.542e-07 3.864e+11 t = 5.76e+04 no. steps = 210 stepsize = 1.55e+03 -At bottom left: c1, c2 = -8.395e-07 3.320e+11 -At top right: c1, c2 = -4.284e-07 3.909e+11 +At bottom left: c1, c2 = -8.395e-07 3.320e+11 +At top right: c1, c2 = -4.284e-07 3.909e+11 t = 6.48e+04 no. steps = 215 stepsize = 1.89e+03 -At bottom left: c1, c2 = 1.234e-08 3.313e+11 -At top right: c1, c2 = 9.230e-08 3.963e+11 +At bottom left: c1, c2 = 1.234e-08 3.313e+11 +At top right: c1, c2 = 9.230e-08 3.963e+11 t = 7.20e+04 no. steps = 218 stepsize = 2.21e+03 -At bottom left: c1, c2 = -4.001e-08 3.330e+11 -At top right: c1, c2 = -7.099e-06 4.039e+11 +At bottom left: c1, c2 = -4.001e-08 3.330e+11 +At top right: c1, c2 = -7.099e-06 4.039e+11 t = 7.92e+04 no. steps = 221 stepsize = 2.32e+03 -At bottom left: c1, c2 = 3.713e-08 3.334e+11 -At top right: c1, c2 = -3.992e-07 4.120e+11 +At bottom left: c1, c2 = 3.713e-08 3.334e+11 +At top right: c1, c2 = -3.992e-07 4.120e+11 t = 8.64e+04 no. steps = 224 stepsize = 2.47e+03 -At bottom left: c1, c2 = 3.734e-07 3.352e+11 -At top right: c1, c2 = 3.748e-07 4.163e+11 +At bottom left: c1, c2 = 3.734e-07 3.352e+11 +At top right: c1, c2 = 3.748e-07 4.163e+11 -Final Statistics: +Final Statistics: -lenrw = 4118 leniw = 291 +lenrw = 4118 leniw = 285 lenrwls = 2455 leniwls = 126 nst = 224 nfe = 0 nfe = 3315 nfels = 6886 @@ -77,57 +77,57 @@ In ARKBBDPRE: real/integer local work space sizes = 1300, 192 Preconditioner type is: jpre = SUN_PREC_RIGHT t = 7.20e+03 no. steps = 69 stepsize = 1.17e+02 -At bottom left: c1, c2 = 1.047e+04 2.527e+11 -At top right: c1, c2 = 1.118e+04 2.700e+11 +At bottom left: c1, c2 = 1.047e+04 2.527e+11 +At top right: c1, c2 = 1.118e+04 2.700e+11 t = 1.44e+04 no. steps = 96 stepsize = 5.40e+02 -At bottom left: c1, c2 = 6.659e+06 2.582e+11 -At top right: c1, c2 = 7.301e+06 2.833e+11 +At bottom left: c1, c2 = 6.659e+06 2.582e+11 +At top right: c1, c2 = 7.301e+06 2.833e+11 t = 2.16e+04 no. steps = 114 stepsize = 6.89e+02 -At bottom left: c1, c2 = 2.665e+07 2.993e+11 -At top right: c1, c2 = 2.931e+07 3.313e+11 +At bottom left: c1, c2 = 2.665e+07 2.993e+11 +At top right: c1, c2 = 2.931e+07 3.313e+11 t = 2.88e+04 no. steps = 131 stepsize = 1.93e+02 -At bottom left: c1, c2 = 8.702e+06 3.380e+11 -At top right: c1, c2 = 9.650e+06 3.751e+11 +At bottom left: c1, c2 = 8.702e+06 3.380e+11 +At top right: c1, c2 = 9.650e+06 3.751e+11 t = 3.60e+04 no. steps = 159 stepsize = 7.48e+01 -At bottom left: c1, c2 = 1.404e+04 3.387e+11 -At top right: c1, c2 = 1.561e+04 3.765e+11 +At bottom left: c1, c2 = 1.404e+04 3.387e+11 +At top right: c1, c2 = 1.561e+04 3.765e+11 t = 4.32e+04 no. steps = 199 stepsize = 1.75e+03 -At bottom left: c1, c2 = -1.508e-07 3.382e+11 -At top right: c1, c2 = -1.680e-07 3.804e+11 +At bottom left: c1, c2 = -1.508e-07 3.382e+11 +At top right: c1, c2 = -1.680e-07 3.804e+11 t = 5.04e+04 no. steps = 203 stepsize = 1.28e+03 -At bottom left: c1, c2 = 8.151e-09 3.358e+11 -At top right: c1, c2 = -1.358e-08 3.864e+11 +At bottom left: c1, c2 = 8.151e-09 3.358e+11 +At top right: c1, c2 = -1.358e-08 3.864e+11 t = 5.76e+04 no. steps = 208 stepsize = 9.65e+02 -At bottom left: c1, c2 = 5.968e-08 3.320e+11 -At top right: c1, c2 = 1.041e-08 3.909e+11 +At bottom left: c1, c2 = 5.968e-08 3.320e+11 +At top right: c1, c2 = 1.041e-08 3.909e+11 t = 6.48e+04 no. steps = 213 stepsize = 1.90e+03 -At bottom left: c1, c2 = -4.322e-09 3.313e+11 -At top right: c1, c2 = 4.258e-10 3.963e+11 +At bottom left: c1, c2 = -4.322e-09 3.313e+11 +At top right: c1, c2 = 4.258e-10 3.963e+11 t = 7.20e+04 no. steps = 216 stepsize = 2.21e+03 -At bottom left: c1, c2 = 1.431e-07 3.330e+11 -At top right: c1, c2 = 1.210e-06 4.039e+11 +At bottom left: c1, c2 = 1.431e-07 3.330e+11 +At top right: c1, c2 = 1.210e-06 4.039e+11 t = 7.92e+04 no. steps = 219 stepsize = 2.32e+03 -At bottom left: c1, c2 = 2.679e-08 3.334e+11 -At top right: c1, c2 = 1.594e-07 4.120e+11 +At bottom left: c1, c2 = 2.679e-08 3.334e+11 +At top right: c1, c2 = 1.594e-07 4.120e+11 t = 8.64e+04 no. steps = 222 stepsize = 2.47e+03 -At bottom left: c1, c2 = 6.003e-08 3.352e+11 -At top right: c1, c2 = -1.811e-07 4.163e+11 +At bottom left: c1, c2 = 6.003e-08 3.352e+11 +At top right: c1, c2 = -1.811e-07 4.163e+11 -Final Statistics: +Final Statistics: -lenrw = 4118 leniw = 297 +lenrw = 4118 leniw = 285 lenrwls = 2455 leniwls = 126 nst = 222 nfe = 0 nfe = 3244 nfels = 7604 diff --git a/examples/arkode/C_parallel/ark_diurnal_kry_p.out b/examples/arkode/C_parallel/ark_diurnal_kry_p.out index 62b62514e4..f1b4e6e840 100644 --- a/examples/arkode/C_parallel/ark_diurnal_kry_p.out +++ b/examples/arkode/C_parallel/ark_diurnal_kry_p.out @@ -2,57 +2,57 @@ 2-species diurnal advection-diffusion problem t = 7.20e+03 no. steps = 69 stepsize = 1.17e+02 -At bottom left: c1, c2 = 1.047e+04 2.527e+11 -At top right: c1, c2 = 1.118e+04 2.700e+11 +At bottom left: c1, c2 = 1.047e+04 2.527e+11 +At top right: c1, c2 = 1.118e+04 2.700e+11 t = 1.44e+04 no. steps = 96 stepsize = 5.41e+02 -At bottom left: c1, c2 = 6.659e+06 2.582e+11 -At top right: c1, c2 = 7.301e+06 2.833e+11 +At bottom left: c1, c2 = 6.659e+06 2.582e+11 +At top right: c1, c2 = 7.301e+06 2.833e+11 t = 2.16e+04 no. steps = 114 stepsize = 6.85e+02 -At bottom left: c1, c2 = 2.665e+07 2.993e+11 -At top right: c1, c2 = 2.931e+07 3.313e+11 +At bottom left: c1, c2 = 2.665e+07 2.993e+11 +At top right: c1, c2 = 2.931e+07 3.313e+11 t = 2.88e+04 no. steps = 128 stepsize = 2.01e+02 -At bottom left: c1, c2 = 8.702e+06 3.380e+11 -At top right: c1, c2 = 9.650e+06 3.751e+11 +At bottom left: c1, c2 = 8.702e+06 3.380e+11 +At top right: c1, c2 = 9.650e+06 3.751e+11 t = 3.60e+04 no. steps = 156 stepsize = 7.45e+01 -At bottom left: c1, c2 = 1.404e+04 3.387e+11 -At top right: c1, c2 = 1.561e+04 3.765e+11 +At bottom left: c1, c2 = 1.404e+04 3.387e+11 +At top right: c1, c2 = 1.561e+04 3.765e+11 t = 4.32e+04 no. steps = 196 stepsize = 1.75e+03 -At bottom left: c1, c2 = -4.884e-08 3.382e+11 -At top right: c1, c2 = -8.694e-07 3.804e+11 +At bottom left: c1, c2 = -4.884e-08 3.382e+11 +At top right: c1, c2 = -8.694e-07 3.804e+11 t = 5.04e+04 no. steps = 200 stepsize = 1.26e+03 -At bottom left: c1, c2 = -7.230e-09 3.358e+11 -At top right: c1, c2 = 3.094e-08 3.864e+11 +At bottom left: c1, c2 = -7.230e-09 3.358e+11 +At top right: c1, c2 = 3.094e-08 3.864e+11 t = 5.76e+04 no. steps = 205 stepsize = 1.08e+03 -At bottom left: c1, c2 = 4.422e-06 3.320e+11 -At top right: c1, c2 = -2.623e-05 3.909e+11 +At bottom left: c1, c2 = 4.422e-06 3.320e+11 +At top right: c1, c2 = -2.623e-05 3.909e+11 t = 6.48e+04 no. steps = 209 stepsize = 2.05e+03 -At bottom left: c1, c2 = 1.105e-08 3.313e+11 -At top right: c1, c2 = 7.165e-08 3.963e+11 +At bottom left: c1, c2 = 1.105e-08 3.313e+11 +At top right: c1, c2 = 7.165e-08 3.963e+11 t = 7.20e+04 no. steps = 213 stepsize = 2.13e+03 -At bottom left: c1, c2 = -4.810e-06 3.330e+11 -At top right: c1, c2 = -1.198e-04 4.039e+11 +At bottom left: c1, c2 = -4.810e-06 3.330e+11 +At top right: c1, c2 = -1.198e-04 4.039e+11 t = 7.92e+04 no. steps = 216 stepsize = 2.32e+03 -At bottom left: c1, c2 = 7.856e-08 3.334e+11 -At top right: c1, c2 = 6.407e-07 4.120e+11 +At bottom left: c1, c2 = 7.856e-08 3.334e+11 +At top right: c1, c2 = 6.407e-07 4.120e+11 t = 8.64e+04 no. steps = 219 stepsize = 2.47e+03 -At bottom left: c1, c2 = 1.878e-08 3.352e+11 -At top right: c1, c2 = 2.566e-08 4.163e+11 +At bottom left: c1, c2 = 1.878e-08 3.352e+11 +At top right: c1, c2 = 2.566e-08 4.163e+11 -Final Statistics: +Final Statistics: -lenrw = 3518 leniw = 267 +lenrw = 3518 leniw = 261 lenrwls = 2455 leniwls = 126 nst = 219 nfe = 0 nfi = 3215 nfels = 6952 @@ -60,4 +60,3 @@ nni = 2012 nli = 6952 nsetups = 72 netf = 21 npe = 6 nps = 8886 ncfn = 2 ncfl = 621 - diff --git a/examples/arkode/C_parhyp/ark_diurnal_kry_ph.out b/examples/arkode/C_parhyp/ark_diurnal_kry_ph.out index 0d5014c1e5..ac94a6d1cf 100644 --- a/examples/arkode/C_parhyp/ark_diurnal_kry_ph.out +++ b/examples/arkode/C_parhyp/ark_diurnal_kry_ph.out @@ -2,57 +2,57 @@ 2-species diurnal advection-diffusion problem t = 7.20e+03 no. steps = 69 stepsize = 1.17e+02 -At bottom left: c1, c2 = 1.047e+04 2.527e+11 -At top right: c1, c2 = 1.118e+04 2.700e+11 +At bottom left: c1, c2 = 1.047e+04 2.527e+11 +At top right: c1, c2 = 1.118e+04 2.700e+11 t = 1.44e+04 no. steps = 96 stepsize = 6.06e+02 -At bottom left: c1, c2 = 6.659e+06 2.582e+11 -At top right: c1, c2 = 7.301e+06 2.833e+11 +At bottom left: c1, c2 = 6.659e+06 2.582e+11 +At top right: c1, c2 = 7.301e+06 2.833e+11 t = 2.16e+04 no. steps = 115 stepsize = 7.13e+02 -At bottom left: c1, c2 = 2.665e+07 2.993e+11 -At top right: c1, c2 = 2.931e+07 3.313e+11 +At bottom left: c1, c2 = 2.665e+07 2.993e+11 +At top right: c1, c2 = 2.931e+07 3.313e+11 t = 2.88e+04 no. steps = 128 stepsize = 2.39e+02 -At bottom left: c1, c2 = 8.702e+06 3.380e+11 -At top right: c1, c2 = 9.650e+06 3.751e+11 +At bottom left: c1, c2 = 8.702e+06 3.380e+11 +At top right: c1, c2 = 9.650e+06 3.751e+11 t = 3.60e+04 no. steps = 157 stepsize = 7.95e+01 -At bottom left: c1, c2 = 1.404e+04 3.387e+11 -At top right: c1, c2 = 1.561e+04 3.765e+11 +At bottom left: c1, c2 = 1.404e+04 3.387e+11 +At top right: c1, c2 = 1.561e+04 3.765e+11 t = 4.32e+04 no. steps = 197 stepsize = 1.77e+03 -At bottom left: c1, c2 = -7.216e-06 3.382e+11 -At top right: c1, c2 = 4.224e-05 3.804e+11 +At bottom left: c1, c2 = -7.216e-06 3.382e+11 +At top right: c1, c2 = 4.224e-05 3.804e+11 t = 5.04e+04 no. steps = 202 stepsize = 8.73e+02 -At bottom left: c1, c2 = 4.566e-07 3.358e+11 -At top right: c1, c2 = 2.513e-07 3.864e+11 +At bottom left: c1, c2 = 4.566e-07 3.358e+11 +At top right: c1, c2 = 2.513e-07 3.864e+11 t = 5.76e+04 no. steps = 206 stepsize = 1.72e+03 -At bottom left: c1, c2 = 4.610e-07 3.320e+11 -At top right: c1, c2 = 3.216e-05 3.909e+11 +At bottom left: c1, c2 = 4.610e-07 3.320e+11 +At top right: c1, c2 = 3.216e-05 3.909e+11 t = 6.48e+04 no. steps = 212 stepsize = 1.90e+03 -At bottom left: c1, c2 = 2.291e-06 3.313e+11 -At top right: c1, c2 = -9.987e-06 3.963e+11 +At bottom left: c1, c2 = 2.291e-06 3.313e+11 +At top right: c1, c2 = -9.987e-06 3.963e+11 t = 7.20e+04 no. steps = 215 stepsize = 2.20e+03 -At bottom left: c1, c2 = 2.352e-06 3.330e+11 -At top right: c1, c2 = 4.867e-05 4.039e+11 +At bottom left: c1, c2 = 2.352e-06 3.330e+11 +At top right: c1, c2 = 4.867e-05 4.039e+11 t = 7.92e+04 no. steps = 218 stepsize = 2.31e+03 -At bottom left: c1, c2 = 9.645e-07 3.334e+11 -At top right: c1, c2 = 1.907e-05 4.120e+11 +At bottom left: c1, c2 = 9.645e-07 3.334e+11 +At top right: c1, c2 = 1.907e-05 4.120e+11 t = 8.64e+04 no. steps = 221 stepsize = 2.44e+03 -At bottom left: c1, c2 = 3.465e-06 3.352e+11 -At top right: c1, c2 = 6.627e-06 4.163e+11 +At bottom left: c1, c2 = 3.465e-06 3.352e+11 +At top right: c1, c2 = 6.627e-06 4.163e+11 -Final Statistics: +Final Statistics: -lenrw = 3518 leniw = 267 +lenrw = 3518 leniw = 261 lenrwls = 2455 leniwls = 126 nst = 221 nfe = 0 nfi = 3097 nfels = 6228 @@ -60,4 +60,3 @@ nni = 1889 nli = 6228 nsetups = 69 netf = 20 npe = 4 nps = 8046 ncfn = 0 ncfl = 452 - diff --git a/examples/arkode/C_serial/ark_KrylovDemo_prec.out b/examples/arkode/C_serial/ark_KrylovDemo_prec.out index 8a09c9a96d..1c5be0014a 100644 --- a/examples/arkode/C_serial/ark_KrylovDemo_prec.out +++ b/examples/arkode/C_serial/ark_KrylovDemo_prec.out @@ -10,9 +10,9 @@ b parameter = 1 Diffusion coefficients: Dprey = 1 Dpred = 0.5 Rate parameter alpha = 1 -Mesh dimensions (mx,my) are 6, 6. Total system size is neq = 216 +Mesh dimensions (mx,my) are 6, 6. Total system size is neq = 216 -Tolerances: reltol = 1e-05, abstol = 1e-05 +Tolerances: reltol = 1e-05, abstol = 1e-05 Preconditioning uses a product of: (1) Gauss-Seidel iterations with itmax = 5 iterations, and @@ -31,52 +31,52 @@ Gram-Schmidt method type is gstype = SUN_MODIFIED_GS c values at t = 0: Species 1 -10 10 10 10 10 10 -10 10.1678 10.3775 10.3775 10.1678 10 -10 10.3775 10.8493 10.8493 10.3775 10 -10 10.3775 10.8493 10.8493 10.3775 10 -10 10.1678 10.3775 10.3775 10.1678 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.1678 10.3775 10.3775 10.1678 10 +10 10.3775 10.8493 10.8493 10.3775 10 +10 10.3775 10.8493 10.8493 10.3775 10 +10 10.1678 10.3775 10.3775 10.1678 10 +10 10 10 10 10 10 Species 2 -10 10 10 10 10 10 -10 10.3355 10.755 10.755 10.3355 10 -10 10.755 11.6987 11.6987 10.755 10 -10 10.755 11.6987 11.6987 10.755 10 -10 10.3355 10.755 10.755 10.3355 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.3355 10.755 10.755 10.3355 10 +10 10.755 11.6987 11.6987 10.755 10 +10 10.755 11.6987 11.6987 10.755 10 +10 10.3355 10.755 10.755 10.3355 10 +10 10 10 10 10 10 Species 3 -10 10 10 10 10 10 -10 10.5033 11.1325 11.1325 10.5033 10 -10 11.1325 12.548 12.548 11.1325 10 -10 11.1325 12.548 12.548 11.1325 10 -10 10.5033 11.1325 11.1325 10.5033 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.5033 11.1325 11.1325 10.5033 10 +10 11.1325 12.548 12.548 11.1325 10 +10 11.1325 12.548 12.548 11.1325 10 +10 10.5033 11.1325 11.1325 10.5033 10 +10 10 10 10 10 10 Species 4 -10 10 10 10 10 10 -10 10.6711 11.5099 11.5099 10.6711 10 -10 11.5099 13.3974 13.3974 11.5099 10 -10 11.5099 13.3974 13.3974 11.5099 10 -10 10.6711 11.5099 11.5099 10.6711 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.6711 11.5099 11.5099 10.6711 10 +10 11.5099 13.3974 13.3974 11.5099 10 +10 11.5099 13.3974 13.3974 11.5099 10 +10 10.6711 11.5099 11.5099 10.6711 10 +10 10 10 10 10 10 Species 5 -10 10 10 10 10 10 -10 10.8389 11.8874 11.8874 10.8389 10 -10 11.8874 14.2467 14.2467 11.8874 10 -10 11.8874 14.2467 14.2467 11.8874 10 -10 10.8389 11.8874 11.8874 10.8389 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.8389 11.8874 11.8874 10.8389 10 +10 11.8874 14.2467 14.2467 11.8874 10 +10 11.8874 14.2467 14.2467 11.8874 10 +10 10.8389 11.8874 11.8874 10.8389 10 +10 10 10 10 10 10 Species 6 -10 10 10 10 10 10 -10 11.0066 12.2649 12.2649 11.0066 10 -10 12.2649 15.0961 15.0961 12.2649 10 -10 12.2649 15.0961 15.0961 12.2649 10 -10 11.0066 12.2649 12.2649 11.0066 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 11.0066 12.2649 12.2649 11.0066 10 +10 12.2649 15.0961 15.0961 12.2649 10 +10 12.2649 15.0961 15.0961 12.2649 10 +10 11.0066 12.2649 12.2649 11.0066 10 +10 10 10 10 10 10 t = 1.00e-08 nst = 3 nfe = 0 nfi = 45 nni = 27 hu = 6.86e-08 @@ -87,52 +87,52 @@ t = 1.00e-06 nst = 4 nfe = 0 nfi = 77 nni = 49 hu = 1.20e-06 c values at t = 1e-06: Species 1 -9.99991 9.99992 9.99993 9.99993 9.99993 9.99992 -9.99992 10.1677 10.3774 10.3774 10.1677 9.99993 -9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 -9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 -9.99992 10.1677 10.3774 10.3774 10.1677 9.99992 -9.99991 9.99992 9.99993 9.99993 9.99992 9.99991 +9.99991 9.99992 9.99993 9.99993 9.99993 9.99992 +9.99992 10.1677 10.3774 10.3774 10.1677 9.99993 +9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 +9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 +9.99992 10.1677 10.3774 10.3774 10.1677 9.99992 +9.99991 9.99992 9.99993 9.99993 9.99992 9.99991 Species 2 -9.99991 9.99993 9.99995 9.99995 9.99993 9.99992 -9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 -9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 -9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 -9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 -9.99991 9.99993 9.99995 9.99995 9.99993 9.99991 +9.99991 9.99993 9.99995 9.99995 9.99993 9.99992 +9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 +9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 +9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 +9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 +9.99991 9.99993 9.99995 9.99995 9.99993 9.99991 Species 3 -9.99991 9.99994 9.99997 9.99997 9.99994 9.99992 -9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 -9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 -9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 -9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 -9.99991 9.99994 9.99997 9.99997 9.99994 9.99991 +9.99991 9.99994 9.99997 9.99997 9.99994 9.99992 +9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 +9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 +9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 +9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 +9.99991 9.99994 9.99997 9.99997 9.99994 9.99991 Species 4 -13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 -13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 -13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 -13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 -13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 -13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 +13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 +13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 +13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 +13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 +13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 +13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 Species 5 -13.4981 13.4981 13.4982 13.4981 13.4981 13.4981 -13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 -13.4982 16.4131 20.2351 20.2351 16.4131 13.4981 -13.4982 16.4131 20.2351 20.2351 16.4131 13.4982 -13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 -13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 +13.4981 13.4981 13.4982 13.4981 13.4981 13.4981 +13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 +13.4982 16.4131 20.2351 20.2351 16.4131 13.4981 +13.4982 16.4131 20.2351 20.2351 16.4131 13.4982 +13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 +13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 Species 6 -13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 -13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 -13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 -13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 -13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 -13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 +13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 +13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 +13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 +13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 +13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 +13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 t = 1.00e-05 nst = 12 nfe = 0 nfi = 197 nni = 129 hu = 1.19e-06 @@ -143,52 +143,52 @@ t = 1.00e-03 nst = 46 nfe = 0 nfi = 820 nni = 582 hu = 8.40e-03 c values at t = 0.001: Species 1 -9.90702 9.91664 9.92836 9.93033 9.92253 9.91674 -9.91472 10.0747 10.2769 10.2785 10.0795 9.92253 -9.92446 10.2748 10.7181 10.7194 10.2785 9.93033 -9.92445 10.2744 10.7173 10.7181 10.2769 9.92836 -9.91469 10.0734 10.2744 10.2748 10.0747 9.91664 -9.90697 9.91469 9.92445 9.92446 9.91472 9.90702 +9.90702 9.91664 9.92836 9.93033 9.92253 9.91674 +9.91472 10.0747 10.2769 10.2785 10.0795 9.92253 +9.92446 10.2748 10.7181 10.7194 10.2785 9.93033 +9.92445 10.2744 10.7173 10.7181 10.2769 9.92836 +9.91469 10.0734 10.2744 10.2748 10.0747 9.91664 +9.90697 9.91469 9.92445 9.92446 9.91472 9.90702 Species 2 -9.90742 9.92474 9.94622 9.94819 9.93064 9.91713 -9.92282 10.2412 10.644 10.6457 10.2461 9.93064 -9.94232 10.6419 11.5267 11.5281 10.6457 9.94819 -9.94231 10.6415 11.5258 11.5267 10.644 9.94622 -9.92279 10.24 10.6415 10.6419 10.2412 9.92474 -9.90737 9.92279 9.94231 9.94232 9.92282 9.90742 +9.90742 9.92474 9.94622 9.94819 9.93064 9.91713 +9.92282 10.2412 10.644 10.6457 10.2461 9.93064 +9.94232 10.6419 11.5267 11.5281 10.6457 9.94819 +9.94231 10.6415 11.5258 11.5267 10.644 9.94622 +9.92279 10.24 10.6415 10.6419 10.2412 9.92474 +9.90737 9.92279 9.94231 9.94232 9.92282 9.90742 Species 3 -9.90781 9.93284 9.96408 9.96605 9.93874 9.91752 -9.93092 10.4078 11.0109 11.0127 10.4127 9.93874 -9.96017 11.0088 12.3339 12.3354 11.0127 9.96605 -9.96016 11.0083 12.333 12.3339 11.0109 9.96408 -9.93089 10.4065 11.0083 11.0088 10.4078 9.93284 -9.90776 9.93089 9.96016 9.96017 9.93092 9.90781 +9.90781 9.93284 9.96408 9.96605 9.93874 9.91752 +9.93092 10.4078 11.0109 11.0127 10.4127 9.93874 +9.96017 11.0088 12.3339 12.3354 11.0127 9.96605 +9.96016 11.0083 12.333 12.3339 11.0109 9.96408 +9.93089 10.4065 11.0083 11.0088 10.4078 9.93284 +9.90776 9.93089 9.96016 9.96017 9.93092 9.90781 Species 4 -297231 297750 298393 298451 297925 297520 -297692 307245 319327 319378 307390 297925 -298276 319264 345799 345840 319378 298451 -298276 319252 345772 345799 319327 298393 -297691 307208 319252 319264 307245 297750 -297229 297691 298276 298276 297692 297231 +297231 297750 298393 298451 297925 297520 +297692 307245 319327 319378 307390 297925 +298276 319264 345799 345840 319378 298451 +298276 319252 345772 345799 319327 298393 +297691 307208 319252 319264 307245 297750 +297229 297691 298276 298276 297692 297231 Species 5 -297231 297750 298393 298451 297925 297520 -297692 307245 319327 319378 307390 297925 -298276 319264 345799 345840 319378 298451 -298276 319252 345772 345799 319327 298393 -297691 307208 319252 319264 307245 297750 -297229 297691 298276 298276 297692 297231 +297231 297750 298393 298451 297925 297520 +297692 307245 319327 319378 307390 297925 +298276 319264 345799 345840 319378 298451 +298276 319252 345772 345799 319327 298393 +297691 307208 319252 319264 307245 297750 +297229 297691 298276 298276 297692 297231 Species 6 -297231 297750 298393 298451 297925 297520 -297692 307245 319327 319378 307390 297925 -298276 319264 345799 345840 319378 298451 -298276 319252 345772 345799 319327 298393 -297691 307208 319252 319264 307245 297750 -297229 297691 298276 298276 297692 297231 +297231 297750 298393 298451 297925 297520 +297692 307245 319327 319378 307390 297925 +298276 319264 345799 345840 319378 298451 +298276 319252 345772 345799 319327 298393 +297691 307208 319252 319264 307245 297750 +297229 297691 298276 298276 297692 297231 t = 1.00e-02 nst = 47 nfe = 0 nfi = 840 nni = 597 hu = 1.32e-02 @@ -199,52 +199,52 @@ t = 1.00e+00 nst = 69 nfe = 0 nfi = 1259 nni = 904 hu = 5.51e-02 c values at t = 1: Species 1 -1.58852 1.59924 1.62152 1.64765 1.67037 1.68149 -1.58533 1.59504 1.61548 1.63952 1.66033 1.67037 -1.57757 1.58548 1.6024 1.62235 1.63952 1.64765 -1.56821 1.57412 1.58706 1.6024 1.61548 1.62152 -1.56049 1.56463 1.57412 1.58548 1.59504 1.59924 -1.55733 1.56049 1.56821 1.57757 1.58533 1.58852 +1.58852 1.59924 1.62152 1.64765 1.67037 1.68149 +1.58533 1.59504 1.61548 1.63952 1.66033 1.67037 +1.57757 1.58548 1.6024 1.62235 1.63952 1.64765 +1.56821 1.57412 1.58706 1.6024 1.61548 1.62152 +1.56049 1.56463 1.57412 1.58548 1.59504 1.59924 +1.55733 1.56049 1.56821 1.57757 1.58533 1.58852 Species 2 -1.59067 1.60141 1.62371 1.64987 1.67262 1.68376 -1.58749 1.5972 1.61767 1.64174 1.66257 1.67262 -1.57972 1.58763 1.60457 1.62455 1.64174 1.64987 -1.57034 1.57627 1.58922 1.60457 1.61767 1.62371 -1.56261 1.56677 1.57627 1.58763 1.5972 1.60141 -1.55945 1.56261 1.57034 1.57972 1.58749 1.59067 +1.59067 1.60141 1.62371 1.64987 1.67262 1.68376 +1.58749 1.5972 1.61767 1.64174 1.66257 1.67262 +1.57972 1.58763 1.60457 1.62455 1.64174 1.64987 +1.57034 1.57627 1.58922 1.60457 1.61767 1.62371 +1.56261 1.56677 1.57627 1.58763 1.5972 1.60141 +1.55945 1.56261 1.57034 1.57972 1.58749 1.59067 Species 3 -1.59271 1.60346 1.62579 1.65198 1.67474 1.6859 -1.58952 1.59925 1.61974 1.64383 1.66469 1.67474 -1.58174 1.58967 1.60662 1.62662 1.64383 1.65198 -1.57236 1.57829 1.59126 1.60662 1.61974 1.62579 -1.56462 1.56878 1.57829 1.58967 1.59925 1.60346 -1.56146 1.56462 1.57236 1.58174 1.58952 1.59271 +1.59271 1.60346 1.62579 1.65198 1.67474 1.6859 +1.58952 1.59925 1.61974 1.64383 1.66469 1.67474 +1.58174 1.58967 1.60662 1.62662 1.64383 1.65198 +1.57236 1.57829 1.59126 1.60662 1.61974 1.62579 +1.56462 1.56878 1.57829 1.58967 1.59925 1.60346 +1.56146 1.56462 1.57236 1.58174 1.58952 1.59271 Species 4 -47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 -47622.9 47914.2 48528 49249.8 49874.6 50175.6 -47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 -47108.7 47286.2 47674.7 48135.1 48528 48709.2 -46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 -46782 46876.8 47108.7 47389.8 47622.9 47718.5 +47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 +47622.9 47914.2 48528 49249.8 49874.6 50175.6 +47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 +47108.7 47286.2 47674.7 48135.1 48528 48709.2 +46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 +46782 46876.8 47108.7 47389.8 47622.9 47718.5 Species 5 -47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 -47622.9 47914.2 48528 49249.8 49874.6 50175.6 -47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 -47108.7 47286.2 47674.7 48135.1 48528 48709.2 -46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 -46782 46876.8 47108.7 47389.8 47622.9 47718.5 +47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 +47622.9 47914.2 48528 49249.8 49874.6 50175.6 +47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 +47108.7 47286.2 47674.7 48135.1 48528 48709.2 +46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 +46782 46876.8 47108.7 47389.8 47622.9 47718.5 Species 6 -47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 -47622.9 47914.2 48528 49249.8 49874.6 50175.6 -47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 -47108.7 47286.2 47674.7 48135.1 48528 48709.2 -46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 -46782 46876.8 47108.7 47389.8 47622.9 47718.5 +47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 +47622.9 47914.2 48528 49249.8 49874.6 50175.6 +47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 +47108.7 47286.2 47674.7 48135.1 48528 48709.2 +46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 +46782 46876.8 47108.7 47389.8 47622.9 47718.5 t = 2.00e+00 nst = 81 nfe = 0 nfi = 1463 nni = 1048 hu = 1.54e-01 @@ -255,52 +255,52 @@ t = 4.00e+00 nst = 95 nfe = 0 nfi = 1708 nni = 1221 hu = 2.69e-01 c values at t = 4: Species 1 -1.19535 1.20368 1.2211 1.24157 1.25935 1.268 -1.1928 1.20035 1.21636 1.23523 1.25154 1.25935 -1.18657 1.19274 1.20602 1.22173 1.23523 1.24157 -1.17904 1.18368 1.19389 1.20602 1.21636 1.2211 -1.17284 1.17613 1.18368 1.19274 1.20035 1.20368 -1.17032 1.17284 1.17904 1.18657 1.1928 1.19535 +1.19535 1.20368 1.2211 1.24157 1.25935 1.268 +1.1928 1.20035 1.21636 1.23523 1.25154 1.25935 +1.18657 1.19274 1.20602 1.22173 1.23523 1.24157 +1.17904 1.18368 1.19389 1.20602 1.21636 1.2211 +1.17284 1.17613 1.18368 1.19274 1.20035 1.20368 +1.17032 1.17284 1.17904 1.18657 1.1928 1.19535 Species 2 -1.19538 1.20371 1.22113 1.24161 1.25938 1.26804 -1.19284 1.20038 1.21639 1.23526 1.25157 1.25938 -1.1866 1.19277 1.20606 1.22177 1.23526 1.24161 -1.17908 1.18371 1.19393 1.20606 1.21639 1.22113 -1.17288 1.17616 1.18371 1.19277 1.20038 1.20371 -1.17035 1.17288 1.17908 1.1866 1.19284 1.19538 +1.19538 1.20371 1.22113 1.24161 1.25938 1.26804 +1.19284 1.20038 1.21639 1.23526 1.25157 1.25938 +1.1866 1.19277 1.20606 1.22177 1.23526 1.24161 +1.17908 1.18371 1.19393 1.20606 1.21639 1.22113 +1.17288 1.17616 1.18371 1.19277 1.20038 1.20371 +1.17035 1.17288 1.17908 1.1866 1.19284 1.19538 Species 3 -1.19542 1.20374 1.22116 1.24164 1.25942 1.26807 -1.19287 1.20042 1.21643 1.2353 1.25161 1.25942 -1.18663 1.1928 1.20609 1.2218 1.2353 1.24164 -1.17911 1.18374 1.19396 1.20609 1.21643 1.22116 -1.17291 1.17619 1.18374 1.1928 1.20042 1.20374 -1.17039 1.17291 1.17911 1.18663 1.19287 1.19542 +1.19542 1.20374 1.22116 1.24164 1.25942 1.26807 +1.19287 1.20042 1.21643 1.2353 1.25161 1.25942 +1.18663 1.1928 1.20609 1.2218 1.2353 1.24164 +1.17911 1.18374 1.19396 1.20609 1.21643 1.22116 +1.17291 1.17619 1.18374 1.1928 1.20042 1.20374 +1.17039 1.17291 1.17911 1.18663 1.19287 1.19542 Species 4 -35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 -35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 -35597.2 35782 36180.5 36651.6 37056.3 37246.5 -35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 -35185.4 35283.8 35510.4 35782 36010.4 36110.2 -35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 +35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 +35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 +35597.2 35782 36180.5 36651.6 37056.3 37246.5 +35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 +35185.4 35283.8 35510.4 35782 36010.4 36110.2 +35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 Species 5 -35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 -35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 -35597.2 35782 36180.5 36651.6 37056.3 37246.5 -35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 -35185.4 35283.8 35510.4 35782 36010.4 36110.2 -35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 +35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 +35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 +35597.2 35782 36180.5 36651.6 37056.3 37246.5 +35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 +35185.4 35283.8 35510.4 35782 36010.4 36110.2 +35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 Species 6 -35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 -35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 -35597.2 35782 36180.5 36651.6 37056.3 37246.5 -35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 -35185.4 35283.8 35510.4 35782 36010.4 36110.2 -35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 +35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 +35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 +35597.2 35782 36180.5 36651.6 37056.3 37246.5 +35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 +35185.4 35283.8 35510.4 35782 36010.4 36110.2 +35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 t = 5.00e+00 nst = 98 nfe = 0 nfi = 1767 nni = 1262 hu = 3.36e-01 @@ -311,52 +311,52 @@ t = 7.00e+00 nst = 100 nfe = 0 nfi = 1798 nni = 1283 hu = 2.99e+00 c values at t = 7: Species 1 -1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 -1.18601 1.19352 1.20945 1.22822 1.24445 1.25222 -1.17981 1.18594 1.19917 1.2148 1.22822 1.23454 -1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 -1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 -1.16363 1.16615 1.17232 1.17981 1.18601 1.18855 +1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 +1.18601 1.19352 1.20945 1.22822 1.24445 1.25222 +1.17981 1.18594 1.19917 1.2148 1.22822 1.23454 +1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 +1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 +1.16363 1.16615 1.17232 1.17981 1.18601 1.18855 Species 2 -1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 -1.18601 1.19352 1.20945 1.22823 1.24445 1.25222 -1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 -1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 -1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 -1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 +1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 +1.18601 1.19352 1.20945 1.22823 1.24445 1.25222 +1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 +1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 +1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 +1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 Species 3 -1.18855 1.19684 1.21416 1.23454 1.25223 1.26083 -1.18601 1.19352 1.20945 1.22823 1.24445 1.25223 -1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 -1.17232 1.17693 1.1871 1.19917 1.20945 1.21416 -1.16615 1.16941 1.17693 1.18594 1.19352 1.19684 -1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 +1.18855 1.19684 1.21416 1.23454 1.25223 1.26083 +1.18601 1.19352 1.20945 1.22823 1.24445 1.25223 +1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 +1.17232 1.17693 1.1871 1.19917 1.20945 1.21416 +1.16615 1.16941 1.17693 1.18594 1.19352 1.19684 +1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 Species 4 -35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 -35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 -35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 -35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 -34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 -34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 +35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 +35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 +35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 +35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 +34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 +34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 Species 5 -35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 -35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 -35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 -35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 -34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 -34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 +35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 +35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 +35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 +35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 +34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 +34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 Species 6 -35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 -35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 -35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 -35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 -34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 -34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 +35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 +35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 +35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 +35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 +34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 +34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 t = 8.00e+00 nst = 100 nfe = 0 nfi = 1798 nni = 1283 hu = 2.99e+00 @@ -367,75 +367,75 @@ t = 1.00e+01 nst = 101 nfe = 0 nfi = 1813 nni = 1293 hu = 6.31e+00 c values at t = 10: Species 1 -1.18839 1.19667 1.214 1.23437 1.25206 1.26066 -1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 -1.17965 1.18578 1.199 1.21463 1.22806 1.23437 -1.17216 1.17677 1.18693 1.199 1.20929 1.214 -1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 -1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 +1.18839 1.19667 1.214 1.23437 1.25206 1.26066 +1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 +1.17965 1.18578 1.199 1.21463 1.22806 1.23437 +1.17216 1.17677 1.18693 1.199 1.20929 1.214 +1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 +1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 Species 2 -1.18839 1.19667 1.214 1.23437 1.25206 1.26066 -1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 -1.17965 1.18578 1.199 1.21463 1.22806 1.23437 -1.17216 1.17677 1.18693 1.199 1.20929 1.214 -1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 -1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 +1.18839 1.19667 1.214 1.23437 1.25206 1.26066 +1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 +1.17965 1.18578 1.199 1.21463 1.22806 1.23437 +1.17216 1.17677 1.18693 1.199 1.20929 1.214 +1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 +1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 Species 3 -1.18839 1.19667 1.214 1.23437 1.25206 1.26066 -1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 -1.17965 1.18578 1.199 1.21463 1.22806 1.23437 -1.17216 1.17677 1.18693 1.199 1.20929 1.214 -1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 -1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 +1.18839 1.19667 1.214 1.23437 1.25206 1.26066 +1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 +1.17965 1.18578 1.199 1.21463 1.22806 1.23437 +1.17216 1.17677 1.18693 1.199 1.20929 1.214 +1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 +1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 Species 4 -35650.8 35899 36418.5 37029.4 37559.6 37817.5 -35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 -35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 -35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 -34978.7 35076.6 35302.1 35572.4 35799.7 35899 -34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 +35650.8 35899 36418.5 37029.4 37559.6 37817.5 +35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 +35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 +35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 +34978.7 35076.6 35302.1 35572.4 35799.7 35899 +34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 Species 5 -35650.8 35899 36418.5 37029.4 37559.6 37817.5 -35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 -35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 -35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 -34978.7 35076.6 35302.1 35572.4 35799.7 35899 -34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 +35650.8 35899 36418.5 37029.4 37559.6 37817.5 +35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 +35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 +35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 +34978.7 35076.6 35302.1 35572.4 35799.7 35899 +34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 Species 6 -35650.8 35899 36418.5 37029.4 37559.6 37817.5 -35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 -35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 -35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 -34978.7 35076.6 35302.1 35572.4 35799.7 35899 -34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 +35650.8 35899 36418.5 37029.4 37559.6 37817.5 +35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 +35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 +35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 +34978.7 35076.6 35302.1 35572.4 35799.7 35899 +34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 148 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 101 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 1813 - Number of f-s (SPGMR) = 4359 - Number of f-s (TOTAL) = 4359 - Number of setups = 72 - Number of nonlinear iterations = 1293 - Number of linear iterations = 4359 - Number of preconditioner evaluations = 72 - Number of preconditioner solves = 5618 - Number of error test failures = 1 - Number of nonlinear conv. failures = 25 - Number of linear convergence failures = 238 - Average Krylov subspace dimension = 3.371 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 101 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 1813 + Number of f-s (SPGMR) = 4359 + Number of f-s (TOTAL) = 4359 + Number of setups = 72 + Number of nonlinear iterations = 1293 + Number of linear iterations = 4359 + Number of preconditioner evaluations = 72 + Number of preconditioner solves = 5618 + Number of error test failures = 1 + Number of nonlinear conv. failures = 25 + Number of linear convergence failures = 238 + Average Krylov subspace dimension = 3.371 ---------------------------------------------------------------------------- @@ -487,24 +487,24 @@ t = 1.00e+01 nst = 101 nfe = 0 nfi = 1813 nni = 1293 hu = 6.31e+00 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 154 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 101 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 1813 - Number of f-s (SPGMR) = 4359 - Number of f-s (TOTAL) = 4359 - Number of setups = 72 - Number of nonlinear iterations = 1293 - Number of linear iterations = 4359 - Number of preconditioner evaluations = 72 - Number of preconditioner solves = 5618 - Number of error test failures = 1 - Number of nonlinear conv. failures = 25 - Number of linear convergence failures = 238 - Average Krylov subspace dimension = 3.371 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 101 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 1813 + Number of f-s (SPGMR) = 4359 + Number of f-s (TOTAL) = 4359 + Number of setups = 72 + Number of nonlinear iterations = 1293 + Number of linear iterations = 4359 + Number of preconditioner evaluations = 72 + Number of preconditioner solves = 5618 + Number of error test failures = 1 + Number of nonlinear conv. failures = 25 + Number of linear convergence failures = 238 + Average Krylov subspace dimension = 3.371 ---------------------------------------------------------------------------- @@ -556,24 +556,24 @@ t = 1.00e+01 nst = 234 nfe = 0 nfi = 4045 nni = 2856 hu = 3.93e-01 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 160 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 234 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 4045 - Number of f-s (SPGMR) = 10634 - Number of f-s (TOTAL) = 10634 - Number of setups = 277 - Number of nonlinear iterations = 2856 - Number of linear iterations = 10634 - Number of preconditioner evaluations = 277 - Number of preconditioner solves = 13350 - Number of error test failures = 1 - Number of nonlinear conv. failures = 166 - Number of linear convergence failures = 1036 - Average Krylov subspace dimension = 3.723 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 234 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 4045 + Number of f-s (SPGMR) = 10634 + Number of f-s (TOTAL) = 10634 + Number of setups = 277 + Number of nonlinear iterations = 2856 + Number of linear iterations = 10634 + Number of preconditioner evaluations = 277 + Number of preconditioner solves = 13350 + Number of error test failures = 1 + Number of nonlinear conv. failures = 166 + Number of linear convergence failures = 1036 + Average Krylov subspace dimension = 3.723 ---------------------------------------------------------------------------- @@ -625,24 +625,24 @@ t = 1.00e+01 nst = 234 nfe = 0 nfi = 4045 nni = 2856 hu = 3.93e-01 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 166 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 234 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 4045 - Number of f-s (SPGMR) = 10633 - Number of f-s (TOTAL) = 10633 - Number of setups = 277 - Number of nonlinear iterations = 2856 - Number of linear iterations = 10633 - Number of preconditioner evaluations = 277 - Number of preconditioner solves = 13349 - Number of error test failures = 1 - Number of nonlinear conv. failures = 166 - Number of linear convergence failures = 1036 - Average Krylov subspace dimension = 3.723 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 234 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 4045 + Number of f-s (SPGMR) = 10633 + Number of f-s (TOTAL) = 10633 + Number of setups = 277 + Number of nonlinear iterations = 2856 + Number of linear iterations = 10633 + Number of preconditioner evaluations = 277 + Number of preconditioner solves = 13349 + Number of error test failures = 1 + Number of nonlinear conv. failures = 166 + Number of linear convergence failures = 1036 + Average Krylov subspace dimension = 3.723 ---------------------------------------------------------------------------- diff --git a/examples/arkode/C_serial/ark_KrylovDemo_prec_1.out b/examples/arkode/C_serial/ark_KrylovDemo_prec_1.out index 8a09c9a96d..1c5be0014a 100644 --- a/examples/arkode/C_serial/ark_KrylovDemo_prec_1.out +++ b/examples/arkode/C_serial/ark_KrylovDemo_prec_1.out @@ -10,9 +10,9 @@ b parameter = 1 Diffusion coefficients: Dprey = 1 Dpred = 0.5 Rate parameter alpha = 1 -Mesh dimensions (mx,my) are 6, 6. Total system size is neq = 216 +Mesh dimensions (mx,my) are 6, 6. Total system size is neq = 216 -Tolerances: reltol = 1e-05, abstol = 1e-05 +Tolerances: reltol = 1e-05, abstol = 1e-05 Preconditioning uses a product of: (1) Gauss-Seidel iterations with itmax = 5 iterations, and @@ -31,52 +31,52 @@ Gram-Schmidt method type is gstype = SUN_MODIFIED_GS c values at t = 0: Species 1 -10 10 10 10 10 10 -10 10.1678 10.3775 10.3775 10.1678 10 -10 10.3775 10.8493 10.8493 10.3775 10 -10 10.3775 10.8493 10.8493 10.3775 10 -10 10.1678 10.3775 10.3775 10.1678 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.1678 10.3775 10.3775 10.1678 10 +10 10.3775 10.8493 10.8493 10.3775 10 +10 10.3775 10.8493 10.8493 10.3775 10 +10 10.1678 10.3775 10.3775 10.1678 10 +10 10 10 10 10 10 Species 2 -10 10 10 10 10 10 -10 10.3355 10.755 10.755 10.3355 10 -10 10.755 11.6987 11.6987 10.755 10 -10 10.755 11.6987 11.6987 10.755 10 -10 10.3355 10.755 10.755 10.3355 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.3355 10.755 10.755 10.3355 10 +10 10.755 11.6987 11.6987 10.755 10 +10 10.755 11.6987 11.6987 10.755 10 +10 10.3355 10.755 10.755 10.3355 10 +10 10 10 10 10 10 Species 3 -10 10 10 10 10 10 -10 10.5033 11.1325 11.1325 10.5033 10 -10 11.1325 12.548 12.548 11.1325 10 -10 11.1325 12.548 12.548 11.1325 10 -10 10.5033 11.1325 11.1325 10.5033 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.5033 11.1325 11.1325 10.5033 10 +10 11.1325 12.548 12.548 11.1325 10 +10 11.1325 12.548 12.548 11.1325 10 +10 10.5033 11.1325 11.1325 10.5033 10 +10 10 10 10 10 10 Species 4 -10 10 10 10 10 10 -10 10.6711 11.5099 11.5099 10.6711 10 -10 11.5099 13.3974 13.3974 11.5099 10 -10 11.5099 13.3974 13.3974 11.5099 10 -10 10.6711 11.5099 11.5099 10.6711 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.6711 11.5099 11.5099 10.6711 10 +10 11.5099 13.3974 13.3974 11.5099 10 +10 11.5099 13.3974 13.3974 11.5099 10 +10 10.6711 11.5099 11.5099 10.6711 10 +10 10 10 10 10 10 Species 5 -10 10 10 10 10 10 -10 10.8389 11.8874 11.8874 10.8389 10 -10 11.8874 14.2467 14.2467 11.8874 10 -10 11.8874 14.2467 14.2467 11.8874 10 -10 10.8389 11.8874 11.8874 10.8389 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.8389 11.8874 11.8874 10.8389 10 +10 11.8874 14.2467 14.2467 11.8874 10 +10 11.8874 14.2467 14.2467 11.8874 10 +10 10.8389 11.8874 11.8874 10.8389 10 +10 10 10 10 10 10 Species 6 -10 10 10 10 10 10 -10 11.0066 12.2649 12.2649 11.0066 10 -10 12.2649 15.0961 15.0961 12.2649 10 -10 12.2649 15.0961 15.0961 12.2649 10 -10 11.0066 12.2649 12.2649 11.0066 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 11.0066 12.2649 12.2649 11.0066 10 +10 12.2649 15.0961 15.0961 12.2649 10 +10 12.2649 15.0961 15.0961 12.2649 10 +10 11.0066 12.2649 12.2649 11.0066 10 +10 10 10 10 10 10 t = 1.00e-08 nst = 3 nfe = 0 nfi = 45 nni = 27 hu = 6.86e-08 @@ -87,52 +87,52 @@ t = 1.00e-06 nst = 4 nfe = 0 nfi = 77 nni = 49 hu = 1.20e-06 c values at t = 1e-06: Species 1 -9.99991 9.99992 9.99993 9.99993 9.99993 9.99992 -9.99992 10.1677 10.3774 10.3774 10.1677 9.99993 -9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 -9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 -9.99992 10.1677 10.3774 10.3774 10.1677 9.99992 -9.99991 9.99992 9.99993 9.99993 9.99992 9.99991 +9.99991 9.99992 9.99993 9.99993 9.99993 9.99992 +9.99992 10.1677 10.3774 10.3774 10.1677 9.99993 +9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 +9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 +9.99992 10.1677 10.3774 10.3774 10.1677 9.99992 +9.99991 9.99992 9.99993 9.99993 9.99992 9.99991 Species 2 -9.99991 9.99993 9.99995 9.99995 9.99993 9.99992 -9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 -9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 -9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 -9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 -9.99991 9.99993 9.99995 9.99995 9.99993 9.99991 +9.99991 9.99993 9.99995 9.99995 9.99993 9.99992 +9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 +9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 +9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 +9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 +9.99991 9.99993 9.99995 9.99995 9.99993 9.99991 Species 3 -9.99991 9.99994 9.99997 9.99997 9.99994 9.99992 -9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 -9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 -9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 -9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 -9.99991 9.99994 9.99997 9.99997 9.99994 9.99991 +9.99991 9.99994 9.99997 9.99997 9.99994 9.99992 +9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 +9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 +9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 +9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 +9.99991 9.99994 9.99997 9.99997 9.99994 9.99991 Species 4 -13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 -13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 -13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 -13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 -13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 -13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 +13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 +13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 +13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 +13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 +13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 +13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 Species 5 -13.4981 13.4981 13.4982 13.4981 13.4981 13.4981 -13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 -13.4982 16.4131 20.2351 20.2351 16.4131 13.4981 -13.4982 16.4131 20.2351 20.2351 16.4131 13.4982 -13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 -13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 +13.4981 13.4981 13.4982 13.4981 13.4981 13.4981 +13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 +13.4982 16.4131 20.2351 20.2351 16.4131 13.4981 +13.4982 16.4131 20.2351 20.2351 16.4131 13.4982 +13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 +13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 Species 6 -13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 -13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 -13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 -13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 -13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 -13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 +13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 +13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 +13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 +13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 +13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 +13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 t = 1.00e-05 nst = 12 nfe = 0 nfi = 197 nni = 129 hu = 1.19e-06 @@ -143,52 +143,52 @@ t = 1.00e-03 nst = 46 nfe = 0 nfi = 820 nni = 582 hu = 8.40e-03 c values at t = 0.001: Species 1 -9.90702 9.91664 9.92836 9.93033 9.92253 9.91674 -9.91472 10.0747 10.2769 10.2785 10.0795 9.92253 -9.92446 10.2748 10.7181 10.7194 10.2785 9.93033 -9.92445 10.2744 10.7173 10.7181 10.2769 9.92836 -9.91469 10.0734 10.2744 10.2748 10.0747 9.91664 -9.90697 9.91469 9.92445 9.92446 9.91472 9.90702 +9.90702 9.91664 9.92836 9.93033 9.92253 9.91674 +9.91472 10.0747 10.2769 10.2785 10.0795 9.92253 +9.92446 10.2748 10.7181 10.7194 10.2785 9.93033 +9.92445 10.2744 10.7173 10.7181 10.2769 9.92836 +9.91469 10.0734 10.2744 10.2748 10.0747 9.91664 +9.90697 9.91469 9.92445 9.92446 9.91472 9.90702 Species 2 -9.90742 9.92474 9.94622 9.94819 9.93064 9.91713 -9.92282 10.2412 10.644 10.6457 10.2461 9.93064 -9.94232 10.6419 11.5267 11.5281 10.6457 9.94819 -9.94231 10.6415 11.5258 11.5267 10.644 9.94622 -9.92279 10.24 10.6415 10.6419 10.2412 9.92474 -9.90737 9.92279 9.94231 9.94232 9.92282 9.90742 +9.90742 9.92474 9.94622 9.94819 9.93064 9.91713 +9.92282 10.2412 10.644 10.6457 10.2461 9.93064 +9.94232 10.6419 11.5267 11.5281 10.6457 9.94819 +9.94231 10.6415 11.5258 11.5267 10.644 9.94622 +9.92279 10.24 10.6415 10.6419 10.2412 9.92474 +9.90737 9.92279 9.94231 9.94232 9.92282 9.90742 Species 3 -9.90781 9.93284 9.96408 9.96605 9.93874 9.91752 -9.93092 10.4078 11.0109 11.0127 10.4127 9.93874 -9.96017 11.0088 12.3339 12.3354 11.0127 9.96605 -9.96016 11.0083 12.333 12.3339 11.0109 9.96408 -9.93089 10.4065 11.0083 11.0088 10.4078 9.93284 -9.90776 9.93089 9.96016 9.96017 9.93092 9.90781 +9.90781 9.93284 9.96408 9.96605 9.93874 9.91752 +9.93092 10.4078 11.0109 11.0127 10.4127 9.93874 +9.96017 11.0088 12.3339 12.3354 11.0127 9.96605 +9.96016 11.0083 12.333 12.3339 11.0109 9.96408 +9.93089 10.4065 11.0083 11.0088 10.4078 9.93284 +9.90776 9.93089 9.96016 9.96017 9.93092 9.90781 Species 4 -297231 297750 298393 298451 297925 297520 -297692 307245 319327 319378 307390 297925 -298276 319264 345799 345840 319378 298451 -298276 319252 345772 345799 319327 298393 -297691 307208 319252 319264 307245 297750 -297229 297691 298276 298276 297692 297231 +297231 297750 298393 298451 297925 297520 +297692 307245 319327 319378 307390 297925 +298276 319264 345799 345840 319378 298451 +298276 319252 345772 345799 319327 298393 +297691 307208 319252 319264 307245 297750 +297229 297691 298276 298276 297692 297231 Species 5 -297231 297750 298393 298451 297925 297520 -297692 307245 319327 319378 307390 297925 -298276 319264 345799 345840 319378 298451 -298276 319252 345772 345799 319327 298393 -297691 307208 319252 319264 307245 297750 -297229 297691 298276 298276 297692 297231 +297231 297750 298393 298451 297925 297520 +297692 307245 319327 319378 307390 297925 +298276 319264 345799 345840 319378 298451 +298276 319252 345772 345799 319327 298393 +297691 307208 319252 319264 307245 297750 +297229 297691 298276 298276 297692 297231 Species 6 -297231 297750 298393 298451 297925 297520 -297692 307245 319327 319378 307390 297925 -298276 319264 345799 345840 319378 298451 -298276 319252 345772 345799 319327 298393 -297691 307208 319252 319264 307245 297750 -297229 297691 298276 298276 297692 297231 +297231 297750 298393 298451 297925 297520 +297692 307245 319327 319378 307390 297925 +298276 319264 345799 345840 319378 298451 +298276 319252 345772 345799 319327 298393 +297691 307208 319252 319264 307245 297750 +297229 297691 298276 298276 297692 297231 t = 1.00e-02 nst = 47 nfe = 0 nfi = 840 nni = 597 hu = 1.32e-02 @@ -199,52 +199,52 @@ t = 1.00e+00 nst = 69 nfe = 0 nfi = 1259 nni = 904 hu = 5.51e-02 c values at t = 1: Species 1 -1.58852 1.59924 1.62152 1.64765 1.67037 1.68149 -1.58533 1.59504 1.61548 1.63952 1.66033 1.67037 -1.57757 1.58548 1.6024 1.62235 1.63952 1.64765 -1.56821 1.57412 1.58706 1.6024 1.61548 1.62152 -1.56049 1.56463 1.57412 1.58548 1.59504 1.59924 -1.55733 1.56049 1.56821 1.57757 1.58533 1.58852 +1.58852 1.59924 1.62152 1.64765 1.67037 1.68149 +1.58533 1.59504 1.61548 1.63952 1.66033 1.67037 +1.57757 1.58548 1.6024 1.62235 1.63952 1.64765 +1.56821 1.57412 1.58706 1.6024 1.61548 1.62152 +1.56049 1.56463 1.57412 1.58548 1.59504 1.59924 +1.55733 1.56049 1.56821 1.57757 1.58533 1.58852 Species 2 -1.59067 1.60141 1.62371 1.64987 1.67262 1.68376 -1.58749 1.5972 1.61767 1.64174 1.66257 1.67262 -1.57972 1.58763 1.60457 1.62455 1.64174 1.64987 -1.57034 1.57627 1.58922 1.60457 1.61767 1.62371 -1.56261 1.56677 1.57627 1.58763 1.5972 1.60141 -1.55945 1.56261 1.57034 1.57972 1.58749 1.59067 +1.59067 1.60141 1.62371 1.64987 1.67262 1.68376 +1.58749 1.5972 1.61767 1.64174 1.66257 1.67262 +1.57972 1.58763 1.60457 1.62455 1.64174 1.64987 +1.57034 1.57627 1.58922 1.60457 1.61767 1.62371 +1.56261 1.56677 1.57627 1.58763 1.5972 1.60141 +1.55945 1.56261 1.57034 1.57972 1.58749 1.59067 Species 3 -1.59271 1.60346 1.62579 1.65198 1.67474 1.6859 -1.58952 1.59925 1.61974 1.64383 1.66469 1.67474 -1.58174 1.58967 1.60662 1.62662 1.64383 1.65198 -1.57236 1.57829 1.59126 1.60662 1.61974 1.62579 -1.56462 1.56878 1.57829 1.58967 1.59925 1.60346 -1.56146 1.56462 1.57236 1.58174 1.58952 1.59271 +1.59271 1.60346 1.62579 1.65198 1.67474 1.6859 +1.58952 1.59925 1.61974 1.64383 1.66469 1.67474 +1.58174 1.58967 1.60662 1.62662 1.64383 1.65198 +1.57236 1.57829 1.59126 1.60662 1.61974 1.62579 +1.56462 1.56878 1.57829 1.58967 1.59925 1.60346 +1.56146 1.56462 1.57236 1.58174 1.58952 1.59271 Species 4 -47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 -47622.9 47914.2 48528 49249.8 49874.6 50175.6 -47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 -47108.7 47286.2 47674.7 48135.1 48528 48709.2 -46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 -46782 46876.8 47108.7 47389.8 47622.9 47718.5 +47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 +47622.9 47914.2 48528 49249.8 49874.6 50175.6 +47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 +47108.7 47286.2 47674.7 48135.1 48528 48709.2 +46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 +46782 46876.8 47108.7 47389.8 47622.9 47718.5 Species 5 -47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 -47622.9 47914.2 48528 49249.8 49874.6 50175.6 -47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 -47108.7 47286.2 47674.7 48135.1 48528 48709.2 -46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 -46782 46876.8 47108.7 47389.8 47622.9 47718.5 +47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 +47622.9 47914.2 48528 49249.8 49874.6 50175.6 +47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 +47108.7 47286.2 47674.7 48135.1 48528 48709.2 +46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 +46782 46876.8 47108.7 47389.8 47622.9 47718.5 Species 6 -47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 -47622.9 47914.2 48528 49249.8 49874.6 50175.6 -47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 -47108.7 47286.2 47674.7 48135.1 48528 48709.2 -46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 -46782 46876.8 47108.7 47389.8 47622.9 47718.5 +47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 +47622.9 47914.2 48528 49249.8 49874.6 50175.6 +47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 +47108.7 47286.2 47674.7 48135.1 48528 48709.2 +46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 +46782 46876.8 47108.7 47389.8 47622.9 47718.5 t = 2.00e+00 nst = 81 nfe = 0 nfi = 1463 nni = 1048 hu = 1.54e-01 @@ -255,52 +255,52 @@ t = 4.00e+00 nst = 95 nfe = 0 nfi = 1708 nni = 1221 hu = 2.69e-01 c values at t = 4: Species 1 -1.19535 1.20368 1.2211 1.24157 1.25935 1.268 -1.1928 1.20035 1.21636 1.23523 1.25154 1.25935 -1.18657 1.19274 1.20602 1.22173 1.23523 1.24157 -1.17904 1.18368 1.19389 1.20602 1.21636 1.2211 -1.17284 1.17613 1.18368 1.19274 1.20035 1.20368 -1.17032 1.17284 1.17904 1.18657 1.1928 1.19535 +1.19535 1.20368 1.2211 1.24157 1.25935 1.268 +1.1928 1.20035 1.21636 1.23523 1.25154 1.25935 +1.18657 1.19274 1.20602 1.22173 1.23523 1.24157 +1.17904 1.18368 1.19389 1.20602 1.21636 1.2211 +1.17284 1.17613 1.18368 1.19274 1.20035 1.20368 +1.17032 1.17284 1.17904 1.18657 1.1928 1.19535 Species 2 -1.19538 1.20371 1.22113 1.24161 1.25938 1.26804 -1.19284 1.20038 1.21639 1.23526 1.25157 1.25938 -1.1866 1.19277 1.20606 1.22177 1.23526 1.24161 -1.17908 1.18371 1.19393 1.20606 1.21639 1.22113 -1.17288 1.17616 1.18371 1.19277 1.20038 1.20371 -1.17035 1.17288 1.17908 1.1866 1.19284 1.19538 +1.19538 1.20371 1.22113 1.24161 1.25938 1.26804 +1.19284 1.20038 1.21639 1.23526 1.25157 1.25938 +1.1866 1.19277 1.20606 1.22177 1.23526 1.24161 +1.17908 1.18371 1.19393 1.20606 1.21639 1.22113 +1.17288 1.17616 1.18371 1.19277 1.20038 1.20371 +1.17035 1.17288 1.17908 1.1866 1.19284 1.19538 Species 3 -1.19542 1.20374 1.22116 1.24164 1.25942 1.26807 -1.19287 1.20042 1.21643 1.2353 1.25161 1.25942 -1.18663 1.1928 1.20609 1.2218 1.2353 1.24164 -1.17911 1.18374 1.19396 1.20609 1.21643 1.22116 -1.17291 1.17619 1.18374 1.1928 1.20042 1.20374 -1.17039 1.17291 1.17911 1.18663 1.19287 1.19542 +1.19542 1.20374 1.22116 1.24164 1.25942 1.26807 +1.19287 1.20042 1.21643 1.2353 1.25161 1.25942 +1.18663 1.1928 1.20609 1.2218 1.2353 1.24164 +1.17911 1.18374 1.19396 1.20609 1.21643 1.22116 +1.17291 1.17619 1.18374 1.1928 1.20042 1.20374 +1.17039 1.17291 1.17911 1.18663 1.19287 1.19542 Species 4 -35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 -35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 -35597.2 35782 36180.5 36651.6 37056.3 37246.5 -35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 -35185.4 35283.8 35510.4 35782 36010.4 36110.2 -35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 +35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 +35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 +35597.2 35782 36180.5 36651.6 37056.3 37246.5 +35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 +35185.4 35283.8 35510.4 35782 36010.4 36110.2 +35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 Species 5 -35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 -35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 -35597.2 35782 36180.5 36651.6 37056.3 37246.5 -35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 -35185.4 35283.8 35510.4 35782 36010.4 36110.2 -35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 +35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 +35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 +35597.2 35782 36180.5 36651.6 37056.3 37246.5 +35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 +35185.4 35283.8 35510.4 35782 36010.4 36110.2 +35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 Species 6 -35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 -35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 -35597.2 35782 36180.5 36651.6 37056.3 37246.5 -35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 -35185.4 35283.8 35510.4 35782 36010.4 36110.2 -35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 +35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 +35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 +35597.2 35782 36180.5 36651.6 37056.3 37246.5 +35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 +35185.4 35283.8 35510.4 35782 36010.4 36110.2 +35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 t = 5.00e+00 nst = 98 nfe = 0 nfi = 1767 nni = 1262 hu = 3.36e-01 @@ -311,52 +311,52 @@ t = 7.00e+00 nst = 100 nfe = 0 nfi = 1798 nni = 1283 hu = 2.99e+00 c values at t = 7: Species 1 -1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 -1.18601 1.19352 1.20945 1.22822 1.24445 1.25222 -1.17981 1.18594 1.19917 1.2148 1.22822 1.23454 -1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 -1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 -1.16363 1.16615 1.17232 1.17981 1.18601 1.18855 +1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 +1.18601 1.19352 1.20945 1.22822 1.24445 1.25222 +1.17981 1.18594 1.19917 1.2148 1.22822 1.23454 +1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 +1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 +1.16363 1.16615 1.17232 1.17981 1.18601 1.18855 Species 2 -1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 -1.18601 1.19352 1.20945 1.22823 1.24445 1.25222 -1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 -1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 -1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 -1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 +1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 +1.18601 1.19352 1.20945 1.22823 1.24445 1.25222 +1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 +1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 +1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 +1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 Species 3 -1.18855 1.19684 1.21416 1.23454 1.25223 1.26083 -1.18601 1.19352 1.20945 1.22823 1.24445 1.25223 -1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 -1.17232 1.17693 1.1871 1.19917 1.20945 1.21416 -1.16615 1.16941 1.17693 1.18594 1.19352 1.19684 -1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 +1.18855 1.19684 1.21416 1.23454 1.25223 1.26083 +1.18601 1.19352 1.20945 1.22823 1.24445 1.25223 +1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 +1.17232 1.17693 1.1871 1.19917 1.20945 1.21416 +1.16615 1.16941 1.17693 1.18594 1.19352 1.19684 +1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 Species 4 -35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 -35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 -35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 -35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 -34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 -34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 +35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 +35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 +35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 +35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 +34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 +34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 Species 5 -35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 -35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 -35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 -35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 -34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 -34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 +35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 +35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 +35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 +35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 +34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 +34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 Species 6 -35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 -35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 -35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 -35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 -34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 -34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 +35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 +35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 +35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 +35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 +34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 +34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 t = 8.00e+00 nst = 100 nfe = 0 nfi = 1798 nni = 1283 hu = 2.99e+00 @@ -367,75 +367,75 @@ t = 1.00e+01 nst = 101 nfe = 0 nfi = 1813 nni = 1293 hu = 6.31e+00 c values at t = 10: Species 1 -1.18839 1.19667 1.214 1.23437 1.25206 1.26066 -1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 -1.17965 1.18578 1.199 1.21463 1.22806 1.23437 -1.17216 1.17677 1.18693 1.199 1.20929 1.214 -1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 -1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 +1.18839 1.19667 1.214 1.23437 1.25206 1.26066 +1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 +1.17965 1.18578 1.199 1.21463 1.22806 1.23437 +1.17216 1.17677 1.18693 1.199 1.20929 1.214 +1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 +1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 Species 2 -1.18839 1.19667 1.214 1.23437 1.25206 1.26066 -1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 -1.17965 1.18578 1.199 1.21463 1.22806 1.23437 -1.17216 1.17677 1.18693 1.199 1.20929 1.214 -1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 -1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 +1.18839 1.19667 1.214 1.23437 1.25206 1.26066 +1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 +1.17965 1.18578 1.199 1.21463 1.22806 1.23437 +1.17216 1.17677 1.18693 1.199 1.20929 1.214 +1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 +1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 Species 3 -1.18839 1.19667 1.214 1.23437 1.25206 1.26066 -1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 -1.17965 1.18578 1.199 1.21463 1.22806 1.23437 -1.17216 1.17677 1.18693 1.199 1.20929 1.214 -1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 -1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 +1.18839 1.19667 1.214 1.23437 1.25206 1.26066 +1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 +1.17965 1.18578 1.199 1.21463 1.22806 1.23437 +1.17216 1.17677 1.18693 1.199 1.20929 1.214 +1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 +1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 Species 4 -35650.8 35899 36418.5 37029.4 37559.6 37817.5 -35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 -35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 -35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 -34978.7 35076.6 35302.1 35572.4 35799.7 35899 -34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 +35650.8 35899 36418.5 37029.4 37559.6 37817.5 +35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 +35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 +35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 +34978.7 35076.6 35302.1 35572.4 35799.7 35899 +34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 Species 5 -35650.8 35899 36418.5 37029.4 37559.6 37817.5 -35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 -35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 -35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 -34978.7 35076.6 35302.1 35572.4 35799.7 35899 -34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 +35650.8 35899 36418.5 37029.4 37559.6 37817.5 +35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 +35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 +35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 +34978.7 35076.6 35302.1 35572.4 35799.7 35899 +34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 Species 6 -35650.8 35899 36418.5 37029.4 37559.6 37817.5 -35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 -35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 -35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 -34978.7 35076.6 35302.1 35572.4 35799.7 35899 -34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 +35650.8 35899 36418.5 37029.4 37559.6 37817.5 +35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 +35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 +35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 +34978.7 35076.6 35302.1 35572.4 35799.7 35899 +34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 148 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 101 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 1813 - Number of f-s (SPGMR) = 4359 - Number of f-s (TOTAL) = 4359 - Number of setups = 72 - Number of nonlinear iterations = 1293 - Number of linear iterations = 4359 - Number of preconditioner evaluations = 72 - Number of preconditioner solves = 5618 - Number of error test failures = 1 - Number of nonlinear conv. failures = 25 - Number of linear convergence failures = 238 - Average Krylov subspace dimension = 3.371 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 101 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 1813 + Number of f-s (SPGMR) = 4359 + Number of f-s (TOTAL) = 4359 + Number of setups = 72 + Number of nonlinear iterations = 1293 + Number of linear iterations = 4359 + Number of preconditioner evaluations = 72 + Number of preconditioner solves = 5618 + Number of error test failures = 1 + Number of nonlinear conv. failures = 25 + Number of linear convergence failures = 238 + Average Krylov subspace dimension = 3.371 ---------------------------------------------------------------------------- @@ -487,24 +487,24 @@ t = 1.00e+01 nst = 101 nfe = 0 nfi = 1813 nni = 1293 hu = 6.31e+00 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 154 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 101 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 1813 - Number of f-s (SPGMR) = 4359 - Number of f-s (TOTAL) = 4359 - Number of setups = 72 - Number of nonlinear iterations = 1293 - Number of linear iterations = 4359 - Number of preconditioner evaluations = 72 - Number of preconditioner solves = 5618 - Number of error test failures = 1 - Number of nonlinear conv. failures = 25 - Number of linear convergence failures = 238 - Average Krylov subspace dimension = 3.371 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 101 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 1813 + Number of f-s (SPGMR) = 4359 + Number of f-s (TOTAL) = 4359 + Number of setups = 72 + Number of nonlinear iterations = 1293 + Number of linear iterations = 4359 + Number of preconditioner evaluations = 72 + Number of preconditioner solves = 5618 + Number of error test failures = 1 + Number of nonlinear conv. failures = 25 + Number of linear convergence failures = 238 + Average Krylov subspace dimension = 3.371 ---------------------------------------------------------------------------- @@ -556,24 +556,24 @@ t = 1.00e+01 nst = 234 nfe = 0 nfi = 4045 nni = 2856 hu = 3.93e-01 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 160 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 234 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 4045 - Number of f-s (SPGMR) = 10634 - Number of f-s (TOTAL) = 10634 - Number of setups = 277 - Number of nonlinear iterations = 2856 - Number of linear iterations = 10634 - Number of preconditioner evaluations = 277 - Number of preconditioner solves = 13350 - Number of error test failures = 1 - Number of nonlinear conv. failures = 166 - Number of linear convergence failures = 1036 - Average Krylov subspace dimension = 3.723 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 234 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 4045 + Number of f-s (SPGMR) = 10634 + Number of f-s (TOTAL) = 10634 + Number of setups = 277 + Number of nonlinear iterations = 2856 + Number of linear iterations = 10634 + Number of preconditioner evaluations = 277 + Number of preconditioner solves = 13350 + Number of error test failures = 1 + Number of nonlinear conv. failures = 166 + Number of linear convergence failures = 1036 + Average Krylov subspace dimension = 3.723 ---------------------------------------------------------------------------- @@ -625,24 +625,24 @@ t = 1.00e+01 nst = 234 nfe = 0 nfi = 4045 nni = 2856 hu = 3.93e-01 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 166 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 234 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 4045 - Number of f-s (SPGMR) = 10633 - Number of f-s (TOTAL) = 10633 - Number of setups = 277 - Number of nonlinear iterations = 2856 - Number of linear iterations = 10633 - Number of preconditioner evaluations = 277 - Number of preconditioner solves = 13349 - Number of error test failures = 1 - Number of nonlinear conv. failures = 166 - Number of linear convergence failures = 1036 - Average Krylov subspace dimension = 3.723 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 234 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 4045 + Number of f-s (SPGMR) = 10633 + Number of f-s (TOTAL) = 10633 + Number of setups = 277 + Number of nonlinear iterations = 2856 + Number of linear iterations = 10633 + Number of preconditioner evaluations = 277 + Number of preconditioner solves = 13349 + Number of error test failures = 1 + Number of nonlinear conv. failures = 166 + Number of linear convergence failures = 1036 + Average Krylov subspace dimension = 3.723 ---------------------------------------------------------------------------- diff --git a/examples/arkode/C_serial/ark_KrylovDemo_prec_2.out b/examples/arkode/C_serial/ark_KrylovDemo_prec_2.out index 8a09c9a96d..1c5be0014a 100644 --- a/examples/arkode/C_serial/ark_KrylovDemo_prec_2.out +++ b/examples/arkode/C_serial/ark_KrylovDemo_prec_2.out @@ -10,9 +10,9 @@ b parameter = 1 Diffusion coefficients: Dprey = 1 Dpred = 0.5 Rate parameter alpha = 1 -Mesh dimensions (mx,my) are 6, 6. Total system size is neq = 216 +Mesh dimensions (mx,my) are 6, 6. Total system size is neq = 216 -Tolerances: reltol = 1e-05, abstol = 1e-05 +Tolerances: reltol = 1e-05, abstol = 1e-05 Preconditioning uses a product of: (1) Gauss-Seidel iterations with itmax = 5 iterations, and @@ -31,52 +31,52 @@ Gram-Schmidt method type is gstype = SUN_MODIFIED_GS c values at t = 0: Species 1 -10 10 10 10 10 10 -10 10.1678 10.3775 10.3775 10.1678 10 -10 10.3775 10.8493 10.8493 10.3775 10 -10 10.3775 10.8493 10.8493 10.3775 10 -10 10.1678 10.3775 10.3775 10.1678 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.1678 10.3775 10.3775 10.1678 10 +10 10.3775 10.8493 10.8493 10.3775 10 +10 10.3775 10.8493 10.8493 10.3775 10 +10 10.1678 10.3775 10.3775 10.1678 10 +10 10 10 10 10 10 Species 2 -10 10 10 10 10 10 -10 10.3355 10.755 10.755 10.3355 10 -10 10.755 11.6987 11.6987 10.755 10 -10 10.755 11.6987 11.6987 10.755 10 -10 10.3355 10.755 10.755 10.3355 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.3355 10.755 10.755 10.3355 10 +10 10.755 11.6987 11.6987 10.755 10 +10 10.755 11.6987 11.6987 10.755 10 +10 10.3355 10.755 10.755 10.3355 10 +10 10 10 10 10 10 Species 3 -10 10 10 10 10 10 -10 10.5033 11.1325 11.1325 10.5033 10 -10 11.1325 12.548 12.548 11.1325 10 -10 11.1325 12.548 12.548 11.1325 10 -10 10.5033 11.1325 11.1325 10.5033 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.5033 11.1325 11.1325 10.5033 10 +10 11.1325 12.548 12.548 11.1325 10 +10 11.1325 12.548 12.548 11.1325 10 +10 10.5033 11.1325 11.1325 10.5033 10 +10 10 10 10 10 10 Species 4 -10 10 10 10 10 10 -10 10.6711 11.5099 11.5099 10.6711 10 -10 11.5099 13.3974 13.3974 11.5099 10 -10 11.5099 13.3974 13.3974 11.5099 10 -10 10.6711 11.5099 11.5099 10.6711 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.6711 11.5099 11.5099 10.6711 10 +10 11.5099 13.3974 13.3974 11.5099 10 +10 11.5099 13.3974 13.3974 11.5099 10 +10 10.6711 11.5099 11.5099 10.6711 10 +10 10 10 10 10 10 Species 5 -10 10 10 10 10 10 -10 10.8389 11.8874 11.8874 10.8389 10 -10 11.8874 14.2467 14.2467 11.8874 10 -10 11.8874 14.2467 14.2467 11.8874 10 -10 10.8389 11.8874 11.8874 10.8389 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 10.8389 11.8874 11.8874 10.8389 10 +10 11.8874 14.2467 14.2467 11.8874 10 +10 11.8874 14.2467 14.2467 11.8874 10 +10 10.8389 11.8874 11.8874 10.8389 10 +10 10 10 10 10 10 Species 6 -10 10 10 10 10 10 -10 11.0066 12.2649 12.2649 11.0066 10 -10 12.2649 15.0961 15.0961 12.2649 10 -10 12.2649 15.0961 15.0961 12.2649 10 -10 11.0066 12.2649 12.2649 11.0066 10 -10 10 10 10 10 10 +10 10 10 10 10 10 +10 11.0066 12.2649 12.2649 11.0066 10 +10 12.2649 15.0961 15.0961 12.2649 10 +10 12.2649 15.0961 15.0961 12.2649 10 +10 11.0066 12.2649 12.2649 11.0066 10 +10 10 10 10 10 10 t = 1.00e-08 nst = 3 nfe = 0 nfi = 45 nni = 27 hu = 6.86e-08 @@ -87,52 +87,52 @@ t = 1.00e-06 nst = 4 nfe = 0 nfi = 77 nni = 49 hu = 1.20e-06 c values at t = 1e-06: Species 1 -9.99991 9.99992 9.99993 9.99993 9.99993 9.99992 -9.99992 10.1677 10.3774 10.3774 10.1677 9.99993 -9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 -9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 -9.99992 10.1677 10.3774 10.3774 10.1677 9.99992 -9.99991 9.99992 9.99993 9.99993 9.99992 9.99991 +9.99991 9.99992 9.99993 9.99993 9.99993 9.99992 +9.99992 10.1677 10.3774 10.3774 10.1677 9.99993 +9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 +9.99993 10.3774 10.8492 10.8492 10.3774 9.99993 +9.99992 10.1677 10.3774 10.3774 10.1677 9.99992 +9.99991 9.99992 9.99993 9.99993 9.99992 9.99991 Species 2 -9.99991 9.99993 9.99995 9.99995 9.99993 9.99992 -9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 -9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 -9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 -9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 -9.99991 9.99993 9.99995 9.99995 9.99993 9.99991 +9.99991 9.99993 9.99995 9.99995 9.99993 9.99992 +9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 +9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 +9.99995 10.7549 11.6985 11.6985 10.7549 9.99995 +9.99993 10.3355 10.7549 10.7549 10.3355 9.99993 +9.99991 9.99993 9.99995 9.99995 9.99993 9.99991 Species 3 -9.99991 9.99994 9.99997 9.99997 9.99994 9.99992 -9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 -9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 -9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 -9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 -9.99991 9.99994 9.99997 9.99997 9.99994 9.99991 +9.99991 9.99994 9.99997 9.99997 9.99994 9.99992 +9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 +9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 +9.99997 11.1323 12.5478 12.5478 11.1323 9.99997 +9.99994 10.5032 11.1323 11.1323 10.5032 9.99994 +9.99991 9.99994 9.99997 9.99997 9.99994 9.99991 Species 4 -13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 -13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 -13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 -13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 -13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 -13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 +13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 +13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 +13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 +13.4981 15.8919 19.0288 19.0288 15.8919 13.4981 +13.4981 14.5496 15.8919 15.8919 14.5496 13.4981 +13.4981 13.4981 13.4981 13.4981 13.4981 13.4981 Species 5 -13.4981 13.4981 13.4982 13.4981 13.4981 13.4981 -13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 -13.4982 16.4131 20.2351 20.2351 16.4131 13.4981 -13.4982 16.4131 20.2351 20.2351 16.4131 13.4982 -13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 -13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 +13.4981 13.4981 13.4982 13.4981 13.4981 13.4981 +13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 +13.4982 16.4131 20.2351 20.2351 16.4131 13.4981 +13.4982 16.4131 20.2351 20.2351 16.4131 13.4982 +13.4981 14.7783 16.4131 16.4131 14.7783 13.4981 +13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 Species 6 -13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 -13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 -13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 -13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 -13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 -13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 +13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 +13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 +13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 +13.4982 16.9343 21.4414 21.4414 16.9343 13.4982 +13.4981 15.0071 16.9343 16.9343 15.0071 13.4981 +13.4981 13.4981 13.4982 13.4982 13.4981 13.4981 t = 1.00e-05 nst = 12 nfe = 0 nfi = 197 nni = 129 hu = 1.19e-06 @@ -143,52 +143,52 @@ t = 1.00e-03 nst = 46 nfe = 0 nfi = 820 nni = 582 hu = 8.40e-03 c values at t = 0.001: Species 1 -9.90702 9.91664 9.92836 9.93033 9.92253 9.91674 -9.91472 10.0747 10.2769 10.2785 10.0795 9.92253 -9.92446 10.2748 10.7181 10.7194 10.2785 9.93033 -9.92445 10.2744 10.7173 10.7181 10.2769 9.92836 -9.91469 10.0734 10.2744 10.2748 10.0747 9.91664 -9.90697 9.91469 9.92445 9.92446 9.91472 9.90702 +9.90702 9.91664 9.92836 9.93033 9.92253 9.91674 +9.91472 10.0747 10.2769 10.2785 10.0795 9.92253 +9.92446 10.2748 10.7181 10.7194 10.2785 9.93033 +9.92445 10.2744 10.7173 10.7181 10.2769 9.92836 +9.91469 10.0734 10.2744 10.2748 10.0747 9.91664 +9.90697 9.91469 9.92445 9.92446 9.91472 9.90702 Species 2 -9.90742 9.92474 9.94622 9.94819 9.93064 9.91713 -9.92282 10.2412 10.644 10.6457 10.2461 9.93064 -9.94232 10.6419 11.5267 11.5281 10.6457 9.94819 -9.94231 10.6415 11.5258 11.5267 10.644 9.94622 -9.92279 10.24 10.6415 10.6419 10.2412 9.92474 -9.90737 9.92279 9.94231 9.94232 9.92282 9.90742 +9.90742 9.92474 9.94622 9.94819 9.93064 9.91713 +9.92282 10.2412 10.644 10.6457 10.2461 9.93064 +9.94232 10.6419 11.5267 11.5281 10.6457 9.94819 +9.94231 10.6415 11.5258 11.5267 10.644 9.94622 +9.92279 10.24 10.6415 10.6419 10.2412 9.92474 +9.90737 9.92279 9.94231 9.94232 9.92282 9.90742 Species 3 -9.90781 9.93284 9.96408 9.96605 9.93874 9.91752 -9.93092 10.4078 11.0109 11.0127 10.4127 9.93874 -9.96017 11.0088 12.3339 12.3354 11.0127 9.96605 -9.96016 11.0083 12.333 12.3339 11.0109 9.96408 -9.93089 10.4065 11.0083 11.0088 10.4078 9.93284 -9.90776 9.93089 9.96016 9.96017 9.93092 9.90781 +9.90781 9.93284 9.96408 9.96605 9.93874 9.91752 +9.93092 10.4078 11.0109 11.0127 10.4127 9.93874 +9.96017 11.0088 12.3339 12.3354 11.0127 9.96605 +9.96016 11.0083 12.333 12.3339 11.0109 9.96408 +9.93089 10.4065 11.0083 11.0088 10.4078 9.93284 +9.90776 9.93089 9.96016 9.96017 9.93092 9.90781 Species 4 -297231 297750 298393 298451 297925 297520 -297692 307245 319327 319378 307390 297925 -298276 319264 345799 345840 319378 298451 -298276 319252 345772 345799 319327 298393 -297691 307208 319252 319264 307245 297750 -297229 297691 298276 298276 297692 297231 +297231 297750 298393 298451 297925 297520 +297692 307245 319327 319378 307390 297925 +298276 319264 345799 345840 319378 298451 +298276 319252 345772 345799 319327 298393 +297691 307208 319252 319264 307245 297750 +297229 297691 298276 298276 297692 297231 Species 5 -297231 297750 298393 298451 297925 297520 -297692 307245 319327 319378 307390 297925 -298276 319264 345799 345840 319378 298451 -298276 319252 345772 345799 319327 298393 -297691 307208 319252 319264 307245 297750 -297229 297691 298276 298276 297692 297231 +297231 297750 298393 298451 297925 297520 +297692 307245 319327 319378 307390 297925 +298276 319264 345799 345840 319378 298451 +298276 319252 345772 345799 319327 298393 +297691 307208 319252 319264 307245 297750 +297229 297691 298276 298276 297692 297231 Species 6 -297231 297750 298393 298451 297925 297520 -297692 307245 319327 319378 307390 297925 -298276 319264 345799 345840 319378 298451 -298276 319252 345772 345799 319327 298393 -297691 307208 319252 319264 307245 297750 -297229 297691 298276 298276 297692 297231 +297231 297750 298393 298451 297925 297520 +297692 307245 319327 319378 307390 297925 +298276 319264 345799 345840 319378 298451 +298276 319252 345772 345799 319327 298393 +297691 307208 319252 319264 307245 297750 +297229 297691 298276 298276 297692 297231 t = 1.00e-02 nst = 47 nfe = 0 nfi = 840 nni = 597 hu = 1.32e-02 @@ -199,52 +199,52 @@ t = 1.00e+00 nst = 69 nfe = 0 nfi = 1259 nni = 904 hu = 5.51e-02 c values at t = 1: Species 1 -1.58852 1.59924 1.62152 1.64765 1.67037 1.68149 -1.58533 1.59504 1.61548 1.63952 1.66033 1.67037 -1.57757 1.58548 1.6024 1.62235 1.63952 1.64765 -1.56821 1.57412 1.58706 1.6024 1.61548 1.62152 -1.56049 1.56463 1.57412 1.58548 1.59504 1.59924 -1.55733 1.56049 1.56821 1.57757 1.58533 1.58852 +1.58852 1.59924 1.62152 1.64765 1.67037 1.68149 +1.58533 1.59504 1.61548 1.63952 1.66033 1.67037 +1.57757 1.58548 1.6024 1.62235 1.63952 1.64765 +1.56821 1.57412 1.58706 1.6024 1.61548 1.62152 +1.56049 1.56463 1.57412 1.58548 1.59504 1.59924 +1.55733 1.56049 1.56821 1.57757 1.58533 1.58852 Species 2 -1.59067 1.60141 1.62371 1.64987 1.67262 1.68376 -1.58749 1.5972 1.61767 1.64174 1.66257 1.67262 -1.57972 1.58763 1.60457 1.62455 1.64174 1.64987 -1.57034 1.57627 1.58922 1.60457 1.61767 1.62371 -1.56261 1.56677 1.57627 1.58763 1.5972 1.60141 -1.55945 1.56261 1.57034 1.57972 1.58749 1.59067 +1.59067 1.60141 1.62371 1.64987 1.67262 1.68376 +1.58749 1.5972 1.61767 1.64174 1.66257 1.67262 +1.57972 1.58763 1.60457 1.62455 1.64174 1.64987 +1.57034 1.57627 1.58922 1.60457 1.61767 1.62371 +1.56261 1.56677 1.57627 1.58763 1.5972 1.60141 +1.55945 1.56261 1.57034 1.57972 1.58749 1.59067 Species 3 -1.59271 1.60346 1.62579 1.65198 1.67474 1.6859 -1.58952 1.59925 1.61974 1.64383 1.66469 1.67474 -1.58174 1.58967 1.60662 1.62662 1.64383 1.65198 -1.57236 1.57829 1.59126 1.60662 1.61974 1.62579 -1.56462 1.56878 1.57829 1.58967 1.59925 1.60346 -1.56146 1.56462 1.57236 1.58174 1.58952 1.59271 +1.59271 1.60346 1.62579 1.65198 1.67474 1.6859 +1.58952 1.59925 1.61974 1.64383 1.66469 1.67474 +1.58174 1.58967 1.60662 1.62662 1.64383 1.65198 +1.57236 1.57829 1.59126 1.60662 1.61974 1.62579 +1.56462 1.56878 1.57829 1.58967 1.59925 1.60346 +1.56146 1.56462 1.57236 1.58174 1.58952 1.59271 Species 4 -47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 -47622.9 47914.2 48528 49249.8 49874.6 50175.6 -47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 -47108.7 47286.2 47674.7 48135.1 48528 48709.2 -46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 -46782 46876.8 47108.7 47389.8 47622.9 47718.5 +47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 +47622.9 47914.2 48528 49249.8 49874.6 50175.6 +47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 +47108.7 47286.2 47674.7 48135.1 48528 48709.2 +46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 +46782 46876.8 47108.7 47389.8 47622.9 47718.5 Species 5 -47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 -47622.9 47914.2 48528 49249.8 49874.6 50175.6 -47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 -47108.7 47286.2 47674.7 48135.1 48528 48709.2 -46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 -46782 46876.8 47108.7 47389.8 47622.9 47718.5 +47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 +47622.9 47914.2 48528 49249.8 49874.6 50175.6 +47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 +47108.7 47286.2 47674.7 48135.1 48528 48709.2 +46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 +46782 46876.8 47108.7 47389.8 47622.9 47718.5 Species 6 -47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 -47622.9 47914.2 48528 49249.8 49874.6 50175.6 -47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 -47108.7 47286.2 47674.7 48135.1 48528 48709.2 -46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 -46782 46876.8 47108.7 47389.8 47622.9 47718.5 +47718.5 48040.4 48709.2 49493.7 50175.6 50509.6 +47622.9 47914.2 48528 49249.8 49874.6 50175.6 +47389.8 47627.1 48135.1 48734.3 49249.8 49493.7 +47108.7 47286.2 47674.7 48135.1 48528 48709.2 +46876.8 47001.3 47286.2 47627.1 47914.2 48040.4 +46782 46876.8 47108.7 47389.8 47622.9 47718.5 t = 2.00e+00 nst = 81 nfe = 0 nfi = 1463 nni = 1048 hu = 1.54e-01 @@ -255,52 +255,52 @@ t = 4.00e+00 nst = 95 nfe = 0 nfi = 1708 nni = 1221 hu = 2.69e-01 c values at t = 4: Species 1 -1.19535 1.20368 1.2211 1.24157 1.25935 1.268 -1.1928 1.20035 1.21636 1.23523 1.25154 1.25935 -1.18657 1.19274 1.20602 1.22173 1.23523 1.24157 -1.17904 1.18368 1.19389 1.20602 1.21636 1.2211 -1.17284 1.17613 1.18368 1.19274 1.20035 1.20368 -1.17032 1.17284 1.17904 1.18657 1.1928 1.19535 +1.19535 1.20368 1.2211 1.24157 1.25935 1.268 +1.1928 1.20035 1.21636 1.23523 1.25154 1.25935 +1.18657 1.19274 1.20602 1.22173 1.23523 1.24157 +1.17904 1.18368 1.19389 1.20602 1.21636 1.2211 +1.17284 1.17613 1.18368 1.19274 1.20035 1.20368 +1.17032 1.17284 1.17904 1.18657 1.1928 1.19535 Species 2 -1.19538 1.20371 1.22113 1.24161 1.25938 1.26804 -1.19284 1.20038 1.21639 1.23526 1.25157 1.25938 -1.1866 1.19277 1.20606 1.22177 1.23526 1.24161 -1.17908 1.18371 1.19393 1.20606 1.21639 1.22113 -1.17288 1.17616 1.18371 1.19277 1.20038 1.20371 -1.17035 1.17288 1.17908 1.1866 1.19284 1.19538 +1.19538 1.20371 1.22113 1.24161 1.25938 1.26804 +1.19284 1.20038 1.21639 1.23526 1.25157 1.25938 +1.1866 1.19277 1.20606 1.22177 1.23526 1.24161 +1.17908 1.18371 1.19393 1.20606 1.21639 1.22113 +1.17288 1.17616 1.18371 1.19277 1.20038 1.20371 +1.17035 1.17288 1.17908 1.1866 1.19284 1.19538 Species 3 -1.19542 1.20374 1.22116 1.24164 1.25942 1.26807 -1.19287 1.20042 1.21643 1.2353 1.25161 1.25942 -1.18663 1.1928 1.20609 1.2218 1.2353 1.24164 -1.17911 1.18374 1.19396 1.20609 1.21643 1.22116 -1.17291 1.17619 1.18374 1.1928 1.20042 1.20374 -1.17039 1.17291 1.17911 1.18663 1.19287 1.19542 +1.19542 1.20374 1.22116 1.24164 1.25942 1.26807 +1.19287 1.20042 1.21643 1.2353 1.25161 1.25942 +1.18663 1.1928 1.20609 1.2218 1.2353 1.24164 +1.17911 1.18374 1.19396 1.20609 1.21643 1.22116 +1.17291 1.17619 1.18374 1.1928 1.20042 1.20374 +1.17039 1.17291 1.17911 1.18663 1.19287 1.19542 Species 4 -35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 -35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 -35597.2 35782 36180.5 36651.6 37056.3 37246.5 -35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 -35185.4 35283.8 35510.4 35782 36010.4 36110.2 -35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 +35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 +35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 +35597.2 35782 36180.5 36651.6 37056.3 37246.5 +35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 +35185.4 35283.8 35510.4 35782 36010.4 36110.2 +35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 Species 5 -35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 -35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 -35597.2 35782 36180.5 36651.6 37056.3 37246.5 -35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 -35185.4 35283.8 35510.4 35782 36010.4 36110.2 -35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 +35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 +35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 +35597.2 35782 36180.5 36651.6 37056.3 37246.5 +35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 +35185.4 35283.8 35510.4 35782 36010.4 36110.2 +35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 Species 6 -35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 -35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 -35597.2 35782 36180.5 36651.6 37056.3 37246.5 -35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 -35185.4 35283.8 35510.4 35782 36010.4 36110.2 -35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 +35860.6 36110.2 36632.4 37246.5 37779.5 38038.7 +35784.2 36010.4 36490.4 37056.3 37545.3 37779.5 +35597.2 35782 36180.5 36651.6 37056.3 37246.5 +35371.4 35510.4 35816.7 36180.5 36490.4 36632.4 +35185.4 35283.8 35510.4 35782 36010.4 36110.2 +35109.7 35185.4 35371.4 35597.2 35784.2 35860.6 t = 5.00e+00 nst = 98 nfe = 0 nfi = 1767 nni = 1262 hu = 3.36e-01 @@ -311,52 +311,52 @@ t = 7.00e+00 nst = 100 nfe = 0 nfi = 1798 nni = 1283 hu = 2.99e+00 c values at t = 7: Species 1 -1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 -1.18601 1.19352 1.20945 1.22822 1.24445 1.25222 -1.17981 1.18594 1.19917 1.2148 1.22822 1.23454 -1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 -1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 -1.16363 1.16615 1.17232 1.17981 1.18601 1.18855 +1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 +1.18601 1.19352 1.20945 1.22822 1.24445 1.25222 +1.17981 1.18594 1.19917 1.2148 1.22822 1.23454 +1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 +1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 +1.16363 1.16615 1.17232 1.17981 1.18601 1.18855 Species 2 -1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 -1.18601 1.19352 1.20945 1.22823 1.24445 1.25222 -1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 -1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 -1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 -1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 +1.18855 1.19683 1.21416 1.23454 1.25222 1.26083 +1.18601 1.19352 1.20945 1.22823 1.24445 1.25222 +1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 +1.17232 1.17693 1.18709 1.19917 1.20945 1.21416 +1.16615 1.16941 1.17693 1.18594 1.19352 1.19683 +1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 Species 3 -1.18855 1.19684 1.21416 1.23454 1.25223 1.26083 -1.18601 1.19352 1.20945 1.22823 1.24445 1.25223 -1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 -1.17232 1.17693 1.1871 1.19917 1.20945 1.21416 -1.16615 1.16941 1.17693 1.18594 1.19352 1.19684 -1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 +1.18855 1.19684 1.21416 1.23454 1.25223 1.26083 +1.18601 1.19352 1.20945 1.22823 1.24445 1.25223 +1.17981 1.18594 1.19917 1.2148 1.22823 1.23454 +1.17232 1.17693 1.1871 1.19917 1.20945 1.21416 +1.16615 1.16941 1.17693 1.18594 1.19352 1.19684 +1.16364 1.16615 1.17232 1.17981 1.18601 1.18855 Species 4 -35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 -35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 -35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 -35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 -34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 -34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 +35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 +35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 +35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 +35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 +34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 +34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 Species 5 -35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 -35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 -35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 -35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 -34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 -34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 +35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 +35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 +35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 +35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 +34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 +34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 Species 6 -35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 -35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 -35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 -35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 -34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 -34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 +35655.6 35903.8 36423.4 37034.4 37564.7 37822.6 +35579.5 35804.5 36282.2 36845.2 37331.8 37564.7 +35393.4 35577.2 35973.8 36442.5 36845.2 37034.4 +35168.6 35306.9 35611.7 35973.8 36282.2 36423.4 +34983.5 35081.4 35306.9 35577.2 35804.5 35903.8 +34908.2 34983.5 35168.6 35393.4 35579.5 35655.6 t = 8.00e+00 nst = 100 nfe = 0 nfi = 1798 nni = 1283 hu = 2.99e+00 @@ -367,75 +367,75 @@ t = 1.00e+01 nst = 101 nfe = 0 nfi = 1813 nni = 1293 hu = 6.31e+00 c values at t = 10: Species 1 -1.18839 1.19667 1.214 1.23437 1.25206 1.26066 -1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 -1.17965 1.18578 1.199 1.21463 1.22806 1.23437 -1.17216 1.17677 1.18693 1.199 1.20929 1.214 -1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 -1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 +1.18839 1.19667 1.214 1.23437 1.25206 1.26066 +1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 +1.17965 1.18578 1.199 1.21463 1.22806 1.23437 +1.17216 1.17677 1.18693 1.199 1.20929 1.214 +1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 +1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 Species 2 -1.18839 1.19667 1.214 1.23437 1.25206 1.26066 -1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 -1.17965 1.18578 1.199 1.21463 1.22806 1.23437 -1.17216 1.17677 1.18693 1.199 1.20929 1.214 -1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 -1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 +1.18839 1.19667 1.214 1.23437 1.25206 1.26066 +1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 +1.17965 1.18578 1.199 1.21463 1.22806 1.23437 +1.17216 1.17677 1.18693 1.199 1.20929 1.214 +1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 +1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 Species 3 -1.18839 1.19667 1.214 1.23437 1.25206 1.26066 -1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 -1.17965 1.18578 1.199 1.21463 1.22806 1.23437 -1.17216 1.17677 1.18693 1.199 1.20929 1.214 -1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 -1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 +1.18839 1.19667 1.214 1.23437 1.25206 1.26066 +1.18585 1.19336 1.20929 1.22806 1.24428 1.25206 +1.17965 1.18578 1.199 1.21463 1.22806 1.23437 +1.17216 1.17677 1.18693 1.199 1.20929 1.214 +1.16599 1.16925 1.17677 1.18578 1.19336 1.19667 +1.16348 1.16599 1.17216 1.17965 1.18585 1.18839 Species 4 -35650.8 35899 36418.5 37029.4 37559.6 37817.5 -35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 -35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 -35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 -34978.7 35076.6 35302.1 35572.4 35799.7 35899 -34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 +35650.8 35899 36418.5 37029.4 37559.6 37817.5 +35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 +35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 +35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 +34978.7 35076.6 35302.1 35572.4 35799.7 35899 +34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 Species 5 -35650.8 35899 36418.5 37029.4 37559.6 37817.5 -35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 -35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 -35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 -34978.7 35076.6 35302.1 35572.4 35799.7 35899 -34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 +35650.8 35899 36418.5 37029.4 37559.6 37817.5 +35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 +35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 +35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 +34978.7 35076.6 35302.1 35572.4 35799.7 35899 +34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 Species 6 -35650.8 35899 36418.5 37029.4 37559.6 37817.5 -35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 -35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 -35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 -34978.7 35076.6 35302.1 35572.4 35799.7 35899 -34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 +35650.8 35899 36418.5 37029.4 37559.6 37817.5 +35574.7 35799.7 36277.2 36840.2 37326.7 37559.6 +35388.6 35572.4 35968.9 36437.6 36840.2 37029.4 +35163.8 35302.1 35606.9 35968.9 36277.2 36418.5 +34978.7 35076.6 35302.1 35572.4 35799.7 35899 +34903.4 34978.7 35163.8 35388.6 35574.7 35650.8 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 148 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 101 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 1813 - Number of f-s (SPGMR) = 4359 - Number of f-s (TOTAL) = 4359 - Number of setups = 72 - Number of nonlinear iterations = 1293 - Number of linear iterations = 4359 - Number of preconditioner evaluations = 72 - Number of preconditioner solves = 5618 - Number of error test failures = 1 - Number of nonlinear conv. failures = 25 - Number of linear convergence failures = 238 - Average Krylov subspace dimension = 3.371 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 101 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 1813 + Number of f-s (SPGMR) = 4359 + Number of f-s (TOTAL) = 4359 + Number of setups = 72 + Number of nonlinear iterations = 1293 + Number of linear iterations = 4359 + Number of preconditioner evaluations = 72 + Number of preconditioner solves = 5618 + Number of error test failures = 1 + Number of nonlinear conv. failures = 25 + Number of linear convergence failures = 238 + Average Krylov subspace dimension = 3.371 ---------------------------------------------------------------------------- @@ -487,24 +487,24 @@ t = 1.00e+01 nst = 101 nfe = 0 nfi = 1813 nni = 1293 hu = 6.31e+00 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 154 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 101 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 1813 - Number of f-s (SPGMR) = 4359 - Number of f-s (TOTAL) = 4359 - Number of setups = 72 - Number of nonlinear iterations = 1293 - Number of linear iterations = 4359 - Number of preconditioner evaluations = 72 - Number of preconditioner solves = 5618 - Number of error test failures = 1 - Number of nonlinear conv. failures = 25 - Number of linear convergence failures = 238 - Average Krylov subspace dimension = 3.371 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 101 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 1813 + Number of f-s (SPGMR) = 4359 + Number of f-s (TOTAL) = 4359 + Number of setups = 72 + Number of nonlinear iterations = 1293 + Number of linear iterations = 4359 + Number of preconditioner evaluations = 72 + Number of preconditioner solves = 5618 + Number of error test failures = 1 + Number of nonlinear conv. failures = 25 + Number of linear convergence failures = 238 + Average Krylov subspace dimension = 3.371 ---------------------------------------------------------------------------- @@ -556,24 +556,24 @@ t = 1.00e+01 nst = 234 nfe = 0 nfi = 4045 nni = 2856 hu = 3.93e-01 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 160 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 234 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 4045 - Number of f-s (SPGMR) = 10634 - Number of f-s (TOTAL) = 10634 - Number of setups = 277 - Number of nonlinear iterations = 2856 - Number of linear iterations = 10634 - Number of preconditioner evaluations = 277 - Number of preconditioner solves = 13350 - Number of error test failures = 1 - Number of nonlinear conv. failures = 166 - Number of linear convergence failures = 1036 - Average Krylov subspace dimension = 3.723 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 234 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 4045 + Number of f-s (SPGMR) = 10634 + Number of f-s (TOTAL) = 10634 + Number of setups = 277 + Number of nonlinear iterations = 2856 + Number of linear iterations = 10634 + Number of preconditioner evaluations = 277 + Number of preconditioner solves = 13350 + Number of error test failures = 1 + Number of nonlinear conv. failures = 166 + Number of linear convergence failures = 1036 + Average Krylov subspace dimension = 3.723 ---------------------------------------------------------------------------- @@ -625,24 +625,24 @@ t = 1.00e+01 nst = 234 nfe = 0 nfi = 4045 nni = 2856 hu = 3.93e-01 Final statistics for this run: - ARKStep real workspace length = 3790 - ARKStep integer workspace length = 166 - ARKLS real workspace length = 2647 - ARKLS integer workspace length = 42 - Number of steps = 234 - Number of f-s (explicit) = 0 - Number of f-s (implicit) = 4045 - Number of f-s (SPGMR) = 10633 - Number of f-s (TOTAL) = 10633 - Number of setups = 277 - Number of nonlinear iterations = 2856 - Number of linear iterations = 10633 - Number of preconditioner evaluations = 277 - Number of preconditioner solves = 13349 - Number of error test failures = 1 - Number of nonlinear conv. failures = 166 - Number of linear convergence failures = 1036 - Average Krylov subspace dimension = 3.723 + ARKStep real workspace length = 3790 + ARKStep integer workspace length = 142 + ARKLS real workspace length = 2647 + ARKLS integer workspace length = 42 + Number of steps = 234 + Number of f-s (explicit) = 0 + Number of f-s (implicit) = 4045 + Number of f-s (SPGMR) = 10633 + Number of f-s (TOTAL) = 10633 + Number of setups = 277 + Number of nonlinear iterations = 2856 + Number of linear iterations = 10633 + Number of preconditioner evaluations = 277 + Number of preconditioner solves = 13349 + Number of error test failures = 1 + Number of nonlinear conv. failures = 166 + Number of linear convergence failures = 1036 + Average Krylov subspace dimension = 3.723 ---------------------------------------------------------------------------- diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep_1.out index 79e9246274..ade4792ef4 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep_1.out +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_arkstep_1.out @@ -2,14 +2,14 @@ Start ARKStep preallocation test Using DIRK method Using Newton nonlinear solver Using GMRES iterative linear solver - t u v u err v err + t u v u err v err ------------------------------------------------------------------------------------------------------------------------------ 0.000000000000000e+00 1.224744871391589e+00 1.732050807568877e+00 0.000000000000000e+00 0.000000000000000e+00 1.029860256095084e-04 1.224744870316961e+00 1.732050195224250e+00 7.854161765408207e-12 2.731148640577885e-14 - 1.634509895443788e-02 1.224717600094773e+00 1.716694985522809e+00 4.466385261636674e-09 6.044738709576336e-09 - 3.254871529235759e-02 1.224636741653238e+00 1.671973015366888e+00 8.026050712928168e-09 5.988021634095730e-09 + 1.634509831323043e-02 1.224717600096914e+00 1.716694986722200e+00 4.466384151413649e-09 6.044736933219497e-09 + 3.254871465408885e-02 1.224636741657479e+00 1.671973017680123e+00 8.026050268838958e-09 5.988020079783496e-09 ------------------------------------------------------------------------------------------------------------------------------ -Current time = 0.0325487152923576 +Current time = 0.0325487146540888 Steps = 3 Step attempts = 3 Stability limited steps = 0 @@ -18,8 +18,8 @@ Error test fails = 0 NLS step fails = 0 Inequality constraint fails = 0 Initial step size = 0.000102986025609508 -Last step size = 0.0162036163379197 -Current step size = 0.0160003634180696 +Last step size = 0.0162036163408584 +Current step size = 0.0160003634285686 Explicit RHS fn evals = 0 Implicit RHS fn evals = 49 NLS iters = 31 diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep_1.out index 11002e04ca..07ee2d38c7 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep_1.out +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_erkstep_1.out @@ -1,12 +1,12 @@ Start ERKStep preallocation test - t u v u err v err + t u v u err v err ------------------------------------------------------------------------------------------------------------------------------ 0.000000000000000e+00 1.224744871391589e+00 1.732050807568877e+00 0.000000000000000e+00 0.000000000000000e+00 1.029860256095084e-04 1.224744870309106e+00 1.732050195224277e+00 2.220446049250313e-16 0.000000000000000e+00 - 1.606364534231249e-02 1.224718491293716e+00 1.717217032062862e+00 4.421219967909451e-08 2.910637308950470e-08 - 3.202338818315199e-02 1.224640124009817e+00 1.673862546151861e+00 8.746489865707474e-08 1.494766854737151e-07 + 1.606364533954449e-02 1.224718491293725e+00 1.717217032067952e+00 4.421219967909451e-08 2.910637331154931e-08 + 3.202338818037329e-02 1.224640124009836e+00 1.673862546161781e+00 8.746489865707474e-08 1.494766852516705e-07 ------------------------------------------------------------------------------------------------------------------------------ -Current time = 0.032023388183152 +Current time = 0.0320233881803733 Steps = 3 Step attempts = 4 Stability limited steps = 0 @@ -15,7 +15,7 @@ Error test fails = 1 NLS step fails = 0 Inequality constraint fails = 0 Initial step size = 0.000102986025609508 -Last step size = 0.0159597428408395 -Current step size = 0.0166588795525631 +Last step size = 0.0159597428408288 +Current step size = 0.0166588795523219 RHS fn evals = 19 End ERKStep preallocation test diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep_1.out index 441d468b29..091f1f64ad 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep_1.out +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_lsrkstep_1.out @@ -2,9 +2,9 @@ Start LSRKStep preallocation test t y y err --------------------------------------------------------------------- 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 - 6.103515625000001e-12 6.103515624999975e-12 2.504160057533580e-26 - 6.104125976562500e-08 6.104125976562474e-08 1.852884572118782e-22 - 1.281744384765625e-06 1.281744384765305e-06 3.822236174485030e-19 + 6.103515625000001e-12 6.103515624999988e-12 1.211690350419474e-26 + 6.104125976562500e-08 6.104125976562487e-08 5.293955920339377e-23 + 1.281744384765625e-06 1.281744384765308e-06 3.851882327638931e-19 --------------------------------------------------------------------- Current time = 1.28174438476563e-06 Steps = 3 diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep_1.out b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep_1.out index 329037de9d..7985369f2f 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep_1.out +++ b/test/unit_tests/arkode/CXX_serial/ark_test_prealloc_sprkstep_1.out @@ -1,9 +1,9 @@ Start SPRKStep preallocation test - t q1 q2 q3 q4 + t q1 q2 q3 q4 ------------------------------------------------------------------------------------------------------------------------------ 0.000000000000000e+00 4.000000000000000e-01 0.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 - 1.000000000000000e-03 3.999968750113932e-01 1.999994791691249e-03 -6.249954427477657e-03 1.999984375130207e+00 - 2.000000000000000e-03 3.999875001822874e-01 3.999958334163726e-03 -1.249963542950927e-02 1.999937502083256e+00 + 1.000000000000000e-03 3.999968750113932e-01 1.999994791691249e-03 -6.249954427477658e-03 1.999984375130207e+00 + 2.000000000000000e-03 3.999875001822874e-01 3.999958334163726e-03 -1.249963542950928e-02 1.999937502083256e+00 3.000000000000000e-03 3.999718759228028e-01 5.999859381323369e-03 -1.874876962886015e-02 1.999859385545991e+00 ------------------------------------------------------------------------------------------------------------------------------ Current time = 0.003 From ee9170338f24dc8c6983af3be8aae85f795b544d Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Fri, 30 Jan 2026 11:01:28 -0500 Subject: [PATCH 16/16] Updated .out files for new integer workspace sizes --- .../F2003_parallel/ark_diag_kry_bbd_f2003.out | 21 ++++++++----------- .../F2003_serial/ark_diurnal_kry_bp_f2003.out | 9 ++++---- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/examples/arkode/F2003_parallel/ark_diag_kry_bbd_f2003.out b/examples/arkode/F2003_parallel/ark_diag_kry_bbd_f2003.out index 0e38735e74..e2a7727241 100644 --- a/examples/arkode/F2003_parallel/ark_diag_kry_bbd_f2003.out +++ b/examples/arkode/F2003_parallel/ark_diag_kry_bbd_f2003.out @@ -1,4 +1,4 @@ - + Diagonal test problem: neq = 40 nlocal = 10 @@ -9,7 +9,7 @@ ydot_i = -alpha*i * y_i (i = 1,...,neq) Method is DIRK/NEWTON/SPGMR Precond is band-block-diagonal, using ARKBBDPRE - + Preconditioning on left: t steps steps att. fe fi ------------------------------------------------- @@ -25,7 +25,7 @@ 1.000000 77 77 0 974 ------------------------------------------------- Max. absolute error is 4.66E-09 - + Final Solver Statistics: Internal solver steps = 77 (attempted = 77) Total explicit RHS evals = 0 @@ -38,13 +38,13 @@ Max. absolute error is 4.66E-09 Total Convergence Failures - Nonlinear = 0 - Linear = 0 Total number of error test failures = 0 - Main solver real/int workspace sizes = 918 291 + Main solver real/int workspace sizes = 918 285 Linear solver real/int workspace sizes = 535 126 BBD preconditioner real/int workspace sizes = 160 72 Total number of g evals = 4 - - - + + + Preconditioning on right: t steps steps att. fe fi ------------------------------------------------- @@ -60,7 +60,7 @@ Max. absolute error is 4.66E-09 1.000000 77 77 0 974 ------------------------------------------------- Max. absolute error is 4.66E-09 - + Final Solver Statistics: Internal solver steps = 77 (attempted = 77) Total explicit RHS evals = 0 @@ -73,10 +73,7 @@ Max. absolute error is 4.66E-09 Total Convergence Failures - Nonlinear = 0 - Linear = 0 Total number of error test failures = 0 - Main solver real/int workspace sizes = 918 297 + Main solver real/int workspace sizes = 918 285 Linear solver real/int workspace sizes = 535 126 BBD preconditioner real/int workspace sizes = 160 72 Total number of g evals = 4 - - - diff --git a/examples/arkode/F2003_serial/ark_diurnal_kry_bp_f2003.out b/examples/arkode/F2003_serial/ark_diurnal_kry_bp_f2003.out index e8d4b2eaf0..8d4289e8cd 100644 --- a/examples/arkode/F2003_serial/ark_diurnal_kry_bp_f2003.out +++ b/examples/arkode/F2003_serial/ark_diurnal_kry_bp_f2003.out @@ -1,6 +1,6 @@ - + Finished initialization, starting time steps - + t c1 (bottom left middle top right) | lnst lnst_att lh t c2 (bottom left middle top right) | lnst lnst_att lh ---------------------------------------------------------------------------------------- @@ -29,7 +29,7 @@ 8.640000E+04 9.130832E-03 -2.882353E-03 1.078363E-02 198 213 2.374350E+03 5.092611E+11 5.754304E+11 5.984451E+11 ---------------------------------------------------------------------------------------- - + General Solver Stats: Total internal steps taken = 198 Total internal steps attempts = 213 @@ -43,8 +43,7 @@ Avg Krylov subspace dim = 3.004963E+00 Num nonlinear solver fails = 0 Num linear solver fails = 333 - main solver real/int workspace sizes = 3918 150 + main solver real/int workspace sizes = 3918 144 linear solver real/int workspace sizes = 2455 42 ARKBandPre real/int workspace sizes = 2800 622 ARKBandPre number of f evaluations = 20 -