Butcher Tableaus

Every tableau is an IMEXButcherTableau{T} holding an explicit part $(\tilde A, \tilde b, \tilde c)$ = (a_t, b_t, c_t) and an implicit part $(A, b, c)$ = (a, b, c). The constructor checks that all components have consistent sizes, that a_t is strictly lower triangular, and that a is lower triangular. Stage times are taken from c_t.

RKButcherTableau(a, b, c) wraps a classical explicit tableau into this form with a = 0, b = 0.

Available tableaus

ConstructorStagesExplicit part SSPNotes
RK1_Euler_Tableau(T)1yesForward Euler, order 1
RK2_SSP_Tableau(T)2yesHeun / SSP-RK2, order 2
RK2_Ralston_Tableau(T)2noOrder 2, minimal truncation error
RK3_SSP_Tableau(T)3yesShu–Osher SSP-RK3, order 3
RK4_Classical_Tableau(T)4noClassical RK4, order 4
IMEX_Euler_Tableau(T)2yesForward/backward Euler, order 1
IMEX_ARS222_Tableau(T[, γ])2noAscher–Ruuth–Spiteri (2,2,2)
IMEX_ARS233_Tableau(T[, γ])3noAscher–Ruuth–Spiteri (2,3,3)
IMEX_SSP2332_Tableau(T)3yesPareschi–Russo SSP2(3,3,2), L-stable implicit part
IMEX_PRSSP3_Tableau(T)3yesPareschi–Russo type, SSP-RK3 explicit part

Choosing a tableau with MOOD

The stepper checks MOOD admissibility after every stage and treats each stage as a forward-Euler substep. For SSP tableaus this is backed by theory: every stage is a convex combination of Euler steps, so admissible substeps give an admissible step (under the scheme's own CFL condition). For the non-SSP tableaus (Ralston, RK4, the ARS pairs) the stepper still runs, and the per-stage checks still catch oscillations in practice, but there is no such guarantee.

Recommended choices:

  • Explicit, with discontinuities: RK3_SSP_Tableau (or RK2_SSP_Tableau for second-order spatial schemes).
  • Explicit, smooth problems, convergence studies at order 4+: RK4_Classical_Tableau, typically without MOOD.
  • Stiff relaxation sources: IMEX_SSP2332_Tableau or IMEX_PRSSP3_Tableau.

Defining your own

# Explicit
bt = RKButcherTableau(A::Matrix{T}, b::Vector{T}, c::Vector{T})

# IMEX
bt = IMEXButcherTableau(a, a_t, c, c_t, b, b_t)

Only diagonally implicit tableaus are supported: the stepper solves one local implicit relation per stage via implicit_solve.

Reference

HyperCloudCore.IMEXButcherTableau — Type
IMEXButcherTableau{T}
IMEXButcherTableau(a, a_t, c, c_t, b, b_t)

The single tableau type used by GeneralRKTimeStepper. An explicit Runge-Kutta scheme is the special case a == 0, b == 0 (see RKButcherTableau).

Fields

  • a, c, b : implicit weights (lower triangular), nodes and final weights.
  • a_t, c_t, b_t: explicit weights (strictly lower triangular), nodes and final weights.

MOOD note

The time stepper applies MOOD per stage, treating every stage as a forward-Euler substep. That is rigorous for SSP tableaus (every stage is a convex combination of Euler steps): RK1_Euler, RK2_SSP, RK3_SSP, IMEX_PRSSP3, IMEX_SSP2332. The non-SSP tableaus (RK2_Ralston, RK4_Classical, IMEX_ARS222, IMEX_ARS233) still run, but the per-stage DMP has no theoretical backing there.

source
HyperCloudCore.static_tableau — Method
static_tableau(bt::IMEXButcherTableau, ::Val{S}) -> IMEXButcherTableau

bt with SMatrix / SVector components, S = num_stages(bt): a bits object with a concrete type that kernel bodies can take as an argument. GeneralRKTimeStepper stores its tableau in this form.

source