diff --git a/CHANGELOG.md b/CHANGELOG.md index f9e1929344..e4fd3ff71f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,22 +1,36 @@ # SUNDIALS Changelog -## Changes to SUNDIALS in release X.Y.Z +## Changes to SUNDIALS in release 7.2.0 ### Major Features -Added a time-stepping module to ARKODE for low storage Runge--Kutta methods, LSRKStep. -This currently supports five explicit low-storage methods: the second-order Runge--Kutta--Chebyshev -and Runge--Kutta--Legendre methods, and the second- through fourth-order optimal strong stability -preserving Runge--Kutta methods. All methods include embeddings for temporal adaptivity. +Added a time-stepping module to ARKODE for low storage Runge--Kutta methods, +LSRKStep. This currently supports five explicit low-storage methods: the +second-order Runge--Kutta--Chebyshev and Runge--Kutta--Legendre methods, and the +second- through fourth-order optimal strong stability preserving Runge--Kutta +methods. All methods include embeddings for temporal adaptivity. Added an operator splitting module, SplittingStep, and forcing method module, ForcingStep, to ARKODE. These modules support a broad range of operator-split time integration methods for multiphysics applications. +Added support for multirate time step adaptivity controllers, based on the +recently introduced `SUNAdaptController` base class, to ARKODE's MRIStep module. +As a part of this, we added embeddings for existing MRI-GARK methods, as well as +support for embedded MERK and IMEX-MRI-SR methods. Added new default MRI methods +for temporally adaptive versus fixed-step runs. + ### New Features and Enhancements -Added the `ARKodeSetStepDirection` and `ARKodeGetStepDirection` functions to -change and query the direction of integration. +#### Logging + +The information level logging output in ARKODE, CVODE(S), and IDA(S) has been +updated to be more uniform across the packages and a new `tools` directory has +been added with a Python module, `suntools`, containing utilities for parsing +logging output. The Python utilities for parsing CSV output have been relocated +from the `scripts` directory to the Python module. + +#### SUNStepper Added the `SUNStepper` base class to represent a generic solution procedure for IVPs. This is used by the SplittingStep and ForcingStep modules of ARKODE. A @@ -24,6 +38,21 @@ SUNStepper can be created from an ARKODE memory block with the new function `ARKodeCreateSUNStepper`. To enable interoperability with `MRIStepInnerStepper`, the function `MRIStepInnerStepper_CreateFromSUNStepper` was added. +#### ARKODE + +Added functionality to ARKODE to accumulate a temporal error estimate over +multiple time steps. See the routines `ARKodeSetAccumulatedErrorType`, +`ARKodeResetAccumulatedError`, and `ARKodeGetAccumulatedError` for details. + +Added the `ARKodeSetStepDirection` and `ARKodeGetStepDirection` functions to +change and query the direction of integration. + +Added the function `MRIStepGetNumInnerStepperFails` to retrieve the number of +recoverable failures reported by the MRIStepInnerStepper. + +Added a utility routine to wrap any valid ARKODE integrator for use as an +MRIStep inner stepper object, `ARKodeCreateMRIStepInnerStepper`. + The following DIRK schemes now have coefficients accurate to quad precision: * `ARKODE_BILLINGTON_3_3_2` * `ARKODE_KVAERNO_4_2_3` @@ -32,92 +61,96 @@ The following DIRK schemes now have coefficients accurate to quad precision: * `ARKODE_KVAERNO_5_3_4` * `ARKODE_KVAERNO_7_4_5` +#### CMake + The default value of `CMAKE_CUDA_ARCHITECTURES` is no longer set to `70` and is now determined automatically by CMake. The previous default was only valid for Volta GPUs while the automatically selected value will vary across compilers and compiler versions. As such, users are encouraged to override this value with the architecture for their system. -The Trilinos Teptra NVector interface has been updated to utilize CMake -imported targets added in Trilinos 14 to improve support for different Kokkos -backends with Trilinos. As such, Trilinos 14 or newer is required and the +The build system has been updated to utilize the CMake LAPACK imported target +which should ease building SUNDIALS with LAPACK libraries that require setting +specific linker flags e.g., MKL. + +#### Third Party Libraries + +The Trilinos Teptra NVector interface has been updated to utilize CMake imported +targets added in Trilinos 14 to improve support for different Kokkos backends +with Trilinos. As such, Trilinos 14 or newer is required and the `Trilinos_INTERFACE_*` CMake options have been removed. Example programs using *hypre* have been updated to support v2.20 and newer. -The information level logging output in ARKODE, CVODE(S), and IDA(S) has been -updated to be more uniform across the packages and a new `tools` directory -has been added with a Python module, `suntools`, containing utilities for -parsing logging output. The Python utilities for parsing CSV output have been -relocated from the `scripts` directory to the Python module. +### Bug Fixes -The build system has been updated to utilize the CMake LAPACK imported target -which should ease building SUNDIALS with LAPACK libraries that require setting -specific linker flags e.g., MKL. +#### CMake -Added support for multirate time step adaptivity controllers, based on the -recently introduced `SUNAdaptController` base class, to ARKODE's MRIStep module. -As a part of this, we added embeddings for existing MRI-GARK methods, as well as -support for embedded MERK and IMEX-MRI-SR methods. Added new default MRI methods -for temporally adaptive versus fixed-step runs. Added the function -`MRIStepGetNumInnerStepperFails` to retrieve the number of recoverable -failures reported by the MRIStepInnerStepper. +Fixed a CMake bug regarding usage of missing "print_warning" macro that was only +triggered when the deprecated `CUDA_ARCH` option was used. -Added functionality to ARKODE to accumulate a temporal error -estimate over multiple time steps. See the routines `ARKodeSetAccumulatedErrorType`, -`ARKodeResetAccumulatedError`, and `ARKodeGetAccumulatedError` for details. +Fixed a CMake configuration issue related to aliasing an `ALIAS` target when +using `ENABLE_KLU=ON` in combination with a static-only build of SuiteSparse. -Added a utility routine to wrap any valid ARKODE integrator for use as an MRIStep -inner stepper object, `ARKodeCreateMRIStepInnerStepper`. +Fixed a CMake issue which caused third-party CMake variables to be unset. Users +may see more options in the CMake GUI now as a result of the fix. See details +in GitHub Issue [#538](https://github.com/LLNL/sundials/issues/538). -### Bug Fixes +#### NVector Fixed a build failure with the SYCL NVector when using Intel oneAPI 2025.0 compilers. See GitHub Issue [#596](https://github.com/LLNL/sundials/issues/596). -Fixed a bug where `CVodeSetProjFailEta` would ignore the `eta` parameter. +Fixed compilation errors when building the Trilinos Teptra NVector with CUDA +support. -Fixed a bug in the SPTFQMR linear solver where recoverable preconditioner errors -were reported as unrecoverable. +#### SUNMatrix Fixed a [bug](https://github.com/LLNL/sundials/issues/581) in the sparse matrix implementation of `SUNMatScaleAddI` which caused out of bounds writes unless `indexvals` were in ascending order for each row/column. -Fixed `ARKodeResize` not using the default `hscale` when an argument of `0` was -provided. +#### SUNLinearSolver -Fixed the loading of ARKStep's default first order explicit method. +Fixed a bug in the SPTFQMR linear solver where recoverable preconditioner errors +were reported as unrecoverable. -Fixed a bug in ARKODE when enabling rootfinding with fixed step sizes and the -initial value of the rootfinding function is zero. In this case, uninitialized -right-hand side data was used to compute a state value near the initial -condition to determine if any rootfinding functions are initially active. +#### ARKODE -Fixed a CMake bug regarding usage of missing "print_warning" macro -that was only triggered when the deprecated `CUDA_ARCH` option was used. +Fixed `ARKodeResize` not using the default `hscale` when an argument of `0` was +provided. Fixed a memory leak that could occur if ``ARKodeSetDefaults`` is called repeatedly. -Fixed compilation errors when building the Trilinos Teptra NVector with CUDA -support. +Fixed the loading of ARKStep's default first order explicit method. Fixed loading the default IMEX-MRI method if `ARKodeSetOrder` is used to specify -a third or fourth order method. Previously, the default second order method -was loaded in both cases. +a third or fourth order method. Previously, the default second order method was +loaded in both cases. -Fixed a bug in MRIStep where the data supplied to the Hermite interpolation module did -not include contributions from the fast right-hand side function. With this fix, users -will see one additional fast right-hand side function evaluation per slow step with the -Hermite interpolation option. +Fixed potential memory leaks and out of bounds array accesses that could occur +in the ARKODE Lagrange interpolation module when changing the method order or +polynomial degree after re-initializing an integrator. + +Fixed a bug in ARKODE when enabling rootfinding with fixed step sizes and the +initial value of the rootfinding function is zero. In this case, uninitialized +right-hand side data was used to compute a state value near the initial +condition to determine if any rootfinding functions are initially active. + +Fixed a bug in MRIStep where the data supplied to the Hermite interpolation +module did not include contributions from the fast right-hand side +function. With this fix, users will see one additional fast right-hand side +function evaluation per slow step with the Hermite interpolation option. Fixed a bug in SPRKStep when using compensated summations where the error vector was not initialized to zero. -Fixed potential memory leaks and out of bounds array accesses that could occur -in the ARKODE Lagrange interpolation module when changing the method order or -polynomial degree after re-initializing an integrator. +#### CVODE(S) + +Fixed a bug where `CVodeSetProjFailEta` would ignore the `eta` parameter. + +#### Fortran Interfaces Fixed a bug in the 32-bit ``sunindextype`` Fortran interfaces to ``N_VGetSubvectorArrayPointer_ManyVector``, @@ -125,13 +158,6 @@ Fixed a bug in the 32-bit ``sunindextype`` Fortran interfaces to ``SUNDenseMatrix_Column`` where 64-bit ``sunindextype`` interface functions were used. -Fixed a CMake configuration issue related to aliasing an `ALIAS` target when -using `ENABLE_KLU=ON` in combination with a static-only build of SuiteSparse. - -Fixed a CMake issue which caused third-party CMake variables to be unset. -Users may see more options in the CMake GUI now as a result of the fix. -See details in GitHub Issue [#538](https://github.com/LLNL/sundials/issues/538). - ### Deprecation Notices 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 to retain the current functionality using other user-callable functions. The unsupported implementations of `N_VGetArrayPointer` and `N_VSetArrayPointer` -for the *hypre* and PETSc vectors are now deprecated. Users should access the +for the *hypre* and PETSc vectors are now deprecated. Users should access the underlying wrapped external library vector objects instead with `N_VGetVector_ParHyp` and `N_VGetVector_Petsc`, respectively. @@ -584,9 +610,9 @@ ARKODE. ### New Features 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 +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 +internal solution vector. Users who wish to revert to interpolation may call a new routine `CVodeSetInterpolateStopTime`, `ARKStepSetInterpolateStopTime`, `ERKStepSetInterpolateStopTime`, or `MRIStepSetInterpolateStopTime`. @@ -906,7 +932,7 @@ instead. * `SUNLinSolSetInfoFile_SPBCGS` * `SUNLinSolSetPrintLevel_SPBCGS` -The `SUNLinSolSetInfoFile_*` and `SUNNonlinSolSetInfoFile_*` family of +The `SUNLinSolSetInfoFile_*` and `SUNNonlinSolSetInfoFile_*` family of functions are now enabled by setting the CMake option `SUNDIALS_LOGGING_LEVEL` to a value `>= 3`. @@ -1067,7 +1093,7 @@ can be enabled with the CMake option `SUNDIALS_BUILD_WITH_PROFILING`. A built-in profiler will be used by default, but the [Caliper](https://github.com/LLNL/Caliper) library can also be used instead with the CMake option `ENABLE_CALIPER`. See the documentation section on profiling -for more details. **WARNING**: Profiling will impact performance, and should be +for more details. **WARNING**: Profiling will impact performance, and should be enabled judiciously. #### IMEX MRI Methods and MRIStepInnerStepper Object @@ -1402,9 +1428,9 @@ use the `SUNLinSolNewEmpty` constructor will, at a minimum, need set the to leverage this new set function to remove one dot product per solve. The time integrator packages (ARKODE, CVODE(S), and IDA(S)) all now support a -new "matrix-embedded" SUNLinearSolver type. This type supports user-supplied +new "matrix-embedded" SUNLinearSolver type. This type supports user-supplied SUNLinearSolver implementations that set up and solve the specified linear -system at each linear solve call. Any matrix-related data structures are held +system at each linear solve call. Any matrix-related data structures are held internally to the linear solver itself, and are not provided by the SUNDIALS package. @@ -1779,7 +1805,7 @@ should be used instead. Added support for a user-supplied function to update the prediction for each implicit stage solution in ARKStep. If supplied, this routine will be called *after* any existing ARKStep predictor algorithm completes, so that the -predictor may be modified by the user as desired. The new user-supplied routine +predictor may be modified by the user as desired. The new user-supplied routine has type `ARKStepStagePredictFn`, and may be set by calling `ARKStepSetStagePredictFn`. @@ -1977,7 +2003,7 @@ The inputs values passed to the first two inputs of the `SUNNonlinSolSolve` function in the `SUNNonlinearSolver` have been changed to be the predicted state and the initial guess for the correction to that state. Additionally, the definitions of `SUNNonlinSolLSetupFn` and `SUNNonlinSolLSolveFn` in the -SUNNonlinearSolver API have been updated to remove unused input parameters. For +SUNNonlinearSolver API have been updated to remove unused input parameters. For more information on the nonlinear system formulation and the API functions see the `SUNNonlinearSolver` chapter in the user guides. diff --git a/CITATIONS.md b/CITATIONS.md index 9e93aa7ced..78a67ab733 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -69,7 +69,7 @@ they are using rather than the combined SUNDIALS online guide: author = {Daniel R. Reynolds and David J. Gardner and Carol S. Woodward and Cody J. Balos}, title = {User Documentation for ARKODE}, year = {2024}, - note = {v6.1.1} + note = {v6.2.0} } ``` @@ -78,7 +78,7 @@ they are using rather than the combined SUNDIALS online guide: author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward}, title = {User Documentation for CVODE}, year = {2024}, - note = {v7.1.1} + note = {v7.2.0} } ``` @@ -87,7 +87,7 @@ they are using rather than the combined SUNDIALS online guide: author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward}, title = {User Documentation for CVODES}, year = {2024}, - note = {v7.1.1} + note = {v7.2.0} } ``` @@ -96,7 +96,7 @@ they are using rather than the combined SUNDIALS online guide: author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward}, title = {User Documentation for IDA}, year = {2024}, - note = {v7.1.1} + note = {v7.2.0} } ``` @@ -105,7 +105,7 @@ they are using rather than the combined SUNDIALS online guide: 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}, title = {User Documentation for IDAS}, year = {2024}, - note = {v6.1.1} + note = {v6.2.0} } ``` @@ -114,6 +114,6 @@ they are using rather than the combined SUNDIALS online guide: author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward}, title = {User Documentation for KINSOL}, year = {2024}, - note = {v7.1.1} + note = {v7.2.0} } ``` diff --git a/CMakeLists.txt b/CMakeLists.txt index 61b164f678..9a1aec9040 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,7 +44,7 @@ include(FindPackageHandleStandardArgs) # Set some variables with info on the SUNDIALS project set(PACKAGE_BUGREPORT "sundials-users@llnl.gov") set(PACKAGE_NAME "SUNDIALS") -set(PACKAGE_STRING "SUNDIALS 7.1.1") +set(PACKAGE_STRING "SUNDIALS 7.2.0") set(PACKAGE_TARNAME "sundials") # Set SUNDIALS version numbers @@ -53,8 +53,8 @@ message(STATUS "SUNDIALS_GIT_VERSION: ${SUNDIALS_GIT_VERSION}") # (use "" for the version label if none is needed) set(PACKAGE_VERSION_MAJOR "7") -set(PACKAGE_VERSION_MINOR "1") -set(PACKAGE_VERSION_PATCH "1") +set(PACKAGE_VERSION_MINOR "2") +set(PACKAGE_VERSION_PATCH "0") set(PACKAGE_VERSION_LABEL "") if(PACKAGE_VERSION_LABEL) @@ -69,37 +69,37 @@ endif() # Specify the VERSION and SOVERSION for shared libraries -set(arkodelib_VERSION "6.1.1") +set(arkodelib_VERSION "6.2.0") set(arkodelib_SOVERSION "6") -set(cvodelib_VERSION "7.1.1") +set(cvodelib_VERSION "7.2.0") set(cvodelib_SOVERSION "7") -set(cvodeslib_VERSION "7.1.1") +set(cvodeslib_VERSION "7.2.0") set(cvodeslib_SOVERSION "7") -set(idalib_VERSION "7.1.1") +set(idalib_VERSION "7.2.0") set(idalib_SOVERSION "7") -set(idaslib_VERSION "6.1.1") +set(idaslib_VERSION "6.2.0") set(idaslib_SOVERSION "6") -set(kinsollib_VERSION "7.1.1") +set(kinsollib_VERSION "7.2.0") set(kinsollib_SOVERSION "7") set(cpodeslib_VERSION "0.0.0") set(cpodeslib_SOVERSION "0") -set(nveclib_VERSION "7.1.1") +set(nveclib_VERSION "7.2.0") set(nveclib_SOVERSION "7") -set(sunmatrixlib_VERSION "5.1.1") +set(sunmatrixlib_VERSION "5.2.0") set(sunmatrixlib_SOVERSION "5") -set(sunlinsollib_VERSION "5.1.1") +set(sunlinsollib_VERSION "5.2.0") set(sunlinsollib_SOVERSION "5") -set(sunnonlinsollib_VERSION "4.1.1") +set(sunnonlinsollib_VERSION "4.2.0") set(sunnonlinsollib_SOVERSION "4") set(sundialslib_VERSION diff --git a/README.md b/README.md index 313cc11fd2..d00f7f276b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # SUNDIALS: SUite of Nonlinear and DIfferential/ALgebraic equation Solvers # -### Version 7.1.1 (Jun 2024) ### +### Version 7.2.0 (Dec 2024) ### **Center for Applied Scientific Computing, Lawrence Livermore National Laboratory** diff --git a/doc/arkode/guide/source/Introduction.rst b/doc/arkode/guide/source/Introduction.rst index 7427e78f0a..33cbe273c1 100644 --- a/doc/arkode/guide/source/Introduction.rst +++ b/doc/arkode/guide/source/Introduction.rst @@ -126,7 +126,7 @@ require a linear solver, ARKODE may use a variety of SUNLinearSolver modules provided with SUNDIALS, or again may utilize a user-supplied module. -Changes to SUNDIALS in release 6.1.0 +Changes to SUNDIALS in release 6.2.0 ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/arkode/guide/source/Usage/ARKStep/User_callable.rst b/doc/arkode/guide/source/Usage/ARKStep/User_callable.rst index 2dbece5aa1..74107072dc 100644 --- a/doc/arkode/guide/source/Usage/ARKStep/User_callable.rst +++ b/doc/arkode/guide/source/Usage/ARKStep/User_callable.rst @@ -3160,7 +3160,7 @@ Main solver optional output functions The *nfi_evals* value does not account for calls made to :math:`f^I` by a linear solver or preconditioner module. - .. deprecated:: x.y.z + .. deprecated:: 6.2.0 Use :c:func:`ARKodeGetNumRhsEvals` instead. @@ -4409,6 +4409,6 @@ wrap an ARKStep memory block as an :c:type:`MRIStepInnerStepper`. **Example codes:** * ``examples/arkode/CXX_parallel/ark_diffusion_reaction_p.cpp`` - .. deprecated:: x.y.z + .. deprecated:: 6.2.0 Use :c:func:`ARKodeCreateMRIStepInnerStepper` instead. diff --git a/doc/arkode/guide/source/Usage/ERKStep/User_callable.rst b/doc/arkode/guide/source/Usage/ERKStep/User_callable.rst index 88f99d5b55..88c485e26c 100644 --- a/doc/arkode/guide/source/Usage/ERKStep/User_callable.rst +++ b/doc/arkode/guide/source/Usage/ERKStep/User_callable.rst @@ -1743,7 +1743,7 @@ Main solver optional output functions * *ARK_SUCCESS* if successful * *ARK_MEM_NULL* if the ERKStep memory was ``NULL`` - .. deprecated:: x.y.z + .. deprecated:: 6.2.0 Use :c:func:`ARKodeGetNumRhsEvals` instead. diff --git a/doc/arkode/guide/source/Usage/ForcingStep/User_callable.rst b/doc/arkode/guide/source/Usage/ForcingStep/User_callable.rst index baf80b2ba1..2e2adc723f 100644 --- a/doc/arkode/guide/source/Usage/ForcingStep/User_callable.rst +++ b/doc/arkode/guide/source/Usage/ForcingStep/User_callable.rst @@ -85,7 +85,7 @@ ForcingStep initialization functions **Example codes:** * ``examples/arkode/C_serial/ark_analytic_partitioned.c`` - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. _ARKODE.Usage.ForcingStep.OptionalOutputs: @@ -108,7 +108,7 @@ Optional output functions :retval ARK_MEM_NULL: if the ForcingStep memory was ``NULL`` :retval ARK_ILL_INPUT: if *partition* was out of bounds - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 ForcingStep re-initialization function @@ -182,4 +182,4 @@ the ODE and the :c:type:`SUNStepper` objects used to evolve each partition. All previously set options are retained but may be updated by calling the appropriate "Set" functions. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 diff --git a/doc/arkode/guide/source/Usage/MRIStep/Custom_Inner_Stepper/Description.rst b/doc/arkode/guide/source/Usage/MRIStep/Custom_Inner_Stepper/Description.rst index 9a9590bb9b..561b82522f 100644 --- a/doc/arkode/guide/source/Usage/MRIStep/Custom_Inner_Stepper/Description.rst +++ b/doc/arkode/guide/source/Usage/MRIStep/Custom_Inner_Stepper/Description.rst @@ -102,7 +102,7 @@ Creating and Destroying an Object MRIStepInnerStepper inner_stepper = NULL; flag = MRIStepInnerStepper_CreateFromSUNStepper(sunstepper, &inner_stepper); - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: int MRIStepInnerStepper_Free(MRIStepInnerStepper *stepper) @@ -264,7 +264,7 @@ Setting Member Functions :retval ARK_SUCCESS: if successful :retval ARK_ILL_INPUT: if the stepper is ``NULL`` - .. versionadded: x.y.z + .. versionadded: 6.2.0 .. c:function:: int MRIStepInnerStepper_SetAccumulatedErrorResetFn(MRIStepInnerStepper stepper, MRIStepInnerResetAccumulatedError fn) @@ -278,7 +278,7 @@ Setting Member Functions :retval ARK_SUCCESS: if successful :retval ARK_ILL_INPUT: if the stepper is ``NULL`` - .. versionadded: x.y.z + .. versionadded: 6.2.0 .. c:function:: int MRIStepInnerStepper_SetRTolFn(MRIStepInnerStepper stepper, MRIStepInnerSetRTol fn) @@ -292,7 +292,7 @@ Setting Member Functions :retval ARK_SUCCESS: if successful :retval ARK_ILL_INPUT: if the stepper is ``NULL`` - .. versionadded: x.y.z + .. versionadded: 6.2.0 diff --git a/doc/arkode/guide/source/Usage/MRIStep/MRIStepCoupling.rst b/doc/arkode/guide/source/Usage/MRIStep/MRIStepCoupling.rst index 6da195368f..502e5b9de5 100644 --- a/doc/arkode/guide/source/Usage/MRIStep/MRIStepCoupling.rst +++ b/doc/arkode/guide/source/Usage/MRIStep/MRIStepCoupling.rst @@ -227,7 +227,7 @@ are defined ``arkode/arkode_mristep.h``. C->group[1][1] = 4; C->group[2][0] = 3; - .. versionchanged:: x.y.z + .. versionchanged:: 6.2.0 This function now supports a broader range of MRI method types. diff --git a/doc/arkode/guide/source/Usage/MRIStep/User_callable.rst b/doc/arkode/guide/source/Usage/MRIStep/User_callable.rst index 31319cf95f..809d7ba4c9 100644 --- a/doc/arkode/guide/source/Usage/MRIStep/User_callable.rst +++ b/doc/arkode/guide/source/Usage/MRIStep/User_callable.rst @@ -1560,7 +1560,7 @@ Main solver optional output functions :retval ARK_SUCCESS: if successful :retval ARK_MEM_NULL: if the MRIStep memory was ``NULL`` - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: int MRIStepGetWorkSpace(void* arkode_mem, long int* lenrw, long int* leniw) @@ -1762,7 +1762,7 @@ Main solver optional output functions :retval ARK_SUCCESS: if successful :retval ARK_MEM_NULL: if the MRIStep memory was ``NULL`` - .. deprecated:: x.y.z + .. deprecated:: 6.2.0 Use :c:func:`ARKodeGetNumRhsEvals` instead. diff --git a/doc/arkode/guide/source/Usage/SPRKStep/User_callable.rst b/doc/arkode/guide/source/Usage/SPRKStep/User_callable.rst index 6ea553ef30..00c41d9013 100644 --- a/doc/arkode/guide/source/Usage/SPRKStep/User_callable.rst +++ b/doc/arkode/guide/source/Usage/SPRKStep/User_callable.rst @@ -789,7 +789,7 @@ Main solver optional output functions :retval ARK_SUCCESS: if successful :retval ARK_MEM_NULL: if the SPRKStep memory was ``NULL`` - .. deprecated:: x.y.z + .. deprecated:: 6.2.0 Use :c:func:`ARKodeGetNumRhsEvals` instead. diff --git a/doc/arkode/guide/source/Usage/SplittingStep/SplittingStepCoefficients.rst b/doc/arkode/guide/source/Usage/SplittingStep/SplittingStepCoefficients.rst index 21b9acf876..a4adc901e2 100644 --- a/doc/arkode/guide/source/Usage/SplittingStep/SplittingStepCoefficients.rst +++ b/doc/arkode/guide/source/Usage/SplittingStep/SplittingStepCoefficients.rst @@ -128,7 +128,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. :return: A :c:type:`SplittingStepCoefficients` structure if successful or a ``NULL`` pointer if ``method`` was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 @@ -146,7 +146,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. This function is case sensitive. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: const char* SplittingStepCoefficients_IDToName(ARKODE_SplittingCoefficientsID method) @@ -160,7 +160,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. :return: A :c:type:`SplittingStepCoefficients` structure if successful or a ``NULL`` pointer if ``method`` was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_LieTrotter(int partitions) @@ -173,7 +173,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. ``NULL`` pointer if ``partitions`` was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_Strang(int partitions) @@ -186,7 +186,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. ``NULL`` pointer if ``partitions`` was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_Parallel(int partitions) @@ -202,7 +202,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. ``NULL`` pointer if ``partitions`` was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_SymmetricParallel(int partitions) @@ -221,7 +221,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. ``NULL`` pointer if ``partitions`` was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_ThirdOrderSuzuki(int partitions) @@ -241,7 +241,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. ``NULL`` pointer if ``partitions`` was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_TripleJump(int partitions, int order) @@ -264,7 +264,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. ``NULL`` pointer if an argument was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_SuzukiFractal(int partitions, int order) @@ -288,7 +288,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. ``NULL`` pointer if an argument was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_Alloc(int sequential_methods, int stages, int partitions) @@ -303,7 +303,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. ``NULL`` pointer if an argument was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_Create(int sequential_methods, int stages, int partitions, int order, sunrealtype* alpha, sunrealtype* beta) @@ -340,7 +340,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. ``NULL`` pointer if an argument was invalid or an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: SplittingStepCoefficients SplittingStepCoefficients_Copy(SplittingStepCoefficients coefficients) @@ -351,7 +351,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. :return: A :c:type:`SplittingStepCoefficients` structure if successful or a ``NULL`` pointer if an allocation error occurred. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: void SplittingStepCoefficients_Destroy(SplittingStepCoefficients* coefficients) @@ -360,7 +360,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. :param coefficients: A pointer to the splitting coefficients. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: void SplittingStepCoefficients_Write(SplittingStepCoefficients coefficients, FILE* outfile) @@ -372,7 +372,7 @@ integer constants are defined ``arkode/arkode_splittingstep.h``. can be ``stdout`` or ``stderr``, or it may point to a specific file created using ``fopen``. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. _ARKODE.Usage.SplittingStep.SplittingStepCoefficients.Coefficients: diff --git a/doc/arkode/guide/source/Usage/SplittingStep/User_callable.rst b/doc/arkode/guide/source/Usage/SplittingStep/User_callable.rst index 78252a247f..c378743617 100644 --- a/doc/arkode/guide/source/Usage/SplittingStep/User_callable.rst +++ b/doc/arkode/guide/source/Usage/SplittingStep/User_callable.rst @@ -83,7 +83,7 @@ SplittingStep initialization functions * ``examples/arkode/C_serial/ark_advection_diffusion_reaction_splitting.c`` * ``examples/arkode/C_serial/ark_analytic_partitioned.c`` - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 Optional inputs for IVP method selection @@ -110,7 +110,7 @@ Optional inputs for IVP method selection This should not be used with :c:func:`ARKodeSetOrder`. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. _ARKODE.Usage.SplittingStep.OptionalOutputs: @@ -134,7 +134,7 @@ Optional output functions :retval ARK_MEM_NULL: if the SplittingStep memory was ``NULL`` :retval ARK_ILL_INPUT: if *partition* was out of bounds - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 SplittingStep re-initialization function @@ -209,4 +209,4 @@ the ODE and the :c:type:`SUNStepper` objects used to evolve each partition. previously set options are retained but may be updated by calling the appropriate "Set" functions. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 diff --git a/doc/arkode/guide/source/Usage/User_callable.rst b/doc/arkode/guide/source/Usage/User_callable.rst index 76a1003c35..0a378f1b2e 100644 --- a/doc/arkode/guide/source/Usage/User_callable.rst +++ b/doc/arkode/guide/source/Usage/User_callable.rst @@ -1131,7 +1131,7 @@ Set max number of constraint failures :c:func:`ARKodeSetMaxNumConstr estimated at the next call to :c:func:`ARKodeEvolve` or can be specified with :c:func:`ARKodeSetInitStep`. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 @@ -1819,7 +1819,7 @@ tolerance. The type of error accumulation that ARKODE should use. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:enumerator:: ARK_ACCUMERROR_NONE @@ -1859,7 +1859,7 @@ tolerance. :retval ARK_STEPPER_UNSUPPORTED: temporal error estimation is not supported by the current time-stepping module. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: int ARKodeResetAccumulatedError(void* arkode_mem) @@ -1874,7 +1874,7 @@ tolerance. :retval ARK_STEPPER_UNSUPPORTED: temporal error estimation is not supported by the current time-stepping module. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 @@ -3395,7 +3395,7 @@ Retrieve the accumulated temporal error estimate :c:func:`ARKodeGetAccumul :retval ARK_SUCCESS: the function exited successfully. :retval ARK_MEM_NULL: ``arkode_mem`` was ``NULL``. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: int ARKodeGetCurrentTime(void* arkode_mem, sunrealtype* tcur) @@ -3647,7 +3647,7 @@ Retrieve the accumulated temporal error estimate :c:func:`ARKodeGetAccumul :retval ARK_ILL_INPUT: if ``num_partiton`` was invalid for the stepper or ``num_rhs_evals`` was ``NULL`` - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 .. c:function:: int ARKodeGetNumErrTestFails(void* arkode_mem, long int* netfails) @@ -3764,7 +3764,7 @@ Retrieve the accumulated temporal error estimate :c:func:`ARKodeGetAccumul :retval ARK_STEPPER_UNSUPPORTED: temporal error estimation is not supported by the current time-stepping module. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 @@ -4962,4 +4962,4 @@ block as a :c:type:`SUNStepper`. :c:func:`SUNStepper_SetForcing` function only if ``inner_arkode_mem`` is an ARKStep, ERKStep, or MRIStep integrator. - .. versionadded:: x.y.z + .. versionadded:: 6.2.0 diff --git a/doc/cvode/guide/source/Introduction.rst b/doc/cvode/guide/source/Introduction.rst index ba5bd22a84..4f4cdff53a 100644 --- a/doc/cvode/guide/source/Introduction.rst +++ b/doc/cvode/guide/source/Introduction.rst @@ -108,7 +108,7 @@ implementations. .. efficiency of C, and the greater ease of interfacing the solver to .. applications written in extended Fortran. -Changes to SUNDIALS in release 7.1.0 +Changes to SUNDIALS in release 7.2.0 ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/cvodes/guide/source/Introduction.rst b/doc/cvodes/guide/source/Introduction.rst index 419fd7ee20..a3b9df3a7c 100644 --- a/doc/cvodes/guide/source/Introduction.rst +++ b/doc/cvodes/guide/source/Introduction.rst @@ -109,7 +109,7 @@ greater ease of interfacing the solver to applications written in extended Fortran. -Changes to SUNDIALS in release 7.1.0 +Changes to SUNDIALS in release 7.2.0 ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/ida/guide/source/Introduction.rst b/doc/ida/guide/source/Introduction.rst index b100289002..0206802bcb 100644 --- a/doc/ida/guide/source/Introduction.rst +++ b/doc/ida/guide/source/Introduction.rst @@ -69,7 +69,7 @@ systems. the greater ease of interfacing the solver to applications written in extended Fortran. -Changes to SUNDIALS in release 7.1.0 +Changes to SUNDIALS in release 7.2.0 ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/idas/guide/source/Introduction.rst b/doc/idas/guide/source/Introduction.rst index 5f1b554c5f..1317e1b030 100644 --- a/doc/idas/guide/source/Introduction.rst +++ b/doc/idas/guide/source/Introduction.rst @@ -83,7 +83,7 @@ integrate any final-condition ODE dependent on the solution of the original IVP the greater ease of interfacing the solver to applications written in extended Fortran. -Changes to SUNDIALS in release 6.1.0 +Changes to SUNDIALS in release 6.2.0 ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/kinsol/guide/source/Introduction.rst b/doc/kinsol/guide/source/Introduction.rst index 5dd8e82594..3b1e969d29 100644 --- a/doc/kinsol/guide/source/Introduction.rst +++ b/doc/kinsol/guide/source/Introduction.rst @@ -85,7 +85,7 @@ applications written in Fortran. .. _KINSOL.Introduction.Changes: -Changes to SUNDIALS in release 7.1.0 +Changes to SUNDIALS in release 7.2.0 ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/shared/Changelog.rst b/doc/shared/Changelog.rst index 2824b85a83..6bd419aeec 100644 --- a/doc/shared/Changelog.rst +++ b/doc/shared/Changelog.rst @@ -21,7 +21,7 @@ Changelog .. SED_REPLACEMENT_KEY -Changes to SUNDIALS in release X.Y.Z +Changes to SUNDIALS in release 7.2.0 ==================================== .. include:: RecentChanges_link.rst diff --git a/doc/shared/History.rst b/doc/shared/History.rst index f5cda1f326..4de146a29e 100644 --- a/doc/shared/History.rst +++ b/doc/shared/History.rst @@ -21,6 +21,8 @@ Release History +----------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ | Date | SUNDIALS | ARKODE | CVODE | CVODES | IDA | IDAS | KINSOL | +==========+===================+===================+===================+===================+===================+===================+===================+ +| Dec 2024 | 7.2.0 | 6.2.0 | 7.2.0 | 7.2.0 | 7.2.0 | 6.2.0 | 7.2.0 | ++----------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ | Jun 2024 | 7.1.1 | 6.1.1 | 7.1.1 | 7.1.1 | 7.1.1 | 6.1.1 | 7.1.1 | +----------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ | Jun 2024 | 7.1.0 | 6.1.0 | 7.1.0 | 7.1.0 | 7.1.0 | 6.1.0 | 7.1.0 | diff --git a/doc/shared/RecentChanges.rst b/doc/shared/RecentChanges.rst index 5e61e9f216..68293f2969 100644 --- a/doc/shared/RecentChanges.rst +++ b/doc/shared/RecentChanges.rst @@ -1,51 +1,82 @@ **Major Features** -Added a time-stepping module to ARKODE for low storage Runge--Kutta methods, -:ref:`LSRKStep `. This currently supports five explicit low-storage -methods: the second-order Runge--Kutta--Chebyshev and Runge--Kutta--Legendre methods, -and the second- through fourth-order optimal strong stability preserving Runge--Kutta methods. -All methods include embeddings for temporal adaptivity. - -Added an operator splitting module, -:ref:`SplittingStep `, and forcing method module, -:ref:`ForcingStep `, to ARKODE. These modules support -a broad range of operator-split time integration methods for multiphysics -applications. +Added a time-stepping module to ARKODE for low storage Runge--Kutta methods, +:ref:`LSRKStep `. This currently supports five explicit +low-storage methods: the second-order Runge--Kutta--Chebyshev and +Runge--Kutta--Legendre methods, and the second- through fourth-order optimal +strong stability preserving Runge--Kutta methods. All methods include +embeddings for temporal adaptivity. + +Added an operator splitting module, :ref:`SplittingStep +`, and forcing method module, :ref:`ForcingStep +`, to ARKODE. These modules support a broad range of +operator-split time integration methods for multiphysics applications. + +Added support for multirate time step adaptivity controllers, based on the +recently introduced :c:type:`SUNAdaptController` base class, to ARKODE's MRIStep +module. As a part of this, we added embeddings for existing MRI-GARK methods, +as well as support for embedded MERK and IMEX-MRI-SR methods. Added new default +MRI methods for temporally adaptive versus fixed-step runs. **New Features and Enhancements** -Added the :c:func:`ARKodeSetStepDirection` and :c:func:`ARKodeGetStepDirection` -functions to change and query the direction of integration. +*Logging* + +The information level logging output in ARKODE, CVODE(S), and IDA(S) has been +updated to be more uniform across the packages and a new ``tools`` directory has +been added with a Python module, ``suntools``, containing utilities for parsing +logging output. The Python utilities for parsing CSV output have been relocated +from the ``scripts`` directory to the Python module. + +*SUNStepper* Added the :c:type:`SUNStepper` base class to represent a generic solution -procedure for IVPs. This is used by the -:ref:`SplittingStep ` and -:ref:`ForcingStep ` modules of ARKODE. A SUNStepper -can be created from an ARKODE memory block with the new function -:c:func:`ARKodeCreateSUNStepper`. To enable interoperability with -:c:type:`MRIStepInnerStepper`, the function +procedure for IVPs. This is used by the :ref:`SplittingStep +` and :ref:`ForcingStep ` +modules of ARKODE. A SUNStepper can be created from an ARKODE memory block with +the new function :c:func:`ARKodeCreateSUNStepper`. To enable interoperability +with :c:type:`MRIStepInnerStepper`, the function :c:func:`MRIStepInnerStepper_CreateFromSUNStepper` was added. +*ARKODE* + +Added functionality to ARKODE to accumulate a temporal error estimate over +multiple time steps. See the routines :c:func:`ARKodeSetAccumulatedErrorType`, +:c:func:`ARKodeResetAccumulatedError`, and :c:func:`ARKodeGetAccumulatedError` +for details. + +Added the :c:func:`ARKodeSetStepDirection` and :c:func:`ARKodeGetStepDirection` +functions to change and query the direction of integration. + +Added the function :c:func:`MRIStepGetNumInnerStepperFails` to retrieve the +number of recoverable failures reported by the MRIStepInnerStepper. + +Added a utility routine to wrap any valid ARKODE integrator for use as an +MRIStep inner stepper object, :c:func:`ARKodeCreateMRIStepInnerStepper`. + The following DIRK schemes now have coefficients accurate to quad precision: * ``ARKODE_BILLINGTON_3_3_2`` - * ``ARKODE_KVAERNO_4_2_3`` - * ``ARKODE_CASH_5_2_4`` - * ``ARKODE_CASH_5_3_4`` - * ``ARKODE_KVAERNO_5_3_4`` - * ``ARKODE_KVAERNO_7_4_5`` +*CMake* + The default value of :cmakeop:`CMAKE_CUDA_ARCHITECTURES` is no longer set to ``70`` and is now determined automatically by CMake. The previous default was only valid for Volta GPUs while the automatically selected value will vary across compilers and compiler versions. As such, users are encouraged to override this value with the architecture for their system. +The build system has been updated to utilize the CMake LAPACK imported target +which should ease building SUNDIALS with LAPACK libraries that require setting +specific linker flags e.g., MKL. + +*Third Party Libraries* + The Trilinos Tpetra NVector interface has been updated to utilize CMake imported targets added in Trilinos 14 to improve support for different Kokkos backends with Trilinos. As such, Trilinos 14 or newer is required and the @@ -53,81 +84,76 @@ backends with Trilinos. As such, Trilinos 14 or newer is required and the Example programs using *hypre* have been updated to support v2.20 and newer. -The information level logging output in ARKODE, CVODE(S), and IDA(S) has been -updated to be more uniform across the packages and a new ``tools`` directory -has been added with a Python module, ``suntools``, containing utilities for -parsing logging output. The Python utilities for parsing CSV output have been -relocated from the ``scripts`` directory to the Python module. +**Bug Fixes** -The build system has been updated to utilize the CMake LAPACK imported target -which should ease building SUNDIALS with LAPACK libraries that require setting -specific linker flags e.g., MKL. +*CMake* -Added support for multirate time step adaptivity controllers, based on the -recently introduced :c:type:`SUNAdaptController` base class, to ARKODE's MRIStep module. -As a part of this, we added embeddings for existing MRI-GARK methods, as well as -support for embedded MERK and IMEX-MRI-SR methods. Added new default MRI methods -for temporally adaptive versus fixed-step runs. Added the function -:c:func:`MRIStepGetNumInnerStepperFails` to retrieve the number of recoverable -failures reported by the MRIStepInnerStepper. +Fixed a CMake bug regarding usage of missing "print_warning" macro that was only +triggered when the deprecated ``CUDA_ARCH`` option was used. -Added functionality to ARKODE to accumulate a temporal error -estimate over multiple time steps. See the routines -:c:func:`ARKodeSetAccumulatedErrorType`, :c:func:`ARKodeResetAccumulatedError`, -and :c:func:`ARKodeGetAccumulatedError` for details. +Fixed a CMake configuration issue related to aliasing an ``ALIAS`` target when +using ``ENABLE_KLU=ON`` in combination with a static-only build of SuiteSparse. -Added a utility routine to wrap any valid ARKODE integrator for use as an MRIStep -inner stepper object, :c:func:`ARKodeCreateMRIStepInnerStepper`. +Fixed a CMake issue which caused third-party CMake variables to be unset. Users +may see more options in the CMake GUI now as a result of the fix. See details +in GitHub Issue `#538 `__. -**Bug Fixes** +*NVector* Fixed a build failure with the SYCL NVector when using Intel oneAPI 2025.0 compilers. See GitHub Issue `#596 `__. -Fixed a bug where :c:func:`CVodeSetProjFailEta` would ignore the `eta` -parameter. +Fixed compilation errors when building the Trilinos Teptra NVector with CUDA +support. -Fixed a bug in the SPTFQMR linear solver where recoverable preconditioner errors -were reported as unrecoverable. +*SUNMatrix* Fixed a `bug `__ in the sparse matrix implementation of :c:func:`SUNMatScaleAddI` which caused out of bounds writes unless ``indexvals`` were in ascending order for each row/column. -Fixed :c:func:`ARKodeResize` not using the default ``hscale`` when an argument -of ``0`` was provided. +*SUNLinearSolver* -Fixed the loading of ARKStep's default first order explicit method. +Fixed a bug in the SPTFQMR linear solver where recoverable preconditioner errors +were reported as unrecoverable. -Fixed a bug in ARKODE when enabling rootfinding with fixed step sizes and the -initial value of the rootfinding function is zero. In this case, uninitialized -right-hand side data was used to compute a state value near the initial -condition to determine if any rootfinding functions are initially active. +*ARKODE* -Fixed a CMake bug regarding usage of missing "print_warning" macro -that was only triggered when the deprecated ``CUDA_ARCH`` option was used. +Fixed :c:func:`ARKodeResize` not using the default ``hscale`` when an argument +of ``0`` was provided. Fixed a memory leak that could occur if :c:func:`ARKodeSetDefaults` is called repeatedly. -Fixed compilation errors when building the Trilinos Teptra NVector with CUDA -support. +Fixed the loading of ARKStep's default first order explicit method. Fixed loading the default IMEX-MRI method if :c:func:`ARKodeSetOrder` is used to -specify a third or fourth order method. Previously, the default second order method -was loaded in both cases. +specify a third or fourth order method. Previously, the default second order +method was loaded in both cases. -Fixed a bug in MRIStep where the data supplied to the Hermite interpolation module did -not include contributions from the fast right-hand side function. With this fix, users -will see one additional fast right-hand side function evaluation per slow step with the -Hermite interpolation option. +Fixed potential memory leaks and out of bounds array accesses that could occur +in the ARKODE Lagrange interpolation module when changing the method order or +polynomial degree after re-initializing an integrator. + +Fixed a bug in ARKODE when enabling rootfinding with fixed step sizes and the +initial value of the rootfinding function is zero. In this case, uninitialized +right-hand side data was used to compute a state value near the initial +condition to determine if any rootfinding functions are initially active. + +Fixed a bug in MRIStep where the data supplied to the Hermite interpolation +module did not include contributions from the fast right-hand side +function. With this fix, users will see one additional fast right-hand side +function evaluation per slow step with the Hermite interpolation option. Fixed a bug in SPRKStep when using compensated summations where the error vector was not initialized to zero. -Fixed potential memory leaks and out of bounds array accesses that could occur -in the ARKODE Lagrange interpolation module when changing the method order or -polynomial degree after re-initializing an integrator. +*CVODE(S)* + +Fixed a bug where :c:func:`CVodeSetProjFailEta` would ignore the `eta` +parameter. + +*Fortran Interfaces* Fixed a bug in the 32-bit ``sunindextype`` Fortran interfaces to :c:func:`N_VGetSubvectorArrayPointer_ManyVector`, @@ -135,17 +161,11 @@ Fixed a bug in the 32-bit ``sunindextype`` Fortran interfaces to :c:func:`SUNBandMatrix_Column` and :c:func:`SUNDenseMatrix_Column` where 64-bit ``sunindextype`` interface functions were used. -Fixed a CMake configuration issue related to aliasing an ``ALIAS`` target when -using ``ENABLE_KLU=ON`` in combination with a static-only build of SuiteSparse. - -Fixed a CMake issue which caused third-party CMake variables to be unset. -Users may see more options in the CMake GUI now as a result of the fix. -See details in GitHub Issue `#538 `__. - **Deprecation Notices** Deprecated the ARKStep-specific utility routine for wrapping an ARKStep instance -as an MRIStep inner stepper object, :c:func:`ARKStepCreateMRIStepInnerStepper`. Use +as an MRIStep inner stepper object, +:c:func:`ARKStepCreateMRIStepInnerStepper`. Use :c:func:`ARKodeCreateMRIStepInnerStepper` instead. The ARKODE stepper specific functions to retrieve the number of right-hand side diff --git a/doc/shared/sunadaptcontroller/SUNAdaptController_Description.rst b/doc/shared/sunadaptcontroller/SUNAdaptController_Description.rst index 3407edc9f4..1b6278749b 100644 --- a/doc/shared/sunadaptcontroller/SUNAdaptController_Description.rst +++ b/doc/shared/sunadaptcontroller/SUNAdaptController_Description.rst @@ -18,7 +18,7 @@ The SUNAdaptController API .. versionadded:: 6.7.0 -.. versionchanged:: x.y.z +.. versionchanged:: 7.2.0 Added support multirate time step adaptivity controllers @@ -87,7 +87,7 @@ The virtual table structure is defined as The function implementing :c:func:`SUNAdaptController_EstimateStepTol` - .. versionadded:: x.y.z + .. versionadded:: 7.2.0 .. c:member:: SUNErrCode (*reset)(SUNAdaptController C) @@ -113,7 +113,7 @@ The virtual table structure is defined as The function implementing :c:func:`SUNAdaptController_UpdateMRIHTol` - .. versionadded:: x.y.z + .. versionadded:: 7.2.0 .. c:member:: SUNErrCode (*space)(SUNAdaptController C, long int *lenrw, long int *leniw) @@ -149,7 +149,7 @@ following set of SUNAdaptController types: Controls both a slow time step and a tolerance factor to apply on the next-faster time scale within a multirate simulation that has an arbitrary number of time scales. - .. versionadded:: x.y.z + .. versionadded:: 7.2.0 @@ -249,7 +249,7 @@ note these requirements below. Additionally, we note the behavior of the base SU :param tolfacnew: (output) the estimated relative tolerance factor. :return: :c:type:`SUNErrCode` indicating success or failure. - .. versionadded:: x.y.z + .. versionadded:: 7.2.0 .. c:function:: SUNErrCode SUNAdaptController_Reset(SUNAdaptController C) @@ -260,8 +260,6 @@ note these requirements below. Additionally, we note the behavior of the base SU :param C: the :c:type:`SUNAdaptController` object. :return: :c:type:`SUNErrCode` indicating success or failure. - .. versionadded:: x.y.z - .. c:function:: SUNErrCode SUNAdaptController_SetDefaults(SUNAdaptController C) @@ -270,8 +268,6 @@ note these requirements below. Additionally, we note the behavior of the base SU :param C: the :c:type:`SUNAdaptController` object. :return: :c:type:`SUNErrCode` indicating success or failure. - .. versionadded:: x.y.z - .. c:function:: SUNErrCode SUNAdaptController_Write(SUNAdaptController C, FILE* fptr) @@ -323,7 +319,7 @@ note these requirements below. Additionally, we note the behavior of the base SU :param dsm: the successful fast temporal error estimate. :return: :c:type:`SUNErrCode` indicating success or failure. - .. versionadded:: x.y.z + .. versionadded:: 7.2.0 .. c:function:: SUNErrCode SUNAdaptController_Space(SUNAdaptController C, long int *lenrw, long int *leniw) diff --git a/doc/shared/sunadaptcontroller/SUNAdaptController_MRIHTol.rst b/doc/shared/sunadaptcontroller/SUNAdaptController_MRIHTol.rst index 5d1e4c4fc6..8323180bb5 100644 --- a/doc/shared/sunadaptcontroller/SUNAdaptController_MRIHTol.rst +++ b/doc/shared/sunadaptcontroller/SUNAdaptController_MRIHTol.rst @@ -17,7 +17,7 @@ The SUNAdaptController_MRIHTol Module ====================================== -.. versionadded:: x.y.z +.. versionadded:: 7.2.0 Mathematical motivation ----------------------- diff --git a/doc/shared/sundials.bib b/doc/shared/sundials.bib index 4350c1db0b..324fd9a0f9 100644 --- a/doc/shared/sundials.bib +++ b/doc/shared/sundials.bib @@ -27,7 +27,7 @@ % @techreport{arkode_ug, author = {Daniel R. Reynolds and David J. Gardner and Carol S. Woodward and Rujeko Chinomona and Cody J. Balos}, -title = {{User Documentation for ARKODE v6.1.1}}, +title = {{User Documentation for ARKODE v6.2.0}}, institution = {LLNL}, number = {LLNL-SM-668082}, year = 2024 @@ -37,7 +37,7 @@ @techreport{arkode_ug % @techreport{arkode_ex, author = {Daniel R. Reynolds}, -title = {{Example Programs for ARKODE v6.1.1}}, +title = {{Example Programs for ARKODE v6.2.0}}, institution = {Southern Methodist University}, year = 2024 } @@ -46,7 +46,7 @@ @techreport{arkode_ex % @techreport{cvode_ug, author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward}, -title = {{User Documentation for CVODE v7.1.1}}, +title = {{User Documentation for CVODE v7.2.0}}, institution = {LLNL}, number = {UCRL-SM-208108}, year = 2024 @@ -56,7 +56,7 @@ @techreport{cvode_ug % @techreport{cvode_ex, author = {Alan C. Hindmarsh and Radu Serban}, -title = {{Example Programs for CVODE v7.1.1}}, +title = {{Example Programs for CVODE v7.2.0}}, institution = {LLNL}, note = {UCRL-SM-208110}, year = 2024 @@ -66,7 +66,7 @@ @techreport{cvode_ex % @techreport{cvodes_ug, author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward}, -title = {{User Documentation for CVODES v7.1.1}}, +title = {{User Documentation for CVODES v7.2.0}}, institution = {LLNL}, note = {UCRL-SM-208111}, year = 2024 @@ -76,7 +76,7 @@ @techreport{cvodes_ug % @techreport{cvodes_ex, author = {Radu Serban and Alan C. Hindmarsh}, -title = {{Example Programs for CVODES v7.1.1}}, +title = {{Example Programs for CVODES v7.2.0}}, institution = {LLNL}, number = {UCRL-SM-208115}, year = 2024 @@ -86,7 +86,7 @@ @techreport{cvodes_ex % @techreport{ida_ug, author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward}, -title = {{User Documentation for IDA v7.1.1}}, +title = {{User Documentation for IDA v7.2.0}}, institution = {LLNL}, number = {UCRL-SM-208112}, year = 2024 @@ -96,7 +96,7 @@ @techreport{ida_ug % @techreport{ida_ex, author = {Alan C. Hindmarsh and Radu Serban and Aaron Collier}, -title = {{Example Programs for IDA v7.1.1}}, +title = {{Example Programs for IDA v7.2.0}}, institution = {LLNL}, number = {UCRL-SM-208113}, year = 2024 @@ -106,7 +106,7 @@ @techreport{ida_ex % @techreport{idas_ug, 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}, -title = {{User Documentation for IDAS v6.1.1}}, +title = {{User Documentation for IDAS v6.2.0}}, institution = {LLNL}, number = {UCRL-SM-234051}, year = 2024 @@ -116,7 +116,7 @@ @techreport{idas_ug % @techreport{idas_ex, author = {Radu Serban and Alan C. Hindmarsh}, -title = {{Example Programs for IDAS v6.1.1}}, +title = {{Example Programs for IDAS v6.2.0}}, institution = {LLNL}, number = {LLNL-TR-437091}, year = 2024 @@ -126,7 +126,7 @@ @techreport{idas_ex % @techreport{kinsol_ug, author = {Alan C. Hindmarsh and Radu Serban and Cody J. Balos and David J. Gardner and Daniel R. Reynolds and Carol S. Woodward}, -title = {{User Documentation for KINSOL v7.1.1}}, +title = {{User Documentation for KINSOL v7.2.0}}, institution = {LLNL}, number = {UCRL-SM-208116}, year = 2024 @@ -136,7 +136,7 @@ @techreport{kinsol_ug % @techreport{kinsol_ex, author = {Aaron M. Collier and Radu Serban}, -title = {{Example Programs for KINSOL v7.1.1}}, +title = {{Example Programs for KINSOL v7.2.0}}, institution = {LLNL}, number = {UCRL-SM-208114}, year = 2024 diff --git a/doc/shared/sundials/Install.rst b/doc/shared/sundials/Install.rst index 0b778bb07c..171923b511 100644 --- a/doc/shared/sundials/Install.rst +++ b/doc/shared/sundials/Install.rst @@ -533,7 +533,7 @@ illustration only. this value with the architecture for their system as the default varies across compilers and compiler versions. - .. versionchanged:: x.y.z + .. versionchanged:: 7.2.0 In prior versions ``CMAKE_CUDA_ARCHITECTURES`` defaulted to ``70``. diff --git a/doc/shared/sundials_vars.py b/doc/shared/sundials_vars.py index 4c5f76c563..c83bdfd734 100644 --- a/doc/shared/sundials_vars.py +++ b/doc/shared/sundials_vars.py @@ -9,14 +9,14 @@ # SPDX-License-Identifier: BSD-3-Clause # SUNDIALS Copyright End # ---------------------------------------------------------------- -doc_version = 'develop' -sundials_version = 'v7.1.1' -arkode_version = 'v6.1.1' -cvode_version = 'v7.1.1' -cvodes_version = 'v7.1.1' -ida_version = 'v7.1.1' -idas_version = 'v6.1.1' -kinsol_version = 'v7.1.1' +doc_version = 'v7.2.0' +sundials_version = 'v7.2.0' +arkode_version = 'v6.2.0' +cvode_version = 'v7.2.0' +cvodes_version = 'v7.2.0' +ida_version = 'v7.2.0' +idas_version = 'v6.2.0' +kinsol_version = 'v7.2.0' year = '2024' # Warn about all references where the target cannot be found diff --git a/doc/shared/sunstepper/SUNStepper_Description.rst b/doc/shared/sunstepper/SUNStepper_Description.rst index 94d9b5564b..0ed17d224a 100644 --- a/doc/shared/sunstepper/SUNStepper_Description.rst +++ b/doc/shared/sunstepper/SUNStepper_Description.rst @@ -18,7 +18,7 @@ The SUNStepper API ================== -.. versionadded:: x.y.z +.. versionadded:: 7.2.0 As with other SUNDIALS classes, the :c:type:`SUNStepper` abstract base class is implemented using a C structure containing a ``content`` pointer to the derived diff --git a/doc/sundials/biblio.bib b/doc/sundials/biblio.bib index 56b49481c8..c6841b90ee 100644 --- a/doc/sundials/biblio.bib +++ b/doc/sundials/biblio.bib @@ -16,7 +16,7 @@ @techreport{arkode_ug, author={Daniel R. Reynolds and David J. Gardner and Alan C. Hindmarsh and Carol S. Woodward and Jean M. Sexton}, -title={{User Documentation for ARKODE v6.1.1}}, +title={{User Documentation for ARKODE v6.2.0}}, institution={LLNL}, number={LLNL-SM-668082}, year = 2024 @@ -26,7 +26,7 @@ @techreport{arkode_ug % @techreport{arkode_ex, author={Daniel R. Reynolds}, -title={{Example Programs for ARKODE v6.1.1}}, +title={{Example Programs for ARKODE v6.2.0}}, institution={Southern Methodist University}, year = 2024 } @@ -35,7 +35,7 @@ @techreport{arkode_ex % @techreport{cvode_ug, author={A. C. Hindmarsh and R. Serban}, -title={{User Documentation for CVODE v7.1.1}}, +title={{User Documentation for CVODE v7.2.0}}, institution={LLNL}, number={UCRL-SM-208108}, year = 2024 @@ -45,7 +45,7 @@ @techreport{cvode_ug % @techreport{cvode_ex, author={A. C. Hindmarsh and R. Serban and D. R. Reynolds}, -title={{Example Programs for CVODE v7.1.1}}, +title={{Example Programs for CVODE v7.2.0}}, institution={LLNL}, note={UCRL-SM-208110}, year = 2024 @@ -55,7 +55,7 @@ @techreport{cvode_ex % @techreport{cvodes_ug, author={A. C. Hindmarsh and R. Serban}, -title={{User Documentation for CVODES v7.1.1}}, +title={{User Documentation for CVODES v7.2.0}}, institution={LLNL}, note={UCRL-SM-208111}, year = 2024 @@ -65,7 +65,7 @@ @techreport{cvodes_ug % @techreport{cvodes_ex, author={R. Serban and A. C. Hindmarsh}, -title={{Example Programs for CVODES v7.1.1}}, +title={{Example Programs for CVODES v7.2.0}}, institution={LLNL}, number={UCRL-SM-208115}, year = 2024 @@ -75,7 +75,7 @@ @techreport{cvodes_ex % @techreport{ida_ug, author={A. C. Hindmarsh and R. Serban and A. Collier}, -title={{User Documentation for IDA v7.1.1}}, +title={{User Documentation for IDA v7.2.0}}, institution={LLNL}, number={UCRL-SM-208112}, year = 2024 @@ -85,7 +85,7 @@ @techreport{ida_ug % @techreport{ida_ex, author={A. C. Hindmarsh and R. Serban and A. Collier}, -title={{Example Programs for IDA v7.1.1}}, +title={{Example Programs for IDA v7.2.0}}, institution={LLNL}, number={UCRL-SM-208113}, year = 2024 @@ -95,7 +95,7 @@ @techreport{ida_ex % @techreport{idas_ug, author={R. Serban and C. Petra and A. C. Hindmarsh}, -title={{User Documentation for IDAS v6.1.1}}, +title={{User Documentation for IDAS v6.2.0}}, institution={LLNL}, number={UCRL-SM-234051}, year = 2024 @@ -105,7 +105,7 @@ @techreport{idas_ug % @techreport{idas_ex, author={R. Serban and A. C. Hindmarsh}, -title={{Example Programs for IDAS v6.1.1}}, +title={{Example Programs for IDAS v6.2.0}}, institution={LLNL}, number={LLNL-TR-437091}, year = 2024 @@ -115,7 +115,7 @@ @techreport{idas_ex % @techreport{kinsol_ug, author={A. M. Collier and A. C. Hindmarsh and R. Serban and C.S. Woodward}, -title={{User Documentation for KINSOL v7.1.1}}, +title={{User Documentation for KINSOL v7.2.0}}, institution={LLNL}, number={UCRL-SM-208116}, year = 2024 @@ -125,7 +125,7 @@ @techreport{kinsol_ug % @techreport{kinsol_ex, author={A. M. Collier and R. Serban}, -title={{Example Programs for KINSOL v7.1.1}}, +title={{Example Programs for KINSOL v7.2.0}}, institution={LLNL}, number={UCRL-SM-208114}, year = 2024 diff --git a/doc/sundials/ug.tex b/doc/sundials/ug.tex index a7478dc4e8..46c6705121 100644 --- a/doc/sundials/ug.tex +++ b/doc/sundials/ug.tex @@ -59,29 +59,29 @@ %----- VERSIONS AND UCRL NUMBERS OF SUNDIALS CODES -\newcommand{\sunrelease}{v7.1.1} +\newcommand{\sunrelease}{v7.2.0} -\newcommand{\cvrelease}{v7.1.1} +\newcommand{\cvrelease}{v7.2.0} \newcommand{\cvucrlug}{UCRL-SM-208108} \newcommand{\cvucrlex}{UCRL-SM-208110} -\newcommand{\cvsrelease}{v7.1.1} +\newcommand{\cvsrelease}{v7.2.0} \newcommand{\cvsucrlug}{UCRL-SM-208111} \newcommand{\cvsucrlex}{UCRL-SM-208115} -\newcommand{\idarelease}{v7.1.1} +\newcommand{\idarelease}{v7.2.0} \newcommand{\idaucrlug}{UCRL-SM-208112} \newcommand{\idaucrlex}{UCRL-SM-208113} -\newcommand{\idasrelease}{v6.1.1} +\newcommand{\idasrelease}{v6.2.0} \newcommand{\idasucrlug}{UCRL-SM-234051} \newcommand{\idasucrlex}{LLNL-TR-437091} -\newcommand{\kinrelease}{v7.1.1} +\newcommand{\kinrelease}{v7.2.0} \newcommand{\kinucrlug}{UCRL-SM-208116} \newcommand{\kinucrlex}{UCRL-SM-208114} -\newcommand{\arkrelease}{v6.1.1} +\newcommand{\arkrelease}{v6.2.0} \newcommand{\arkucrlug}{LLNL-SM-668082} \newcommand{\arkucrlex}{????-??-??????} diff --git a/scripts/startReleaseCycle.sh b/scripts/startReleaseCycle.sh index f4ee9075db..ff9a393816 100755 --- a/scripts/startReleaseCycle.sh +++ b/scripts/startReleaseCycle.sh @@ -69,7 +69,8 @@ rm -f tmp.txt fn="../doc/shared/Changelog.rst" -# Move recent changes to changelog +# Replace line containing RecentChanges_link.rst in Changelog.rst with the +# contents of RecentChanges.rst sedi -e '/RecentChanges_link.rst/ {' \ -e 'r ../doc/shared/RecentChanges.rst' \ -e 'd' \ @@ -87,7 +88,7 @@ cat > ../doc/shared/RecentChanges.rst < tmp.txt <