Propagators

Introduction

An orbit propagator (or propagator in short) takes in an initial condition (e.g. satellite position and velocity at a given time) and outputs where the satellite is going to be at a target time, usually with intermediate points depicting the trajectory while proceeding towards this target time.

The basic properties of the orbit propagators are:

  • Initial condition type: This could be cartesian position and velocity vector or orbital elements. Both of them are defined at a reference time.

  • Integration type: This could be analytical or numerical. Analytical propagators can compute the coordinates at a target time directly, without computing intermediate points. Numerical integrators must compute intermediate points numerically until target time is reached.

  • Force model: Each propagator has a force model that defines which forces (or accelerations) are taken into account during the propagation.

The accuracy of an orbit propagator is a function of both the force model and the analytical or numerical model. As a general rule, a numerical propagator is more accurate than an analytical one with a similar force model. Furthermore, among the numerical propagators, a higher order propagation scheme generally yields better accuracy than a lower order scheme. However, there are a lot of other parameters that determine the short and long term accuracy of a propagation scheme.

Propagators in SatMAD

A propagator in SatMAD accepts an initial orbital state (cartesian coordinates or orbital elements at a reference time) and outputs a Trajectory object through a gen_trajectory() method. This trajectory starts at the initial time and ends around the target time, with intermediate points at each stepsize (given by the common AbstractPropagator.stepsize() property). Note that, the trajectory may exceed the target time to ensure enough output points exist for a proper interpolation.

Currently, the following propagators are implemented in SatMAD:

Reference/API

Base module for analytical and numerical propagators.

class satmad.propagation.base_propagator.AbstractPropagator(stepsize=<Quantity 60. s>, name='Propagator', central_body=<satmad.core.celestial_body.CelestialBody object>)

Base class for the propagators.

Parameters
  • name (str) – Name of the propagator

  • stepsize (Quantity or TimeDelta) – output stepsize for the propagator

  • central_body (CelestialBody) – Centre Celestial Body for the propagator

abstract gen_trajectory(init_orbit, interval, **kwargs)

Generates the trajectory (time and coordinate information) for the given interval with the internal output stepsize.

Parameters
  • init_orbit – Initial coordinates or orbit

  • interval (TimeInterval) – Time interval for which the ephemeris will be generated

  • kwargs – Keywords specific to the implementation

Returns

The output trajectory

Return type

Trajectory

property stepsize

Output stepsize for the propagator.