astro.EnckePropagator#

class hohmannpy.astro.EnckePropagator(step_size=60, rectification_tol=0.01, encke_tol=1e-08, encke_series_length=10, solver_tol=1e-08, stumpff_tol=1e-08, stumpff_series_length=10, fg_constraint=True)#

Non-Keplerian propagator which uses a modified set of equations of motion where the position is given by:

true positon = Keplerian position + perturbation from Keplerian position

The Keplerian position comes from what is known as the “reference” orbit and is propagated using the universal variable formulation of Kepler’s equation. The perturbation is the difference between the true position and Keplerian position and this is found via numerical integration using a 4th-order Runge-Kutta method. These are summed to get the true position, and all together this is known as Encke’s method.

Like other non-Keplerian methods, it can handle perturbing forces like NonSphericalEarth. However, in addition the accuracy of the propagation decreases over time as opposed to a Keplerian propagator which has a fixed accuracy. However, unlike CowellPropagator this is partially mitigated by only numerically integrating the deviation of the true orbit from the Keplerian reference orbit. The idea is that integration errors are smaller when they compound for a smaller value. If accuracy is still an issue, reduce step size.

Parameters:
  • step_size (float) – Time interval between propagation steps. If one is not provided by the user it will be set in propagate() to 60 \(s\).

  • rectification_tol (float) – When the deviation between the true and reference orbits grows large enough (represented by the ratio of their positions’ magnitudes being greater than this tolerance), reset the rectified orbit by setting it equal to the current true orbit.

  • encke_tol (float) – When the Encke parameter is close to zero (defined by this tolerance) the Encke function, which is used to compute the position, is undefined so must switch to an infinite series definition of it.

  • encke_series_length (int) – How many terms to include when using the infinite series definition of the Encke function.

  • solver_tol (float) – Error tolerance when performing root-finding to solver Kepler’s equation.

  • fg_constraint (bool) – Flag which indicates whether to compute the derivative of the g function (False) or to use a constraint to eliminate it (True).

  • stumpff_tol (float) – The universal variable is not an angular quantity, so it is used to compute a variable known as the Stumpff parameter whose root is an angle. The Stumpff parameter is used to compute two hypergeometric series, termed as Stumpff series, from which the f and g functions may be assembled. For most values of the Stumpff parameter these series converge absolutely to either trigonometric or hyper-trigonometric functions, but when it is small the Stumpff series must be computed via summation. “Small” is defined here as the absolute value of the Stumpff parameter being under stumpff_tol.

  • stumpff_series_length (int) – When the Stumpff series are computed via summation, how many terms to include.