Changes to SUNDIALS in release 5.4.0
Added full support for time-dependent mass matrices in ARKStep, and expanded
existing non-identity mass matrix infrastructure to support use of the
fixed point nonlinear solver. Fixed bug for ERK method integration with
static mass matrices.
An interface between ARKStep and the XBraid multigrid reduction in time (MGRIT)
library has been added to enable parallel-in-time integration. See the ARKStep
documentation and examples for more details. This interface required the
addition of three new N_Vector operations to exchange vector data between
computational nodes, see
N_Vector operations are only used within the XBraid interface and need not be
implemented for any other context.
Updated the MRIStep time-stepping module in ARKode to support
higher-order MRI-GARK methods [Sandu, SIAM J. Numer. Anal., 57, 2019],
including methods that involve solve-decoupled, diagonally-implicit
treatment of the slow time scale.
A new API,
SUNMemoryHelper, was added to support GPU users who have complex
memory management needs such as using memory pools. This is paired with new
constructors for the
NVECTOR_RAJA modules that accept a
SUNMemoryHelper object. Refer to "The SUNMemoryHelper API", "NVECTOR CUDA"
and "NVECTOR RAJA" sections in the documentation for more information.
NVECTOR_RAJA module has been updated to mirror the
Notably, the update adds managed memory support to the
Users of the module will need to update any calls to the
because that signature was changed. This module remains experimental and is
subject to change from version to version.
SetLSNormFactor() functions to CVODE(S), ARKODE, and IDA(S) to
to specify the factor for converting between integrator tolerances (WRMS norm)
and linear solver tolerances (L2 norm) i.e.,
tol_L2 = nrmfac * tol_WRMS.
Added new reset functions
MRIStepReset() to reset the stepper time and state vector to user-provided
values for continuing the integration from that point while retaining the
integration history. These function complement the reinitialization functions
MRIStepReInit() which reinitialize
the stepper so that the problem integration should resume as if started from
Added new functions for advanced users providing a custom
The expected behavior of
SUNNonlinSolGetNumConvFails in the SUNNonlinearSolver API have been updated to
specify that they should return the number of nonlinear solver iterations and
convergence failures in the most recent solve respectively rather than the
cumulative number of iterations and failures across all solves respectively. The
API documentation and SUNDIALS provided SUNNonlinearSolver implementations and
have been updated accordingly. As before, the cumulative number of nonlinear
iterations and failures may be retreived by calling the integrator provided get
This change may cause a runtime error in existing user code.
In IDAS and CVODES, the functions for forward integration with checkpointing
CVodeF) are now subject to a restriction on the number of time
steps allowed to reach the output time. This is the same restriction applied to
CVode functions. The default maximum number of steps is
500, but this may be changed using the
This change fixes a bug that could cause an infinite loop in the
CVodeF and functions.
A minor inconsistency in CVODE(S) and a bug ARKODE when checking the Jacobian
evaluation frequency has been fixed. As a result codes using using a
non-default Jacobian update frequency through a call to
ARKStepSetMaxStepsBetweenJac will need to
increase the provided value by 1 to achieve the same behavior as before. For
greater clarity the functions
ARKStepSetMaxStepsBetweenLSet have been
deprecated and replaced with
Additionally, the function
CVodeSetLSetupFrequency has been added to CVODE(S)
to set the frequency of calls to the linear solver setup function.
NVECTOR_TRILINOS module has been updated to work with Trilinos 12.18+.
This update changes the local ordinal type to always be an
Added support for CUDA v11.