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, ESDIRK, and Lobatto 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 "sdirk_2_2"—Alexander’s second-order, L-stable SDIRK pair—providing embedded error estimates for adaptive controllers.

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]

"lobatto_iiic_3"

Three-stage Lobatto IIIC method with stiff accuracy.

[HairerLubichWanner2006]

"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]

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)[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)[source]

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

References

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

diagonal(precision: type) Tuple[float, ...][source]

Return the diagonal entries of the tableau.

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.

[HairerLubichWanner2006]

E. Hairer, C. Lubich, and G. Wanner. Geometric Numerical Integration (2nd ed.). Springer, 2006.

[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.