Propagation

Propagation algorithms

poliastro.twobody.propagation.cowell(k, r, v, tofs, rtol=1e-11, *, ad=None, **ad_kwargs)

Propagates orbit using Cowell’s formulation.

Parameters:
  • k (Quantity) – Standard gravitational parameter of the attractor.
  • r (Quantity) – Position vector.
  • v (Quantity) – Velocity vector.
  • tofs (Quantity) – Array of times to propagate.
  • rtol (float, optional) – Maximum relative error permitted, default to 1e-10.
  • ad (function(t0, u, k), optional) – Non Keplerian acceleration (km/s2), default to None.
Returns:

  • rr (~astropy.units.Quantity) – Propagated position vectors.
  • vv (~astropy.units.Quantity) – Propagated velocity vectors.

Raises:

RuntimeError – If the algorithm didn’t converge.

Note

This method uses a Dormand & Prince method of order 8(5,3) available in the poliastro.integrators module. If multiple tofs are provided, the method propagates to the maximum value and calculates the other values via dense output

poliastro.twobody.propagation.mean_motion(k, r, v, tofs, **kwargs)

Propagates orbit using Cowell’s formulation.

Parameters:
  • k (Quantity) – Standard gravitational parameter of the attractor.
  • r (Quantity) – Position vector.
  • v (Quantity) – Velocity vector.
  • tofs (Quantity) – Array of times to propagate.
Returns:

  • rr (~astropy.units.Quantity) – Propagated position vectors.
  • vv (~astropy.units.Quantity) – Propagated velocity vectors.

poliastro.twobody.propagation.kepler(k, r, v, tofs, numiter=350, **kwargs)

Propagates Keplerian orbit.

Parameters:
  • k (Quantity) – Standard gravitational parameter of the attractor.
  • r (Quantity) – Position vector.
  • v (Quantity) – Velocity vector.
  • tofs (Quantity) – Array of times to propagate.
  • numiter (int, optional) – Maximum number of iterations, default to 35.
Returns:

  • rr (~astropy.units.Quantity) – Propagated position vectors.
  • vv (~astropy.units.Quantity) – Propagated velocity vectors.

Raises:

RuntimeError – If the algorithm didn’t converge.

Note

This algorithm is based on Vallado implementation, and does basic Newton iteration on the Kepler equation written using universal variables. Battin claims his algorithm uses the same amount of memory but is between 40 % and 85 % faster.

poliastro.twobody.propagation.propagate(orbit, time_of_flight, *, method=<function mean_motion>, rtol=1e-10, **kwargs)

Propagate an orbit some time and return the result.

Parameters:
  • orbit (Orbit) – Orbit object to propagate.
  • time_of_flight (TimeDelta) – Time of propagation.
  • method (callable, optional) – Propagation method, default to mean_motion.
  • rtol (float, optional) – Relative tolerance, default to 1e-10.