Skip to content

Releases: LLNL/sundials

SUNDIALS patch release v6.6.2

06 Nov 22:44
v6.6.2
cf16ebf

Choose a tag to compare

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

07 Sep 01:01
v6.6.1
a4553b5

Choose a tag to compare

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

20 Jul 19:09
v6.6.0
1ea097b

Choose a tag to compare

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

30 Mar 18:02
v6.5.1
34d21af

Choose a tag to compare

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

21 Dec 20:11
7c31824

Choose a tag to compare

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

31 Oct 23:03
c298f0f

Choose a tag to compare

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

21 Oct 19:39
b27bf8a

Choose a tag to compare

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

10 Aug 19:04
1375f05

Choose a tag to compare

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

22 Apr 17:20

Choose a tag to compare

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

11 Feb 18:23

Choose a tag to compare

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.