public abstract class FieldTLEPropagator<T extends CalculusFieldElement<T>> extends FieldAbstractAnalyticalPropagator<T>
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 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.
FieldTLE
Modifier and Type | Field and 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.
|
DEFAULT_MASS
Modifier | Constructor and 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.
|
Modifier and Type | Method and 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 parameters driver for propagation model.
|
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>> |
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>> |
selectExtrapolator(FieldTLE<T> tle,
AttitudeProvider attitudeProvider,
T mass,
T[] parameters)
Selects the extrapolator to use with the selected TLE.
|
static <T extends CalculusFieldElement<T>> |
selectExtrapolator(FieldTLE<T> tle,
Frames frames,
T[] parameters)
Selects the extrapolator to use with the selected TLE.
|
static <T extends CalculusFieldElement<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).
|
acceptStep, addEventDetector, basicPropagate, clearEventsDetectors, getEphemerisGenerator, getEventsDetectors, getParameters, getPvProvider, propagate
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getField, getInitialState, getManagedAdditionalStates, getMultiplexer, getPVCoordinates, getStartDate, initializePropagation, isAdditionalStateManaged, propagate, setAttitudeProvider, setStartDate, stateChanged, updateAdditionalStates, updateUnmanagedStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
clearStepHandlers, setStepHandler, setStepHandler
protected FieldTLE<T extends CalculusFieldElement<T>> tle
protected final TimeScale utc
protected T extends CalculusFieldElement<T> xnode
protected T extends CalculusFieldElement<T> a
protected T extends CalculusFieldElement<T> e
protected T extends CalculusFieldElement<T> i
protected T extends CalculusFieldElement<T> omega
protected T extends CalculusFieldElement<T> xl
protected T extends CalculusFieldElement<T> a0dp
protected T extends CalculusFieldElement<T> xn0dp
protected T extends CalculusFieldElement<T> cosi0
protected T extends CalculusFieldElement<T> theta2
protected T extends CalculusFieldElement<T> sini0
protected T extends CalculusFieldElement<T> xmdot
protected T extends CalculusFieldElement<T> omgdot
protected T extends CalculusFieldElement<T> xnodot
protected T extends CalculusFieldElement<T> e0sq
protected T extends CalculusFieldElement<T> beta02
protected T extends CalculusFieldElement<T> beta0
protected T extends CalculusFieldElement<T> perige
protected T extends CalculusFieldElement<T> etasq
protected T extends CalculusFieldElement<T> eeta
protected T extends CalculusFieldElement<T> s4
protected T extends CalculusFieldElement<T> tsi
protected T extends CalculusFieldElement<T> eta
protected T extends CalculusFieldElement<T> coef
protected T extends CalculusFieldElement<T> coef1
protected T extends CalculusFieldElement<T> c1
protected T extends CalculusFieldElement<T> c2
protected T extends CalculusFieldElement<T> c4
protected T extends CalculusFieldElement<T> xnodcf
protected T extends CalculusFieldElement<T> t2cof
@DefaultDataContext protected FieldTLEPropagator(FieldTLE<T> initialTLE, AttitudeProvider attitudeProvider, T mass, T[] parameters)
This constructor uses the default data context
.
initialTLE
- the unique TLE to propagateattitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)parameters
- SGP4 and SDP4 model parametersFieldTLEPropagator(FieldTLE, AttitudeProvider, CalculusFieldElement, Frame, CalculusFieldElement[])
protected FieldTLEPropagator(FieldTLE<T> initialTLE, AttitudeProvider attitudeProvider, T mass, Frame teme, T[] 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@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldTLEPropagator<T> selectExtrapolator(FieldTLE<T> tle, T[] parameters)
This method uses the default data context
.
T
- elements typetle
- the TLE to propagate.parameters
- SGP4 and SDP4 model parametersselectExtrapolator(FieldTLE, Frames, CalculusFieldElement[])
public static <T extends CalculusFieldElement<T>> FieldTLEPropagator<T> selectExtrapolator(FieldTLE<T> tle, Frames frames, T[] parameters)
This method uses the default data context
.
T
- elements typetle
- the TLE to propagate.frames
- set of Frames to use in the propagator.parameters
- SGP4 and SDP4 model parameters@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldTLEPropagator<T> selectExtrapolator(FieldTLE<T> tle, AttitudeProvider attitudeProvider, T mass, T[] parameters)
This method uses the default data context
.
T
- elements typetle
- the TLE to propagate.attitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)parameters
- SGP4 and SDP4 model parametersselectExtrapolator(FieldTLE, AttitudeProvider, CalculusFieldElement, Frame, CalculusFieldElement[])
public static <T extends CalculusFieldElement<T>> FieldTLEPropagator<T> selectExtrapolator(FieldTLE<T> tle, AttitudeProvider attitudeProvider, T mass, Frame teme, T[] parameters)
T
- elements typetle
- 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 parameterspublic static double getMU()
public FieldPVCoordinates<T> getPVCoordinates(FieldAbsoluteDate<T> date, T[] parameters)
date
- the final dateparameters
- values of the modelpublic List<ParameterDriver> getParametersDrivers()
getParametersDrivers
in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
protected abstract void sxpInitialize(T[] parameters)
parameters
- model parametersprotected abstract void sxpPropagate(T t, T[] parameters)
t
- the offset from initial epoch (min)parameters
- model parameterspublic void resetInitialState(FieldSpacecraftState<T> 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.
resetInitialState
in interface FieldPropagator<T extends CalculusFieldElement<T>>
resetInitialState
in class FieldAbstractPropagator<T extends CalculusFieldElement<T>>
state
- new initial state to considerprotected void resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
resetIntermediateState
in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for
propagations after itselfprotected T getMass(FieldAbsoluteDate<T> date)
getMass
in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
date
- target date for the orbitpublic FieldOrbit<T> propagateOrbit(FieldAbsoluteDate<T> date, T[] parameters)
propagateOrbit
in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
date
- target date for the orbitparameters
- model parameterspublic Frame getFrame()
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.
getFrame
in interface FieldPropagator<T extends CalculusFieldElement<T>>
getFrame
in class FieldAbstractPropagator<T extends CalculusFieldElement<T>>
FieldPropagator.resetInitialState(FieldSpacecraftState)
Copyright © 2002-2022 CS GROUP. All rights reserved.