Integrators Base

The base module provides abstract interfaces for numerical time integration.

Base Classes

class hiten.algorithms.integrators.base._Integrator[source]

Bases: ABC

Define the minimal interface that every concrete integrator must satisfy.

Parameters:
  • name (str) – Human-readable identifier of the method.

  • **options – Extra keyword arguments left untouched and stored in options for later use by subclasses.

Notes

Subclasses must implement the abstract members order() and integrate().

Examples

Creating a dummy first-order explicit Euler scheme:

class Euler(_Integrator):
    @property
    def order(self):
        return 1

    def integrate(self, system, y0, t_vals, **kwds):
        y = [y0]
        for t0, t1 in zip(t_vals[:-1], t_vals[1:]):
            dt = t1 - t0
            y.append(y[-1] + dt * hiten.system.rhs(t0, y[-1]))
        return _Solution(np.asarray(t_vals), np.asarray(y))
abstract property order: int | None

Return the order of accuracy of the integrator.

Returns:

Order of the method, or None if not applicable.

Return type:

int or None

abstractmethod integrate(system, y0, t_vals, *, event_fn=None, event_cfg=None, **kwargs)[source]

Integrate the dynamical system from initial conditions.

Parameters:
  • system (_DynamicalSystemProtocol) – The dynamical system to integrate.

  • y0 (numpy.ndarray) – Initial state vector of shape (system.dim,). Units follow the provided system; for CR3BP components, values are typically nondimensional.

  • t_vals (numpy.ndarray) – Strictly monotonic array of time points of shape (N,) at which to evaluate the solution. Units follow the provided system; for CR3BP components, time is typically nondimensional.

  • event_fn (Callable[[float, numpy.ndarray], float], optional) – Event function evaluated as g(t, y). A zero crossing may be used by concrete integrators to stop or record events.

  • event_cfg (_EventConfig, optional) – Configuration controlling event directionality, terminal behavior, and tolerances for event handling.

  • **kwargs – Additional integration options passed to concrete implementations.

Returns:

Integration results containing times and states (and, when available, state derivatives). Time and state units follow the provided system.

Return type:

_Solution

Raises:

ValueError – If inputs are inconsistent (e.g., dimension mismatch or non-monotonic t_vals) or the system is incompatible.

validate_system(system)[source]

Check that system complies with _DynamicalSystemProtocol.

Parameters:

system (_DynamicalSystemProtocol) – Candidate system whose suitability is being tested.

Raises:

ValueError – If the required attribute rhs is absent.

Return type:

None

validate_inputs(system, y0, t_vals)[source]

Validate that the input arguments form a consistent integration task.

Parameters:
Raises:

ValueError – If any of the following conditions holds: - len(y0) differs from dim. - t_vals contains fewer than two points. - t_vals is not strictly monotonic.

Return type:

None