Skip to content

Commit 0eff396

Browse files
authored
Release: 7.2.0 (#620)
SUNDIALS Release v7.2.0
1 parent 545db2a commit 0eff396

40 files changed

+366
-309
lines changed

CHANGELOG.md

+96-70
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,58 @@
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

1213
Added an operator splitting module, SplittingStep, and forcing method module,
1314
ForcingStep, to ARKODE. These modules support a broad range of operator-split
1415
time 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

2135
Added the `SUNStepper` base class to represent a generic solution procedure for
2236
IVPs. This is used by the SplittingStep and ForcingStep modules of ARKODE. A
2337
SUNStepper can be created from an ARKODE memory block with the new function
2438
`ARKodeCreateSUNStepper`. To enable interoperability with `MRIStepInnerStepper`,
2539
the 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+
2756
The 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+
3566
The default value of `CMAKE_CUDA_ARCHITECTURES` is no longer set to `70` and is
3667
now determined automatically by CMake. The previous default was only valid for
3768
Volta GPUs while the automatically selected value will vary across compilers and
3869
compiler versions. As such, users are encouraged to override this value with the
3970
architecture 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

4683
Example 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

75101
Fixed a build failure with the SYCL NVector when using Intel oneAPI 2025.0
76102
compilers. 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

83109
Fixed a [bug](https://github.com/LLNL/sundials/issues/581) in the sparse matrix
84110
implementation 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

100123
Fixed a memory leak that could occur if ``ARKodeSetDefaults`` is called
101124
repeatedly.
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

106128
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.
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

115146
Fixed a bug in SPRKStep when using compensated summations where the error vector
116147
was 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

122155
Fixed 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
126159
used.
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

137163
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
277303
to retain the current functionality using other user-callable functions.
278304

279305
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
281307
underlying 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

586612
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
588614
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
590616
routine `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
910936
functions are now enabled by setting the CMake option `SUNDIALS_LOGGING_LEVEL`
911937
to a value `>= 3`.
912938

@@ -1067,7 +1093,7 @@ can be enabled with the CMake option `SUNDIALS_BUILD_WITH_PROFILING`. A built-in
10671093
profiler will be used by default, but the
10681094
[Caliper](https://github.com/LLNL/Caliper) library can also be used instead with
10691095
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
10711097
enabled judiciously.
10721098

10731099
#### IMEX MRI Methods and MRIStepInnerStepper Object
@@ -1402,9 +1428,9 @@ use the `SUNLinSolNewEmpty` constructor will, at a minimum, need set the
14021428
to leverage this new set function to remove one dot product per solve.
14031429

14041430
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
14061432
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
14081434
internally to the linear solver itself, and are not provided by the SUNDIALS
14091435
package.
14101436

@@ -1779,7 +1805,7 @@ should be used instead.
17791805
Added support for a user-supplied function to update the prediction for each
17801806
implicit 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
17831809
has 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`
19772003
function in the `SUNNonlinearSolver` have been changed to be the predicted state
19782004
and the initial guess for the correction to that state. Additionally, the
19792005
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
19812007
more information on the nonlinear system formulation and the API functions see
19822008
the `SUNNonlinearSolver` chapter in the user guides.
19832009

CITATIONS.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ they are using rather than the combined SUNDIALS online guide:
6969
author = {Daniel R. Reynolds and David J. Gardner and Carol S. Woodward and Cody J. Balos},
7070
title = {User Documentation for ARKODE},
7171
year = {2024},
72-
note = {v6.1.1}
72+
note = {v6.2.0}
7373
}
7474
```
7575

@@ -78,7 +78,7 @@ they are using rather than the combined SUNDIALS online guide:
7878
author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward},
7979
title = {User Documentation for CVODE},
8080
year = {2024},
81-
note = {v7.1.1}
81+
note = {v7.2.0}
8282
}
8383
```
8484

@@ -87,7 +87,7 @@ they are using rather than the combined SUNDIALS online guide:
8787
author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward},
8888
title = {User Documentation for CVODES},
8989
year = {2024},
90-
note = {v7.1.1}
90+
note = {v7.2.0}
9191
}
9292
```
9393

@@ -96,7 +96,7 @@ they are using rather than the combined SUNDIALS online guide:
9696
author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward},
9797
title = {User Documentation for IDA},
9898
year = {2024},
99-
note = {v7.1.1}
99+
note = {v7.2.0}
100100
}
101101
```
102102

@@ -105,7 +105,7 @@ they are using rather than the combined SUNDIALS online guide:
105105
author = {Radu Serban and Cosmin Petra and Alan C. Hindmarsh and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward},
106106
title = {User Documentation for IDAS},
107107
year = {2024},
108-
note = {v6.1.1}
108+
note = {v6.2.0}
109109
}
110110
```
111111

@@ -114,6 +114,6 @@ they are using rather than the combined SUNDIALS online guide:
114114
author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward},
115115
title = {User Documentation for KINSOL},
116116
year = {2024},
117-
note = {v7.1.1}
117+
note = {v7.2.0}
118118
}
119119
```

0 commit comments

Comments
 (0)