DEIMOS
Earth Observation Mission CFI Software
Orbit Software User Manual
ESA

EECFI::OrbitId Class Reference

Class that stores the orbit data. More...

Inheritance diagram for EECFI::OrbitId:
EECFI::CfiId EECFI::CfiClass

List of all members.

Public Member Functions

 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, long orbit0, long driftMode, double ascMlstDrift, double inclination, long irep, long icyc, double rlong, double ascMlst) throw (CfiError)
 Class constructor: using orbital parameters.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, double pos[3], double vel[3], long absOrbit) throw (CfiError)
 Class constructor: using state vector.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const vector< string > &inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1) throw (CfiError)
 Class constructor: using orbit file.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, double pos[3], double vel[3], long absOrbit, const PropagPreciseConf &preciseConf) throw (CfiError)
 Class constructor: numerical propagator using state vector.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const vector< string > &inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1, const PropagPreciseConf &preciseConf) throw (CfiError)
 Class constructor: numerical propagator using orbit file.
 OrbitId (OrbitId &orbitIdIn)
 Copy constructor.
 ~OrbitId () throw (CfiError)
 Class destructor.
void init (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, long orbit0, long driftMode, double ascMlstDrift, double inclination, long irep, long icyc, double rlong, double ascMlst) throw (CfiError)
 Initialise the orbit using orbital parameters.
void init (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, double pos[3], double vel[3], long absOrbit) throw (CfiError)
 Initialise the orbit using state vector.
void init (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const vector< string > &inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1) throw (CfiError)
 Initialise the orbit using orbit files.
void init (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, double pos[3], double vel[3], long absOrbit, const PropagPreciseConf &preciseConf) throw (CfiError)
 Initialise the orbit using state vector with numerical propagator.
void init (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const vector< string > &inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1, const PropagPreciseConf &preciseConf) throw (CfiError)
 Initialise the orbit using orbit file with numerical propagator.
SatId satId () const
 Return satellite id.
vector< OsvRecgetOsv () const
 Returns the list of orbit state vectors stored in the OrbitId object.
void setOsv (const vector< OsvRec > &osvRecList)
 Sets the list of orbit state vectors stored in the OrbitId object.
vector< ANXExtragetAnx () const
 Returns the list of ANX data stored in the OrbitId object.
void setAnx (const vector< ANXExtra > &anxList)
 Sets the list of ANX data stored in the OrbitId object.
vector< OsfRecordsgetOsf () const
 Returns the list of orbital changes stored in the OrbitId object.
void setOsf (const vector< OsfRecords > &osvRecList)
 Sets the list of orbital changes stored in the OrbitId object.
ValidityTime getValTime () const
 Returns validity times.
void setValTime (const ValidityTime &valTime)
 Sets validity times.
PropagPreciseConf getPrecisePropagConfig () const throw (CfiError)
 Get numerical propagator configuration.
void setPrecisePropagConfig (const PropagPreciseConf &preciseConf)
 Set numerical propagator configuration.
OrbitalInfo getOrbitInfo (long absoluteOrbit) const throw (CfiError)
 Returns orbital information for a requested orbit.
OrbitInfo getOrbitNumbersFromRel (long relOrbit, long cycle) const throw (CfiError)
 Get orbit absolute orbit and phase number from the relative orbit.
OrbitInfo getOrbitNumbersFromPhase (long phase) const throw (CfiError)
 Get orbit absolute and relative orbit from the input phase number.
OrbitInfo getOrbitNumbersFromAbs (long absOrbit) const throw (CfiError)
 Get orbit relative orbit and phase from the input absolute orbit.
StateVector osvCompute (long mode, long timeRef, double time) const throw (CfiError)
 Computes a satellite state vector for a given time.
StateVectorExtraInfo osvComputeExtra (long extraChoice) const throw (CfiError)
 Get orbital auxiliary data for the satellite state vector computed with osvCompute.
TleRec osvToTle (long timeMode, long timeRef, double time0, double time1, long orbit0, long orbit1) throw (CfiError)
 Generate a TLE by fitting the set of orbit state vectors stored in the OrbitId.
void operator= (const OrbitId &orbitIdIn)
 Copy operator.

Protected Member Functions

 OrbitId ()
 Empty class constructor: do not initialise orbit id.

Detailed Description

Class that stores the orbit data.


Constructor & Destructor Documentation

EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
double  time,
long  orbit0,
long  driftMode,
double  ascMlstDrift,
double  inclination,
long  irep,
long  icyc,
double  rlong,
double  ascMlst 
) throw (CfiError)

Class constructor: using orbital parameters.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum).
time Reference time (Decimal days - Processing format).
orbit0 Absolute orbit number of the reference orbit.
driftMode Flag to select between mlst and inclination as input characterization of reference orbit. Allowed values:

  • XOCFI_NOSUNSYNC_DRIFT
  • XOCFI_NOSUNSYNC_INCLINATION
  • XOCFI_NOSUNSYNC_DRIFT + XOCFI_NOSUNSYNC_USE_SIM_MODEL
  • XOCFI_NOSUNSYNC_INCLINATION + XOCFI_NOSUNSYNC_USE_SIM_MODEL

.

ascMlstDrift Drift in mlst of the reference orbit [seconds/day].
inclination Inclination of the reference orbit [deg]. Allowed range = [0, 180].
irep Repeat cycle of the reference orbit [days]. Allowed range: > 0.
icyc Cycle length of the reference orbit [orbits]. Allowed range: > 0.
rlong Geocentric longitude of the ascending node (EF RF) [deg]. Allowed range = [0, 360)
ascMlst MLST at ascending node [Decimal hours]. Allowed range = [0, 24).
EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
double  time,
double  pos[3],
double  vel[3],
long  absOrbit 
) throw (CfiError)

Class constructor: using state vector.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum).
time Time (Decimal days - Processing format).
pos Position vector [m].
vel Velocity vector [m/s].
absOrbit Absolute orbit.
EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
long  orbitFileMode,
const vector< string > &  inputFiles,
long  timeInitMode,
double  time0,
double  time1,
long  orbit0,
long  orbit1 
) throw (CfiError)

Class constructor: using orbit file.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum. When using DORIS Navigator files and time_mode is XOCFI_SEL_TIME, only XOCFI_TIME_UTC is allowed.).
orbitFileMode Flag that indicates the type of the input orbit file (OrbitInitModeEnum except PRECISE models).

  • There exists the posibility of detecting automatically the type of the files using the value XOCFI_ORBIT_INIT_AUTO.
  • The Orbit Event files are used as Orbit Scenario files if the AUTO mode is selected. In case they want to be used as Predicted orbit files, the option XOCFI_ORBIT_INIT_OEF_POF_MODE should be chosen.
  • The AUTO mode cannot be used to detect TLE files.

.

inputFiles Vector of orbit files.
timeInitMode Flag for selecting the time range of the initialisation (XOCFI_SEL_FILE, XOCFI_SEL_TIME, XOCFI_SEL_ORBIT. For DORIS Navigator files, XOCFI_SEL_ORBIT is not allowed).
For TLE files, the whole file is always selected (this flag and the parameters time0/time1, orbit0/orbit1 are dummies).
time0 Start time [Decimal days (Processing format)].
time1 Stop time [Decimal days (Processing format)].
orbit0 Start orbit.
orbit1 Stop orbit.
EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
double  time,
double  pos[3],
double  vel[3],
long  absOrbit,
const PropagPreciseConf preciseConf 
) throw (CfiError)

Class constructor: numerical propagator using state vector.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum).
time Time (Decimal days - Processing format).
pos Position vector [m].
vel Velocity vector [m/s].
absOrbit Absolute orbit.
preciseConf Numerical propagator configuration. Allowed range for some members:

  • step: > 0
  • gravDegree, gravOrder: depend on gravFile used
  • ap, f107, f107a: > 0
  • scMass: > 0
  • scDragCoeff, scDragArea: > 0
  • scSrpCoeff, scSrpArea: > 0

.

EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
long  orbitFileMode,
const vector< string > &  inputFiles,
long  timeInitMode,
double  time0,
double  time1,
long  orbit0,
long  orbit1,
const PropagPreciseConf preciseConf 
) throw (CfiError)

Class constructor: numerical propagator using orbit file.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum. When using DORIS Navigator files and time_mode is XOCFI_SEL_TIME, only XOCFI_TIME_UTC is allowed.).
orbitFileMode Flag that indicates the type of the input orbit file (OrbitInitModeEnum ONLY PRECISE models).

  • There exists the posibility of detecting automatically the type of the files using the value XOCFI_ORBIT_INIT_AUTO.

.

inputFiles Vector of orbit files.
timeInitMode Flag for selecting the time range of the initialisation (XOCFI_SEL_FILE, XOCFI_SEL_TIME, XOCFI_SEL_ORBIT. For DORIS Navigator files, XOCFI_SEL_ORBIT is not allowed).
For TLE files, the whole file is always selected (this flag and the parameters time0/time1, orbit0/orbit1 are dummies).
time0 Start time [Decimal days (Processing format)].
time1 Stop time [Decimal days (Processing format)].
orbit0 Start orbit.
orbit1 Stop orbit.
preciseConf Numerical propagator configuration. Allowed range for some members:

  • step: > 0
  • gravDegree, gravOrder: depend on gravFile used
  • ap, f107, f107a: > 0
  • scMass: > 0
  • scDragCoeff, scDragArea: > 0
  • scSrpCoeff, scSrpArea: > 0

.

EECFI::OrbitId::OrbitId ( OrbitId orbitIdIn  ) 

Copy constructor.

Parameters:
orbitIdIn Orbit Id to be copied.
EECFI::OrbitId::~OrbitId (  )  throw (CfiError)

Class destructor.

EECFI::OrbitId::OrbitId (  )  [protected]

Empty class constructor: do not initialise orbit id.


Member Function Documentation

vector< ANXExtra > EECFI::OrbitId::getAnx (  )  const

Returns the list of ANX data stored in the OrbitId object.

Returns:
Vector of ANX information.

References EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

OrbitalInfo EECFI::OrbitId::getOrbitInfo ( long  absoluteOrbit  )  const throw (CfiError)
OrbitInfo EECFI::OrbitId::getOrbitNumbersFromAbs ( long  absOrbit  )  const throw (CfiError)

Get orbit relative orbit and phase from the input absolute orbit.

Parameters:
absOrbit Absolute orbit.
Returns:
Orbit information.

References EECFI::OrbitInfo::absOrbit, EECFI::OrbitInfo::cycle, EECFI::OrbitInfo::phase, and EECFI::OrbitInfo::relOrbit.

OrbitInfo EECFI::OrbitId::getOrbitNumbersFromPhase ( long  phase  )  const throw (CfiError)

Get orbit absolute and relative orbit from the input phase number.

Parameters:
phase Phase of orbit.
Returns:
Orbit information.

References EECFI::OrbitInfo::absOrbit, EECFI::OrbitInfo::cycle, EECFI::OrbitInfo::phase, and EECFI::OrbitInfo::relOrbit.

OrbitInfo EECFI::OrbitId::getOrbitNumbersFromRel ( long  relOrbit,
long  cycle 
) const throw (CfiError)

Get orbit absolute orbit and phase number from the relative orbit.

Parameters:
relOrbit Relative orbit
cycle Cycle of orbit.
Returns:
Orbit information.

References EECFI::OrbitInfo::absOrbit, EECFI::OrbitInfo::cycle, EECFI::OrbitInfo::phase, and EECFI::OrbitInfo::relOrbit.

Referenced by EECFI::RelANXTime::toAbsolute().

vector< OsvRec > EECFI::OrbitId::getOsv (  )  const

Returns the list of orbit state vectors stored in the OrbitId object.

Returns:
Vector of orbit state vectors.

References EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

ValidityTime EECFI::OrbitId::getValTime (  )  const

Returns validity times.

Returns:
Validity times.

References EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

void EECFI::OrbitId::init ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
double  time,
double  pos[3],
double  vel[3],
long  absOrbit 
) throw (CfiError)

Initialise the orbit using state vector.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum).
time Time.
pos Position vector [m].
vel Velocity vector [m/s].
absOrbit Absolute orbit.
void EECFI::OrbitId::init ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
double  time,
double  pos[3],
double  vel[3],
long  absOrbit,
const PropagPreciseConf preciseConf 
) throw (CfiError)

Initialise the orbit using state vector with numerical propagator.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum).
time Time.
pos Position vector [m].
vel Velocity vector [m/s].
absOrbit Absolute orbit.
preciseConf Numerical propagator configuration. Allowed range for some members:

  • step: > 0
  • gravDegree, gravOrder: depend on gravFile used
  • ap, f107, f107a: > 0
  • scMass: > 0
  • scDragCoeff, scDragArea: > 0
  • scSrpCoeff, scSrpArea: > 0

.

void EECFI::OrbitId::init ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
long  orbitFileMode,
const vector< string > &  inputFiles,
long  timeInitMode,
double  time0,
double  time1,
long  orbit0,
long  orbit1,
const PropagPreciseConf preciseConf 
) throw (CfiError)

Initialise the orbit using orbit file with numerical propagator.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum. When using DORIS Navigator files and time_mode is XOCFI_SEL_TIME, only XOCFI_TIME_UTC is allowed.).
orbitFileMode Flag that indicates the type of the input orbit file (OrbitInitModeEnum ONLY PRECISE models).

  • There exists the posibility of detecting automatically the type of the files using the value XOCFI_ORBIT_INIT_AUTO.

.

inputFiles Vector of orbit files.
timeInitMode Flag for selecting the time range of the initialisation (XOCFI_SEL_FILE, XOCFI_SEL_TIME, XOCFI_SEL_ORBIT. For DORIS Navigator files, XOCFI_SEL_ORBIT is not allowed).
For TLE files, the whole file is always selected (this flag and the parameters time0/time1, orbit0/orbit1 are dummies).
time0 Start time [Decimal days (Processing format)].
time1 Stop time [Decimal days (Processing format)].
orbit0 Start orbit.
orbit1 Stop orbit.
preciseConf Numerical propagator configuration. Allowed range for some members:

  • step: > 0
  • gravDegree, gravOrder: depend on gravFile used
  • ap, f107, f107a: > 0
  • scMass: > 0
  • scDragCoeff, scDragArea: > 0
  • scSrpCoeff, scSrpArea: > 0

.

void EECFI::OrbitId::init ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
double  time,
long  orbit0,
long  driftMode,
double  ascMlstDrift,
double  inclination,
long  irep,
long  icyc,
double  rlong,
double  ascMlst 
) throw (CfiError)

Initialise the orbit using orbital parameters.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum).
time Reference time (Decimal days - Processing format).
orbit0 Absolute orbit number of the reference orbit.
driftMode Flag to select between mlst and inclination as input characterization of reference orbit. Allowed values:

  • XOCFI_NOSUNSYNC_DRIFT
  • XOCFI_NOSUNSYNC_INCLINATION
  • XOCFI_NOSUNSYNC_DRIFT + XOCFI_NOSUNSYNC_USE_SIM_MODEL
  • XOCFI_NOSUNSYNC_INCLINATION + XOCFI_NOSUNSYNC_USE_SIM_MODEL

.

ascMlstDrift Drift in mlst of the reference orbit [seconds/day].
inclination Inclination of the reference orbit [deg]. Allowed range = [0, 180].
irep Repeat cycle of the reference orbit [days]. Allowed range: > 0.
icyc Cycle length of the reference orbit [orbits]. Allowed range: > 0.
rlong Geocentric longitude of the ascending node (EF RF) [deg]. Allowed range = [0, 360)
ascMlst MLST at ascending node [Decimal hours]. Allowed range = [0, 24).
void EECFI::OrbitId::init ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
long  orbitFileMode,
const vector< string > &  inputFiles,
long  timeInitMode,
double  time0,
double  time1,
long  orbit0,
long  orbit1 
) throw (CfiError)

Initialise the orbit using orbit files.

Parameters:
satId Satellite Id.
modelId Model Id.
timeCor Time correlations.
timeRef Time reference (TimeRefOrbitEnum. When using DORIS Navigator files and time_mode is XOCFI_SEL_TIME, only XOCFI_TIME_UTC is allowed.).
orbitFileMode Flag that indicates the type of the input orbit file (OrbitInitModeEnum except PRECISE models).

  • There exists the posibility of detecting automatically the type of the files using the value XOCFI_ORBIT_INIT_AUTO.
  • The Orbit Event files are used as Orbit Scenario files if the AUTO mode is selected. In case they want to be used as Predicted orbit files, the option XOCFI_ORBIT_INIT_OEF_POF_MODE should be chosen.
  • The AUTO mode cannot be used to detect TLE files.

.

inputFiles Vector of orbit files.
timeInitMode Flag for selecting the time range of the initialisation (XOCFI_SEL_FILE, XOCFI_SEL_TIME, XOCFI_SEL_ORBIT. For DORIS Navigator files, XOCFI_SEL_ORBIT is not allowed).
For TLE files, the whole file is always selected (this flag and the parameters time0/time1, orbit0/orbit1 are dummies).
time0 Start time [Decimal days (Processing format)].
time1 Stop time [Decimal days (Processing format)].
orbit0 Start orbit.
orbit1 Stop orbit.
void EECFI::OrbitId::operator= ( const OrbitId orbitIdIn  ) 

Copy operator.

Parameters:
orbitIdIn OrbitId we want to copy.

References EECFI::CfiId::addInstance().

StateVector EECFI::OrbitId::osvCompute ( long  mode,
long  timeRef,
double  time 
) const throw (CfiError)

Computes a satellite state vector for a given time.

Overview

The OrbitId::osvCompute function computes accurate state vectors for user requested times.
The behaviour of the function depends strongly in the way in which the orbitId was initialised (see Orbit::init).
During the computation, some results are stored in the input orbitId. Those results can be used afterwards for other computations (in OrbitId::osvCompute or OrbitId::osvComputeExtra).
An OSV can be computed within a validity time range that also depends on input orbitId variable.

Computation methods (Propagation/interpolation)

The methods used to compute the state vector depends on the way in which the orbit was initialised. Note that the computation method is selected automatically by the routine. Next table summarises the dependency of the computation method with the orbit initialisation. The methods in the second column are described in detail in the following subsections.
Orbit initialisation mode OSV computation method
XOCFI_ORBIT_INIT_ORBIT_CHANGE_MODE
Initialised using an orbit definition
Mean Keplerian Propagation Model with "AUTO" and "DOUBLE" modes.
XOCFI_ORBIT_INIT_OSF_MODE
XOCFI_ORBIT_INIT_OEF_OSF_MODE
Initialised with an OSF file
(or an OEF but reading the list of orbital changes in the data block of the file)
XOCFI_ORBIT_INIT_POF_MODE
XOCFI_ORBIT_INIT_OEF_POF_MODE
Initialised with a POF file
(or an OEF but reading the list of State Vectors in the data block of the file)
XOCFI_ORBIT_INIT_STATE_VECTOR_MODE
Initialised with an orbit state vector
Mean Keplerian Propagation Model
XOCFI_ORBIT_INIT_POF_N_DORIS_MODE:
Initialised with a POF and a DORIS file
XOCFI_ORBIT_INIT_TLE_MODE
Initialised with a TLE file
TLE propagation mode with "AUTO" mode
XOCFI_ORBIT_INIT_POF_PRECISE_MODE
XOCFI_ORBIT_INIT_OEF_POF_PRECISE_MODE
Initialised with a POF file
(or an OEF but reading the list of State Vectors in the data block of the file)
Numerical propagator with "AUTO" mode
XOCFI_ORBIT_INIT_ROF_PRECISE_MODE
Initialised with xo_orbit_init_file_precise with a ROF file
XOCFI_ORBIT_INIT_DORIS_PRECISE_MODE
Initialised with xo_orbit_init_file_precise with a DORIS Navigator file
XOCFI_ORBIT_INIT_STATE_VECTOR_PRECISE_MODE
Initialised with xo_orbit_cart_init_precise
Numerical propagator
XOCFI_ORBIT_INIT_POF_N_DORIS_PRECISE_MODE
Initialised with xo_orbit_init_file_precise with a POF and a DORIS Navigator file
XOCFI_ORBIT_INIT_ROF_MODE
Initialised with xo_orbit_init_file with a ROF file
Interpolation
XOCFI_ORBIT_INIT_DORIS_MODE
Initialised with xo_orbit_init_file with a DORIS Navigator file

Propagation methods

For the time being, the following propagation models are supported:
  • Mean Keplerian model. It implies the use of a formulation for the time rates of change for the different mean Kepler elements as functions of a given initial set of mean Kepler elements. Using the above time rates of change, the mean orbital elements can be propagated forward or backward in time by extrapolating the individual time slopes of the superimposed secular and long-periodic perturbations functions. As the long periodic variations have typically periods on the order of months, a near-linear time slope for prediction intervals of many orbits is warranted.
  • TLE model.This model propagates the state vector using the NORAD "two line elements" (TLE) and the SGP4 propagation theroy. This theory was designed for near Earth Satellites (nodal period less than 225 minutes). The SGP4 theory uses an Earth gravitational field through zonal terms J2, J3 and J4 and a power density function for the atmospheric model (assuming a non-rotating spherical model).
  • Numerical propagator. This model consists on a numerical propagator that integrates the movement equations using a Runge-Kutta algorithm of 8th order. This propagator is expected to produce more precise results than the other models as it can be configured by the user (through the orbit initialisation function) to take into account the following perturbations:
    • Non-spherical gravity: the model Earth Gravity Model 1996 is used. The file with the coefficients of the spherical harmonics must be provided by the user, besides the order and degree to be used in the calculations.
    • Atmospheric drag: MSIS-E-90 atmospheric density model is used. The user must provide the Solar Geomagnetic Activity and F107 coefficient, either as input files or with constant values. The values can be obtained from ESA-ECSS or NASA documentation. The user must provide the drag effective area and drag coefficient of the satellite, besides the mass of the satellite.
    • Solar radiation pressure: it is calculated using the solar radiation pressure effective area and solar radiation pressure coefficient of the satellite provided by the user.
    • Third body perturbations: the perturbations produced by the Sun and the Moon gravities are calculated.
  • Spot elements model (still TBD). This model is based upon the usage of an extended orbit state vector (originally used for SPOT satellites and currently for MetOp). The calculation of the orbit state vector is made by fitting them using a predicted or restituted orbit file.
"AUTO" and "DOUBLE" refer to the way in which the seed (initial state vector used as reference to begin the propagation) is taken:
  • AUTO mode: The seed is taken to be the closer ANX or OSV to the requested time. The propagation seed could change from one propagation to the following.
  • DOUBLE mode: the two ANX covering the propagation time are used as seeds. When calling OrbitId::osvCompute, the propagation is performed from each of the ANX and then a weighted average is done. The weight function is:
    where Dt = t - tANX and T is the nodal period of the orbit.
    This propagation method removes any discontinuity that may arise when changing the state vector around the true ascending node crossing used as seed for the propagation.
Finally, the validity time interval for the propagation also depends on the propagation method. The next table summarises all the propagation cases, explaining the seed that is taken in every case and how the validity interval is taken. In the table, t0 represent the input time for OrbitId::osvCompute. In the fourth column, the horizontal solid line in the graphic represents the list of OSV or ANX that are stored in the orbit initialisation, t_start and t_stop are the first and last OSV(ANX) in that line. Red square brackets represent the validity period for propagation. When using the AUTO mode, the seed for the propagation changes if t0 jumps out of the region in blue brackets. The red arrow(s) represent the chosen seed(s) (OSV or ANX).
Note that the cases with "NO AUTO" mode are similar to those with "AUTO" mode with one OSV.
The precise propagator stores the result of the last propagation, so that the next propagation begins from that point if the time begins after the last propagation (it saves computation time). If the propagation is requested at a time that is before the time of the previous propagation time, then the original seed is taken.

Interpolation methods

The function OrbitId::osvCompute computes the OSV using an interpolation algorithm when the orbitId is initialised with ROF’s or DORIS Navigator files. The interpolation is highly accurate (1 mm. accuracy TBC) when it is performed between 4 OSV’s time intervals after start of file(s) and before end of file(s), but it degrades (up to a few cm. TBC) until 1 or 2 time intervals (TBD) before start of file(s) and after end of file(s). Next figure provides a graphical explanation:
The OrbitId::osvCompute function allows to extrapolate, that is, compute results for the 1 or 2 (TBC) intervals before start of the input file(s) and after enf of the input file. Anyway, extrapolation is not recommended. In this case, the extrapolation window is NOT included in the valid time interval. When the interpolation is in "degraded" mode, that is, when extrapolation is used, or when there is less than four orbit state vectors available in the input file before or after the requested time, OrbitId::osvCompute function will issue different warnings messages indicating that a degraded interpolation or extrapolation is performed. If the requested time is out the allowed extrapolation range, the function will return an error message.
Parameters:
mode Propagation/interpolation mode (dummy for current version).
timeRef Time reference (TimeRefOrbitEnum).
time Time.
Returns:
Propagated/interpolated state vector (Eath Fixed RF).
StateVectorExtraInfo EECFI::OrbitId::osvComputeExtra ( long  extraChoice  )  const throw (CfiError)

Get orbital auxiliary data for the satellite state vector computed with osvCompute.

This software returns ancillary results derived from an orbit state vector obtained from the OrbitId::osvCompute routine (stored within the orbit Id). This state vector depends on which is the last function called:
  • when calling OrbitId::osvComputeExtra after initialising the orbit Id, the selected state vector is:
    • the one that is selected as seed for the propagation.
    • the first OSV stored in the orbitId if it is initialised for interpolation.
  • when calling after OrbitId::osvCompute, the Cartesian orbit state vector is the one predicted at the requested time in that routine.

Results vectors

The following tables describe the set of parameters are computed with OrbitId::osvComputeExtra.
The model-dependent parameters vector (note that there is an enumeration associated to the elements of the results vectors - OrbitExtraModelMKODependantEnum) is in next tables. These parameters depends on the way in which the input orbitId was initialised (the orbit mode). So, in table "Ancillary results vector. Model-dependent parameters" a column "OSV compute model" indicates the models for which that parameter can be computed. To simplify, the models are indicated with the following correspondence:
Orbit initialisation mode OSV compute model
XOCFI_ORBIT_INIT_ORBIT_CHANGE_MODE
XOCFI_ORBIT_INIT_OSF_MODE
XOCFI_ORBIT_INIT_OEF_OSF_MODE
XOCFI_ORBIT_INIT_POF_MODE
XOCFI_ORBIT_INIT_OEF_POF_MODE
XOCFI_ORBIT_INIT_STATE_VECTOR_MODE
XOCFI_ORBIT_INIT_POF_N_DORIS_MODE
Mean Kepler
XOCFI_ORBIT_INIT_TLE_MODE TLE
XOCFI_ORBIT_INIT_POF_PRECISE_MODE
XOCFI_ORBIT_INIT_OEF_POF_PRECISE_MODE
XOCFI_ORBIT_INIT_ROF_PRECISE_MODE
XOCFI_ORBIT_INIT_DORIS_PRECISE_MODE
XOCFI_ORBIT_INIT_STATE_VECTOR_PRECISE_MODE
XOCFI_ORBIT_INIT_POF_N_DORIS_PRECISE_MODE
Precise
XOCFI_ORBIT_INIT_ROF_MODE
XOCFI_ORBIT_INIT_DORIS_MODE
Interpolation

Ancillary results vector. Model-dependent parameters
Result parameter Set Description (Reference) Unit (Format) Allowed Range OSV compute model
[0]
XOCFI_ORBIT_EXTRA_DEP_NODAL_PERIOD
ANX Timing Nodal period s >= 0
  • Mean Kepler
  • Interpolation
[1]
XOCFI_ORBIT_EXTRA_DEP_UTC_CURRENT_ANX
Time of current ANX decimal days (Processing format) -
[2]
XOCFI_ORBIT_EXTRA_DEP_ORBIT_NUMBER
Position in orbit Absolute Orbit Number - > 0
  • Mean Kepler
  • TLE
  • Interpolation
  • Precise
[3]
XOCFI_ORBIT_EXTRA_DEP_SEC_SINCE_ANX
Time since ANX s >= 0
< Nodal Period
[4:9]
XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_A
XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_E
XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_I
XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_RA
XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_W
XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_M
Mean Kepler Mean Kepler elements of the propagated OSV (True of Date) - -
  • Mean Kepler
  • Precise
The model-independent parameters vector (note that there is an enumeration associated to the elements of the results vectors - OrbitExtraModelMKOIndependantEnum):
Ancillary results vector. Model-independent parameters
Result parameter (res element) Set Description (Reference) Unit (Format) Allowed Range
[0]
XOCFI_ORBIT_EXTRA_GEOC_LONG
Geolocation Geocentric longitude of satellite and SSP (EF frame) deg >= 0
< 360
[1]
XOCFI_ORBIT_EXTRA_GEOD_LAT
Geodetic latitude of satellite and SSP (EF frame) deg >= -90
<= +90
[2]
XOCFI_ORBIT_EXTRA_GEOD_ALT
Geodetic altitude of the satellite (EF frame) m -
[3]
XOCFI_ORBIT_EXTRA_GEOC_LONG_D
Geolocation rate Geocentric longitude rate of satellite and SSP (EF frame) deg/s -
[4]
XOCFI_ORBIT_EXTRA_GEOD_LAT_D
Geodetic latitude rate of satellite and SSP (EF frame) deg/s -
[5]
XOCFI_ORBIT_EXTRA_GEOD_ALT_D
Geodetic altitude rate of the satellite (EF frame) m/s -
[6]
XOCFI_ORBIT_EXTRA_GEOC_LONG_2D
Geolocation rate rate Geocentric longitude rate-rate of satellite and SSP (EF frame) deg/s2 -
[7]
XOCFI_ORBIT_EXTRA_GEOD_LAT_2D
Geodetic latitude rate-rate of satellite and SSP (EF frame) deg/s2 -
[8]
XOCFI_ORBIT_EXTRA_GEOD_ALT_2D
Geodetic altitude rate-rate of the satellite (EF frame) m/s2 -
[9]
XOCFI_ORBIT_EXTRA_RAD_CUR_PARALLEL_MERIDIAN
Geolocation extra Radius of curvature parallel to meridian at the SSP (EF frame) m >= 0
[10]
XOCFI_ORBIT_EXTRA_RAD_CUR_ORTHO_MERIDIAN
Radius of curvature orthogonal to meridian at the SSP (EF frame) m >= 0
[11]
XOCFI_ORBIT_EXTRA_RAD_CUR_ALONG_GROUNDTRACK
Radius of curvature along groundtrack at the SSP (EF frame) m >= 0
[12]
XOCFI_ORBIT_EXTRA_NORTH_VEL
Earth-fixed velocity Northward component of the velocity relative to the Earth of the SSP (Topocentric frame) m/s -
[13]
XOCFI_ORBIT_EXTRA_EAST_VEL
Eastward component of the velocity relative to the Earth of the SSP (Topocentric frame) m/s -
[14]
XOCFI_ORBIT_EXTRA_MAG_VEL
Magnitude of the velocity relative to the Earth of the SSP (Topocentric frame) m/s >= 0
[15]
XOCFI_ORBIT_EXTRA_AZ_VEL
Azimuth of the velocity relative to the Earth of the SSP (Topocentric frame) deg >= 0
< 360
[16]
XOCFI_ORBIT_EXTRA_NORTH_ACC
Earth-fixed acceleration Northward component of the acceleration relative to the Earth of the SSP (Topocentric frame) m/s2 -
[17]
XOCFI_ORBIT_EXTRA_EAST_ACC
Eastward component of the acceleration relative to the Earth of the SSP (Topocentric frame) m/s2 -
[18]
XOCFI_ORBIT_EXTRA_GROUNDTRACK_TANG_ACC
Groundtrack tangential component of the acceleration relative to the Earth of the SSP (Topocentric frame) m/s2 -
[19]
XOCFI_ORBIT_EXTRA_AZ_ACC
Azimuth of the acceleration relative to the Earth of the SSP (Topocentric frame) deg >= 0
< 360
[20]
XOCFI_ORBIT_EXTRA_SAT_ECLIPSE_FLAG
Sun Satellite eclipse flag
0 = No
1 = Yes
- 0, 1
[21]
XOCFI_ORBIT_EXTRA_SZA
Sun Zenith Angle deg >= 0
< 180
[22]
XOCFI_ORBIT_EXTRA_MLST
Mean local solar time at the SSP decimal hour >= 0
< 24
[23]
XOCFI_ORBIT_EXTRA_TLST
True local solar time at the SSP decimal hour >= 0
< 24
[24]
XOCFI_ORBIT_EXTRA_TRUE_SUN_RA
True Sun’s (centre) right ascension (TOD frame) deg >= 0
< 360
[25]
XOCFI_ORBIT_EXTRA_TRUE_SUN_DEC
True Sun’s (centre) declination (TOD frame) deg >= -90
<= +90
[26]
XOCFI_ORBIT_EXTRA_TRUE_SUN_SEMI_DIAM
True Sun’s semi-diameter deg >= 0
[27]
XOCFI_ORBIT_EXTRA_MOON_RA
Moon Moon’s (centre) right ascension (TOD frame) deg >= 0
< 360
[28]
XOCFI_ORBIT_EXTRA_MOON_DEC
Moon’s (centre) declination (TOD frame) deg >= -90
<= +90
[29]
XOCFI_ORBIT_EXTRA_MOON_SEMI_DIAM
Moon’s semi-diameter deg >= 0
[30]
XOCFI_ORBIT_EXTRA_MOON_AREA_LIT
Area of Moon lit by Sun - >= 0
<= 1
[31:36]
XOCFI_ORBIT_EXTRA_OSC_KEPL_A
XOCFI_ORBIT_EXTRA_OSC_KEPL_E
XOCFI_ORBIT_EXTRA_OSC_KEPL_I
XOCFI_ORBIT_EXTRA_OSC_KEPL_RA
XOCFI_ORBIT_EXTRA_OSC_KEPL_W
XOCFI_ORBIT_EXTRA_OSC_KEPL_M
Osculating Kepler Osculating Keplerian elements of the OSV (TOD frame) - -
[37]
XOCFI_ORBIT_EXTRA_ORBIT_RAD
Inertial Aux Orbit radius (TOD frame) m >= 0
[38]
XOCFI_ORBIT_EXTRA_RADIAL_ORB_VEL
Radial orbit velocity component (TOD frame) m/s -
[39]
XOCFI_ORBIT_EXTRA_TRANS_ORB_VEL
Transversal orbit velocity component (TOD frame) m/s -
[40]
XOCFI_ORBIT_EXTRA_ORB_VEL_MAG
Orbit velocity magnitude (TOD frame) m/s >= 0
[41]
XOCFI_ORBIT_EXTRA_RA_SAT
Right ascension of the satellite (TOD frame) deg >= 0
< 360
[42]
XOCFI_ORBIT_EXTRA_DEC_SAT
Declination of the satellite (TOD frame) deg >= -90
<= +90
[43]
XOCFI_ORBIT_EXTRA_EARTH_ROTATION_ANGLE
Earth rotation angle [H] deg >= 0
< 360
[44]
XOCFI_ORBIT_EXTRA_RA_SAT_D
Right ascension rate of the satellite (TOD frame) deg/s -
[45]
XOCFI_ORBIT_EXTRA_RA_SAT_2D
Right ascension rate-rate of the satellite (TOD frame) deg/s2 -
[46]
XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT
Satellite osculating true latitude (TOD frame) deg >= 0
< 360
[47]
XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_D
Satellite osculating true latitude rate (TOD frame) deg/s -
[48]
XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_2D
Satellite osculating true latitude rate-rate (TOD frame) deg/s2 -
Parameters:
extraChoice Flag to select the type of extra information (OrbitExtraChoiceEnum).
Returns:
State vector extra information..

References EECFI::StateVectorExtraInfo::modelDep, and EECFI::StateVectorExtraInfo::modelIndep.

TleRec EECFI::OrbitId::osvToTle ( long  timeMode,
long  timeRef,
double  time0,
double  time1,
long  orbit0,
long  orbit1 
) throw (CfiError)

Generate a TLE by fitting the set of orbit state vectors stored in the OrbitId.

Parameters:
timeMode Time/orbit selection (XOCFI_SEL_TIME, XOCFI_SEL_ORBIT or XOCFI_SEL_DEFAULT). For the XOCFI_SEL_DEFAULT mode, the whole range of orbits stored in the orbitId is selected.
timeRef Time reference (TimeRefOrbitEnum). Only used if timeMode is XOCFI_SEL_FILE.
time0 Start time [days].
time1 Stop time [days].
orbit0 Start orbit.
orbit1 Stop orbit.
Returns:
Two Line Element.
SatId EECFI::OrbitId::satId (  )  const

Return satellite id.

Returns:
Satellite id.
void EECFI::OrbitId::setAnx ( const vector< ANXExtra > &  anxList  ) 

Sets the list of ANX data stored in the OrbitId object.

Parameters:
anxList List of ANX info.

References EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

void EECFI::OrbitId::setOsf ( const vector< OsfRecords > &  osfRecList  ) 

Sets the list of orbital changes stored in the OrbitId object.

Parameters:
osfRecList List of orbit changes.

References EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

void EECFI::OrbitId::setOsv ( const vector< OsvRec > &  osvRecList  ) 

Sets the list of orbit state vectors stored in the OrbitId object.

Parameters:
osvRecList List of orbit state vectors.

References EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

void EECFI::OrbitId::setValTime ( const ValidityTime valTime  ) 

Generated on Thu Jul 15 2010 10:11:04 for by doxygen 1.7.1