Source code for yonderdrake.time.formulations

"""Public choices for fractional time formulation."""

from __future__ import annotations

from dataclasses import dataclass


[docs] @dataclass(frozen=True, slots=True) class Recurrence: """Eliminated constant-memory recurrence formulation.""" interpolant: str = "linear" def __post_init__(self) -> None: if self.interpolant != "linear": raise ValueError("only interpolant='linear' is supported")
[docs] @dataclass(frozen=True, slots=True) class AuxiliaryODE: """Monolithic physical-plus-mode auxiliary-ODE formulation.""" scheme: str = "backward_euler" coupling: str = "monolithic" def __post_init__(self) -> None: if self.scheme not in {"backward_euler", "trapezoidal"}: raise ValueError( "scheme must be 'backward_euler' or 'trapezoidal'" ) if self.coupling != "monolithic": raise ValueError("only coupling='monolithic' is supported")