astro.Perturbation#

class hohmannpy.astro.Perturbation#

Base class for implementing perturbations from Keplerian two-body orbital mechanics. These are designed to be used in conjunction with a non-Keplerian propagator such as CowellPropagator or EnckePropagator.

Child classes must implement evaluate(). This is called on each timestep of propagation by Propagator . propagate() to return thw perturbing acceleration for a given orbital state.

abstractmethod evaluate(time, state, satellite)#

Takes in the current time and planet-centered inertial state (the position and velocity) and returns the perturbing acceleration.

Parameters:
  • time (float) – Current time in seconds since propagation began.

  • state (np.ndarray) – Current translational state in planet-centered inertial coordinates given as (position, velocity).

  • satellite (Satellite) – The satellite object experiencing the perturbing acceleration. It is passed so that attributes of the satellite can be used in computing perturbing acceleration, such as the ballistic_coeff by AtmosphericDrag. However, the state of the satellite should never be accessed directly, only via the passed state parameter.

Returns:

acceleration (np.ndarray) – Acceleration due to this perturbation.