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:
    TLE
    • Field Detail

      • 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 Detail

      • 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 Detail

      • 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
      • 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
      • 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
      • 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
      • 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