Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Update Full RHS Calls #324

Merged
merged 109 commits into from
Nov 8, 2023
Merged
Show file tree
Hide file tree
Changes from 108 commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
c86f8a5
flow chart for ERKStep Full RHS Evals
gardner48 Aug 1, 2023
856b49f
Update ERKStep RHS eval logic
gardner48 Aug 1, 2023
63ac4e0
fix unused full rhs mode
gardner48 Aug 1, 2023
9eb21bc
remove unused var
gardner48 Aug 1, 2023
d0630d9
init interp before checking if full RHS is required, check hin, remov…
gardner48 Aug 1, 2023
713225f
remove ynew and fnew aliases in Hermite interp module
gardner48 Aug 1, 2023
f7e7d6d
check fn_current in ARKStep, update FSAL check
gardner48 Aug 1, 2023
ce6d7f4
adjust ARKStep stage index if explicit first stage
gardner48 Aug 1, 2023
06e8c91
free vectors in kepler example
gardner48 Aug 1, 2023
ca8bc5f
free helper ops
gardner48 Aug 1, 2023
6cd6237
update recent changes
gardner48 Aug 1, 2023
f4431dc
update call_fullrhs flag for ARKStep
gardner48 Aug 2, 2023
462ee45
Merge branch 'bugfix/memleak-sunmemory' into feature/arkode-fullrhs-2
gardner48 Aug 2, 2023
c4fdc3f
Merge branch 'bugfix/memleak-kepler' into feature/arkode-fullrhs-2
gardner48 Aug 2, 2023
295d135
update relaxation to work with full RHS eval changes
gardner48 Aug 2, 2023
fd8a29f
add ARKStep test for number of RHS evals
gardner48 Aug 2, 2023
1594025
update ARKStep rhs eval test
gardner48 Aug 3, 2023
4832f91
remove extra RHS evaluation with FSAL DIRK methods
gardner48 Aug 3, 2023
ce3e585
fsal -> stiffly accurate
gardner48 Aug 3, 2023
3cc9f3a
test all ERK, DIRK, and IMEX methods
gardner48 Aug 4, 2023
26dda47
add ERKStep RHS eval test
gardner48 Aug 4, 2023
5342d77
add M and M(t) to stage test
gardner48 Aug 9, 2023
2114001
fix bug when using explicit method with fixed M
gardner48 Aug 9, 2023
0dc100f
update mass matrix logic in ARKStep fullRHS
gardner48 Aug 11, 2023
a3e44cf
update ERK flow chart, start ARK flow chart
gardner48 Aug 12, 2023
16fe67e
update flow charts
gardner48 Aug 13, 2023
d672857
update MRIStep full RHS
gardner48 Aug 14, 2023
ec38e32
update some .out files
gardner48 Aug 16, 2023
514c455
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Aug 16, 2023
d61d18b
move mri forcing in arkstep to sdata and compute solution
gardner48 Aug 18, 2023
00edf3a
update some ERK, ARK, and MRI output files
gardner48 Aug 19, 2023
ae0e71c
allow stepper to set default interpolation module
gardner48 Aug 20, 2023
6e8cbb6
fix return value
gardner48 Aug 21, 2023
d79bb12
remove some logging
gardner48 Aug 21, 2023
1374ec4
fix initial step size check
gardner48 Aug 21, 2023
08d7d4f
update comments
gardner48 Aug 21, 2023
6453bfd
do not require full rhs from stepper
gardner48 Aug 21, 2023
a7f1bdb
add comment
gardner48 Aug 21, 2023
50ba8f4
update comments
gardner48 Aug 21, 2023
f5de597
update ark and erk rhs evals test configs
gardner48 Aug 21, 2023
849ab03
remove fullRHS usage in MRIStep TakeStep
gardner48 Aug 21, 2023
bb581e4
update docs
gardner48 Aug 21, 2023
93ceb75
remove unused variable
gardner48 Aug 21, 2023
3f6d1bf
fix printing explicit MRI coupling tables
gardner48 Aug 21, 2023
d8b7f39
update change log
gardner48 Aug 21, 2023
318aa35
update expected MRI RHS evaluation count
gardner48 Aug 21, 2023
0df4cce
update output files
gardner48 Aug 21, 2023
fe4acfa
ensure fn is allocated with rootfinding
gardner48 Aug 21, 2023
c8457da
update SPRK docs
gardner48 Aug 21, 2023
8d62a2c
update output files, rhs eval checks
gardner48 Aug 21, 2023
8c33263
update f2003 output files
gardner48 Aug 22, 2023
28fb47e
Fixed dangling reference
drreynolds Aug 22, 2023
997b18a
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Aug 22, 2023
b074839
add README noting documentation build requirements
gardner48 Aug 22, 2023
90545de
fix output files, diff CXX_parallel test outputs
gardner48 Aug 22, 2023
5003f79
remove old comment
gardner48 Aug 22, 2023
f757632
add unit_test subdirectories to tarscript
gardner48 Aug 22, 2023
47d986e
update CMake for CXX_parallel unit test
gardner48 Aug 22, 2023
b9292d9
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Aug 23, 2023
7704f03
Update output files post merge
gardner48 Aug 24, 2023
37e0354
update f2003 output files after merge
gardner48 Aug 24, 2023
5899340
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Aug 24, 2023
55350d4
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Sep 20, 2023
05c0b3d
update MRI full RHS comment
gardner48 Sep 20, 2023
898681d
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Oct 4, 2023
ed68223
update ApplyForcing
gardner48 Oct 5, 2023
3c48978
fix typos
gardner48 Oct 6, 2023
023dd94
update comments
gardner48 Oct 6, 2023
3d194a6
change fn_current to fn_is_current
gardner48 Oct 6, 2023
1b85835
add inner stepper test and return error on interpolation failure
gardner48 Oct 9, 2023
dfa8633
add IsStifflyAccurate Butcher table function
gardner48 Oct 9, 2023
6a593b7
fix warnings with apple-clang 15.0.0
gardner48 Oct 9, 2023
e11f19b
update max lin iters in diffusion examples
gardner48 Oct 19, 2023
81bce91
tighten nonlinear solver tolerance in KPR convergence test
gardner48 Oct 19, 2023
af60f72
update output files
gardner48 Oct 19, 2023
503de0c
relaxation: remove delta y fn, loosen res tol
gardner48 Oct 20, 2023
3a91e6f
update output files
gardner48 Oct 20, 2023
834fb7f
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Oct 26, 2023
a05a1f1
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Oct 26, 2023
e47c831
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Oct 27, 2023
7ddcfac
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Oct 28, 2023
aacfd87
update example nls tolerances
gardner48 Oct 23, 2023
6d47159
update output files
gardner48 Oct 28, 2023
a263b15
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Oct 29, 2023
cb9ac86
update output files
gardner48 Oct 29, 2023
4c52251
use y_new = z[s-1] for stiffly accurate methods
gardner48 Oct 20, 2023
69ff927
relax LS stat comparisons in MRI vs DIRK test
gardner48 Oct 20, 2023
a993c55
update relaxation examples
gardner48 Oct 28, 2023
1dcdf4d
update output files
gardner48 Oct 28, 2023
73df4ae
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Nov 2, 2023
1b16b93
search for output files in destination path
gardner48 Nov 2, 2023
d3c8cd9
update answers commit
gardner48 Nov 2, 2023
1c472e3
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Nov 2, 2023
aa37746
Merge branch 'develop' into feature/arkode-fullrhs-2
gardner48 Nov 3, 2023
0ea851e
update answers commit
gardner48 Nov 3, 2023
53b041d
include LastTestsFailed.log in artifacts
gardner48 Nov 3, 2023
bc0df92
update answers commmit
gardner48 Nov 3, 2023
4cded1d
update to upload-artifact@v3 for multipath support
gardner48 Nov 5, 2023
9dfec06
cancel existing workflow on new push
gardner48 Nov 5, 2023
7ab3911
upload full Testing directory
gardner48 Nov 5, 2023
2da559f
add copy option to output update script
gardner48 Nov 5, 2023
dd83c27
update answers submodule
gardner48 Nov 5, 2023
396fcff
update stat comparison to use tolerance
gardner48 Nov 5, 2023
b0bf1eb
update answers commit
gardner48 Nov 5, 2023
ab98021
reset answers back to main
gardner48 Nov 5, 2023
21f6214
update answers submodule
gardner48 Nov 5, 2023
409858d
update answers submodule
gardner48 Nov 5, 2023
a443d49
add workflow_dispatch to other tests
gardner48 Nov 5, 2023
a204175
Merge branch 'develop' into feature/arkode-fullrhs-2
balos1 Nov 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions .github/workflows/double-precision.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ name: double precision build and test with GCC+TPLs (no GPUs)
on:
push:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build_and_test:
Expand All @@ -26,17 +31,17 @@ jobs:
indexsize: ${{ matrix.indexsize }}
precision: ${{ matrix.precision }}
- name: Archive build files from failed build
uses: actions/upload-artifact@v2.2.4
uses: actions/upload-artifact@v3
if: failure()
with:
name: build_files
path: |
${{ github.workspace }}/test/build_*
!${{ github.workspace }}/test/build_*/Testing/output
- name: Archive output files from failed build
uses: actions/upload-artifact@v2.2.4
uses: actions/upload-artifact@v3
if: failure()
with:
name: output_files
path: |
${{ github.workspace }}/test/build_*/Testing/output
${{ github.workspace }}/test/build_*/Testing/
11 changes: 8 additions & 3 deletions .github/workflows/extended-precision.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ name: extended precision build and test with GCC+TPLs (no GPUs)

on:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build_and_test:
Expand All @@ -25,17 +30,17 @@ jobs:
indexsize: ${{ matrix.indexsize }}
precision: ${{ matrix.precision }}
- name: Archive build files from failed build
uses: actions/upload-artifact@v2.2.4
uses: actions/upload-artifact@v3
if: failure()
with:
name: build_files
path: |
${{ github.workspace }}/test/build_*
!${{ github.workspace }}/test/build_*/Testing/output
- name: Archive output files from failed build
uses: actions/upload-artifact@v2.2.4
uses: actions/upload-artifact@v3
if: failure()
with:
name: output_files
path: |
${{ github.workspace }}/test/build_*/Testing/output
${{ github.workspace }}/test/build_*/Testing/
5 changes: 5 additions & 0 deletions .github/workflows/macos-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: MacOS short test

on:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
Expand Down
11 changes: 8 additions & 3 deletions .github/workflows/single-precision.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ name: single precision build and test with GCC+TPLs (no GPUs)

on:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build_and_test:
Expand All @@ -25,17 +30,17 @@ jobs:
indexsize: ${{ matrix.indexsize }}
precision: ${{ matrix.precision }}
- name: Archive build files from failed build
uses: actions/upload-artifact@v2.2.4
uses: actions/upload-artifact@v3
if: failure()
with:
name: build_files
path: |
${{ github.workspace }}/test/build_*
!${{ github.workspace }}/test/build_*/Testing/output
- name: Archive output files from failed build
uses: actions/upload-artifact@v2.2.4
uses: actions/upload-artifact@v3
if: failure()
with:
name: output_files
path: |
${{ github.workspace }}/test/build_*/Testing/output
${{ github.workspace }}/test/build_*/Testing/
10 changes: 7 additions & 3 deletions .github/workflows/spack-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ on:
schedule:
- cron: '00 22 * * *'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build_and_test:
runs-on: ubuntu-latest
Expand All @@ -28,17 +32,17 @@ jobs:
indexsize: ${{ matrix.indexsize }}
precision: ${{ matrix.precision }}
- name: Archive build files from failed build
uses: actions/upload-artifact@v2.2.4
uses: actions/upload-artifact@v3
if: failure()
with:
name: build_files
path: |
${{ github.workspace }}/test/build_*
!${{ github.workspace }}/test/build_*/Testing/output
- name: Archive output files from failed build
uses: actions/upload-artifact@v2.2.4
uses: actions/upload-artifact@v3
if: failure()
with:
name: output_files
path: |
${{ github.workspace }}/test/build_*/Testing/output
${{ github.workspace }}/test/build_*/Testing/
5 changes: 5 additions & 0 deletions .github/workflows/ubuntu-clang-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: Ubuntu (clang) short test

on:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/windows-latest-mingw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: Windows (mingw) short test

on:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/windows-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: Windows short test

on:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,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
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
15 changes: 15 additions & 0 deletions doc/arkode/guide/source/Introduction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,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
Loading