Class TLEPropagator

All Implemented Interfaces:
Propagator, PVCoordinatesProvider
Direct Known Subclasses:
DeepSDP4, SGP4

public abstract class TLEPropagator extends AbstractAnalyticalPropagator
This class provides elements to propagate TLE's.

The models used are SGP4 and SDP4, initially proposed by NORAD as the unique convenient propagator for TLE's. Inputs and outputs of this propagator are only suited for NORAD two lines elements sets, since it uses estimations and mean values appropriate for TLE's only.

Deep- or near- space propagator is selected internally according to NORAD recommendations so that the user has not to worry about the used computation methods. One instance is created for each TLE (this instance can only be get using selectExtrapolator(TLE) method, and can compute position and velocity coordinates at any time. Maximum accuracy is guaranteed in a 24h range period before and after the provided TLE epoch (of course this accuracy is not really measurable nor predictable: according to CelesTrak, the precision is close to one kilometer and error won't probably rise above 2 km).

This implementation is largely inspired from the paper and source code Revisiting Spacetrack Report #3 and is fully compliant with its results and tests cases.

Author:
Felix R. Hoots, Ronald L. Roehrich, December 1980 (original fortran), David A. Vallado, Paul Crawford, Richard Hujsak, T.S. Kelso (C++ translation and improvements), Fabien Maussion (java translation)
See Also:
  • Field Details

    • tle

      protected TLE tle
      Initial state.
    • utc

      protected final TimeScale utc
      UTC time scale.
    • xnode

      protected double xnode
      final RAAN.
    • a

      protected double a
      final semi major axis.
    • e

      protected double e
      final eccentricity.
    • i

      protected double i
      final inclination.
    • omega

      protected double omega
      final perigee argument.
    • xl

      protected double xl
      L from SPTRCK #3.
    • a0dp

      protected double a0dp
      original recovered semi major axis.
    • xn0dp

      protected double xn0dp
      original recovered mean motion.
    • cosi0

      protected double cosi0
      cosinus original inclination.
    • theta2

      protected double theta2
      cos io squared.
    • sini0

      protected double sini0
      sinus original inclination.
    • xmdot

      protected double xmdot
      common parameter for mean anomaly (M) computation.
    • omgdot

      protected double omgdot
      common parameter for perigee argument (omega) computation.
    • xnodot

      protected double xnodot
      common parameter for raan (OMEGA) computation.
    • e0sq

      protected double e0sq
      original eccentricity squared.
    • beta02

      protected double beta02
      1 - e2.
    • beta0

      protected double beta0
      sqrt (1 - e2).
    • perige

      protected double perige
      perigee, expressed in KM and ALTITUDE.
    • etasq

      protected double etasq
      eta squared.
    • eeta

      protected double eeta
      original eccentricity * eta.
    • s4

      protected double s4
      s* new value for the contant s.
    • tsi

      protected double tsi
      tsi from SPTRCK #3.
    • eta

      protected double eta
      eta from SPTRCK #3.
    • coef

      protected double coef
      coef for SGP C3 computation.
    • coef1

      protected double coef1
      coef for SGP C5 computation.
    • c1

      protected double c1
      C1 from SPTRCK #3.
    • c2

      protected double c2
      C2 from SPTRCK #3.
    • c4

      protected double c4
      C4 from SPTRCK #3.
    • xnodcf

      protected double xnodcf
      common parameter for raan (OMEGA) computation.
    • t2cof

      protected double t2cof
      3/2 * C1.
  • Constructor Details

    • TLEPropagator

      @DefaultDataContext protected TLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass)
      Protected constructor for derived classes.

      This constructor uses the default data context.

      Parameters:
      initialTLE - the unique TLE to propagate
      attitudeProvider - provider for attitude computation
      mass - spacecraft mass (kg)
      See Also:
    • TLEPropagator

      protected TLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass, Frame teme)
      Protected constructor for derived classes.
      Parameters:
      initialTLE - the unique TLE to propagate
      attitudeProvider - provider for attitude computation
      mass - spacecraft mass (kg)
      teme - the TEME frame to use for propagation.
      Since:
      10.1
  • Method Details

    • selectExtrapolator

      @DefaultDataContext public static TLEPropagator selectExtrapolator(TLE tle)
      Selects the extrapolator to use with the selected TLE.

      This method uses the default data context.

      Parameters:
      tle - the TLE to propagate.
      Returns:
      the correct propagator.
      See Also:
    • selectExtrapolator

      public static TLEPropagator selectExtrapolator(TLE tle, Frame teme)
      Selects the extrapolator to use with the selected TLE.
      Parameters:
      tle - the TLE to propagate.
      teme - TEME frame.
      Returns:
      the correct propagator.
      Since:
      10.1
      See Also:
    • selectExtrapolator

      public static TLEPropagator selectExtrapolator(TLE tle, Frame teme, AttitudeProvider attitudeProvider)
      Selects the extrapolator to use with the selected TLE.
      Parameters:
      tle - the TLE to propagate.
      teme - TEME frame.
      attitudeProvider - provider for attitude computation
      Returns:
      the correct propagator.
      Since:
      12.2
    • selectExtrapolator

      @DefaultDataContext public static TLEPropagator selectExtrapolator(TLE tle, AttitudeProvider attitudeProvider, double mass)
      Selects the extrapolator to use with the selected TLE.

      This method uses the default data context.

      Parameters:
      tle - the TLE to propagate.
      attitudeProvider - provider for attitude computation
      mass - spacecraft mass (kg)
      Returns:
      the correct propagator.
      See Also:
    • selectExtrapolator

      public static TLEPropagator selectExtrapolator(TLE tle, AttitudeProvider attitudeProvider, double mass, Frame teme)
      Selects the extrapolator to use with the selected TLE.
      Parameters:
      tle - the TLE to propagate.
      attitudeProvider - provider for attitude computation
      mass - spacecraft mass (kg)
      teme - the TEME frame to use for propagation.
      Returns:
      the correct propagator.
      Since:
      10.1
    • getMU

      public static double getMU()
      Get the Earth gravity coefficient used for TLE propagation.
      Returns:
      the Earth gravity coefficient.
    • getPVCoordinates

      public PVCoordinates getPVCoordinates(AbsoluteDate date)
      Get the extrapolated position and velocity from an initial TLE.
      Parameters:
      date - the final date
      Returns:
      the final PVCoordinates
    • sxpInitialize

      protected abstract void sxpInitialize()
      Initialization proper to each propagator (SGP or SDP).
    • sxpPropagate

      protected abstract void sxpPropagate(double t)
      Propagation proper to each propagator (SGP or SDP).
      Parameters:
      t - the offset from initial epoch (min)
    • resetInitialState

      public void resetInitialState(SpacecraftState state)
      Reset the propagator initial state.

      For TLE propagator, calling this method is only recommended for covariance propagation when the new state differs from the previous one by only adding the additional state containing the derivatives.

      Specified by:
      resetInitialState in interface Propagator
      Overrides:
      resetInitialState in class AbstractPropagator
      Parameters:
      state - new initial state to consider
    • resetIntermediateState

      protected void resetIntermediateState(SpacecraftState state, boolean forward)
      Reset an intermediate state.
      Specified by:
      resetIntermediateState in class AbstractAnalyticalPropagator
      Parameters:
      state - new intermediate state to consider
      forward - if true, the intermediate state is valid for propagations after itself
    • getMass

      protected double getMass(AbsoluteDate date)
      Get the mass.
      Specified by:
      getMass in class AbstractAnalyticalPropagator
      Parameters:
      date - target date for the orbit
      Returns:
      mass mass
    • propagateOrbit

      public Orbit propagateOrbit(AbsoluteDate date)
      Extrapolate an orbit up to a specific target date.
      Specified by:
      propagateOrbit in class AbstractAnalyticalPropagator
      Parameters:
      date - target date for the orbit
      Returns:
      extrapolated parameters
    • getTLE

      public TLE getTLE()
      Get the underlying TLE. If there has been calls to #resetInitialState or #resetIntermediateState, it will not be the same as given to the constructor.
      Returns:
      underlying TLE
    • getFrame

      public Frame getFrame()
      Get the frame in which the orbit is propagated.

      The propagation frame is the definition frame of the initial state, so this method should be called after this state has been set, otherwise it may return null.

      Specified by:
      getFrame in interface Propagator
      Overrides:
      getFrame in class AbstractPropagator
      Returns:
      frame in which the orbit is propagated
      See Also:
    • createHarvester

      protected AbstractMatricesHarvester createHarvester(String stmName, RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns)
      Create the harvester suitable for propagator.
      Overrides:
      createHarvester in class AbstractPropagator
      Parameters:
      stmName - State Transition Matrix state name
      initialStm - initial State Transition Matrix ∂Y/∂Y₀, if null (which is the most frequent case), assumed to be 6x6 identity
      initialJacobianColumns - initial columns of the Jacobians matrix with respect to parameters, if null or if some selected parameters are missing from the dictionary, the corresponding initial column is assumed to be 0
      Returns:
      harvester to retrieve computed matrices during and after propagation
    • getJacobiansColumnsNames

      protected List<String> getJacobiansColumnsNames()
      Get the names of the parameters in the matrix returned by MatricesHarvester.getParametersJacobian(org.orekit.propagation.SpacecraftState).
      Overrides:
      getJacobiansColumnsNames in class AbstractAnalyticalPropagator
      Returns:
      names of the parameters (i.e. columns) of the Jacobian matrix
    • getDefaultTleGenerationAlgorithm

      public static TleGenerationAlgorithm getDefaultTleGenerationAlgorithm(TimeScale utc, Frame teme)
      Get the default TLE generation algorithm.
      Parameters:
      utc - UTC time scale
      teme - TEME frame
      Returns:
      a TLE generation algorithm
      Since:
      12.0