Skip to content

Commit

Permalink
Merge branch 'feature/remove-deprecated-code' into feature/remove-dep…
Browse files Browse the repository at this point in the history
…recated-code-types
  • Loading branch information
balos1 committed Nov 11, 2023
2 parents 752c350 + 40f5135 commit 97a3fbd
Show file tree
Hide file tree
Showing 285 changed files with 30,941 additions and 5,849 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/double-precision.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
name: double precision build and test with GCC+TPLs (no GPUs)
name: Build and Test - Ubuntu/gcc double precision (TPLs, no GPUs)

on:
push:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/extended-precision.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
name: extended precision build and test with GCC+TPLs (no GPUs)
name: Build and Test - Ubuntu/gcc extended precision (TPLs, no GPUs)

on:
pull_request:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/macos-latest.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: MacOS short test
name: Build and Test - MacOS (short)

on:
pull_request:
Expand All @@ -14,7 +14,7 @@ env:
BUILD_TYPE: Release

jobs:
build:
build_and_test:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/single-precision.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
name: single precision build and test with GCC+TPLs (no GPUs)
name: Build and Test - Ubuntu/gcc single precision (TPLs, no GPUs)

on:
pull_request:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/spack-develop.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
name: spack@develop build and test with GCC+TPLs (no GPUs)
name: Build and Test - Ubuntu/gcc spack@develop (TPLs, no GPUs)

on:
pull_request:
Expand Down
40 changes: 32 additions & 8 deletions .github/workflows/ubuntu-clang-latest.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Ubuntu (clang) short test
name: Build - Ubuntu/Clang (no TPLs)

on:
pull_request:
Expand All @@ -14,9 +14,15 @@ env:
BUILD_TYPE: Release

jobs:
build:
build_cycle_log_levels:
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
# 2 is what all other builds use (its the default), so skip it here
logging_level: [0, 1, 3, 4, 5]

steps:
- name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v1
Expand All @@ -28,14 +34,32 @@ jobs:
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++)
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -DSUNDIALS_LOGGING_LEVEL=${{matrix.logging_level}}

- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- name: Test
working-directory: ${{github.workspace}}/build
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C ${{env.BUILD_TYPE}}
build_cycle_profiling:
runs-on: ubuntu-latest

strategy:
matrix:
profiling: ['OFF', 'ON']

steps:
- name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v1
with:
version: "14.0"

- uses: actions/checkout@v3

- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=$(which clang) -DCMAKE_CXX_COMPILER=$(which clang++) -DSUNDIALS_BUILD_WITH_PROFILING=${{matrix.profiling}}

- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
4 changes: 2 additions & 2 deletions .github/workflows/windows-latest-mingw.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Windows (mingw) short test
name: Build and Test - Windows/mingw (short)

on:
pull_request:
Expand All @@ -14,7 +14,7 @@ env:
BUILD_TYPE: Release

jobs:
build:
buil_and_test:
runs-on: windows-latest

steps:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/windows-latest.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Windows short test
name: Build and Test - Windows/MSVC (short)

on:
pull_request:
Expand All @@ -14,7 +14,7 @@ env:
BUILD_TYPE: Release

jobs:
build:
build_and_test:
runs-on: windows-latest

steps:
Expand Down
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,21 @@ can be used by including the header file `sundials_types_old.h`.

## Changes to SUNDIALS in release X.X.X

Added the `SUNAdaptController` base class, ported ARKODE's internal
implementations of time step controllers into implementations of this class,
and updated ARKODE to use these objects instead of its own implementations.
Added `ARKStepSetAdaptController` and `ERKStepSetAdaptController` routines
so that users can modify controller parameters, or even provide custom
implementations.

Added the routines `ARKStepSetAdaptivityAdjustment` and
`ERKStepSetAdaptivityAdjustment`, that allow users to adjust the
value for the method order supplied to the temporal adaptivity controllers.
The ARKODE default for this adjustment has been -1 since its initial
release, but for some applications a value of 0 is more appropriate.
Users who notice that their simulations encounter a large number of
temporal error test failures may want to experiment with adjusting this value.

Fixed a regression introduced by the stop time bug fix in v6.6.1 where ARKODE,
CVODE, CVODES, IDA, and IDAS would return at the stop time rather than the
requested output time if the stop time was reached in the same step in which the
Expand Down Expand Up @@ -47,6 +62,9 @@ method `ARKODE_VERNER_16_8_9`.
Changed the `SUNProfiler` so that it does not rely on `MPI_WTime` in any case.
This fixes https://github.com/LLNL/sundials/issues/312.

**Breaking change**
Functions, types and header files that were previously deprecated have been
removed.

## Changes to SUNDIALS in release 6.6.1

Expand All @@ -61,6 +79,20 @@ the stop time. Additionally, with ARKODE, CVODE, and CVODES this fix removes an
unnecessary interpolation of the solution at the stop time that could occur in
this case.

Fixed a bug in ERKStep where methods with `c[s-1] = 1` but `a[s-1,j] != b[j]`
were incorrectly treated as having the first same as last (FSAL) property.

Fixed a bug in `MRIStepCoupling_Write` where explicit coupling tables were not
written to the output file pointer.

ARKStep, ERKStep, MRIStep, and SPRKStep were updated to remove a potentially
unnecessary right-hand side evaluation at the end of an integration. ARKStep was
additionally updated to remove extra right-hand side evaluations when using an
explicit method or an implicit method with an explicit first stage.

The `MRIStepInnerStepper` class in MRIStep was updated to make supplying an
`MRIStepInnerFullRhsFn` optional.

## Changes to SUNDIALS in release 6.6.0

A new time-stepping module, `SPRKStep`, was added to ARKODE. This time-stepper
Expand Down
6 changes: 3 additions & 3 deletions cmake/SundialsBuildOptionsPre.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,12 @@ sundials_option(SUNDIALS_BUILD_WITH_PROFILING BOOL "${DOCSTR}" OFF)
# ---------------------------------------------------------------

set(DOCSTR "Build with logging capabilities enabled (0 = no logging, 1 = errors, 2 = +warnings, 3 = +info, 4 = +debug, 5 = +extras")
sundials_option(SUNDIALS_LOGGING_LEVEL STRING "${DOCSTR}" 3
sundials_option(SUNDIALS_LOGGING_LEVEL STRING "${DOCSTR}" 2
OPTIONS "0;1;2;3;4;5")

if(SUNDIALS_LOGGING_LEVEL GREATER_EQUAL 4)
if(SUNDIALS_LOGGING_LEVEL GREATER_EQUAL 3)
message(STATUS "SUNDIALS logging level set to ${SUNDIALS_LOGGING_LEVEL}")
message(WARNING "SUNDIALS built with debug logging turned on, performance may be affected.")
message(WARNING "SUNDIALS built with additional logging turned on, performance may be affected.")
endif()

set(DOCSTR "Build SUNDIALS logging with MPI support")
Expand Down
9 changes: 9 additions & 0 deletions cmake/macros/SundialsAddLibrary.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,15 @@ macro(sundials_add_library target)
target_link_libraries(${obj_target} ${_all_libs})
endif()

if(SUNDIALS_BUILD_WITH_PROFILING)
if(ENABLE_CALIPER)
target_link_libraries(${obj_target} PUBLIC caliper)
endif()
if(ENABLE_ADIAK)
target_link_libraries(${obj_target} PUBLIC adiak::adiak ${CMAKE_DL_LIBS})
endif()
endif()

# add includes to object library
target_include_directories(${obj_target}
PUBLIC
Expand Down
10 changes: 10 additions & 0 deletions doc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# SUNDIALS Documentation

The SUNDIALS documentation is written using reStructuredText and
[Sphinx](https://www.sphinx-doc.org/).

To build the documentation with Sphinx you will need Python 3.9+. Sphinx and the
necessary extensions can be installed using the requirements file i.e.,
`pip install -r requirements.txt`. Additionally, building the developer
documentation requires [Graphviz](https://graphviz.org/) for generating
flowcharts.
69 changes: 42 additions & 27 deletions doc/arkode/guide/source/ARKodeButcherTable.rst
Original file line number Diff line number Diff line change
Expand Up @@ -76,33 +76,35 @@ ARKodeButcherTable functions
.. _ARKodeButcherTable.FunctionsTable:
.. table:: ARKodeButcherTable functions

+----------------------------------------------+------------------------------------------------------------+
| **Function name** | **Description** |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_LoadERK()` | Retrieve a given explicit Butcher table by its unique ID |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_LoadERKByName()` | Retrieve a given explicit Butcher table by its unique name |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_LoadDIRK()` | Retrieve a given implicit Butcher table by its unique ID |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_LoadDIRKByName()`| Retrieve a given implicit Butcher table by its unique name |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Alloc()` | Allocate an empty Butcher table |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Create()` | Create a new Butcher table |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Copy()` | Create a copy of a Butcher table |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Space()` | Get the Butcher table real and integer workspace size |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Free()` | Deallocate a Butcher table |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Write()` | Write the Butcher table to an output file |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_CheckOrder()` | Check the order of a Butcher table |
+----------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_CheckARKOrder()` | Check the order of an ARK pair of Butcher tables |
+----------------------------------------------+------------------------------------------------------------+
+--------------------------------------------------+------------------------------------------------------------+
| **Function name** | **Description** |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_LoadERK()` | Retrieve a given explicit Butcher table by its unique ID |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_LoadERKByName()` | Retrieve a given explicit Butcher table by its unique name |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_LoadDIRK()` | Retrieve a given implicit Butcher table by its unique ID |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_LoadDIRKByName()` | Retrieve a given implicit Butcher table by its unique name |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Alloc()` | Allocate an empty Butcher table |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Create()` | Create a new Butcher table |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Copy()` | Create a copy of a Butcher table |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Space()` | Get the Butcher table real and integer workspace size |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Free()` | Deallocate a Butcher table |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_Write()` | Write the Butcher table to an output file |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_IsStifflyAccurate()` | Determine if ``A[stages - 1][i] == b[i]`` |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_CheckOrder()` | Check the order of a Butcher table |
+--------------------------------------------------+------------------------------------------------------------+
| :c:func:`ARKodeButcherTable_CheckARKOrder()` | Check the order of an ARK pair of Butcher tables |
+--------------------------------------------------+------------------------------------------------------------+

.. c:function:: ARKodeButcherTable ARKodeButcherTable_LoadERK(ARKODE_ERKTableID emethod)
Expand Down Expand Up @@ -252,6 +254,19 @@ ARKodeButcherTable functions
The *outfile* argument can be ``stdout`` or ``stderr``, or it
may point to a specific file created using ``fopen``.
.. c:function:: void ARKodeButcherTable_IsStifflyAccurate(ARKodeButcherTable B)
Determine if the table satisfies ``A[stages - 1][i] == b[i]``
**Arguments:**
* *B* -- the Butcher table.
**Returns**
* ``SUNTRUE`` if the method is "stiffly accurate", otherwise returns
``SUNFALSE``
.. versionadded:: vX.X.X
.. c:function:: int ARKodeButcherTable_CheckOrder(ARKodeButcherTable B, int* q, int* p, FILE* outfile)
Determine the analytic order of accuracy for the specified Butcher
Expand Down
2 changes: 2 additions & 0 deletions doc/arkode/guide/source/Constants.rst
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,8 @@ contains the ARKODE output constants.
| :index:`ARK_RELAX_JAC_FAIL` | -46 | The relaxation Jacobian function returned an unrecoverable |
| | | error |
+-------------------------------------+------+------------------------------------------------------------+
| :index:`ARK_CONTROLLER_ERR` | -47 | An error with a SUNAdaptController object was encountered. |
+-------------------------------------+------+------------------------------------------------------------+
| :index:`ARK_UNRECOGNIZED_ERROR` | -99 | An unknown error was encountered. |
+-------------------------------------+------+------------------------------------------------------------+
| |
Expand Down
34 changes: 34 additions & 0 deletions doc/arkode/guide/source/Introduction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,21 @@ Changes from previous versions
Changes in vX.X.X
-----------------

Added the :c:type:`SUNAdaptController` base class, ported ARKODE's internal
implementations of time step controllers into implementations of this class,
and updated ARKODE to use these objects instead of its own implementations. Added
:c:func:`ARKStepSetAdaptController` and :c:func:`ERKStepSetAdaptController`
routines so that users can modify controller parameters, or even provide custom
implementations.

Added the routines :c:func:`ARKStepSetAdaptivityAdjustment` and
:c:func:`ERKStepSetAdaptivityAdjustment`, that allow users to adjust the
value for the method order supplied to the temporal adaptivity controllers.
The ARKODE default for this adjustment has been :math:`-1` since its initial
release, but for some applications a value of :math:`0` is more appropriate.
Users who notice that their simulations encounter a large number of
temporal error test failures may want to experiment with adjusting this value.

Fixed the build system support for MAGMA when using a NVIDIA HPC SDK installation of CUDA
and fixed the targets used for rocBLAS and rocSPARSE.

Expand Down Expand Up @@ -167,6 +182,10 @@ This fixes `GitHub Issue #312 <https://github.com/LLNL/sundials/issues/312>`_.

Added Fortran support for the LAPACK dense ``SUNLinearSolver`` implementation.

**Breaking change**
Functions, types and header files that were previously deprecated have been
removed.


Changes in v5.6.1
-----------------
Expand All @@ -181,6 +200,21 @@ requested output time is the same as the stop time. Additionally, this fix
removes an unnecessary interpolation of the solution at the stop time that could
occur in this case.

Fixed a bug in ERKStep where methods with :math:`c_s = 1` but
:math:`a_{s,j} \neq b_j` were incorrectly treated as having the first same as
last (FSAL) property.

Fixed a bug in :c:func:`MRIStepCoupling_Write` where explicit coupling tables
were not written to the output file pointer.

ARKStep, ERKStep, MRIStep, and SPRKStep were updated to remove a potentially
unnecessary right-hand side evaluation at the end of an integration. ARKStep was
additionally updated to remove extra right-hand side evaluations when using an
explicit method or an implicit method with an explicit first stage.

The :c:type:`MRIStepInnerStepper` class in MRIStep was updated to make supplying
an :c:func:`MRIStepInnerFullRhsFn` optional.

Changes in v5.6.0
-----------------

Expand Down
Loading

0 comments on commit 97a3fbd

Please sign in to comment.