Skip to content

Multirate: add MRI-GARK-ERK33a (3rd-order) + unify MRI-GARK formulation#3747

Open
singhharsh1708 wants to merge 1 commit into
SciML:masterfrom
singhharsh1708:multirate-mis-higher-order
Open

Multirate: add MRI-GARK-ERK33a (3rd-order) + unify MRI-GARK formulation#3747
singhharsh1708 wants to merge 1 commit into
SciML:masterfrom
singhharsh1708:multirate-mis-higher-order

Conversation

@singhharsh1708

Copy link
Copy Markdown
Contributor

Adds MRIGARKERK33a, the 3rd-order explicit MRI-GARK method of Sandu 2019 (SINUM 57:2300–2327), and unifies the MRI-GARK family onto one general formulation. Follow-up to the order-2 MRI-GARK methods.

Formulation

Each stage integrates the fast IVP v' = Δcᵢ·dt·f1(v) + dt·Σⱼ ωᵢⱼ(τ)·f2(z_{j-1}) over its sub-interval, with τ-dependent coupling ωᵢⱼ(τ) = W0[i,j] + W1[i,j]·τ and an explicit-RK inner solver of order q (RK2 for ERK22a/b, RK3 for ERK33a). An embedded lower-order solution gives the adaptive error estimate. Coefficients transcribed from SUNDIALS ARKODE.

Unification

The previous ERK22a/b used a simplified constant-coupling form; all three methods now share one MRIGARKTableau, cache, and perform_step! (IIP + OOP). The ERK22a/b re-expression is behavior-preserving — existing ERK22 tests pass unchanged.

Tests

Convergence verified — ERK22a/b order 2, ERK33a order 3 (both IIP and OOP); full multirate suite green (MRI-GARK 21 tests). Per-step allocations ~16 bytes. Version 2.3.0 → 2.4.0.

Notes for review

  • The inner loop branches on q (2 vs 3) to select the RK2/RK3 inner integrator — happy to type-dispatch it if you'd prefer.
  • This re-expresses the merged ERK22 in the general form (behavior-preserving); flagging since the diff touches those methods.

Adds the 3rd-order explicit MRI-GARK method of Sandu 2019 (coefficients from
SUNDIALS). Unifies all MRI-GARK methods onto one general formulation:
per-stage sub-interval (Δc) integration with τ-dependent coupling ω=W0+W1·τ
and an explicit RK inner solver (RK2 for ERK22a/b, RK3 for ERK33a), with an
embedded lower-order error estimate. Convergence verified: ERK22a/b order 2,
ERK33a order 3 (IIP + OOP). Bump 2.3.0 -> 2.4.0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant