Skip to content

Releases: LLNL/sundials

SUNDIALS minor release v6.1.0

12 Jan 19:02

Choose a tag to compare

Changes to SUNDIALS in release 6.1.0

Added new reduction implementations for the CUDA and HIP NVECTORs that use
shared memory (local data storage) instead of atomics. These new implementations
are recommended when the target hardware does not provide atomic support for the
floating point precision that SUNDIALS is being built with. The HIP vector uses
these by default, but the N_VSetKernelExecPolicy_Cuda and
N_VSetKernelExecPolicy_Hip functions can be used to choose between
different reduction implementations.

SUNDIALS::<lib> targets with no static/shared suffix have been added for use
within the build directory (this mirrors the targets exported on installation).

CMAKE_C_STANDARD is now set to 99 by default.

Fixed exported SUNDIALSConfig.cmake when profiling is enabled without Caliper.

Fixed sundials_export.h include in sundials_config.h.

Fixed memory leaks in the SUNLINSOL_SUPERLUMT linear solver.

Several other minor bug-fixes and improvements.

SUNDIALS major release v6.0.0

16 Dec 00:49

Choose a tag to compare

Changes to SUNDIALS in release 6.0.0

SUNContext

SUNDIALS v6.0.0 introduces a new SUNContext object on which all other SUNDIALS
objects depend. As such, the constructors for all SUNDIALS packages, vectors,
matrices, linear solvers, nonlinear solvers, and memory helpers have been
updated to accept a context as the last input. Users upgrading to SUNDIALS
v6.0.0 will need to call SUNContext_Create to create a context object with
before calling any other SUNDIALS library function, and then provide this object
to other SUNDIALS constructors. The context object has been introduced to allow
SUNDIALS to provide new features, such as the profiling/instrumentation also
introduced in this release, while maintaining thread-safety. See the
documentation section on the SUNContext for more details.

A script upgrade-to-sundials-6-from-5.sh has been provided with the release
(obtainable from the GitHub release page) to help ease the transition to
SUNDIALS v6.0.0. The script will add a SUNCTX_PLACEHOLDER argument to all of
the calls to SUNDIALS constructors that now require a SUNContext object. It
can also update deprecated SUNDIALS constants/types to the new names. It can be
run like this:

> ./upgrade-to-sundials-6-from-5.sh <files to update>

SUNProfiler

A capability to profile/instrument SUNDIALS library code has been added. This
can be enabled with the CMake option SUNDIALS_BUILD_WITH_PROFILING. A built-in
profiler will be used by default, but the
Caliper library can also be used instead with
the CMake option ENABLE_CALIPER. See the documentation section on profiling
for more details. WARNING: Profiling will impact performance, and should be
enabled judiciously.

SUNMemoryHelper

The SUNMemoryHelper functions Alloc, Dealloc, and Copy have been updated
to accept an opaque handle as the last input. At a minimum, existing
SUNMemoryHelper implementations will need to update these functions to accept
the additional argument. Typically, this handle is the execution stream (e.g., a
CUDA/HIP stream or SYCL queue) for the operation. The CUDA, HIP, and SYCL
SUNMemoryHelper implementations have been updated accordingly. Additionally,
the constructor for the SYCL implementation has been updated to remove the SYCL
queue as an input.

NVector

Two new optional vector operations, N_VDotProdMultiLocal and
N_VDotProdMultiAllReduce, have been added to support low-synchronization
methods for Anderson acceleration.

The CUDA, HIP, and SYCL execution policies have been moved from the sundials
namespace to the sundials::cuda, sundials::hip, and sundials::sycl
namespaces respectively. Accordingly, the prefixes "Cuda", "Hip", and "Sycl"
have been removed from the execution policy classes and methods.

The Sundials namespace used by the Trilinos Tpetra NVector has been replaced
with the sundials::trilinos::nvector_tpetra namespace.

The serial, PThreads, PETSc, hypre, Parallel, OpenMP_DEV, and OpenMP vector
functions N_VCloneVectorArray_* and N_VDestroyVectorArray_* have been
deprecated. The generic N_VCloneVectorArray and N_VDestroyVectorArray
functions should be used instead.

The previously deprecated constructor N_VMakeWithManagedAllocator_Cuda and
the function N_VSetCudaStream_Cuda have been removed and replaced with
N_VNewWithMemHelp_Cuda and N_VSetKerrnelExecPolicy_Cuda respectively.

The previously deprecated macros PVEC_REAL_MPI_TYPE and
PVEC_INTEGER_MPI_TYPE have been removed and replaced with
MPI_SUNREALTYPE and MPI_SUNINDEXTYPE respectively.

SUNLinearSolver

The following previously deprecated functions have been removed

Removed Replaced with
SUNBandLinearSolver SUNLinSol_Band
SUNDenseLinearSolver SUNLinSol_Dense
SUNKLU SUNLinSol_KLU
SUNKLUReInit SUNLinSol_KLUReInit
SUNKLUSetOrdering SUNLinSol_KLUSetOrdering
SUNLapackBand SUNLinSol_LapackBand
SUNLapackDense SUNLinSol_LapackDense
SUNPCG SUNLinSol_PCG
SUNPCGSetPrecType SUNLinSol_PCGSetPrecType
SUNPCGSetMaxl SUNLinSol_PCGSetMaxl
SUNSPBCGS SUNLinSol_SPBCGS
SUNSPBCGSSetPrecType SUNLinSol_SPBCGSSetPrecType
SUNSPBCGSSetMaxl SUNLinSol_SPBCGSSetMaxl
SUNSPFGMR SUNLinSol_SPFGMR
SUNSPFGMRSetPrecType SUNLinSol_SPFGMRSetPrecType
SUNSPFGMRSetGSType SUNLinSol_SPFGMRSetGSType
SUNSPFGMRSetMaxRestarts SUNLinSol_SPFGMRSetMaxRestarts
SUNSPGMR SUNLinSol_SPGMR
SUNSPGMRSetPrecType SUNLinSol_SPGMRSetPrecType
SUNSPGMRSetGSType SUNLinSol_SPGMRSetGSType
SUNSPGMRSetMaxRestarts SUNLinSol_SPGMRSetMaxRestarts
SUNSPTFQMR SUNLinSol_SPTFQMR
SUNSPTFQMRSetPrecType SUNLinSol_SPTFQMRSetPrecType
SUNSPTFQMRSetMaxl SUNLinSol_SPTFQMRSetMaxl
SUNSuperLUMT SUNLinSol_SuperLUMT
SUNSuperLUMTSetOrdering SUNLinSol_SuperLUMTSetOrdering

Fortran Interfaces

The ARKODE, CVODE, IDA, and KINSOL Fortran 77 interfaces have been removed. See
the "SUNDIALS Fortran Interface" section in the user guides and the F2003
example programs for more details using the SUNDIALS Fortran 2003 module
interfaces.

ARKODE

The ARKODE MRIStep module has been extended to support implicit-explicit (IMEX)
multirate infinitesimal generalized additive Runge-Kutta (MRI-GARK) methods. As
such, MRIStepCreate has been updated to include arguments for the slow
explicit and slow implicit ODE right-hand side functions. MRIStepCreate has
also been updated to require attaching an MRIStepInnerStepper for evolving the
fast time scale. MRIStepReInit has been similarly updated to take explicit
and implicit right-hand side functions as input. Codes using explicit or
implicit MRI methods will need to update MRIStepCreate and MRIStepReInit
calls to pass NULL for either the explicit or implicit right-hand side
function as appropriate. If ARKStep is used as the fast time scale integrator,
codes will need to call ARKStepCreateMRIStepInnerStepper to wrap the ARKStep
memory as an MRIStepInnerStepper object. Additionally, MRIStepGetNumRhsEvals
has been updated to return the number of slow implicit and explicit function
evaluations. The coupling table structure MRIStepCouplingMem and the
functions MRIStepCoupling_Alloc and MRIStepCoupling_Create have also
been updated to support IMEX-MRI-GARK methods.

The deprecated functions MRIStepGetCurrentButcherTables and
MRIStepWriteButcher and the utility functions MRIStepSetTable and
MRIStepSetTableNum have been removed. Users wishing to create an MRI-GARK
method from a Butcher table should use MRIStepCoupling_MIStoMRI to create
the corresponding MRI coupling table and attach it with MRIStepSetCoupling.

The implementation of solve-decoupled implicit MRI-GARK methods has been updated
to remove extraneous slow implicit function calls and reduce the memory
requirements.

Deprecated ARKODE nonlinear solver predictors: specification of the ARKStep
"bootstrap" or "minimum correction" predictors (options 4 and 5 from
ARKStepSetPredictorMethod), or MRIStep "bootstrap" predictor (option 4 from
MRIStepSetPredictorMethod), will output a deprecation warning message.
These options will be removed in a future release.

The previously deprecated functions ARKStepSetMaxStepsBetweenLSet and
ARKStepSetMaxStepsBetweenJac have been removed and replaced with
ARKStepSetLSetupFrequency and ARKStepSetMaxStepsBetweenJac respectively.

CVODE

The previously deprecated function CVodeSetMaxStepsBetweenJac has been removed
and replaced with CVodeSetJacEvalFrequency.

CVODES

Added a new function CVodeGetLinSolveStats to get the CVODES linear solver
statistics as a group.

Added a new function, CVodeSetMonitorFn, that takes a user-function
to be called by CVODES after every nst successfully completed time-steps.
This is intended to provide a way of monitoring the CVODES statistics
throughout the simulation.

The previously deprecated function CVodeSetMaxStepsBetweenJac has been removed
and replaced with CVodeSetJacEvalFrequency.

KINSOL

New orthogonalization methods were added for use within Anderson acceleration
in KINSOL. See the "Anderson Acceleration QR Factorization" subsection within
the mathematical considerations chapter of the user guide and the
KINSetOrthAA function documentation for more details.

Deprecations

In addition to the deprecations noted elsewhere, many constants, types, and
functions have been renamed so that they are properly namespaced. The old names
have been deprecated and will be removed in SUNDIALS v7.0.0.

The following constants, macros, and typedefs are now deprecated:

Deprecated Name New Name
realtype sunrealtype
booleantype sunbooleantype
RCONST SUN_RCONST
BIG_REAL SUN_BIG_REAL ...
Read more

SUNDIALS v5.8.0

30 Sep 20:01

Choose a tag to compare

Changes to SUNDIALS in release 5.8.0

The RAJA NVECTOR implementation has been updated to support the SYCL backend in addition to the CUDA and HIP backend. Users can choose the backend when configuring SUNDIALS by using the SUNDIALS_RAJA_BACKENDS CMake variable. This module remains experimental and is subject to change from version to version.

A new SUNMatrix and SUNLinearSolver implementation were added to interface with the Intel oneAPI Math Kernel Library (oneMKL). Both the matrix and the linear solver support general dense linear systems as well as block diagonal linear systems. This module is experimental and is subject to change from version to version.

Added a new optional function to the SUNLinearSolver API, SUNLinSolSetZeroGuess, to indicate that the next call to SUNlinSolSolve will be made with a zero initial guess. SUNLinearSolver implementations that do not use the SUNLinSolNewEmpty constructor will, at a minimum, need set the setzeroguess function pointer in the linear solver ops structure to NULL. The SUNDIALS iterative linear solver implementations have been updated to leverage this new set function to remove one dot product per solve.

The time integrator packages (ARKODE, CVODE(S), and IDA(S)) all now support a new "matrix-embedded" SUNLinearSolver type. This type supports user-supplied SUNLinearSolver implementations that set up and solve the specified linear system at each linear solve call. Any matrix-related data structures are held internally to the linear solver itself, and are not provided by the SUNDIALS package.

Added functions to ARKODE and CVODE(S) for supplying an alternative right-hand side function and to IDA(S) for supplying an alternative residual for use within nonlinear system function evaluations.

Support for user-defined inner (fast) integrators has been to the MRIStep module in ARKODE. See the "MRIStep Custom Inner Steppers" section in the user guide for more information on providing a user-defined integration method.

Added specialized fused HIP kernels to CVODE which may offer better performance on smaller problems when using CVODE with the NVECTOR_HIP module. See the optional input function CVodeSetUseIntegratorFusedKernels for more information. As with other SUNDIALS HIP features, this is feature is experimental and may change from version to version.

New KINSOL options have been added to apply a constant damping factor in the fixed point and Picard iterations (see KINSetDamping), to delay the start of Anderson acceleration with the fixed point and Picard iterations (see KINSetDelayAA), and to return the newest solution with the fixed point iteration (see KINSetReturnNewest).

The installed SUNDIALSConfig.cmake file now supports the COMPONENTS option to find_package. The exported targets no longer have IMPORTED_GLOBAL set.

A bug was fixed in SUNMatCopyOps where the matrix-vector product setup function pointer was not copied.

A bug was fixed in the SPBCGS and SPTFQMR solvers for the case where a non-zero initial guess and a solution scaling vector are provided. This fix only impacts codes using SPBCGS or SPTFQMR as standalone solvers as all SUNDIALS packages utilize a zero initial guess.

A bug was fixed in the ARKODE stepper modules where the stop time may be passed after resetting the integrator.

A bug was fixed in IDASetJacTimesResFn in IDAS where the supplied function was used in the dense finite difference Jacobian computation rather than the finite difference Jacobian-vector product approximation.

A bug was fixed in the KINSOL Picard iteration where the value of KINSetMaxSetupCalls would be ignored.

SUNDIALS v5.7.0

29 Jan 21:54

Choose a tag to compare

Changes to SUNDIALS in release 5.7.0

A new NVECTOR implementation based on the SYCL abstraction layer has been added targeting Intel GPUs. At present the only SYCL compiler supported is the DPC++ (Intel oneAPI) compiler. See the SYCL NVECTOR section in the user guide for more details.

A new SUNMatrix and SUNLinearSolver implementation were added to interface with the MAGMA linear algebra library. Both the matrix and the linear solver support general dense linear systems as well as block diagonal linear systems, and both are targeted at GPUs (AMD or NVIDIA).

These features are considered experimental and are subject to major changes even in minor releases.

SUNDIALS v5.6.1

16 Dec 01:38

Choose a tag to compare

Changes to SUNDIALS in release 5.6.1

Fixed a bug in the SUNDIALS CMake which caused an error
if the CMAKE_CXX_STANDARD and SUNDIALS_RAJA_BACKENDS options
were not provided.

Fixed some compiler warnings when using the IBM XL compilers.

SUNDIALS v5.6.0

12 Dec 01:18

Choose a tag to compare

Changes to SUNDIALS in release 5.6.0

A new NVECTOR implementation based on the AMD ROCm HIP platform has been added.
This vector can target NVIDIA or AMD GPUs. See HIP NVECTOR section in the user
guide for more details. This module is considered experimental and is subject to
change from version to version.

The RAJA NVECTOR implementation has been updated to support the HIP backend
in addition to the CUDA backend. Users can choose the backend when configuring
SUNDIALS by using the SUNDIALS_RAJA_BACKENDS CMake variable. This module
remains experimental and is subject to change from version to version.

A new optional operation, N_VGetDeviceArrayPointer, was added to the N_Vector
API. This operation is useful for N_Vectors that utilize dual memory spaces,
e.g. the native SUNDIALS CUDA N_Vector.

The SUNMATRIX_CUSPARSE and SUNLINEARSOLVER_CUSOLVERSP_BATCHQR implementations
no longer require the SUNDIALS CUDA N_Vector. Instead, they require that the vector
utilized provides the N_VGetDeviceArrayPointer operation, and that the pointer
returned by N_VGetDeviceArrayPointer is a valid CUDA device pointer.

SUNDIALS v5.5.0

02 Nov 16:31

Choose a tag to compare

Changes to SUNDIALS in release 5.5.0

Refactored the SUNDIALS build system. CMake 3.12.0 or newer is now required.
Users will likely see deprecation warnings, but otherwise the changes
should be fully backwards compatible for almost all users. SUNDIALS
now exports CMake targets and installs a SUNDIALSConfig.cmake file.

Added support for SuperLU DIST 6.3.0 or newer.

SUNDIALS v5.4.0

24 Sep 18:04

Choose a tag to compare

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_VBufSize, N_VBufPack, and N_VBufUnpack. These
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_CUDA and 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.

The NVECTOR_RAJA module has been updated to mirror the NVECTOR_CUDA module.
Notably, the update adds managed memory support to the NVECTOR_RAJA module.
Users of the module will need to update any calls to the N_VMake_Raja function
because that signature was changed. This module remains experimental and is
subject to change from version to version.

Added new 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 ARKStepReset(), ERKStepReset(), and
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
ARKStepReInit(), ERKStepReInit(), and MRIStepReInit() which reinitialize
the stepper so that the problem integration should resume as if started from
scratch.

Added new functions for advanced users providing a custom SUNNonlinSolSysFn.

The expected behavior of SUNNonlinSolGetNumIters and
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
functions.

This change may cause a runtime error in existing user code.
In IDAS and CVODES, the functions for forward integration with checkpointing
(IDASolveF, 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
the IDASolve and CVode functions. The default maximum number of steps is
500, but this may be changed using the <IDA|CVode>SetMaxNumSteps function.
This change fixes a bug that could cause an infinite loop in the IDASolveF
and 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
CVodeSetMaxStepsBetweenJac or ARKStepSetMaxStepsBetweenJac will need to
increase the provided value by 1 to achieve the same behavior as before. For
greater clarity the functions CVodeSetMaxStepsBetweenJac,
ARKStepSetMaxStepsBetweenJac, and ARKStepSetMaxStepsBetweenLSet have been
deprecated and replaced with CVodeSetJacEvalFrequency,
ARKStepSetJacEvalFrequency, and ARKStepSetLSetupFrequency respectively.
Additionally, the function CVodeSetLSetupFrequency has been added to CVODE(S)
to set the frequency of calls to the linear solver setup function.

The NVECTOR_TRILINOS module has been updated to work with Trilinos 12.18+.
This update changes the local ordinal type to always be an int.

Added support for CUDA v11.

SUNDIALS minor release v5.3.0

21 May 17:30

Choose a tag to compare

Changes to SUNDIALS in release 5.3.0

Added support to CVODE for integrating IVPs with constraints using BDF methods
and projecting the solution onto the constraint manifold with a user defined
projection function. This implementation is accompanied by additions to the
CVODE user documentation and examples.

Added the ability to control the CUDA kernel launch parameters for the
NVECTOR_CUDA and SUNMATRIX_CUSPARSE modules. These modules remain
experimental and are subject to change from version to version.
In addition, the NVECTOR_CUDA kernels were rewritten to be more flexible.
Most users should see equivalent performance or some improvement, but a select
few may observe minor performance degradation with the default settings. Users
are encouraged to contact the SUNDIALS team about any perfomance changes
that they notice.

Added new capabilities for monitoring the solve phase in the SUNNONLINSOL_NEWTON
and SUNNONLINSOL_FIXEDPOINT modules, and the SUNDIALS iterative linear solver
modules. SUNDIALS must be built with the CMake option
SUNDIALS_BUILD_WITH_MONITORING to use these capabilities.

Added a new function, CVodeSetMonitorFn, that takes a user-function
to be called by CVODE after every nst succesfully completed time-steps.
This is intended to provide a way of monitoring the CVODE statistics
throughout the simulation.

Added specialized fused CUDA kernels to CVODE which may offer better
performance on smaller problems when using CVODE with the NVECTOR_CUDA
module. See the optional input function CVodeSetUseIntegratorFusedKernels
for more information. As with other SUNDIALS CUDA features, this feature is experimental
and may change from version to version.

Added a new function CVodeGetLinSolveStats to get the CVODE linear solver
statistics as a group.

Added optional set functions to provide an alternative ODE right-hand side
function (ARKode and CVODE(S)), DAE residual function (IDA(S)), or nonlinear
system function (KINSOL) for use when computing Jacobian-vector products with
the internal difference quotient approximation.

Fixed a bug in ARKode where the prototypes for ERKStepSetMinReduction() and
ARKStepSetMinReduction() were not included in arkode_erkstep.h and
arkode_arkstep.h respectively.

Fixed a bug in ARKode where inequality constraint checking would need to be
disabled and then re-enabled to update the inequality constraint values after
resizing a problem. Resizing a problem will now disable constraints and a call
to ARKStepSetConstraints or ERKStepSetConstraints is required to re-enable
constraint checking for the new problem size.

Fixed a bug in the iterative linear solver modules where an error is not
returned if the Atimes function is NULL or, if preconditioning is enabled, the
PSolve function is NULL.

SUNDIALS minor release v5.2.0

31 Mar 14:52

Choose a tag to compare

Changes to SUNDIALS in release 5.2.0

Fixed a build system bug related to the Fortran 2003 interfaces when using the
IBM XL compiler. When building the Fortran 2003 interfaces with an XL compiler
it is recommended to set CMAKE_Fortran_COMPILER to f2003, xlf2003, or
xlf2003_r.

Fixed a bug in how ARKode interfaces with a user-supplied, iterative, unscaled linear solver.
In this case, ARKode adjusts the linear solver tolerance in an attempt to account for the
lack of support for left/right scaling matrices. Previously, ARKode computed this scaling
factor using the error weight vector, ewt; this fix changes that to the residual weight vector,

Fixed a linkage bug affecting Windows users that stemmed from dllimport/dllexport
attribute missing on some SUNDIALS API functions.

Fixed a bug in how ARKode interfaces with a user-supplied, iterative, unscaled linear solver.
In this case, ARKode adjusts the linear solver tolerance in an attempt to account for the
lack of support for left/right scaling matrices. Previously, ARKode computed this scaling
factor using the error weight vector, ewt; this fix changes that to the residual weight vector,
rwt, that can differ from ewt when solving problems with non-identity mass matrix.

Fixed a similar bug in how ARKode interfaces with scaled linear solvers when solving problems
with non-identity mass matrices. Here, the left scaling matrix should correspond with rwt
and the right scaling matrix with ewt; these were reversed but are now correct.

Fixed a memory leak in CVODES and IDAS from not deallocating the atolSmin0 and
atolQSmin0 arrays.

Fixed a bug where a non-default value for the maximum allowed growth factor
after the first step would be ignored.

Functions were added to each of the time integration packages to enable or
disable the scaling applied to linear system solutions with matrix-based linear solvers
to account for lagged matrix information.

Added two new functions, ARKStepSetMinReduction() and
ERKStepSetMinReduction() to change the minimum allowed step size reduction factor
after an error test failure.

Added a new SUNMatrix implementation, SUNMATRIX_CUSPARSE, that interfaces
to the sparse matrix implementation from the NVIDIA cuSPARSE library. In addition,
the SUNLINSOL_CUSOLVER_BATCHQR linear solver has been updated to
use this matrix, therefore, users of this module will need to update their code.
These modules are still considered to be experimental, thus they are subject to
breaking changes even in minor releases.

Added a new "stiff" interpolation module to ARKode, based on Lagrange polynomial interpolation,
that is accessible to each of the ARKStep, ERKStep and MRIStep time-stepping modules.
This module is designed to provide increased interpolation accuracy when integrating
stiff problems, as opposed to the ARKode-standard Hermite interpolation module that
can suffer when the IVP right-hand side has large Lipschitz constant. While the Hermite module
remains the default, the new Lagrange module may be enabled using one of the routines
ARKStepSetInterpolantType, ERKStepSetInterpolantType, or MRIStepSetInterpolantType.
The serial example problem ark_brusselator.c has been converted to use this Lagrange
interpolation module. Created accompanying routines ARKStepSetInterpolantDegree,
ARKStepSetInterpolantDegree and ARKStepSetInterpolantDegree to provide user control over
these interpolating polynomials. While the routines ARKStepSetDenseOrder,
ARKStepSetDenseOrder and ARKStepSetDenseOrder still exist, these have been deprecated and
will be removed in a future release.