DIRK tableau registry

DIRK_TABLEAU_REGISTRY exposes diagonally implicit Runge–Kutta schemes as DIRKTableau instances. Aliases in the registry integrate with get_algorithm_step() so callers can select stiffly accurate SDIRK and ESDIRK families without repeating coefficients.

cubie.integrators.algorithms.DIRK_TABLEAU_REGISTRY Dict[str, DIRKTableau]

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object’s

(key, value) pairs

dict(iterable) -> new dictionary initialized as if via:

d = {} for k, v in iterable:

d[k] = v

dict(**kwargs) -> new dictionary initialized with the name=value pairs

in the keyword argument list. For example: dict(one=1, two=2)

The DIRKStep factory defaults to "l_stable_dirk_3"—a three-stage, third-order L-stable, stiffly accurate DIRK scheme with no embedded error estimate, so the default runs fixed-step.

Available aliases

Named diagonally implicit Runge–Kutta tableaus

Key

Description

Reference

"implicit_midpoint"

Single-stage implicit midpoint rule with symplectic structure.

[SanzSerna1988]

"trapezoidal_dirk"

Two-stage trapezoidal (Crank–Nicolson) ESDIRK scheme.

[CrankNicolson1947]

"sdirk_2_2"

Alexander’s L-stable SDIRK pair with embedded error weights.

[Alexander1977]

"l_stable_dirk_3"

Three-stage, third-order L-stable SDIRK scheme with stiff accuracy.

[MOOSELStableDirk3]

"l_stable_sdirk_4"

Hairer–Wanner five-stage, fourth-order L-stable SDIRK tableau.

[HairerWanner1996]

"eldirk32_euler"

RK(3)2-Eul: implicit Euler advanced by b, two explicit stages supplying a third-order estimate.

[Mahnken2023]

"eldirk32_trapezoidal"

RK(3)2-Trap: trapezoidal rule with one explicit stage supplying a third-order estimate.

[Mahnken2023]

"eldirk32_ellsiepen"

RK(3)2-Ell: Ellsiepen’s SDIRK (sdirk_2_2) with one explicit stage supplying a third-order estimate.

[Mahnken2023]

Tableau container

class cubie.integrators.algorithms.generic_dirk_tableaus.DIRKTableau(a: Tuple[Tuple[float, ...], ...], b: Tuple[float, ...], c: Tuple[float, ...], order: int, b_hat: Tuple[float, ...] | None = None, embedded_order: int | None = None, dense_prediction_ratio_float16: float = 0.0, dense_prediction_ratio_float32: float = 0.0, dense_prediction_ratio_float64: float = 0.0, defaults: Dict[str, Any] = NOTHING)[source]

Bases: ButcherTableau

Coefficient tableau describing a diagonally implicit RK scheme.

The tableau stores the Runge–Kutta coefficients required by diagonally implicit methods, including singly diagonally implicit (SDIRK) and explicit-first-stage diagonally implicit (ESDIRK) variants.

diagonal(precision)

Return the diagonal elements of the \(A\) matrix as a precision-typed tuple.

prediction_source_stages()

Return the history row each stage’s starting guess reads.

References

Hairer, E., & Wanner, G. (1996). Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems (2nd ed.). Springer.

_validate_stage_kinds() None[source]

Reject an implicit stage after an explicit stage past the first.

property explicit_last_stage: bool

Return whether explicit stages follow the last Newton stage.

property implicit_stages: Tuple[int, ...]

Return the indices of the Newton-solved stages.

property last_implicit_stage: int

Return the index of the last Newton-solved stage.

property prediction_source_stages: ndarray

Return the history row each stage’s starting guess reads.

A stage that repeats an earlier stage’s time starts its solve from that stage’s converged increment; every other stage starts from its own predicted increment. The array is int32 for direct use in device code.

property supports_smoothed_error: bool

Return whether the last diagonal supplies a smoothing operator.

References

[SanzSerna1988]

J. M. Sanz-Serna. “Runge–Kutta schemes for Hamiltonian systems.” BIT Numerical Mathematics 28(4), 1988.

[CrankNicolson1947]

J. Crank and P. Nicolson. “A practical method for numerical solution of partial differential equations of the heat-conduction type.” Math. Proc. Camb. Phil. Soc. 43(1), 1947.

[Alexander1977]

R. Alexander. “Diagonally implicit Runge–Kutta methods for stiff ODEs.” SIAM J. Numer. Anal. 14(6), 1977.

[MOOSELStableDirk3]

Idaho National Laboratory. “LStableDirk3 time integrator.” MOOSE Framework Documentation. https://mooseframework.inl.gov/source/ timeintegrators/LStableDirk3.html.

[HairerWanner1996]

E. Hairer and G. Wanner. Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems (2nd ed.). Springer, 1996.

[Mahnken2023] (1,2,3)

R. Mahnken. “Derivation of third order Runge–Kutta methods (ELDIRK) by embedding of lower order implicit time integration schemes for local and global error estimation.” Computational Mechanics 72, 1239–1261, 2023. https://doi.org/10.1007/s00466-023-02347-2.