High-Precision Orbit Propagator
- satkit.propagate(*args, **kwargs)
High-precision orbit propagator
Propagate orbits with high-precision force modeling via adaptive Runge-Kutta methods (default is order 9/8).
Args:
state (npt.ArrayLike[float], optional)6-element numpy array representing satellite GCRF position and velocity in meters and meters/second
begin (satkit.time, optional)satkit.time object representing instant at which satellite is at “pos” & “vel”
end (satkit.time, optional keyword)satkit.time object representing instant at which new position and velocity will be computed
duration (satkit.duration, optional keyword)duration from “begin” at which new position & velocity will be computed.
duration_secs (float, optional keyword)duration in seconds from “begin” for at which new position and velocity will be computed.
duration_days (float, optional keyword)duration in days from “begin” at which new position and velocity will be computed.
output_phi (bool, optional keyword)Output 6x6 state transition matrix between “begintime” and “endtime” (and at intervals, if specified)
propsettings (propsettings, optional keyword)“propsettings” object with input settings for the propagation. if left out, default will be used.
satproperties (satproperties_static, optional keyword)“sat_properties_static” object with drag and radiation pressure susceptibility of satellite.
Returns:
(propresult)Propagation result object holding state outputs, statistics, and dense output if requested
Notes:
Propagates satellite ephemeris (position, velocity in gcrs & time) to new time and output new position and velocity via Runge-Kutta integration.
Inputs and outputs are all in the Geocentric Celestial Reference Frame (GCRF)
Propagator uses advanced Runge-Kutta integrators and includes the following forces:
Earth gravity with higher-order zonal terms
Sun, Moon gravity
Radiation pressured
Atmospheric drag: NRL-MISE 2000 density model, with option to include space weather effects (which can be large)
End time must be set by keyword argument, either explicitly or by duration
Solid Earth tides are not (yet) included in the model
- class satkit.propresult
Results of a satellite propagation
This class lets the user access results of the satellite propagation
Notes:
If “enable_interp” is set to True in the propagation settings, the propresult object can be used to interpolate solutions at any time between the begin and end times of the propagation via the “interp” method
- time
Time at which state is valid
Returns:
satkit.timeTime at which state is valid
- time_end
Time at which state is valid
Notes:
This is identical to “time” property
Returns:
satkit.timeTime at which state is valid
- class satkit.propstats
Statistics of a satellite propagation
- num_accept
Number of accepted steps in adaptive RK integrator
- num_eval
Number of function evaluations
- num_reject
Number of rejected steps in adaptive RK integrator
- class satkit.propsettings(**kwargs)
This class contains settings used in the high-precision orbit propagator part of the “satkit” python toolbox
Notes:
Default settings:
abs_error: 1e-8
rel_error: 1e-8
gravity_order: 4
use_spaceweather: True
use_jplephem: True
enable_interp: True
enable_interp enables high-precision interpolation of state between begin and end times via the returned function,
it is enabled by default. There is a small increase in computational efficiency if set to false
- propsettings.precompute_terms(begin, end)
Precompute terms for fast interpolation of state between begin and end times
This can be used, for example, to compute sun and moon positions only once if propagating many satellites over the same time period
Args:
begin (satkit.time)Begin time of propagation
end (satkit.time)End time of propagation
step (satkit.duration, optional)Step size for interpolation. Default = 60 seconds