Releases: LLNL/sundials
SUNDIALS minor release v6.1.0
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
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 ... |
SUNDIALS v5.8.0
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
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
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
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
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
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
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
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.