Class TLEPropagator
- java.lang.Object
-
- org.orekit.propagation.AbstractPropagator
-
- org.orekit.propagation.analytical.AbstractAnalyticalPropagator
-
- org.orekit.propagation.analytical.tle.TLEPropagator
-
- All Implemented Interfaces:
Propagator
,PVCoordinatesProvider
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 computeposition 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 Summary
Fields Modifier and Type Field Description protected double
a
final semi major axis.protected double
a0dp
original recovered semi major axis.protected double
beta0
sqrt (1 - e2).protected double
beta02
1 - e2.protected double
c1
C1 from SPTRCK #3.protected double
c2
C2 from SPTRCK #3.protected double
c4
C4 from SPTRCK #3.protected double
coef
coef for SGP C3 computation.protected double
coef1
coef for SGP C5 computation.protected double
cosi0
cosinus original inclination.protected double
e
final eccentricity.protected double
e0sq
original eccentricity squared.protected double
eeta
original eccentricity * eta.protected double
eta
eta from SPTRCK #3.protected double
etasq
eta squared.protected double
i
final inclination.protected double
omega
final perigee argument.protected double
omgdot
common parameter for perigee argument (omega) computation.protected double
perige
perigee, expressed in KM and ALTITUDE.protected double
s4
s* new value for the contant s.protected double
sini0
sinus original inclination.protected double
t2cof
3/2 * C1.protected double
theta2
cos io squared.protected TLE
tle
Initial state.protected double
tsi
tsi from SPTRCK #3.protected TimeScale
utc
UTC time scale.protected double
xl
L from SPTRCK #3.protected double
xmdot
common parameter for mean anomaly (M) computation.protected double
xn0dp
original recovered mean motion.protected double
xnodcf
common parameter for raan (OMEGA) computation.protected double
xnode
final RAAN.protected double
xnodot
common parameter for raan (OMEGA) computation.-
Fields inherited from interface org.orekit.propagation.Propagator
DEFAULT_MASS
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
TLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass)
Protected constructor for derived classes.protected
TLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass, Frame teme)
Protected constructor for derived classes.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected AbstractMatricesHarvester
createHarvester(String stmName, RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns)
Create the harvester suitable for propagator.static TleGenerationAlgorithm
getDefaultTleGenerationAlgorithm(TimeScale utc, Frame teme)
Get the default TLE generation algorithm.Frame
getFrame()
Get the frame in which the orbit is propagated.protected List<String>
getJacobiansColumnsNames()
Get the names of the parameters in the matrix returned byMatricesHarvester.getParametersJacobian(org.orekit.propagation.SpacecraftState)
.protected double
getMass(AbsoluteDate date)
Get the mass.static double
getMU()
Get the Earth gravity coefficient used for TLE propagation.PVCoordinates
getPVCoordinates(AbsoluteDate date)
Get the extrapolated position and velocity from an initial TLE.TLE
getTLE()
Get the underlying TLE.protected Orbit
propagateOrbit(AbsoluteDate date)
Extrapolate an orbit up to a specific target date.void
resetInitialState(SpacecraftState state)
Reset the propagator initial state.protected void
resetIntermediateState(SpacecraftState state, boolean forward)
Reset an intermediate state.static TLEPropagator
selectExtrapolator(TLE tle)
Selects the extrapolator to use with the selected TLE.static TLEPropagator
selectExtrapolator(TLE tle, AttitudeProvider attitudeProvider, double mass)
Selects the extrapolator to use with the selected TLE.static TLEPropagator
selectExtrapolator(TLE tle, AttitudeProvider attitudeProvider, double mass, Frame teme)
Selects the extrapolator to use with the selected TLE.static TLEPropagator
selectExtrapolator(TLE tle, Frame teme)
Selects the extrapolator to use with the selected TLE.static TLEPropagator
selectExtrapolator(TLE tle, Frame teme, AttitudeProvider attitudeProvider)
Selects the extrapolator to use with the selected TLE.protected abstract void
sxpInitialize()
Initialization proper to each propagator (SGP or SDP).protected abstract void
sxpPropagate(double t)
Propagation proper to each propagator (SGP or SDP).-
Methods inherited from class org.orekit.propagation.analytical.AbstractAnalyticalPropagator
acceptStep, addEventDetector, basicPropagate, clearEventsDetectors, getEphemerisGenerator, getEventDetectors, getPvProvider, propagate
-
Methods inherited from class org.orekit.propagation.AbstractPropagator
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getHarvester, getInitialState, getManagedAdditionalStates, getMultiplexer, getStartDate, initializeAdditionalStates, initializePropagation, isAdditionalStateManaged, propagate, setAttitudeProvider, setStartDate, setupMatricesComputation, stateChanged, updateAdditionalStates, updateUnmanagedStates
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.propagation.Propagator
clearStepHandlers, getPosition, getPVCoordinates, setStepHandler, setStepHandler
-
-
-
-
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
@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(TLE, AttitudeProvider, double, Frame)
-
TLEPropagator
protected TLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass, Frame teme)
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 Detail
-
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(TLE, Frame)
-
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(TLE, Frame, AttitudeProvider)
-
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(TLE, AttitudeProvider, double, Frame)
-
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
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 interfacePropagator
- Overrides:
resetInitialState
in classAbstractPropagator
- Parameters:
state
- new initial state to consider
-
resetIntermediateState
protected void resetIntermediateState(SpacecraftState state, boolean forward)
Reset an intermediate state.- Specified by:
resetIntermediateState
in classAbstractAnalyticalPropagator
- Parameters:
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for propagations after itself
-
getMass
protected double getMass(AbsoluteDate date)
Get the mass.- Specified by:
getMass
in classAbstractAnalyticalPropagator
- Parameters:
date
- target date for the orbit- Returns:
- mass mass
-
propagateOrbit
protected Orbit propagateOrbit(AbsoluteDate date)
Extrapolate an orbit up to a specific target date.- Specified by:
propagateOrbit
in classAbstractAnalyticalPropagator
- 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 interfacePropagator
- Overrides:
getFrame
in classAbstractPropagator
- Returns:
- frame in which the orbit is propagated
- See Also:
Propagator.resetInitialState(SpacecraftState)
-
createHarvester
protected AbstractMatricesHarvester createHarvester(String stmName, RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns)
Create the harvester suitable for propagator.- Overrides:
createHarvester
in 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
protected List<String> getJacobiansColumnsNames()
Get the names of the parameters in the matrix returned byMatricesHarvester.getParametersJacobian(org.orekit.propagation.SpacecraftState)
.- Overrides:
getJacobiansColumnsNames
in classAbstractAnalyticalPropagator
- 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 scaleteme
- TEME frame- Returns:
- a TLE generation algorithm
- Since:
- 12.0
-
-