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
Key |
Description |
Reference |
|---|---|---|
|
Single-stage implicit midpoint rule with symplectic structure. |
|
|
Two-stage trapezoidal (Crank–Nicolson) ESDIRK scheme. |
|
|
Alexander’s L-stable SDIRK pair with embedded error weights. |
|
|
Three-stage, third-order L-stable SDIRK scheme with stiff accuracy. |
|
|
Hairer–Wanner five-stage, fourth-order L-stable SDIRK tableau. |
|
|
RK(3)2-Eul: implicit Euler advanced by |
|
|
RK(3)2-Trap: trapezoidal rule with one explicit stage supplying a third-order estimate. |
|
|
RK(3)2-Ell: Ellsiepen’s SDIRK ( |
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:
ButcherTableauCoefficient 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 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
int32for direct use in device code.
References
J. M. Sanz-Serna. “Runge–Kutta schemes for Hamiltonian systems.” BIT Numerical Mathematics 28(4), 1988.
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.
R. Alexander. “Diagonally implicit Runge–Kutta methods for stiff ODEs.” SIAM J. Numer. Anal. 14(6), 1977.
Idaho National Laboratory. “LStableDirk3 time integrator.” MOOSE Framework Documentation. https://mooseframework.inl.gov/source/ timeintegrators/LStableDirk3.html.
E. Hairer and G. Wanner. Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems (2nd ed.). Springer, 1996.
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.