diff --git a/CHANGELOG.md b/CHANGELOG.md index e4fd3ff71f..c1d6714461 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # SUNDIALS Changelog +## Changes to SUNDIALS in release X.Y.Z + +### Major Features + +### New Features and Enhancements + +### Bug Fixes + +### Deprecation Notices + ## Changes to SUNDIALS in release 7.2.0 ### Major Features diff --git a/doc/arkode/guide/source/Introduction.rst b/doc/arkode/guide/source/Introduction.rst index 33cbe273c1..a8e4d53d20 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.2.0 +Changes to SUNDIALS in release X.Y.Z ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/cvode/guide/source/Introduction.rst b/doc/cvode/guide/source/Introduction.rst index 4f4cdff53a..3657a9c6b5 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.2.0 +Changes to SUNDIALS in release X.Y.Z ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/cvodes/guide/source/Introduction.rst b/doc/cvodes/guide/source/Introduction.rst index a3b9df3a7c..b2883b9050 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.2.0 +Changes to SUNDIALS in release X.Y.Z ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/ida/guide/source/Introduction.rst b/doc/ida/guide/source/Introduction.rst index 0206802bcb..2ccf5ede24 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.2.0 +Changes to SUNDIALS in release X.Y.Z ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/idas/guide/source/Introduction.rst b/doc/idas/guide/source/Introduction.rst index 1317e1b030..5fe9913428 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.2.0 +Changes to SUNDIALS in release X.Y.Z ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/kinsol/guide/source/Introduction.rst b/doc/kinsol/guide/source/Introduction.rst index 3b1e969d29..6961e9da38 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.2.0 +Changes to SUNDIALS in release X.Y.Z ==================================== .. include:: ../../../shared/RecentChanges.rst diff --git a/doc/shared/Changelog.rst b/doc/shared/Changelog.rst index 6bd419aeec..430a095921 100644 --- a/doc/shared/Changelog.rst +++ b/doc/shared/Changelog.rst @@ -21,11 +21,188 @@ Changelog .. SED_REPLACEMENT_KEY -Changes to SUNDIALS in release 7.2.0 +Changes to SUNDIALS in release X.Y.Z ==================================== .. include:: RecentChanges_link.rst +Changes to SUNDIALS in release 7.2.0 +==================================== + +**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 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** + +*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 +: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 +``Trilinos_INTERFACE_*`` CMake options have been removed. + +Example programs using *hypre* have been updated to support v2.20 and newer. + +**Bug Fixes** + +*CMake* + +Fixed a CMake bug regarding usage of missing "print_warning" macro that was only +triggered when the deprecated ``CUDA_ARCH`` option was 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 `__. + +*NVector* + +Fixed a build failure with the SYCL NVector when using Intel oneAPI 2025.0 +compilers. See GitHub Issue `#596 `__. + +Fixed compilation errors when building the Trilinos Teptra NVector with CUDA +support. + +*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. + +*SUNLinearSolver* + +Fixed a bug in the SPTFQMR linear solver where recoverable preconditioner errors +were reported as unrecoverable. + +*ARKODE* + +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 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. + +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. + +*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`, +:c:func:`N_VGetSubvectorArrayPointer_MPIManyVector`, +:c:func:`SUNBandMatrix_Column` and :c:func:`SUNDenseMatrix_Column` where 64-bit +``sunindextype`` interface functions were used. + +**Deprecation Notices** + +Deprecated the ARKStep-specific utility routine for wrapping an ARKStep instance +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 +function evaluations have been deprecated. Use :c:func:`ARKodeGetNumRhsEvals` +instead. + Changes to SUNDIALS in release 7.1.1 ==================================== diff --git a/doc/shared/RecentChanges.rst b/doc/shared/RecentChanges.rst index 68293f2969..4f1514700e 100644 --- a/doc/shared/RecentChanges.rst +++ b/doc/shared/RecentChanges.rst @@ -1,173 +1,7 @@ **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 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** -*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 -: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 -``Trilinos_INTERFACE_*`` CMake options have been removed. - -Example programs using *hypre* have been updated to support v2.20 and newer. - **Bug Fixes** -*CMake* - -Fixed a CMake bug regarding usage of missing "print_warning" macro that was only -triggered when the deprecated ``CUDA_ARCH`` option was 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 `__. - -*NVector* - -Fixed a build failure with the SYCL NVector when using Intel oneAPI 2025.0 -compilers. See GitHub Issue `#596 `__. - -Fixed compilation errors when building the Trilinos Teptra NVector with CUDA -support. - -*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. - -*SUNLinearSolver* - -Fixed a bug in the SPTFQMR linear solver where recoverable preconditioner errors -were reported as unrecoverable. - -*ARKODE* - -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 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. - -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. - -*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`, -:c:func:`N_VGetSubvectorArrayPointer_MPIManyVector`, -:c:func:`SUNBandMatrix_Column` and :c:func:`SUNDenseMatrix_Column` where 64-bit -``sunindextype`` interface functions were used. - **Deprecation Notices** - -Deprecated the ARKStep-specific utility routine for wrapping an ARKStep instance -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 -function evaluations have been deprecated. Use :c:func:`ARKodeGetNumRhsEvals` -instead. diff --git a/doc/shared/sundials_vars.py b/doc/shared/sundials_vars.py index c83bdfd734..ef24d2533a 100644 --- a/doc/shared/sundials_vars.py +++ b/doc/shared/sundials_vars.py @@ -9,7 +9,7 @@ # SPDX-License-Identifier: BSD-3-Clause # SUNDIALS Copyright End # ---------------------------------------------------------------- -doc_version = 'v7.2.0' +doc_version = 'develop' sundials_version = 'v7.2.0' arkode_version = 'v6.2.0' cvode_version = 'v7.2.0'