Class FieldTLEPropagator<T extends CalculusFieldElement<T>>
- java.lang.Object
-
- org.orekit.propagation.FieldAbstractPropagator<T>
-
- org.orekit.propagation.analytical.FieldAbstractAnalyticalPropagator<T>
-
- org.orekit.propagation.analytical.tle.FieldTLEPropagator<T>
-
- Type Parameters:
T
- type of the field elements
- All Implemented Interfaces:
FieldPropagator<T>
,FieldPVCoordinatesProvider<T>
,ParameterDriversProvider
- Direct Known Subclasses:
FieldDeepSDP4
,FieldSGP4
public abstract class FieldTLEPropagator<T extends CalculusFieldElement<T>> extends FieldAbstractAnalyticalPropagator<T>
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(FieldTLE, CalculusFieldElement[])
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.
- Since:
- 11.0
- 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), Thomas Paulet (field translation)
- See Also:
FieldTLE
-
-
Field Summary
Fields Modifier and Type Field Description protected T
a
final semi major axis.protected T
a0dp
original recovered semi major axis.protected T
beta0
sqrt (1 - e2).protected T
beta02
1 - e2.protected T
c1
C1 from SPTRCK #3.protected T
c2
C2 from SPTRCK #3.protected T
c4
C4 from SPTRCK #3.protected T
coef
coef for SGP C3 computation.protected T
coef1
coef for SGP C5 computation.protected T
cosi0
cosinus original inclination.protected T
e
final eccentricity.protected T
e0sq
original eccentricity squared.protected T
eeta
original eccentricity * eta.protected T
eta
eta from SPTRCK #3.protected T
etasq
eta squared.protected T
i
final inclination.protected T
omega
final perigee argument.protected T
omgdot
common parameter for perigee argument (omega) computation.protected T
perige
perigee, expressed in KM and ALTITUDE.protected T
s4
s* new value for the contant s.protected T
sini0
sinus original inclination.protected T
t2cof
3/2 * C1.protected T
theta2
cos io squared.protected FieldTLE<T>
tle
Initial state.protected T
tsi
tsi from SPTRCK #3.protected TimeScale
utc
UTC time scale.protected T
xl
L from SPTRCK #3.protected T
xmdot
common parameter for mean anomaly (M) computation.protected T
xn0dp
original recovered mean motion.protected T
xnodcf
common parameter for raan (OMEGA) computation.protected T
xnode
final RAAN.protected T
xnodot
common parameter for raan (OMEGA) computation.-
Fields inherited from interface org.orekit.propagation.FieldPropagator
DEFAULT_MASS
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
FieldTLEPropagator(FieldTLE<T> initialTLE, AttitudeProvider attitudeProvider, T mass, Frame teme, T[] parameters)
Protected constructor for derived classes.protected
FieldTLEPropagator(FieldTLE<T> initialTLE, AttitudeProvider attitudeProvider, T mass, T[] parameters)
Protected constructor for derived classes.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Frame
getFrame()
Get the frame in which the orbit is propagated.protected T
getMass(FieldAbsoluteDate<T> date)
Get the mass.static double
getMU()
Get the Earth gravity coefficient used for TLE propagation.List<ParameterDriver>
getParametersDrivers()
Get the drivers for parameters.FieldPVCoordinates<T>
getPVCoordinates(FieldAbsoluteDate<T> date, T[] parameters)
Get the extrapolated position and velocity from an initial TLE.FieldTLE<T>
getTLE()
Get the underlying TLE.FieldOrbit<T>
propagateOrbit(FieldAbsoluteDate<T> date, T[] parameters)
Extrapolate an orbit up to a specific target date.void
resetInitialState(FieldSpacecraftState<T> state)
Reset the propagator initial state.protected void
resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
Reset an intermediate state.static <T extends CalculusFieldElement<T>>
FieldTLEPropagator<T>selectExtrapolator(FieldTLE<T> tle, AttitudeProvider attitudeProvider, T mass, Frame teme, T[] parameters)
Selects the extrapolator to use with the selected TLE.static <T extends CalculusFieldElement<T>>
FieldTLEPropagator<T>selectExtrapolator(FieldTLE<T> tle, AttitudeProvider attitudeProvider, T mass, T[] parameters)
Selects the extrapolator to use with the selected TLE.static <T extends CalculusFieldElement<T>>
FieldTLEPropagator<T>selectExtrapolator(FieldTLE<T> tle, Frame teme, T[] parameters)
Selects the extrapolator to use with the selected TLE.static <T extends CalculusFieldElement<T>>
FieldTLEPropagator<T>selectExtrapolator(FieldTLE<T> tle, T[] parameters)
Selects the extrapolator to use with the selected TLE.protected abstract void
sxpInitialize(T[] parameters)
Initialization proper to each propagator (SGP or SDP).protected abstract void
sxpPropagate(T t, T[] parameters)
Propagation proper to each propagator (SGP or SDP).-
Methods inherited from class org.orekit.propagation.analytical.FieldAbstractAnalyticalPropagator
acceptStep, addEventDetector, basicPropagate, clearEventsDetectors, getEphemerisGenerator, getEventDetectors, getPvProvider, propagate
-
Methods inherited from class org.orekit.propagation.FieldAbstractPropagator
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getField, getInitialState, getManagedAdditionalStates, getMultiplexer, getStartDate, initializeAdditionalStates, initializePropagation, isAdditionalStateManaged, propagate, setAttitudeProvider, setStartDate, 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.FieldPropagator
clearStepHandlers, getPosition, getPVCoordinates, setStepHandler, setStepHandler
-
Methods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
-
-
-
-
Field Detail
-
tle
protected FieldTLE<T extends CalculusFieldElement<T>> tle
Initial state.
-
utc
protected final TimeScale utc
UTC time scale.
-
xnode
protected T extends CalculusFieldElement<T> xnode
final RAAN.
-
a
protected T extends CalculusFieldElement<T> a
final semi major axis.
-
e
protected T extends CalculusFieldElement<T> e
final eccentricity.
-
i
protected T extends CalculusFieldElement<T> i
final inclination.
-
omega
protected T extends CalculusFieldElement<T> omega
final perigee argument.
-
xl
protected T extends CalculusFieldElement<T> xl
L from SPTRCK #3.
-
a0dp
protected T extends CalculusFieldElement<T> a0dp
original recovered semi major axis.
-
xn0dp
protected T extends CalculusFieldElement<T> xn0dp
original recovered mean motion.
-
cosi0
protected T extends CalculusFieldElement<T> cosi0
cosinus original inclination.
-
theta2
protected T extends CalculusFieldElement<T> theta2
cos io squared.
-
sini0
protected T extends CalculusFieldElement<T> sini0
sinus original inclination.
-
xmdot
protected T extends CalculusFieldElement<T> xmdot
common parameter for mean anomaly (M) computation.
-
omgdot
protected T extends CalculusFieldElement<T> omgdot
common parameter for perigee argument (omega) computation.
-
xnodot
protected T extends CalculusFieldElement<T> xnodot
common parameter for raan (OMEGA) computation.
-
e0sq
protected T extends CalculusFieldElement<T> e0sq
original eccentricity squared.
-
beta02
protected T extends CalculusFieldElement<T> beta02
1 - e2.
-
beta0
protected T extends CalculusFieldElement<T> beta0
sqrt (1 - e2).
-
perige
protected T extends CalculusFieldElement<T> perige
perigee, expressed in KM and ALTITUDE.
-
etasq
protected T extends CalculusFieldElement<T> etasq
eta squared.
-
eeta
protected T extends CalculusFieldElement<T> eeta
original eccentricity * eta.
-
s4
protected T extends CalculusFieldElement<T> s4
s* new value for the contant s.
-
tsi
protected T extends CalculusFieldElement<T> tsi
tsi from SPTRCK #3.
-
eta
protected T extends CalculusFieldElement<T> eta
eta from SPTRCK #3.
-
coef
protected T extends CalculusFieldElement<T> coef
coef for SGP C3 computation.
-
coef1
protected T extends CalculusFieldElement<T> coef1
coef for SGP C5 computation.
-
c1
protected T extends CalculusFieldElement<T> c1
C1 from SPTRCK #3.
-
c2
protected T extends CalculusFieldElement<T> c2
C2 from SPTRCK #3.
-
c4
protected T extends CalculusFieldElement<T> c4
C4 from SPTRCK #3.
-
xnodcf
protected T extends CalculusFieldElement<T> xnodcf
common parameter for raan (OMEGA) computation.
-
t2cof
protected T extends CalculusFieldElement<T> t2cof
3/2 * C1.
-
-
Constructor Detail
-
FieldTLEPropagator
@DefaultDataContext protected FieldTLEPropagator(FieldTLE<T> initialTLE, AttitudeProvider attitudeProvider, T mass, T[] parameters)
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)parameters
- SGP4 and SDP4 model parameters- See Also:
FieldTLEPropagator(FieldTLE, AttitudeProvider, CalculusFieldElement, Frame, CalculusFieldElement[])
-
FieldTLEPropagator
protected FieldTLEPropagator(FieldTLE<T> initialTLE, AttitudeProvider attitudeProvider, T mass, Frame teme, T[] parameters)
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.parameters
- SGP4 and SDP4 model parameters
-
-
Method Detail
-
selectExtrapolator
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldTLEPropagator<T> selectExtrapolator(FieldTLE<T> tle, T[] parameters)
Selects the extrapolator to use with the selected TLE.This method uses the
default data context
.- Type Parameters:
T
- elements type- Parameters:
tle
- the TLE to propagate.parameters
- SGP4 and SDP4 model parameters- Returns:
- the correct propagator.
- See Also:
selectExtrapolator(FieldTLE, Frame, CalculusFieldElement[])
-
selectExtrapolator
public static <T extends CalculusFieldElement<T>> FieldTLEPropagator<T> selectExtrapolator(FieldTLE<T> tle, Frame teme, T[] parameters)
Selects the extrapolator to use with the selected TLE.This method uses the
default data context
.- Type Parameters:
T
- elements type- Parameters:
tle
- the TLE to propagate.teme
- TEME frame.parameters
- SGP4 and SDP4 model parameters- Returns:
- the correct propagator.
-
selectExtrapolator
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldTLEPropagator<T> selectExtrapolator(FieldTLE<T> tle, AttitudeProvider attitudeProvider, T mass, T[] parameters)
Selects the extrapolator to use with the selected TLE.This method uses the
default data context
.- Type Parameters:
T
- elements type- Parameters:
tle
- the TLE to propagate.attitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)parameters
- SGP4 and SDP4 model parameters- Returns:
- the correct propagator.
- See Also:
selectExtrapolator(FieldTLE, AttitudeProvider, CalculusFieldElement, Frame, CalculusFieldElement[])
-
selectExtrapolator
public static <T extends CalculusFieldElement<T>> FieldTLEPropagator<T> selectExtrapolator(FieldTLE<T> tle, AttitudeProvider attitudeProvider, T mass, Frame teme, T[] parameters)
Selects the extrapolator to use with the selected TLE.- Type Parameters:
T
- elements type- Parameters:
tle
- the TLE to propagate.attitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)teme
- the TEME frame to use for propagation.parameters
- SGP4 and SDP4 model parameters- Returns:
- the correct propagator.
-
getMU
public static double getMU()
Get the Earth gravity coefficient used for TLE propagation.- Returns:
- the Earth gravity coefficient.
-
getPVCoordinates
public FieldPVCoordinates<T> getPVCoordinates(FieldAbsoluteDate<T> date, T[] parameters)
Get the extrapolated position and velocity from an initial TLE.- Parameters:
date
- the final dateparameters
- values of the model- Returns:
- the final PVCoordinates
-
getParametersDrivers
public List<ParameterDriver> getParametersDrivers()
Get the drivers for parameters.- Returns:
- drivers for parameters
-
sxpInitialize
protected abstract void sxpInitialize(T[] parameters)
Initialization proper to each propagator (SGP or SDP).- Parameters:
parameters
- model parameters
-
sxpPropagate
protected abstract void sxpPropagate(T t, T[] parameters)
Propagation proper to each propagator (SGP or SDP).- Parameters:
t
- the offset from initial epoch (min)parameters
- model parameters
-
resetInitialState
public void resetInitialState(FieldSpacecraftState<T> 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 interfaceFieldPropagator<T extends CalculusFieldElement<T>>
- Overrides:
resetInitialState
in classFieldAbstractPropagator<T extends CalculusFieldElement<T>>
- Parameters:
state
- new initial state to consider
-
resetIntermediateState
protected void resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
Reset an intermediate state.- Specified by:
resetIntermediateState
in classFieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
- Parameters:
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for propagations after itself
-
getMass
protected T getMass(FieldAbsoluteDate<T> date)
Get the mass.- Specified by:
getMass
in classFieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
- Parameters:
date
- target date for the orbit- Returns:
- mass mass
-
propagateOrbit
public FieldOrbit<T> propagateOrbit(FieldAbsoluteDate<T> date, T[] parameters)
Extrapolate an orbit up to a specific target date.- Specified by:
propagateOrbit
in classFieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
- Parameters:
date
- target date for the orbitparameters
- model parameters- Returns:
- extrapolated parameters
-
getTLE
public FieldTLE<T> 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 interfaceFieldPropagator<T extends CalculusFieldElement<T>>
- Overrides:
getFrame
in classFieldAbstractPropagator<T extends CalculusFieldElement<T>>
- Returns:
- frame in which the orbit is propagated
- See Also:
FieldPropagator.resetInitialState(FieldSpacecraftState)
-
-