public abstract class TLEPropagator extends AbstractAnalyticalPropagator
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.
TLE
Modifier and Type | Field and 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.
|
DEFAULT_LAW, DEFAULT_MASS, EPHEMERIS_GENERATION_MODE, MASTER_MODE, SLAVE_MODE
Modifier | Constructor and 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.
|
Modifier and Type | Method and Description |
---|---|
Frame |
getFrame()
Get the frame in which the orbit is propagated.
|
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,
Frames frames)
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).
|
acceptStep, addEventDetector, basicPropagate, clearEventsDetectors, getEventsDetectors, getGeneratedEphemeris, getPvProvider, propagate
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getFixedStepSize, getInitialState, getManagedAdditionalStates, getMode, getPVCoordinates, getStartDate, getStepHandler, initializePropagation, isAdditionalStateManaged, propagate, setAttitudeProvider, setEphemerisMode, setEphemerisMode, setMasterMode, setMasterMode, setSlaveMode, setStartDate, stateChanged, updateAdditionalStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getDefaultLaw
protected final TLE tle
protected final TimeScale utc
protected double xnode
protected double a
protected double e
protected double i
protected double omega
protected double xl
protected double a0dp
protected double xn0dp
protected double cosi0
protected double theta2
protected double sini0
protected double xmdot
protected double omgdot
protected double xnodot
protected double e0sq
protected double beta02
protected double beta0
protected double perige
protected double etasq
protected double eeta
protected double s4
protected double tsi
protected double eta
protected double coef
protected double coef1
protected double c1
protected double c2
protected double c4
protected double xnodcf
protected double t2cof
@DefaultDataContext protected TLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass)
This constructor uses the default data context
.
initialTLE
- the unique TLE to propagateattitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)TLEPropagator(TLE, AttitudeProvider, double, Frame)
protected TLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass, Frame teme)
initialTLE
- the unique TLE to propagateattitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)teme
- the TEME frame to use for propagation.@DefaultDataContext public static TLEPropagator selectExtrapolator(TLE tle)
This method uses the default data context
.
tle
- the TLE to propagate.selectExtrapolator(TLE, Frames)
public static TLEPropagator selectExtrapolator(TLE tle, Frames frames)
tle
- the TLE to propagate.frames
- set of Frames to use in the propagator.@DefaultDataContext public static TLEPropagator selectExtrapolator(TLE tle, AttitudeProvider attitudeProvider, double mass)
This method uses the default data context
.
tle
- the TLE to propagate.attitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)selectExtrapolator(TLE, AttitudeProvider, double, Frame)
public static TLEPropagator selectExtrapolator(TLE tle, AttitudeProvider attitudeProvider, double mass, Frame teme)
tle
- the TLE to propagate.attitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)teme
- the TEME frame to use for propagation.public static double getMU()
public PVCoordinates getPVCoordinates(AbsoluteDate date)
date
- the final dateprotected abstract void sxpInitialize()
protected abstract void sxpPropagate(double t)
t
- the offset from initial epoch (min)public void resetInitialState(SpacecraftState state)
resetInitialState
in interface Propagator
resetInitialState
in class AbstractPropagator
state
- new initial state to considerprotected void resetIntermediateState(SpacecraftState state, boolean forward)
resetIntermediateState
in class AbstractAnalyticalPropagator
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for
propagations after itselfprotected double getMass(AbsoluteDate date)
getMass
in class AbstractAnalyticalPropagator
date
- target date for the orbitprotected Orbit propagateOrbit(AbsoluteDate date)
propagateOrbit
in class AbstractAnalyticalPropagator
date
- target date for the orbitpublic TLE getTLE()
public 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 Propagator
getFrame
in class AbstractPropagator
Propagator.resetInitialState(SpacecraftState)
Copyright © 2002-2020 CS Group. All rights reserved.