RKPropagator

class ssapy.propagator.RKPropagator[source][source]

Bases: Propagator, ABC

Abstract base class for Runge-Kutta-based orbit propagators.

The RKPropagator class provides a framework for implementing orbit propagation using Runge-Kutta methods. Subclasses must override specific methods to define the propagation logic and interpolation behavior.

Attributes:
_minPoints (int): Minimum number of points required for interpolation.

This should be overridden by subclasses.

Methods:
_prop():

Abstract method that subclasses must implement to define the propagation logic.

_getRVOne(orbit, tQuery):

Retrieves the position and velocity of an orbit at specified query times using interpolation.

Args:

orbit (Orbit): The orbit object containing initial conditions and propagation settings. tQuery (numpy.ndarray): An array of times at which the position and velocity are queried.

Returns:
tuple: A tuple containing:
  • r (numpy.ndarray): Position vectors at the query times.

  • v (numpy.ndarray): Velocity vectors at the query times.

Notes:
  • The _getRVOne method uses an interpolation cache to store computed states and times, minimizing redundant computations.

  • The Runge-Kutta propagation logic must be implemented in the _prop method by subclasses.

  • Spline interpolation is used for smooth querying of position and velocity data.

  • The container object caches the interpolant data, including times, states, and spline objects.

Example:

Subclass implementation:

```python
class RK4Propagator(RKPropagator):

_minPoints = 4

def _prop(self, times, states, h, t_target, propkw):

# Implement RK4 propagation logic here …

```
Raises:

NotImplementedError: If _prop is not overridden by a subclass.