Releases: LLNL/sundials
SUNDIALS patch release v6.6.2
Fixed the build system support for MAGMA when using a NVIDIA HPC SDK installation of CUDA and fixed the targets used for rocBLAS and rocSPARSE.
SUNDIALS v6.6.1
Updated the Tpetra NVector interface to support Trilinos 14.
Fixed a memory leak when destroying a CUDA, HIP, SYCL, or system SUNMemoryHelper object.
Fixed a bug in ARKODE, CVODE, CVODES, IDA, and IDAS where the stop time may not be cleared when using normal mode if the requested output time is the same as the stop time. Additionally, with ARKODE, CVODE, and CVODES this fix removes an unnecessary interpolation of the solution at the stop time that could occur in this case.
SUNDIALS v6.6.0
A new time-stepping module, SPRKStep
, was added to ARKODE. This time-stepper provides explicit symplectic partitioned Runge-Kutta methods up to order 10 for separable Hamiltonian systems.
Added support for relaxation Runge-Kutta methods to ERKStep and ARKStep in ARKODE.
Added the second order IMEX method from Giraldo, Kelly, and Constantinescu 2013 as the default second order IMEX method in ARKStep. The explicit table is given by ARKODE_ARK2_ERK_3_1_2
and the implicit table by ARKODE_ARK2_DIRK_3_1_2
.
Updated CVODE, CVODES and ARKODE default behavior when returning the solution when the internal time has reached a user-specified stop time. Previously, the output solution was interpolated to the value of tstop
; the default is now to copy the internal solution vector. Users who wish to revert to interpolation may call a new routine CVodeSetInterpolateStopTime
, ARKStepSetInterpolateStopTime
, ERKStepSetInterpolateStopTime
, or MRIStepSetInterpolateStopTime
.
A potential bug was fixed when using inequality constraint handling and calling ARKStepGetEstLocalErrors
or ERKStepGetEstLocalErrors
after a failed step in which an inequality constraint violation occurred. In this case, the values returned by ARKStepGetEstLocalErrors
or ERKStepGetEstLocalErrors
may have been invalid.
Updated the F2003 utility routines SUNDIALSFileOpen
and SUNDIALSFileClose
to support user specification of stdout
and stderr
strings for the output file names.
SUNDIALS patch release v6.5.1
Added the functions ARKStepClearStopTime
, ERKStepClearStopTime
, MRIStepClearStopTime
, CVodeClearStopTime
, and IDAClearStopTime
to disable a previously set stop time.
The default interpolant in ARKODE when using a first order method has been updated to a linear interpolant to ensure values obtained by the integrator are returned at the ends of the time interval. To restore the previous behavior of using a constant interpolant call ARKStepSetInterpolantDegree
, ERKStepSetInterpolantDegree
, or MRIStepSetInterpolantDegree
and set the interpolant degree to zero before evolving the problem.
Fixed build errors when using SuperLU_DIST with ROCM enabled to target AMD GPUs.
Fixed compilation errors in some SYCL examples when using the icx
compiler.
SUNDIALS minor release v6.5.0
A new capability to keep track of memory allocations made through the SUNMemoryHelper
classes has been added. Memory allocation stats can be accessed through the SUNMemoryHelper_GetAllocStats
function. See the documentation for the SUNMemoryHelper
classes for more details.
Added the functions ARKStepGetJac
, ARKStepGetJacTime
, ARKStepGetJacNumSteps
, MRIStepGetJac
, MRIStepGetJacTime
, MRIStepGetJacNumSteps
, CVodeGetJac
, CVodeGetJacTime
, CVodeGetJacNumSteps
, IDAGetJac
, IDAGetJacCj
, IDAGetJacTime
, IDAGetJacNumSteps
, KINGetJac
, KINGetJacNumIters
to assist in debugging simulations utilizing a matrix-based linear solver.
Added support for CUDA 12.
Added support for the SYCL backend with RAJA 2022.x.y.
Fixed an underflow bug during root finding in ARKODE, CVODE, CVODES, IDA and IDAS.
Fixed an issue with finding oneMKL when using the icpx
compiler with the -fsycl
flag as the C++ compiler instead of dpcpp
.
Fixed the shape of the arrays returned by FN_VGetArrayPointer
functions as well as the FSUNDenseMatrix_Data
, FSUNBandMatrix_Data
, FSUNSparseMatrix_Data
, FSUNSparseMatrix_IndexValues
, and FSUNSparseMatrix_IndexPointers
functions. Compiling and running code that uses the SUNDIALS Fortran interfaces with bounds checking will now work.
Fixed an implicit conversion error in the Butcher table for ESDIRK5(4)7L[2]SA2.
SUNDIALS patch release v6.4.1
Changes to SUNDIALS in release 6.4.1
Fixed a bug with the Kokkos interfaces that would arise when using clang.
Fixed a compilation error with the Intel oneAPI 2022.2 Fortran compiler in the
Fortran 2003 interface test for the serial N_Vector
.
Fixed a bug in the SUNLINSOL_LAPACKBAND and SUNLINSOL_LAPACKDENSE modules
which would cause the tests to fail on some platforms.
SUNDIALS minor release v6.4.0
Changes to SUNDIALS in release 6.4.0
CMake 3.18.0 or newer is now required for CUDA support.
A C++14 compliant compiler is now required for C++ based features and examples
e.g., CUDA, HIP, RAJA, Trilinos, SuperLU_DIST, MAGMA, GINKGO, and KOKKOS.
Added support for GPU enabled SuperLU_DIST and SuperLU_DIST v8.x.x. Removed
support for SuperLU_DIST v6.x.x or older. Fix mismatched definition and
declaration bug in SuperLU_DIST matrix constructor.
Added support for the Ginkgo linear algebra
library. This support includes new SUNMatrix
and SUNLinearSolver
implementations, see the SUNMATRIX_GINKGO
and SUNLINEARSOLVER_GINKGO
sections in the documentation for more information.
Added new NVector
, dense SUNMatrix
, and dense SUNLinearSolver
implementations utilizing Kokkos Ecosystem for
performance portability, see the NVECTOR_KOKKOS
, SUNMATRIX_KOKKOSDENSE
and
SUNLINEARSOLVER_KOKKOSDENSE
sections in the documentation for more
information.
Added the functions ARKStepSetTableName
, ERKStepSetTableName
,
MRIStepCoupling_LoadTableByName
, ARKodeButcherTable_LoadDIRKByName
, and
ARKodeButcherTable_LoadERKByName
to load a table from a string.
Fixed a bug in the CUDA and HIP vectors where N_VMaxNorm
would return the
minimum positive floating-point value for the zero vector.
Fixed memory leaks/out of bounds memory accesses in the ARKODE MRIStep module
that could occur when attaching a coupling table after reinitialization with a
different number of stages than originally selected.
Fixed a memory leak in CVODE and CVODES where the projection memory would not be
deallocated when calling CVodeFree
.
SUNDIALS minor release v6.3.0
Changes to SUNDIALS in release 6.3.0
Added GetUserData
functions in each package to retrieve the user data pointer
provided to SetUserData
functions. See ARKStepGetUserData
,
ERKStepGetUserData
, MRIStepGetUserData
, CVodeGetUserData
,
IDAGetUserData
, or KINGetUserData
for more information.
Fixed a bug in ERKStepReset
, ERKStepReInit
, ARKStepReset
, ARKStepReInit
,
MRIStepReset
, and MRIStepReInit
where a previously-set value of tstop (from
a call to ERKStepSetStopTime
, ARKStepSetStopTime
, or MRIStepSetStopTime
,
respectively) would not be cleared.
Updated MRIStepReset
to call the corresponding MRIStepInnerResetFn
with the same
(tR,yR) arguments for the MRIStepInnerStepper
object that is used to evolve the
MRI "fast" time scale subproblems.
Added a new example which demonstrates using CVODE with a discontinuous right-hand-side function and rootfinding.
Added a variety of embedded DIRK methods from [Kennedy & Carpenter,
NASA TM-2016-219173, 2016] and [Kennedy & Carpenter, Appl. Numer. Math., 146, 2019] to
ARKODE.
Fixed the unituitive behavior of the USE_GENERIC_MATH
CMake option which
caused the double precision math functions to be used regardless of the value of
SUNDIALS_PRECISION
. Now, SUNDIALS will use precision appropriate math
functions when they are available and the user may provide the math library to
link to via the advanced CMake option SUNDIALS_MATH_LIBRARY
.
Changed SUNDIALS_LOGGING_ENABLE_MPI
CMake option default to be 'OFF'.
SUNDIALS minor release v6.2.0
https://github.com/LLNL/sundials is now the official SUNDIALS development repository.
Added the SUNLogger
API which provides a SUNDIALS-wide
mechanism for logging of errors, warnings, informational output,
and debugging output.
Deprecated the following functions, it is recommended to use the SUNLogger
API
instead.
ARKStepSetDiagnostics
ERKStepSetDiagnostics
MRIStepSetDiagnostics
KINSetInfoFile
SUNNonlinSolSetPrintLevel_Newton
SUNNonlinSolSetInfoFile_Newton
SUNNonlinSolSetPrintLevel_FixedPoint
SUNNonlinSolSetInfoFile_FixedPoint
SUNLinSolSetInfoFile_PCG
SUNLinSolSetPrintLevel_PCG
SUNLinSolSetInfoFile_SPGMR
SUNLinSolSetPrintLevel_SPGMR
SUNLinSolSetInfoFile_SPFGMR
SUNLinSolSetPrintLevel_SPFGMR
SUNLinSolSetInfoFile_SPTFQM
SUNLinSolSetPrintLevel_SPTFQMR
SUNLinSolSetInfoFile_SPBCGS
SUNLinSolSetPrintLevel_SPBCGS
The SUNLinSolSetInfoFile_**
and SUNNonlinSolSetInfoFile_*
family of
functions are now enabled by setting the CMake option SUNDIALS_LOGGING_LEVEL
to a value >= 3
.
Added the function SUNProfiler_Reset
to reset the region timings and counters
to zero.
Added the functions ARKStepPrintAllStats
, ERKStepPrintAllStats
,
MRIStepPrintAll
, CVodePrintAllStats
, IDAPrintAllStats
, and
KINPrintAllStats
to output all of the integrator, nonlinear solver, linear
solver, and other statistics in one call. The file scripts/sundials_csv.py
contains functions for parsing the comma-separated value output files.
Added functions to CVODE, CVODES, IDA, and IDAS to change the default step size
adaptivity parameters. For more information see the documentation for:
CVodeSetEtaFixedStepBounds
CVodeSetEtaMaxFirstStep
CVodeSetEtaMaxEarlyStep
CVodeSetNumStepsEtaMaxEarlyStep
CVodeSetEtaMax
CVodeSetEtaMin
CVodeSetEtaMinErrFailEta
CVodeSetEtaMaxErrFailEta
CVodeSetNumFailsEtaMaxErrFail
CVodeSetEtaConvFail
IDASetEtaFixedStepBounds
IDAsetEtaMax
IDASetEtaMin
IDASetEtaLow
IDASetEtaMinErrFail
IDASetEtaConvFail
Added the functions CVodeSetDeltaGammaMaxLSetup
and
CVodeSetDeltaGammaMaxBadJac
in CVODE and CVODES to adjust the gamma
change
thresholds to require a linear solver setup or Jacobian/precondition update,
respectively.
Added the function IDASetDetlaCjLSetup
in IDA and IDAS to adjust the parameter
that determines when a change in c_j
requires calling the linear solver setup
function.
Added the function MRIStepSetOrder
to select the default MRI method of a given
order.
Added support to CVODES 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
CVODES user documentation and examples.
The behavior of N_VSetKernelExecPolicy_Sycl
has been updated to be consistent
with the CUDA and HIP vectors. The input execution policies are now cloned and
may be freed after calling N_VSetKernelExecPolicy_Sycl
. Additionally, NULL
inputs are now allowed and, if provided, will reset the vector execution
policies to the defaults.
Fixed the SUNContext
convenience class for C++ users to disallow copy
construction and allow move construction.
A memory leak in the SYCL vector was fixed where the execution policies were
not freed when the vector was destroyed.
The include guard in nvector_mpimanyvector.h
has been corrected to enable
using both the ManyVector and MPIManyVector NVector implementations in the same
simulation.
Changed exported SUNDIALS PETSc CMake targets to be INTERFACE IMPORTED instead
of UNKNOWN IMPORTED.
A bug was fixed in the integrator functions to retrieve the number of nonlinear
solver failures. The failure count returned was the number of failed steps due
to a nonlinear solver failure i.e., if a nonlinear solve failed with a stale
Jacobian or preconditioner but succeeded after updating the Jacobian or
preconditioner, the initial failure was not included in the nonlinear solver
failure count. The following functions have been updated to return the total
number of nonlinear solver failures:
ARKStepGetNumNonlinSolvConvFails
ARKStepGetNonlinSolvStats
MRIStepGetNumNonlinSolvConvFails
MRIStepGetNonlinSolvStats
CVodeGetNumNonlinSolvConvFails
CVodeGetNonlinSolvStats
CVodeGetSensNumNonlinSolvConvFails
CVodeGetSensNonlinSolvStats
CVodeGetStgrSensNumNonlinSolvConvFails
CVodeGetStgrSensNonlinSolvStats
IDAGetNumNonlinSolvConvFails
IDAGetNonlinSolvStats
IDAGetSensNumNonlinSolvConvFails
IDAGetSensNonlinSolvStats
As such users may see an increase in the number of failures reported from the
above functions. The following functions have been added to retrieve the number
of failed steps due to a nonlinear solver failure i.e., the counts previously
returned by the above functions:
ARKStepGetNumStepSolveFails
MRIStepGetNumStepSolveFails
CVodeGetNumStepSolveFails
CVodeGetNumStepSensSolveFails
CVodeGetNumStepStgrSensSolveFails
IDAGetNumStepSolveFails
IDAGetNumStepSensSolveFails
SUNDIALS patch release v6.1.1
Changes to SUNDIALS in release 6.1.1
Fixed exported SUNDIALSConfig.cmake
.
Fixed Fortran interface to MRIStepInnerStepper
and ``MRIStepCoupling`
structures and functions.
Added new Fortran example program,
examples/arkode/F2003_serial/ark_kpr_mri_f2003.f90
demonstrating MRI
capabilities.