1
1
# SUNDIALS Changelog
2
2
3
- ## Changes to SUNDIALS in release X.Y.Z
3
+ ## Changes to SUNDIALS in release 7.2.0
4
4
5
5
### Major Features
6
6
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.
11
12
12
13
Added an operator splitting module, SplittingStep, and forcing method module,
13
14
ForcingStep, to ARKODE. These modules support a broad range of operator-split
14
15
time integration methods for multiphysics applications.
15
16
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
+
16
23
### New Features and Enhancements
17
24
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
20
34
21
35
Added the ` SUNStepper ` base class to represent a generic solution procedure for
22
36
IVPs. This is used by the SplittingStep and ForcingStep modules of ARKODE. A
23
37
SUNStepper can be created from an ARKODE memory block with the new function
24
38
` ARKodeCreateSUNStepper ` . To enable interoperability with ` MRIStepInnerStepper ` ,
25
39
the function ` MRIStepInnerStepper_CreateFromSUNStepper ` was added.
26
40
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
+
27
56
The following DIRK schemes now have coefficients accurate to quad precision:
28
57
* ` ARKODE_BILLINGTON_3_3_2 `
29
58
* ` ARKODE_KVAERNO_4_2_3 `
@@ -32,106 +61,103 @@ The following DIRK schemes now have coefficients accurate to quad precision:
32
61
* ` ARKODE_KVAERNO_5_3_4 `
33
62
* ` ARKODE_KVAERNO_7_4_5 `
34
63
64
+ #### CMake
65
+
35
66
The default value of ` CMAKE_CUDA_ARCHITECTURES ` is no longer set to ` 70 ` and is
36
67
now determined automatically by CMake. The previous default was only valid for
37
68
Volta GPUs while the automatically selected value will vary across compilers and
38
69
compiler versions. As such, users are encouraged to override this value with the
39
70
architecture for their system.
40
71
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
44
81
` Trilinos_INTERFACE_* ` CMake options have been removed.
45
82
46
83
Example programs using * hypre* have been updated to support v2.20 and newer.
47
84
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
53
86
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
57
88
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.
65
91
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.
69
94
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 ) .
72
98
73
- ### Bug Fixes
99
+ #### NVector
74
100
75
101
Fixed a build failure with the SYCL NVector when using Intel oneAPI 2025.0
76
102
compilers. See GitHub Issue [ #596 ] ( https://github.com/LLNL/sundials/issues/596 ) .
77
103
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.
79
106
80
- Fixed a bug in the SPTFQMR linear solver where recoverable preconditioner errors
81
- were reported as unrecoverable.
107
+ #### SUNMatrix
82
108
83
109
Fixed a [ bug] ( https://github.com/LLNL/sundials/issues/581 ) in the sparse matrix
84
110
implementation of ` SUNMatScaleAddI ` which caused out of bounds writes unless
85
111
` indexvals ` were in ascending order for each row/column.
86
112
87
- Fixed ` ARKodeResize ` not using the default ` hscale ` when an argument of ` 0 ` was
88
- provided.
113
+ #### SUNLinearSolver
89
114
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.
91
117
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
96
119
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 .
99
122
100
123
Fixed a memory leak that could occur if `` ARKodeSetDefaults `` is called
101
124
repeatedly.
102
125
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.
105
127
106
128
Fixed 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.
109
131
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.
114
145
115
146
Fixed a bug in SPRKStep when using compensated summations where the error vector
116
147
was not initialized to zero.
117
148
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
121
154
122
155
Fixed a bug in the 32-bit `` sunindextype `` Fortran interfaces to
123
156
`` N_VGetSubvectorArrayPointer_ManyVector `` ,
124
157
`` N_VGetSubvectorArrayPointer_MPIManyVector `` , `` SUNBandMatrix_Column `` and
125
158
`` SUNDenseMatrix_Column `` where 64-bit `` sunindextype `` interface functions were
126
159
used.
127
160
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
-
135
161
### Deprecation Notices
136
162
137
163
Deprecated 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
277
303
to retain the current functionality using other user-callable functions.
278
304
279
305
The 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
281
307
underlying wrapped external library vector objects instead with
282
308
` N_VGetVector_ParHyp ` and ` N_VGetVector_Petsc ` , respectively.
283
309
@@ -584,9 +610,9 @@ ARKODE.
584
610
### New Features
585
611
586
612
Updated 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
588
614
solution 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
590
616
routine ` CVodeSetInterpolateStopTime ` , ` ARKStepSetInterpolateStopTime ` ,
591
617
` ERKStepSetInterpolateStopTime ` , or ` MRIStepSetInterpolateStopTime ` .
592
618
@@ -906,7 +932,7 @@ instead.
906
932
* ` SUNLinSolSetInfoFile_SPBCGS `
907
933
* ` SUNLinSolSetPrintLevel_SPBCGS `
908
934
909
- The ` SUNLinSolSetInfoFile_* ` and ` SUNNonlinSolSetInfoFile_* ` family of
935
+ The ` SUNLinSolSetInfoFile_* ` and ` SUNNonlinSolSetInfoFile_* ` family of
910
936
functions are now enabled by setting the CMake option ` SUNDIALS_LOGGING_LEVEL `
911
937
to a value ` >= 3 ` .
912
938
@@ -1067,7 +1093,7 @@ can be enabled with the CMake option `SUNDIALS_BUILD_WITH_PROFILING`. A built-in
1067
1093
profiler will be used by default, but the
1068
1094
[ Caliper] ( https://github.com/LLNL/Caliper ) library can also be used instead with
1069
1095
the 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
1071
1097
enabled judiciously.
1072
1098
1073
1099
#### IMEX MRI Methods and MRIStepInnerStepper Object
@@ -1402,9 +1428,9 @@ use the `SUNLinSolNewEmpty` constructor will, at a minimum, need set the
1402
1428
to leverage this new set function to remove one dot product per solve.
1403
1429
1404
1430
The 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
1406
1432
SUNLinearSolver 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
1408
1434
internally to the linear solver itself, and are not provided by the SUNDIALS
1409
1435
package.
1410
1436
@@ -1779,7 +1805,7 @@ should be used instead.
1779
1805
Added support for a user-supplied function to update the prediction for each
1780
1806
implicit stage solution in ARKStep. If supplied, this routine will be called
1781
1807
* 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
1783
1809
has type ` ARKStepStagePredictFn ` , and may be set by calling
1784
1810
` ARKStepSetStagePredictFn ` .
1785
1811
@@ -1977,7 +2003,7 @@ The inputs values passed to the first two inputs of the `SUNNonlinSolSolve`
1977
2003
function in the ` SUNNonlinearSolver ` have been changed to be the predicted state
1978
2004
and the initial guess for the correction to that state. Additionally, the
1979
2005
definitions 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
1981
2007
more information on the nonlinear system formulation and the API functions see
1982
2008
the ` SUNNonlinearSolver ` chapter in the user guides.
1983
2009
0 commit comments