poliastro2.core.actions.propagate¶
Description¶
This subpackage implements various orbit propagation algorithms. It contains different numerical methods for propagating orbits under various assumptions.
Modules¶
cowell: Implementation of the Cowell propagation method.
danby: Danby’s propagation method.
enums: Enumerations for propagation options.
farnocchia: Farnocchia propagation routine.
gooding: Gooding’s method for orbit propagation.
markley: Markley’s propagation technique.
mikkola: Mikkola’s method.
pimienta: Pimienta’s propagation routines.
recseries: Recursive series propagation.
vallado: Propagation method based on Vallad’s work.
_compat: Compatibility routines.
Propagators capabilities available at poliastro2:
Propagator |
Elliptical |
Parabolic |
Hyperbolic |
farnocchia |
✓ |
✓ |
✓ |
vallado |
✓ |
✓ |
✓ |
mikkola |
✓ |
✓ |
✓ |
markley |
✓ |
x |
x |
pimienta |
✓ |
✓ |
x |
gooding |
✓ |
x |
x |
danby |
✓ |
✓ |
✓ |
cowell |
✓ |
✓ |
✓ |
recseries |
✓ |
x |
x |
- class poliastro2.core.actions.propagate.CowellPropagator(rtol=1e-11, events=None, f=CPUDispatcher(<function func_twobody>))¶
Propagates orbit using Cowell’s formulation.
Notes
This method uses the Dormand & Prince integration method of order 8(5,3) (DOP853). If multiple tofs are provided, the method propagates to the maximum value (unless a terminal event is defined) and calculates the other values via dense output.
- kind = 7¶
- propagate(state, tof)¶
- propagate_many(state, tofs)¶
- class poliastro2.core.actions.propagate.DanbyPropagator¶
Kepler solver for both elliptic and parabolic orbits based on Danby’s algorithm.
Notes
This algorithm was developed by Danby in his paper The solution of Kepler Equation with DOI: https://doi.org/10.1007/BF01686811
- kind = 5¶
- propagate(state, tof)¶
- class poliastro2.core.actions.propagate.FarnocchiaPropagator¶
Propagates orbit using Farnocchia’s method.
Notes
This method takes initial \(\vec{r}, \vec{v}\), calculates classical orbit parameters, increases mean anomaly and performs inverse transformation to get final \(\vec{r}, \vec{v}\) The logic is based on formulae (4), (6) and (7) from http://dx.doi.org/10.1007/s10569-013-9476-9
- kind = 7¶
- propagate(state, tof)¶
- propagate_many(state, tofs)¶
- class poliastro2.core.actions.propagate.GoodingPropagator¶
Propagate the orbit using the Gooding method.
The Gooding method solves the Elliptic Kepler Equation with a cubic convergence, and accuracy better than 10e-12 rad is normally achieved. It is not valid for eccentricities equal or greater than 1.0.
Notes
This method was developed by Gooding and Odell in their paper The hyperbolic Kepler equation (and the elliptic equation revisited) with DOI: https://doi.org/10.1007/BF01235540
- kind = 1¶
- propagate(state, tof)¶
- class poliastro2.core.actions.propagate.MarkleyPropagator¶
Elliptical Kepler Equation solver based on a fifth-order refinement of the solution of a cubic equation.
Notes
This method was originally presented by Markley in his paper Kepler Equation Solver with DOI: https://doi.org/10.1007/BF00691917
- kind = 1¶
- propagate(state, tof)¶
- class poliastro2.core.actions.propagate.MikkolaPropagator¶
Solves Kepler Equation by a cubic approximation.
Notes
This method was derived by Seppo Mikola in his paper A Cubic Approximation For Kepler’s Equation with DOI: https://doi.org/10.1007/BF01235850
- kind = 5¶
- propagate(state, tof)¶
- class poliastro2.core.actions.propagate.PimientaPropagator¶
Kepler solver for elliptic orbits based on a 15th order polynomial with accuracies around 10e-5 for elliptic case and 10e-13 in the hyperbolic regime.
Notes
This algorithm was developed by Pimienta-Peñalver and John L. Crassidis in their paper Accurate Kepler Equation solver without trascendental function evaluations. Original paper is on Buffalo’s UBIR repository: http://hdl.handle.net/10477/50522
- kind = 1¶
- propagate(state, tof)¶
- class poliastro2.core.actions.propagate.RecseriesPropagator(method='rtol', order=8, numiter=100, rtol=1e-08)¶
Kepler solver for elliptical orbits with recursive series approximation method.
The order of the series is a user defined parameter.
Notes
This algorithm uses series discussed in the paper Recursive solution to Kepler’s problem for elliptical orbits - application in robust Newton-Raphson and co-planar closest approach estimation with DOI: http://dx.doi.org/10.13140/RG.2.2.18578.58563/1
- kind = 1¶
- propagate(state, tof)¶
- class poliastro2.core.actions.propagate.ValladoPropagator(numiter=350)¶
Propagates Keplerian orbit using Vallado’s method.
Notes
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.
- kind = 7¶
- propagate(state, tof)¶
- poliastro2.core.actions.propagate.propagate(*args, **kwargs)¶
Modules