Skip to content

Propagators

Orbit propagation methods for predicting future states.

Available Propagators

Propagator Description Use Case
Vallado Analytical Kepler propagator Two-body motion
SGP4 Simplified General Perturbations TLE-based propagation
GroundPropagator Ground station state Earth-fixed locations

Quick Example

import lox_space as lox

# Analytical (Kepler) propagation
t = lox.Time("TAI", 2024, 1, 1)
state = lox.State(t, (6678.0, 0.0, 0.0), (0.0, 7.73, 0.0))

propagator = lox.Vallado(state)

# Propagate to a single time
future = propagator.propagate(t + lox.TimeDelta.from_hours(1))

# Propagate to multiple times
times = [t + lox.TimeDelta(i * 60) for i in range(100)]
trajectory = propagator.propagate(times)

# SGP4 propagation from TLE
tle = """ISS (ZARYA)
1 25544U 98067A   24001.50000000  .00016717  00000-0  30472-3 0  9993
2 25544  51.6400  10.3600 0005000  50.0000 310.0000 15.50000000000010"""

sgp4 = lox.SGP4(tle)
state = sgp4.propagate(t)

Vallado

Semi-analytical Keplerian orbit propagator using Vallado's method.

Parameters:

  • initial_state

    Initial orbital state (must be in an inertial frame).

  • max_iter

    Maximum iterations for Kepler's equation solver.

Examples:

>>> state = lox.State(t, position=(6678.0, 0.0, 0.0), velocity=(0.0, 7.73, 0.0))
>>> prop = lox.Vallado(state)
>>> trajectory = prop.propagate([t1, t2, t3])

Methods:

  • propagate

    Propagate the orbit to one or more times.

propagate

propagate(time: Time) -> State
propagate(time: list[Time]) -> Trajectory
propagate(time: Time | list[Time]) -> State | Trajectory

Propagate the orbit to one or more times.


SGP4

SGP4 (Simplified General Perturbations 4) orbit propagator.

SGP4 is the standard propagator for objects tracked by NORAD/Space-Track. It uses Two-Line Element (TLE) data.

Parameters:

  • tle

    Two-Line Element set (2 or 3 lines).

Examples:

>>> tle = '''ISS (ZARYA)
... 1 25544U 98067A   24001.50000000  .00016717  00000-0  10270-3 0  9002
... 2 25544  51.6400 208.9163 0006703  40.7490  46.4328 15.49952307    11'''
>>> sgp4 = lox.SGP4(tle)
>>> trajectory = sgp4.propagate([t1, t2, t3])

Methods:

  • propagate

    Propagate the orbit to one or more times.

  • time

    Return the TLE epoch time.

propagate

propagate(time: Time, provider: EOPProvider | None = None) -> State
propagate(time: list[Time], provider: EOPProvider | None = None) -> Trajectory
propagate(
    time: Time | list[Time], provider: EOPProvider | None = None
) -> State | Trajectory

Propagate the orbit to one or more times.

time

time() -> Time

Return the TLE epoch time.


GroundPropagator

Propagator for ground station positions.

Parameters:

  • location

    The ground location to propagate.

Examples:

>>> gs = lox.GroundLocation(lox.Origin("Earth"), lon, lat, alt)
>>> prop = lox.GroundPropagator(gs)
>>> trajectory = prop.propagate([t1, t2, t3])

Methods:

  • propagate

    Propagate the ground station to one or more times.

propagate

propagate(time: Time) -> State
propagate(time: list[Time]) -> Trajectory
propagate(time: Time | list[Time]) -> State | Trajectory

Propagate the ground station to one or more times.