11# SUNDIALS Changelog
22
3- ## Changes to SUNDIALS in release X.Y.Z
3+ ## Changes to SUNDIALS in release 7.2.0
44
55### Major Features
66
7- Added a time-stepping module to ARKODE for low storage Runge--Kutta methods, LSRKStep.
8- This currently supports five explicit low-storage methods: the second-order Runge--Kutta--Chebyshev
9- and Runge--Kutta--Legendre methods, and the second- through fourth-order optimal strong stability
10- preserving Runge--Kutta methods. All methods include embeddings for temporal adaptivity.
7+ Added a time-stepping module to ARKODE for low storage Runge--Kutta methods,
8+ LSRKStep. This currently supports five explicit low-storage methods: the
9+ second-order Runge--Kutta--Chebyshev and Runge--Kutta--Legendre methods, and the
10+ second- through fourth-order optimal strong stability preserving Runge--Kutta
11+ methods. All methods include embeddings for temporal adaptivity.
1112
1213Added an operator splitting module, SplittingStep, and forcing method module,
1314ForcingStep, to ARKODE. These modules support a broad range of operator-split
1415time integration methods for multiphysics applications.
1516
17+ Added support for multirate time step adaptivity controllers, based on the
18+ recently introduced ` SUNAdaptController ` base class, to ARKODE's MRIStep module.
19+ As a part of this, we added embeddings for existing MRI-GARK methods, as well as
20+ support for embedded MERK and IMEX-MRI-SR methods. Added new default MRI methods
21+ for temporally adaptive versus fixed-step runs.
22+
1623### New Features and Enhancements
1724
18- Added the ` ARKodeSetStepDirection ` and ` ARKodeGetStepDirection ` functions to
19- change and query the direction of integration.
25+ #### Logging
26+
27+ The information level logging output in ARKODE, CVODE(S), and IDA(S) has been
28+ updated to be more uniform across the packages and a new ` tools ` directory has
29+ been added with a Python module, ` suntools ` , containing utilities for parsing
30+ logging output. The Python utilities for parsing CSV output have been relocated
31+ from the ` scripts ` directory to the Python module.
32+
33+ #### SUNStepper
2034
2135Added the ` SUNStepper ` base class to represent a generic solution procedure for
2236IVPs. This is used by the SplittingStep and ForcingStep modules of ARKODE. A
2337SUNStepper can be created from an ARKODE memory block with the new function
2438` ARKodeCreateSUNStepper ` . To enable interoperability with ` MRIStepInnerStepper ` ,
2539the function ` MRIStepInnerStepper_CreateFromSUNStepper ` was added.
2640
41+ #### ARKODE
42+
43+ Added functionality to ARKODE to accumulate a temporal error estimate over
44+ multiple time steps. See the routines ` ARKodeSetAccumulatedErrorType ` ,
45+ ` ARKodeResetAccumulatedError ` , and ` ARKodeGetAccumulatedError ` for details.
46+
47+ Added the ` ARKodeSetStepDirection ` and ` ARKodeGetStepDirection ` functions to
48+ change and query the direction of integration.
49+
50+ Added the function ` MRIStepGetNumInnerStepperFails ` to retrieve the number of
51+ recoverable failures reported by the MRIStepInnerStepper.
52+
53+ Added a utility routine to wrap any valid ARKODE integrator for use as an
54+ MRIStep inner stepper object, ` ARKodeCreateMRIStepInnerStepper ` .
55+
2756The following DIRK schemes now have coefficients accurate to quad precision:
2857* ` ARKODE_BILLINGTON_3_3_2 `
2958* ` ARKODE_KVAERNO_4_2_3 `
@@ -32,106 +61,103 @@ The following DIRK schemes now have coefficients accurate to quad precision:
3261* ` ARKODE_KVAERNO_5_3_4 `
3362* ` ARKODE_KVAERNO_7_4_5 `
3463
64+ #### CMake
65+
3566The default value of ` CMAKE_CUDA_ARCHITECTURES ` is no longer set to ` 70 ` and is
3667now determined automatically by CMake. The previous default was only valid for
3768Volta GPUs while the automatically selected value will vary across compilers and
3869compiler versions. As such, users are encouraged to override this value with the
3970architecture for their system.
4071
41- The Trilinos Teptra NVector interface has been updated to utilize CMake
42- imported targets added in Trilinos 14 to improve support for different Kokkos
43- backends with Trilinos. As such, Trilinos 14 or newer is required and the
72+ The build system has been updated to utilize the CMake LAPACK imported target
73+ which should ease building SUNDIALS with LAPACK libraries that require setting
74+ specific linker flags e.g., MKL.
75+
76+ #### Third Party Libraries
77+
78+ The Trilinos Teptra NVector interface has been updated to utilize CMake imported
79+ targets added in Trilinos 14 to improve support for different Kokkos backends
80+ with Trilinos. As such, Trilinos 14 or newer is required and the
4481` Trilinos_INTERFACE_* ` CMake options have been removed.
4582
4683Example programs using * hypre* have been updated to support v2.20 and newer.
4784
48- The information level logging output in ARKODE, CVODE(S), and IDA(S) has been
49- updated to be more uniform across the packages and a new ` tools ` directory
50- has been added with a Python module, ` suntools ` , containing utilities for
51- parsing logging output. The Python utilities for parsing CSV output have been
52- relocated from the ` scripts ` directory to the Python module.
85+ ### Bug Fixes
5386
54- The build system has been updated to utilize the CMake LAPACK imported target
55- which should ease building SUNDIALS with LAPACK libraries that require setting
56- specific linker flags e.g., MKL.
87+ #### CMake
5788
58- Added support for multirate time step adaptivity controllers, based on the
59- recently introduced ` SUNAdaptController ` base class, to ARKODE's MRIStep module.
60- As a part of this, we added embeddings for existing MRI-GARK methods, as well as
61- support for embedded MERK and IMEX-MRI-SR methods. Added new default MRI methods
62- for temporally adaptive versus fixed-step runs. Added the function
63- ` MRIStepGetNumInnerStepperFails ` to retrieve the number of recoverable
64- failures reported by the MRIStepInnerStepper.
89+ Fixed a CMake bug regarding usage of missing "print_warning" macro that was only
90+ triggered when the deprecated ` CUDA_ARCH ` option was used.
6591
66- Added functionality to ARKODE to accumulate a temporal error
67- estimate over multiple time steps. See the routines ` ARKodeSetAccumulatedErrorType ` ,
68- ` ARKodeResetAccumulatedError ` , and ` ARKodeGetAccumulatedError ` for details.
92+ Fixed a CMake configuration issue related to aliasing an ` ALIAS ` target when
93+ using ` ENABLE_KLU=ON ` in combination with a static-only build of SuiteSparse.
6994
70- Added a utility routine to wrap any valid ARKODE integrator for use as an MRIStep
71- inner stepper object, ` ARKodeCreateMRIStepInnerStepper ` .
95+ Fixed a CMake issue which caused third-party CMake variables to be unset. Users
96+ may see more options in the CMake GUI now as a result of the fix. See details
97+ in GitHub Issue [ #538 ] ( https://github.com/LLNL/sundials/issues/538 ) .
7298
73- ### Bug Fixes
99+ #### NVector
74100
75101Fixed a build failure with the SYCL NVector when using Intel oneAPI 2025.0
76102compilers. See GitHub Issue [ #596 ] ( https://github.com/LLNL/sundials/issues/596 ) .
77103
78- Fixed a bug where ` CVodeSetProjFailEta ` would ignore the ` eta ` parameter.
104+ Fixed compilation errors when building the Trilinos Teptra NVector with CUDA
105+ support.
79106
80- Fixed a bug in the SPTFQMR linear solver where recoverable preconditioner errors
81- were reported as unrecoverable.
107+ #### SUNMatrix
82108
83109Fixed a [ bug] ( https://github.com/LLNL/sundials/issues/581 ) in the sparse matrix
84110implementation of ` SUNMatScaleAddI ` which caused out of bounds writes unless
85111` indexvals ` were in ascending order for each row/column.
86112
87- Fixed ` ARKodeResize ` not using the default ` hscale ` when an argument of ` 0 ` was
88- provided.
113+ #### SUNLinearSolver
89114
90- Fixed the loading of ARKStep's default first order explicit method.
115+ Fixed a bug in the SPTFQMR linear solver where recoverable preconditioner errors
116+ were reported as unrecoverable.
91117
92- Fixed a bug in ARKODE when enabling rootfinding with fixed step sizes and the
93- initial value of the rootfinding function is zero. In this case, uninitialized
94- right-hand side data was used to compute a state value near the initial
95- condition to determine if any rootfinding functions are initially active.
118+ #### ARKODE
96119
97- Fixed a CMake bug regarding usage of missing "print_warning" macro
98- that was only triggered when the deprecated ` CUDA_ARCH ` option was used .
120+ Fixed ` ARKodeResize ` not using the default ` hscale ` when an argument of ` 0 ` was
121+ provided .
99122
100123Fixed a memory leak that could occur if `` ARKodeSetDefaults `` is called
101124repeatedly.
102125
103- Fixed compilation errors when building the Trilinos Teptra NVector with CUDA
104- support.
126+ Fixed the loading of ARKStep's default first order explicit method.
105127
106128Fixed loading the default IMEX-MRI method if ` ARKodeSetOrder ` is used to specify
107- a third or fourth order method. Previously, the default second order method
108- was loaded in both cases.
129+ a third or fourth order method. Previously, the default second order method was
130+ loaded in both cases.
109131
110- Fixed a bug in MRIStep where the data supplied to the Hermite interpolation module did
111- not include contributions from the fast right-hand side function. With this fix, users
112- will see one additional fast right-hand side function evaluation per slow step with the
113- Hermite interpolation option.
132+ Fixed potential memory leaks and out of bounds array accesses that could occur
133+ in the ARKODE Lagrange interpolation module when changing the method order or
134+ polynomial degree after re-initializing an integrator.
135+
136+ Fixed a bug in ARKODE when enabling rootfinding with fixed step sizes and the
137+ initial value of the rootfinding function is zero. In this case, uninitialized
138+ right-hand side data was used to compute a state value near the initial
139+ condition to determine if any rootfinding functions are initially active.
140+
141+ Fixed a bug in MRIStep where the data supplied to the Hermite interpolation
142+ module did not include contributions from the fast right-hand side
143+ function. With this fix, users will see one additional fast right-hand side
144+ function evaluation per slow step with the Hermite interpolation option.
114145
115146Fixed a bug in SPRKStep when using compensated summations where the error vector
116147was not initialized to zero.
117148
118- Fixed potential memory leaks and out of bounds array accesses that could occur
119- in the ARKODE Lagrange interpolation module when changing the method order or
120- polynomial degree after re-initializing an integrator.
149+ #### CVODE(S)
150+
151+ Fixed a bug where ` CVodeSetProjFailEta ` would ignore the ` eta ` parameter.
152+
153+ #### Fortran Interfaces
121154
122155Fixed a bug in the 32-bit `` sunindextype `` Fortran interfaces to
123156`` N_VGetSubvectorArrayPointer_ManyVector `` ,
124157`` N_VGetSubvectorArrayPointer_MPIManyVector `` , `` SUNBandMatrix_Column `` and
125158`` SUNDenseMatrix_Column `` where 64-bit `` sunindextype `` interface functions were
126159used.
127160
128- Fixed a CMake configuration issue related to aliasing an ` ALIAS ` target when
129- using ` ENABLE_KLU=ON ` in combination with a static-only build of SuiteSparse.
130-
131- Fixed a CMake issue which caused third-party CMake variables to be unset.
132- Users may see more options in the CMake GUI now as a result of the fix.
133- See details in GitHub Issue [ #538 ] ( https://github.com/LLNL/sundials/issues/538 ) .
134-
135161### Deprecation Notices
136162
137163Deprecated the ARKStep-specific utility routine for wrapping an ARKStep instance
@@ -277,7 +303,7 @@ ARKODE-wide equivalent, instructions have been added to the user guide for how
277303to retain the current functionality using other user-callable functions.
278304
279305The unsupported implementations of ` N_VGetArrayPointer ` and ` N_VSetArrayPointer `
280- for the * hypre* and PETSc vectors are now deprecated. Users should access the
306+ for the * hypre* and PETSc vectors are now deprecated. Users should access the
281307underlying wrapped external library vector objects instead with
282308` N_VGetVector_ParHyp ` and ` N_VGetVector_Petsc ` , respectively.
283309
@@ -584,9 +610,9 @@ ARKODE.
584610### New Features
585611
586612Updated CVODE, CVODES and ARKODE default behavior when returning the solution when
587- the internal time has reached a user-specified stop time. Previously, the output
613+ the internal time has reached a user-specified stop time. Previously, the output
588614solution was interpolated to the value of ` tstop ` ; the default is now to copy the
589- internal solution vector. Users who wish to revert to interpolation may call a new
615+ internal solution vector. Users who wish to revert to interpolation may call a new
590616routine ` CVodeSetInterpolateStopTime ` , ` ARKStepSetInterpolateStopTime ` ,
591617` ERKStepSetInterpolateStopTime ` , or ` MRIStepSetInterpolateStopTime ` .
592618
@@ -906,7 +932,7 @@ instead.
906932* ` SUNLinSolSetInfoFile_SPBCGS `
907933* ` SUNLinSolSetPrintLevel_SPBCGS `
908934
909- The ` SUNLinSolSetInfoFile_* ` and ` SUNNonlinSolSetInfoFile_* ` family of
935+ The ` SUNLinSolSetInfoFile_* ` and ` SUNNonlinSolSetInfoFile_* ` family of
910936functions are now enabled by setting the CMake option ` SUNDIALS_LOGGING_LEVEL `
911937to a value ` >= 3 ` .
912938
@@ -1067,7 +1093,7 @@ can be enabled with the CMake option `SUNDIALS_BUILD_WITH_PROFILING`. A built-in
10671093profiler will be used by default, but the
10681094[ Caliper] ( https://github.com/LLNL/Caliper ) library can also be used instead with
10691095the CMake option ` ENABLE_CALIPER ` . See the documentation section on profiling
1070- for more details. ** WARNING** : Profiling will impact performance, and should be
1096+ for more details. ** WARNING** : Profiling will impact performance, and should be
10711097enabled judiciously.
10721098
10731099#### IMEX MRI Methods and MRIStepInnerStepper Object
@@ -1402,9 +1428,9 @@ use the `SUNLinSolNewEmpty` constructor will, at a minimum, need set the
14021428to leverage this new set function to remove one dot product per solve.
14031429
14041430The time integrator packages (ARKODE, CVODE(S), and IDA(S)) all now support a
1405- new "matrix-embedded" SUNLinearSolver type. This type supports user-supplied
1431+ new "matrix-embedded" SUNLinearSolver type. This type supports user-supplied
14061432SUNLinearSolver implementations that set up and solve the specified linear
1407- system at each linear solve call. Any matrix-related data structures are held
1433+ system at each linear solve call. Any matrix-related data structures are held
14081434internally to the linear solver itself, and are not provided by the SUNDIALS
14091435package.
14101436
@@ -1779,7 +1805,7 @@ should be used instead.
17791805Added support for a user-supplied function to update the prediction for each
17801806implicit stage solution in ARKStep. If supplied, this routine will be called
17811807* after* any existing ARKStep predictor algorithm completes, so that the
1782- predictor may be modified by the user as desired. The new user-supplied routine
1808+ predictor may be modified by the user as desired. The new user-supplied routine
17831809has type ` ARKStepStagePredictFn ` , and may be set by calling
17841810` ARKStepSetStagePredictFn ` .
17851811
@@ -1977,7 +2003,7 @@ The inputs values passed to the first two inputs of the `SUNNonlinSolSolve`
19772003function in the ` SUNNonlinearSolver ` have been changed to be the predicted state
19782004and the initial guess for the correction to that state. Additionally, the
19792005definitions of ` SUNNonlinSolLSetupFn ` and ` SUNNonlinSolLSolveFn ` in the
1980- SUNNonlinearSolver API have been updated to remove unused input parameters. For
2006+ SUNNonlinearSolver API have been updated to remove unused input parameters. For
19812007more information on the nonlinear system formulation and the API functions see
19822008the ` SUNNonlinearSolver ` chapter in the user guides.
19832009
0 commit comments