Propagator
, PVCoordinatesProvider
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 | 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 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 | Description |
---|---|---|
protected |
TLEPropagator(TLE initialTLE,
AttitudeProvider attitudeProvider,
double mass) |
Protected constructor for derived classes.
|
Modifier and Type | Method | 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.
|
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, isAdditionalStateManaged, propagate, setAttitudeProvider, setEphemerisMode, setEphemerisMode, setMasterMode, setMasterMode, setSlaveMode, setStartDate, updateAdditionalStates
protected final TLE tle
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
protected TLEPropagator(TLE initialTLE, AttitudeProvider attitudeProvider, double mass) throws OrekitException
initialTLE
- the unique TLE to propagateattitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)OrekitException
- if some specific error occurspublic static TLEPropagator selectExtrapolator(TLE tle) throws OrekitException
tle
- the TLE to propagate.OrekitException
- if the underlying model cannot be initializedpublic static TLEPropagator selectExtrapolator(TLE tle, AttitudeProvider attitudeProvider, double mass) throws OrekitException
tle
- the TLE to propagate.attitudeProvider
- provider for attitude computationmass
- spacecraft mass (kg)OrekitException
- if the underlying model cannot be initializedpublic static double getMU()
public PVCoordinates getPVCoordinates(AbsoluteDate date) throws OrekitException
date
- the final dateOrekitException
- if propagation cannot be performed at given dateprotected abstract void sxpInitialize() throws OrekitException
OrekitException
- if some specific error occursprotected abstract void sxpPropagate(double t) throws OrekitException
t
- the offset from initial epoch (min)OrekitException
- if current state cannot be propagatedpublic void resetInitialState(SpacecraftState state) throws OrekitException
resetInitialState
in interface Propagator
resetInitialState
in class AbstractPropagator
state
- new initial state to considerOrekitException
- if initial state cannot be resetprotected void resetIntermediateState(SpacecraftState state, boolean forward) throws OrekitException
resetIntermediateState
in class AbstractAnalyticalPropagator
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for
propagations after itselfOrekitException
- if initial state cannot be resetprotected double getMass(AbsoluteDate date)
getMass
in class AbstractAnalyticalPropagator
date
- target date for the orbitprotected Orbit propagateOrbit(AbsoluteDate date) throws OrekitException
propagateOrbit
in class AbstractAnalyticalPropagator
date
- target date for the orbitOrekitException
- if some parameters are out of boundspublic 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-2018 CS Systèmes d'information. All rights reserved.