Skip to content

Feature/ssptables#925

Open
drreynolds wants to merge 20 commits intodevelopfrom
feature/ssptables
Open

Feature/ssptables#925
drreynolds wants to merge 20 commits intodevelopfrom
feature/ssptables

Conversation

@drreynolds
Copy link
Copy Markdown
Collaborator

This PR adds new Butcher tables to ARKODE. The focus is on explicit, diagonally implicit, and additive RK tables that satisfy strong stability preservation properties.

Comment thread doc/arkode/guide/source/Butcher.rst Outdated
Comment thread doc/arkode/guide/source/Butcher.rst Outdated
Comment thread doc/arkode/guide/source/Butcher.rst Outdated
Comment thread doc/arkode/guide/source/Butcher.rst Outdated
S(\theta,\rho) = \left\{ \eta^I = -a+i b \; :\; a>0,\; b\ge 0,\; |\eta^I|\le \rho,\; \operatorname{atan}\left(\frac{b}{a}\right) \le \theta \right\}.

For each ARK method, we overlay plots of the border of :math:`\mathcal{J}_{\theta,\rho}`
for values :math:`\theta \in \left\{0^o, 20^0, 40^0, 60^0, 80^0\right\}` and
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the most useful angle to include would be 90

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are all the lines on top of each other? I'm a bit suspicious about the region not changing with theta. Aside from IMEX Euler, I've never seen this happen.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The thicker lines are much easier to see. If it's not too much of hassle, this would be nice for the other plots


ARK_BUTCHER_TABLE(ARKODE_ASCHER_SDIRK_3_1_2, { /* https://doi.org/10.1016/S0168-9274(97)00056-1 (custom embedding) */
ARKodeButcherTable B = ARKodeButcherTable_Alloc(3, SUNTRUE);
const sunrealtype gamma = SUN_RCONST(1.0) - SUN_RCONST(1.0) / SUNRsqrt(SUN_RCONST(2.0));
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const sunrealtype gamma = SUN_RCONST(1.0) - SUN_RCONST(1.0) / SUNRsqrt(SUN_RCONST(2.0));
const sunrealtype gamma = SUN_RCONST(0.29289321881345247559915563789515096071516);

I recommend avoiding compound floating point operations for coefficients. You can lose the last couple binary digits. I've encountered a few cases in single precision where this was significant. There are a few other cases in this and the erk file.

``ARKODE_SSP_LSPUM_ERK_3_1_2`` + ``ARKODE_SSP_LSPUM_SDIRK_3_1_2``,
and ``ARKODE_ASCHER_ERK_3_1_2`` + ``ARKODE_ASCHER_SDIRK_3_1_2``.

Added the ``ARKODE_IMEX_MRI_GARK_ARS222`` and ``ARKODE_IMEX_MRI_GARK_GIRALDO``
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't see these in the docs

Comment thread tools/log_example.py Outdated
@gardner48 gardner48 modified the milestone: SUNDIALS v7.8.0 May 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants