ExplicitEulerStep

class cubie.integrators.ExplicitEulerStep(precision: type[float16] | type[float32] | type[float64] | dtype[float16] | dtype[float32] | dtype[float64], n: int, evaluate_f: Callable | None = None, evaluate_observables: Callable | None = None, evaluate_driver_at_t: Callable | None = None, get_solver_helper_fn: Callable | None = None, **kwargs)[source]

Bases: ODEExplicitStep

Forward Euler integration step for explicit ODE updates.

__init__(precision: type[float16] | type[float32] | type[float64] | dtype[float16] | dtype[float32] | dtype[float64], n: int, evaluate_f: Callable | None = None, evaluate_observables: Callable | None = None, evaluate_driver_at_t: Callable | None = None, get_solver_helper_fn: Callable | None = None, **kwargs) None[source]

Initialise the explicit Euler step configuration.

Parameters:
  • precision – Precision applied to device buffers.

  • n – Number of state entries advanced per step.

  • evaluate_f – Device function for evaluating f(t, y) right-hand side.

  • evaluate_observables – Device function computing system observables.

  • evaluate_driver_at_t – Optional device function evaluating drivers at arbitrary times.

  • get_solver_helper_fn – Present for interface parity with implicit steps and ignored here.

  • **kwargs – Optional parameters passed to config classes. See ExplicitStepConfig for available parameters. None values are ignored.

build_step(evaluate_f: Callable, evaluate_observables: Callable, evaluate_driver_at_t: Callable | None, numba_precision: type, n: int, n_drivers: int) StepCache[source]

Build the device function for an explicit Euler step.

Parameters:
  • evaluate_f – Device function for evaluating f(t, y).

  • evaluate_observables – Device function for computing observables.

  • evaluate_driver_at_t – Optional device function for evaluating drivers at time t.

  • numba_precision – Numba type for device buffers.

  • n – State vector dimension.

  • n_drivers – Number of driver signals.

Returns:

Compiled step function.

Return type:

StepCache

property is_adaptive: bool

Return False because explicit Euler has no error estimator.

property is_multistage: bool

Return False because explicit Euler is a single-stage method.

property order: int

Return the classical order of the explicit Euler method.

property threads_per_step: int

Return the number of threads used per step.