Algorithms
cubie.integrators.algorithms
Factories in cubie.integrators.algorithms assemble explicit and implicit
step implementations that plug into the CUDA-based integrator loop. Explicit
steps wrap direct right-hand-side evaluations, while implicit steps couple
user-supplied device callbacks with matrix-free Newton–Krylov helpers to
satisfy nonlinear solves. Precision handling is central: every factory
propagates the configured precision through compiled device helpers and the
shared linear and nonlinear solver stack.
Base infrastructure
BaseStepConfig – attrs configuration shared by explicit and implicit steps.
BaseAlgorithmStep – base class that wires precision and CUDA compilation helpers.
StepCache – container storing compiled kernels and loop scratch buffers.
Explicit steps
ExplicitStepConfig – configuration for explicit step factories.
ExplicitEulerStep – Euler step that invokes the RHS device function.
ERKStep – multistage explicit Runge–Kutta step with adaptive control defaults.
ERK tableau registry – named explicit Runge–Kutta tableaus and references.
Implicit steps
ImplicitStepConfig – configuration for implicit step factories.
BackwardsEulerStep – backward Euler implicit algorithm.
BackwardsEulerPCStep – predictor-corrector backward Euler variant.
CrankNicolsonStep – Crank–Nicolson implicit algorithm.
DIRKStep – diagonally implicit Runge–Kutta family with embedded error estimates.
DIRK tableau registry – named diagonally implicit Runge–Kutta tableaus and references.
Factory helpers
get_algorithm_step – resolves step factories by enum or name.
Dependencies
Implicit steps depend on cubie.integrators.matrix_free_solvers for the
linear and Newton–Krylov factories and reuse cubie.CUDAFactory
utilities for JIT compilation and caching. All algorithms expect caller
supplied device callbacks for time derivatives, operator assembly, and
observable evaluation, operating on preallocated device buffers whose precision
matches the configured integration precision.