Class TLEPropagator
- All Implemented Interfaces:
Propagator,PVCoordinatesProvider
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 Summary
FieldsModifier and TypeFieldDescriptionprotected doublefinal semi major axis.protected doubleoriginal recovered semi major axis.protected doublesqrt (1 - e2).protected double1 - e2.protected doubleC1 from SPTRCK #3.protected doubleC2 from SPTRCK #3.protected doubleC4 from SPTRCK #3.protected doublecoef for SGP C3 computation.protected doublecoef for SGP C5 computation.protected doublecosinus original inclination.protected doublefinal eccentricity.protected doubleoriginal eccentricity squared.protected doubleoriginal eccentricity * eta.protected doubleeta from SPTRCK #3.protected doubleeta squared.protected doublefinal inclination.protected doublefinal perigee argument.protected doublecommon parameter for perigee argument (omega) computation.protected doubleperigee, expressed in KM and ALTITUDE.protected doubles* new value for the contant s.protected doublesinus original inclination.protected double3/2 * C1.protected doublecos io squared.protected TLEInitial state.protected doubletsi from SPTRCK #3.protected final TimeScaleUTC time scale.protected doubleL from SPTRCK #3.protected doublecommon parameter for mean anomaly (M) computation.protected doubleoriginal recovered mean motion.protected doublecommon parameter for raan (OMEGA) computation.protected doublefinal RAAN.protected doublecommon parameter for raan (OMEGA) computation.Fields inherited from interface org.orekit.propagation.Propagator
DEFAULT_MASS -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedTLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass) Protected constructor for derived classes.protectedTLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass, Frame teme) Protected constructor for derived classes. -
Method Summary
Modifier and TypeMethodDescriptionprotected AbstractMatricesHarvestercreateHarvester(String stmName, RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns) Create the harvester suitable for propagator.static TleGenerationAlgorithmgetDefaultTleGenerationAlgorithm(TimeScale utc, Frame teme) Get the default TLE generation algorithm.getFrame()Get the frame in which the orbit is propagated.Get the names of the parameters in the matrix returned byMatricesHarvester.getParametersJacobian(org.orekit.propagation.SpacecraftState).protected doublegetMass(AbsoluteDate date) Get the mass.static doublegetMU()Get the Earth gravity coefficient used for TLE propagation.getPVCoordinates(AbsoluteDate date) Get the extrapolated position and velocity from an initial TLE.getTLE()Get the underlying TLE.propagateOrbit(AbsoluteDate date) Extrapolate an orbit up to a specific target date.voidresetInitialState(SpacecraftState state) Reset the propagator initial state.protected voidresetIntermediateState(SpacecraftState state, boolean forward) Reset an intermediate state.static TLEPropagatorselectExtrapolator(TLE tle) Selects the extrapolator to use with the selected TLE.static TLEPropagatorselectExtrapolator(TLE tle, AttitudeProvider attitudeProvider, double mass) Selects the extrapolator to use with the selected TLE.static TLEPropagatorselectExtrapolator(TLE tle, AttitudeProvider attitudeProvider, double mass, Frame teme) Selects the extrapolator to use with the selected TLE.static TLEPropagatorselectExtrapolator(TLE tle, Frame teme) Selects the extrapolator to use with the selected TLE.static TLEPropagatorselectExtrapolator(TLE tle, Frame teme, AttitudeProvider attitudeProvider) Selects the extrapolator to use with the selected TLE.protected abstract voidInitialization proper to each propagator (SGP or SDP).protected abstract voidsxpPropagate(double t) Propagation proper to each propagator (SGP or SDP).Methods inherited from class org.orekit.propagation.analytical.AbstractAnalyticalPropagator
acceptStep, addEventDetector, basicPropagate, clearEventsDetectors, clearMatricesComputation, getEphemerisGenerator, getEventDetectors, getPvProvider, propagateMethods inherited from class org.orekit.propagation.AbstractPropagator
addAdditionalDataProvider, getAdditionalDataProviders, getAttitudeProvider, getHarvester, getInitialState, getManagedAdditionalData, getMultiplexer, getStartDate, initializeAdditionalData, initializePropagation, isAdditionalDataManaged, propagate, removeAdditionalDataProvider, setAttitudeProvider, setStartDate, setupMatricesComputation, stateChanged, updateAdditionalData, updateUnmanagedDataMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.orekit.propagation.Propagator
clearStepHandlers, getPosition, getPVCoordinates, getVelocity, setStepHandler, setStepHandler
-
Field Details
-
tle
Initial state. -
utc
UTC time scale. -
xnode
protected double xnodefinal RAAN. -
a
protected double afinal semi major axis. -
e
protected double efinal eccentricity. -
i
protected double ifinal inclination. -
omega
protected double omegafinal perigee argument. -
xl
protected double xlL from SPTRCK #3. -
a0dp
protected double a0dporiginal recovered semi major axis. -
xn0dp
protected double xn0dporiginal recovered mean motion. -
cosi0
protected double cosi0cosinus original inclination. -
theta2
protected double theta2cos io squared. -
sini0
protected double sini0sinus original inclination. -
xmdot
protected double xmdotcommon parameter for mean anomaly (M) computation. -
omgdot
protected double omgdotcommon parameter for perigee argument (omega) computation. -
xnodot
protected double xnodotcommon parameter for raan (OMEGA) computation. -
e0sq
protected double e0sqoriginal eccentricity squared. -
beta02
protected double beta021 - e2. -
beta0
protected double beta0sqrt (1 - e2). -
perige
protected double perigeperigee, expressed in KM and ALTITUDE. -
etasq
protected double etasqeta squared. -
eeta
protected double eetaoriginal eccentricity * eta. -
s4
protected double s4s* new value for the contant s. -
tsi
protected double tsitsi from SPTRCK #3. -
eta
protected double etaeta from SPTRCK #3. -
coef
protected double coefcoef for SGP C3 computation. -
coef1
protected double coef1coef for SGP C5 computation. -
c1
protected double c1C1 from SPTRCK #3. -
c2
protected double c2C2 from SPTRCK #3. -
c4
protected double c4C4 from SPTRCK #3. -
xnodcf
protected double xnodcfcommon parameter for raan (OMEGA) computation. -
t2cof
protected double t2cof3/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 propagateattitudeProvider- provider for attitude computationmass- spacecraft mass (kg)- See Also:
-
TLEPropagator
Protected constructor for derived classes.- Parameters:
initialTLE- the unique TLE to propagateattitudeProvider- provider for attitude computationmass- spacecraft mass (kg)teme- the TEME frame to use for propagation.- Since:
- 10.1
-
-
Method Details
-
selectExtrapolator
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
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 computationmass- 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 computationmass- 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
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
Reset the propagator initial state.For TLE propagator, calling this method is only recommended for covariance propagation when the new
statediffers from the previous one by only adding the additional state containing the derivatives.- Specified by:
resetInitialStatein interfacePropagator- Overrides:
resetInitialStatein classAbstractPropagator- Parameters:
state- new initial state to consider
-
resetIntermediateState
Reset an intermediate state.- Specified by:
resetIntermediateStatein classAbstractAnalyticalPropagator- Parameters:
state- new intermediate state to considerforward- if true, the intermediate state is valid for propagations after itself
-
getMass
Get the mass.- Specified by:
getMassin classAbstractAnalyticalPropagator- Parameters:
date- target date for the orbit- Returns:
- mass mass
-
propagateOrbit
Extrapolate an orbit up to a specific target date.- Specified by:
propagateOrbitin classAbstractAnalyticalPropagator- Parameters:
date- target date for the orbit- Returns:
- extrapolated parameters
-
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
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:
getFramein interfacePropagator- Overrides:
getFramein classAbstractPropagator- 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:
createHarvesterin classAbstractPropagator- Parameters:
stmName- State Transition Matrix state nameinitialStm- initial State Transition Matrix ∂Y/∂Y₀, if null (which is the most frequent case), assumed to be 6x6 identityinitialJacobianColumns- 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
Get the names of the parameters in the matrix returned byMatricesHarvester.getParametersJacobian(org.orekit.propagation.SpacecraftState).- Overrides:
getJacobiansColumnsNamesin classAbstractAnalyticalPropagator- Returns:
- names of the parameters (i.e. columns) of the Jacobian matrix
-
getDefaultTleGenerationAlgorithm
Get the default TLE generation algorithm.- Parameters:
utc- UTC time scaleteme- TEME frame- Returns:
- a TLE generation algorithm
- Since:
- 12.0
-