| Earth Observation Mission CFI Software Orbit Software User Manual |

Public Member Functions | Protected Member Functions

# EECFI::OrbitId Class Reference

Class that stores the orbit data. More...

Inheritance diagram for EECFI::OrbitId:

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, long orbit0, const RefOrbitInfo &refOrbitInfo) throw (CfiError)
| 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 (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, vector< OsfFile > &osfData, long timeInitMode, double time0, double time1, long orbit0, long orbit1) throw (CfiError)
| Class constructor: using data read from OSF.
| OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, vector< OrbitFile > &osvData, long timeInitMode, double time0, double time1, long orbit0, long orbit1) throw (CfiError)
| Class constructor: using data read from Orbit files (POF or ROF).
| OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, vector< OrbitFile > &osvData, OrbitChangeData orbitChangeData, long timeInitMode, double time0, double time1, long orbit0, long orbit1) throw (CfiError)
| OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, vector< DorisFile > &dorisData, long timeInitMode, double time0, double time1, long orbit0, long orbit1) throw (CfiError)
| Class constructor: using data read from DORIS files.
| OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, vector< DorisFile > &dorisData, OrbitChangeData orbitChangeData, long timeInitMode, double time0, double time1, long orbit0, long orbit1) throw (CfiError)
| OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, vector< SP3File > &sp3Data, long timeInitMode, double time0, double time1) throw (CfiError)
| Class constructor: using data read from SP3 files.
| OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, const GeoOrbitInitData &geoOrbitInit) throw (CfiError)
| OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, vector< OemFile > &oemData, long timeInitMode, double time0, double time1) throw (CfiError)
| Class constructor: using data read from OEM files.
| 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, long orbit0, const RefOrbitInfo &refOrbitInfo) throw (CfiError)
| Class constructor: using orbital parameters with support for MLST non linear drift.
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.
void | init (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, const GeoOrbitInitData &geoOrbitInit) throw (CfiError)
void | change (OrbitChangeData changeData) throw (CfiError)
| Updates orbit numbers of state vectors in orbit id using as reference the provided Osf File or combination of Orbit/Time parameters.
SatId | satId () const
| Return satellite id.
vector< OsvRec > | getOsv () 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< ANXExtra > | getAnx () 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< OsfRecords > | getOsf () 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.
void | setGeoOrbitInfo (const GeoOrbitInfo &geoOrbitInfo) throw (CfiError)
| Set geostationary satellite information.
GeoOrbitInfo | getGeoOrbitInfo () throw (CfiError)
| Get geostationary satellite information.
OrbitalInfo | getOrbitInfo (long absoluteOrbit) const throw (CfiError)
| Returns orbital information for a requested orbit.
void | orbitInfoConfigure (long item, long option) const throw (CfiError)
| Method that can be used to activate/deactivate the computation of several parameters in call to OrbitId::getOrbitInfo.
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.
StateVector | positionOnOrbitToTime (long abs_orbit_number, long angle_type, double angle, double angle_rate, double angle_rate_rate, long deriv, long time_ref) const throw (CfiError)
| Calculates the time, position and velocity vectors in Earth-Fixed associated to a given position on orbit.
TleRec | osvToTle (long timeMode, long timeRef, double time0, double time1, long orbit0, long orbit1) throw (CfiError)
| Generates a TLE by fitting the set of orbit state vectors stored in the orbit_id.
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.

This method is deprecated. Use the one that uses a RefOrbitInfo object to introduce orbital parameters.
In order to obtain results consistent with that obtained with an Orbit Scenario file, the drift_mode flag has to be set to drift_mode = XO_NOSUNSYNC_DRIFT + XO_NOSUNSYNC_USE_SIM_MODEL.

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,
|  | long | orbit0,
|  | const RefOrbitInfo & | refOrbitInfo |
| ) |  |  | throw (CfiError)

Class constructor: using orbital parameters with support for MLST non linear drift. In order to obtain results consistent with that obtained with an Orbit Scenario file, the drift_mode flag has to be set to drift_mode = XO_NOSUNSYNC_DRIFT + XO_NOSUNSYNC_USE_SIM_MODEL.

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.
  | refOrbitInfo | Orbital parameters, including MLST non linear drift.

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.

In order to read files, this method internally uses Data Handling functions. Please refer to [D_H_SUM] for further details.
Note: if the input list of files are one Orbit Scenario File (OSF) plus files contaning state vectors (FOS predcited, FOS restituted, DORIS files, OEM files -POF/ROF/DORIS/OEM respectively-), the orbit id is initialized with the state vectors in POF/ROF/DORIS/OEM, but the orbit number of every state vector is corrected to be consistent with the one expected from OSF. In this case, the OSF shall be the first item of the input files input array; the orbit file mode must be set explicitly to respectively XOCFI_ORBIT_INIT_POF_ORBNUM_ADJ_MODE, XOCFI_ORBIT_INIT_ROF_ORBNUM_ADJ_MODE, XOCFI_ORBIT_INIT_DORIS_ORBNUM_ADJ_MODE, XOCFI_ORBIT_INIT_OEM_ORBNUM_ADJ_MODE.

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. .
  | 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.

In order to read files, this method internally uses Data Handling functions. Please refer to [D_H_SUM] for further details.

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 | ( | const SatId & | satId,
|  | const ModelId & | modelId,
|  | const TimeCorrelation & | timeCor,
|  | long | timeRef,
|  | long | orbitFileMode,
|  | vector< OsfFile > & | osfData,
|  | long | timeInitMode,
|  | double | time0,
|  | double | time1,
|  | long | orbit0,
|  | long | orbit1 |
| ) |  |  | throw (CfiError)

Class constructor: using data read from OSF.

Parameters:

  | satId | Satellite Id.
  | modelId | Model Id.
  | timeCor | Time correlations.
  | timeRef | Time reference (TimeRefOrbitEnum).
  | orbitFileMode | Flag that indicates the type of the input orbit file (OrbitInitModeEnum). Allowed values: XOCFI_ORBIT_INIT_OSF_MODE XOCFI_ORBIT_INIT_OEF_OSF_MODE XOCFI_ORBIT_INIT_AUTO .
  | osfData | Vector of OsfFile data.
  | timeInitMode | Flag for selecting the time range of the initialisation (XOCFI_SEL_FILE, XOCFI_SEL_TIME, XOCFI_SEL_ORBIT.).
  | time0 | Start time [Decimal days (Processing format)]. Only used if timeInitMode = XOCFI_SEL_TIME
  | time1 | Stop time [Decimal days (Processing format)].Only used if timeInitMode = XOCFI_SEL_TIME
  | orbit0 | Start orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT
  | orbit1 | Stop orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT

References EECFI::CfiError::addMsg().

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

Class constructor: using data read from Orbit files (POF or ROF).

Parameters:

  | satId | Satellite Id.
  | modelId | Model Id.
  | timeCor | Time correlations.
  | timeRef | Time reference (TimeRefOrbitEnum).
  | orbitFileMode | Flag that indicates the type of the input orbit file (OrbitInitModeEnum). Allowed values: XOCFI_ORBIT_INIT_POF_MODE XOCFI_ORBIT_INIT_OEF_POF_MODE XOCFI_ORBIT_INIT_ROF_MODE XOCFI_ORBIT_INIT_AUTO .
  | osvData | Vector of OrbitFile data.
  | timeInitMode | Flag for selecting the time range of the initialisation (XOCFI_SEL_FILE, XOCFI_SEL_TIME, XOCFI_SEL_ORBIT.).
  | time0 | Start time [Decimal days (Processing format)]. Only used if timeInitMode = XOCFI_SEL_TIME
  | time1 | Stop time [Decimal days (Processing format)].Only used if timeInitMode = XOCFI_SEL_TIME
  | orbit0 | Start orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT
  | orbit1 | Stop orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT

References EECFI::CfiError::addMsg().

EECFI::OrbitId::OrbitId | ( | const SatId & | satId,
|  | const ModelId & | modelId,
|  | const TimeCorrelation & | timeCor,
|  | long | timeRef,
|  | long | orbitFileMode,
|  | vector< OrbitFile > & | osvData,
|  | OrbitChangeData | orbitChangeData,
|  | long | timeInitMode,
|  | double | time0,
|  | double | time1,
|  | long | orbit0,
|  | long | orbit1 |
| ) |  |  | throw (CfiError)

Class constructor: using data read from Orbit files (POF or ROF) and OrbitChange parameter. The orbit numbers in state vectors are updated to be in line with information given in OrbitChangeData object.

The orbit number of the state vectors will be updated with the information in orbitChangeData parameter, as per method OrbitId::change.

Parameters:

  | satId | Satellite Id.
  | modelId | Model Id.
  | timeCor | Time correlations.
  | timeRef | Time reference (TimeRefOrbitEnum).
  | orbitFileMode | Flag that indicates the type of the input orbit file (OrbitInitModeEnum). Allowed values: XOCFI_ORBIT_INIT_POF_MODE XOCFI_ORBIT_INIT_OEF_POF_MODE XOCFI_ORBIT_INIT_ROF_MODE XOCFI_ORBIT_INIT_AUTO .
  | osvData | Vector of OrbitFile data.
  | orbitChangeData | Data to change absolute orbit numbers within OrbitId.
  | timeInitMode | Flag for selecting the time range of the initialisation (XOCFI_SEL_FILE, XOCFI_SEL_TIME, XOCFI_SEL_ORBIT.).
  | time0 | Start time [Decimal days (Processing format)]. Only used if timeInitMode = XOCFI_SEL_TIME
  | time1 | Stop time [Decimal days (Processing format)].Only used if timeInitMode = XOCFI_SEL_TIME
  | orbit0 | Start orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT
  | orbit1 | Stop orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT

References EECFI::CfiError::addMsg().

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

Class constructor: using data read from DORIS files.

Parameters:

  | satId | Satellite Id.
  | modelId | Model Id.
  | timeCor | Time correlations.
  | timeRef | Time reference (TimeRefOrbitEnum. if timeInitMode is XOCFI_SEL_TIME, only XOCFI_TIME_UTC is allowed.).
  | orbitFileMode | Flag that indicates the type of the input orbit file (OrbitInitModeEnum). Allowed values: XOCFI_ORBIT_INIT_DORIS_MODE XOCFI_ORBIT_INIT_AUTO .
  | dorisData | Vector of DorisFile data.
  | timeInitMode | Flag for selecting the time range of the initialisation (Allowed values: XOCFI_SEL_FILE, XOCFI_SEL_TIME).
  | time0 | Start time [Decimal days (Processing format)]. Only used if timeInitMode = XOCFI_SEL_TIME
  | time1 | Stop time [Decimal days (Processing format)].Only used if timeInitMode = XOCFI_SEL_TIME
  | orbit0 | Start orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT
  | orbit1 | Stop orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT

References EECFI::CfiError::addMsg().

EECFI::OrbitId::OrbitId | ( | const SatId & | satId,
|  | const ModelId & | modelId,
|  | const TimeCorrelation & | timeCor,
|  | long | timeRef,
|  | long | orbitFileMode,
|  | vector< DorisFile > & | dorisData,
|  | OrbitChangeData | orbitChangeData,
|  | long | timeInitMode,
|  | double | time0,
|  | double | time1,
|  | long | orbit0,
|  | long | orbit1 |
| ) |  |  | throw (CfiError)

Class constructor: using data read from DORIS files and OrbitChange parameter. The orbit numbers in state vectors are updated to be in line with information given in OrbitChangeData object.

The method OrbitId::change updates the orbit number in the state vectors of an orbit id that has been previously initialized with Predicted Orbit, Restituted Orbit or DORIS files. The correction to be applied to orbit numbers is calculated depending on the input provided in the orbitChangeData input parameter:

- With an OSF (orbitChangeData.changeMode = XOCFI_ORBIT_ID_CHANGE_OSF). In this case, the time of the first state vector in the orbit id is used to compute the orbit number that the OSF file predicts for that time. All the state vector orbit numbers are corrected accordingly: if the orbit number and time of the first OSV in the orbit id are respectively N and T and the orbit number of the OSV computed at the same time T using the OSF is M, then the orbit numbers of all OSVs in the orbit id are increased of M-N. The field orbitChangeData.changeFile is of type xd_eocfi_file (only OSF file type is supported).
- With an input TIME+ORBIT (orbitChangeData.changeMode = XOCFI_ORBIT_ID_CHANGE_TIME_ORBIT). In this case, if T and M are respectively time and orbit provided by the user, the function first computes the OSV at time T and the corresponding orbit number N, then the orbit numbers of all OSVs in the orbit id are increased of M-N. Time T shall be within the orbit id validity.

Parameters:

  | satId | Satellite Id.
  | modelId | Model Id.
  | timeCor | Time correlations.
  | timeRef | Time reference (TimeRefOrbitEnum. if timeInitMode is XOCFI_SEL_TIME, only XOCFI_TIME_UTC is allowed.).
  | orbitFileMode | Flag that indicates the type of the input orbit file (OrbitInitModeEnum). Allowed values: XOCFI_ORBIT_INIT_DORIS_MODE XOCFI_ORBIT_INIT_AUTO .
  | dorisData | Vector of DorisFile data.
  | orbitChangeData | Data to change absolute orbit numbers within OrbitId.
  | timeInitMode | Flag for selecting the time range of the initialisation (Allowed values: XOCFI_SEL_FILE, XOCFI_SEL_TIME).
  | time0 | Start time [Decimal days (Processing format)]. Only used if timeInitMode = XOCFI_SEL_TIME
  | time1 | Stop time [Decimal days (Processing format)].Only used if timeInitMode = XOCFI_SEL_TIME
  | orbit0 | Start orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT
  | orbit1 | Stop orbit. Only used if timeInitMode = XOCFI_SEL_ORBIT

References EECFI::CfiError::addMsg().

EECFI::OrbitId::OrbitId | ( | const SatId & | satId,
|  | const ModelId & | modelId,
|  | const TimeCorrelation & | timeCor,
|  | long | timeRef,
|  | long | orbitFileMode,
|  | vector< SP3File > & | sp3Data,
|  | long | timeInitMode,
|  | double | time0,
|  | double | time1 |
| ) |  |  | throw (CfiError)

Class constructor: using data read from SP3 files.

Parameters:

  | satId | Satellite Id.
  | modelId | Model Id.
  | timeCor | Time correlations.
  | timeRef | Time reference (TimeRefOrbitEnum).
  | orbitFileMode | Flag that indicates the type of the input orbit file (OrbitInitModeEnum). Allowed values: XOCFI_ORBIT_INIT_SP3_MODE XOCFI_ORBIT_INIT_AUTO .
  | sp3Data | Vector of SP3File data.
  | timeInitMode | Flag for selecting the time range of the initialisation (XOCFI_SEL_FILE or XOCFI_SEL_TIME).
  | time0 | Start time [Decimal days (Processing format)]. Only used if timeInitMode = XOCFI_SEL_TIME
  | time1 | Stop time [Decimal days (Processing format)].Only used if timeInitMode = XOCFI_SEL_TIME

References EECFI::CfiError::addMsg().

EECFI::OrbitId::OrbitId | ( | const SatId & | satId,
|  | const ModelId & | modelId,
|  | const TimeCorrelation & | timeCor,
|  | const GeoOrbitInitData & | geoOrbitInit |
| ) |  |  | throw (CfiError)

Class constructor: intialization with geostationary satellite. The only input geodetic coordinate taken into account in initialization is the geocentric longitude; the latitude is set to 0. degrees and the altitude is set to 35786 km independently of the inputs.

Parameters:

  | satId | Satellite Id.
  | modelId | Model Id.
  | timeCor | Time correlations.
  | geoOrbitInit | Geostationary satellite initialization information.

EECFI::OrbitId::OrbitId | ( | const SatId & | satId,
|  | const ModelId & | modelId,
|  | const TimeCorrelation & | timeCor,
|  | long | timeRef,
|  | long | orbitFileMode,
|  | vector< OemFile > & | oemData,
|  | long | timeInitMode,
|  | double | time0,
|  | double | time1 |
| ) |  |  | throw (CfiError)

Class constructor: using data read from OEM files.

Parameters:

  | satId | Satellite Id.
  | modelId | Model Id.
  | timeCor | Time correlations.
  | timeRef | Time reference (TimeRefOrbitEnum).
  | orbitFileMode | Flag that indicates the type of the input orbit file (OrbitInitModeEnum). Allowed values: XOCFI_ORBIT_INIT_OEM_MODE XOCFI_ORBIT_INIT_AUTO .
  | oemData | Vector of OemFile data.
  | timeInitMode | Flag for selecting the time range of the initialisation (XOCFI_SEL_FILE or XOCFI_SEL_TIME).
  | time0 | Start time [Decimal days (Processing format)]. Only used if timeInitMode = XOCFI_SEL_TIME
  | time1 | Stop time [Decimal days (Processing format)].Only used if timeInitMode = XOCFI_SEL_TIME

References EECFI::CfiError::addMsg().

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

void EECFI::OrbitId::change | ( | OrbitChangeData | changeData | ) | throw (CfiError)

Updates orbit numbers of state vectors in orbit id using as reference the provided Osf File or combination of Orbit/Time parameters.

- With an OSF. In this case, the time of the first state vector in the orbit id is used to compute the orbit number that the OSF file predicts for that time. All the state vector orbits are corrected accordingly.
- With an input TIME + ORBIT. In this case, it is assumed that the input orbit corresponds to input time, and the orbit number of the state vectors is corrected accordingly.

Parameters:

  | changeData | Structure containing the change mechanism input data (using osf file or time/orbit mode)

References EECFI::CfiError::addMsg().

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.

GeoOrbitInfo EECFI::OrbitId::getGeoOrbitInfo | ( |  | ) | throw (CfiError)

Get geostationary satellite information.

Returns:
  Geostationary orbit information.

References EECFI::CfiError::addMsg(), EECFI::GeoGeodCoord::gcLongitude, EECFI::GeoGeodCoord::gdAltitude, EECFI::GeoGeodCoord::gdLatitude, EECFI::GeoOrbitInfo::geodCoord, and EECFI::CfiClass::throwWarn.

OrbitalInfo EECFI::OrbitId::getOrbitInfo | ( | long | absoluteOrbit | ) | const throw (CfiError)

Returns orbital information for a requested orbit.

Parameters:

  | absoluteOrbit | Absolute orbit

Returns:
  Orbital information of the requested orbit..

References EECFI::OrbitalInfo::absOrbit, EECFI::OrbitalInfo::cycLength, EECFI::OrbitalInfo::meanKep, EECFI::OrbitalInfo::mlst, EECFI::OrbitalInfo::mlstDrift, EECFI::OrbitalInfo::nodalPeriod, EECFI::OrbitalInfo::oscKep, EECFI::OrbitalInfo::phasing, EECFI::OrbitalInfo::posAnx, EECFI::OrbitalInfo::repCycle, EECFI::OrbitalInfo::utcAnx, EECFI::OrbitalInfo::utcSmx, and EECFI::OrbitalInfo::velAnx.

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< OsfRecords > EECFI::OrbitId::getOsf | ( |  | ) | const

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

Returns:
  Vector of orbital changes.

References EECFI::OrbitInfo::absOrbit, EECFI::CfiError::addMsg(), EECFI::OsfRecords::anxInfo, EECFI::RefOrbitInfo::AnxLong, EECFI::AnxInfo::anxPos, EECFI::AnxInfo::anxTai, EECFI::AnxInfo::anxUt1, EECFI::AnxInfo::anxUtc, EECFI::AnxInfo::anxVel, EECFI::OrbitInfo::cycle, EECFI::RefOrbitInfo::cycleLength, EECFI::RefOrbitInfo::driftMode, EECFI::RefOrbitInfo::inclination, EECFI::AnxInfo::kepl, EECFI::MlstNonlinearDrift::linearApproxValidity, EECFI::OsfRecords::missionInfo, EECFI::RefOrbitInfo::mlst, EECFI::RefOrbitInfo::mlstDrift, EECFI::MlstNonlinearDrift::mlstHarmonics, EECFI::RefOrbitInfo::mlstNonlinearDrift, EECFI::OrbitInfo::phase, EECFI::MlstNonlinearDrift::quadraticTerm, EECFI::OsfRecords::refOrbitinfo, EECFI::OrbitInfo::relOrbit, EECFI::RefOrbitInfo::repCycle, EECFI::CfiClass::throwWarn, and EECFI::AnxInfo::tNod.

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.

PropagPreciseConf EECFI::OrbitId::getPrecisePropagConfig | ( |  | ) | const throw (CfiError)

Get numerical propagator configuration.

Returns:
  Numerical propagator configuration.

References EECFI::CfiError::addMsg(), EECFI::PropagPreciseConf::ap, EECFI::PropagPreciseConf::atmosFlag, EECFI::PropagPreciseConf::f107, EECFI::PropagPreciseConf::f107a, EECFI::PropagPreciseConf::gravDegree, EECFI::PropagPreciseConf::gravFile, EECFI::PropagPreciseConf::gravityFlag, EECFI::PropagPreciseConf::gravOrder, EECFI::PropagPreciseConf::modelsPath, EECFI::PropagPreciseConf::scDragArea, EECFI::PropagPreciseConf::scDragCoeff, EECFI::PropagPreciseConf::scMass, EECFI::PropagPreciseConf::scSrpArea, EECFI::PropagPreciseConf::scSrpCoeff, EECFI::PropagPreciseConf::sgaApFile, EECFI::PropagPreciseConf::sgaF107File, EECFI::PropagPreciseConf::sgaFlag, EECFI::PropagPreciseConf::srpFlag, EECFI::PropagPreciseConf::step, EECFI::PropagPreciseConf::thirdbodyFlag, EECFI::CfiClass::throwWarn, and EECFI::PropagPreciseConf::userFlag.

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,
|  | long | orbit0,
|  | const RefOrbitInfo & | refOrbitInfo |
| ) |  |  | throw (CfiError)

Class constructor: using orbital parameters with support for MLST non linear drift.

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.
  | refOrbitInfo | Orbital parameters, including MLST non linear drift.

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.

In order to read files, this method internally uses Data Handling functions. Please refer to [D_H_SUM] for further details.

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. .
  | 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::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.

This method is deprecated. Use the one that uses a RefOrbitInfo object to introduce 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,
|  | 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.

In order to read files, this method internally uses Data Handling functions. Please refer to [D_H_SUM] for further details.

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,
|  | 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,
|  | const GeoOrbitInitData & | geoOrbitInit |
| ) |  |  | throw (CfiError)

Class constructor: intialization with geostationary satellite. The only input geodetic coordinate taken into account in initialization is the geocentric longitude; the latitude is set to 0. degrees and the altitude is set to 35786 km independently of the inputs.

Parameters:

  | satId | Satellite Id.
  | modelId | Model Id.
  | timeCor | Time correlations.
  | geoOrbitInit | Geostationary satellite initialization information.

void EECFI::OrbitId::operator= | ( | const OrbitId & | orbitIdIn | ) |

Copy operator.

Parameters:

  | orbitIdIn | OrbitId we want to copy.

References EECFI::CfiId::addInstance().

void EECFI::OrbitId::orbitInfoConfigure | ( | long | item,
|  | long | option |
| ) |  |  | const throw (CfiError)

Method that can be used to activate/deactivate the computation of several parameters in call to OrbitId::getOrbitInfo.

Some parameters computed by OrbitId::getOrbitInfo require a significant computation time, so their computation is disabled by default and must be activated with orbitInfoConfigure method. The parameters that can be activated currently are the following ones:

- Spacecraft midnight (SMX)

Parameters:

  | item | Orbit info item to be activated/deactivated (OrbitInfoItemsEnum).
  | option | Activate/deactivate item computation (OrbitInfoFlagEnum).

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
XOCFI_ORBIT_INIT_SP3_MODE Initialised with xo_orbit_init_file with a SP3 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 , DORIS Navigator files or SP3 file. 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.

Note: model dependent values are not computed for geostationary satellites.

## 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 (EF frame) | deg | >= 0 < 360
[47] XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_D | Satellite osculating true latitude rate (EF frame) | deg/s | -
[48] XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_2D | Satellite osculating true latitude rate-rate (EF 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)

Generates a TLE by fitting the set of orbit state vectors stored in the orbit_id.

This set of OSVs are selected from the input orbit_id for the orbit/time requested range in the following way:

- If the orbit_id mode is XOCFI_ORBIT_INIT_USER_OSV_LIST_MODE, the first OSV in the orbit_id interval is converted to a TLE (there is not fit)
- If the orbit_id mode is XOCFI_ORBIT_INIT_ROF_MODE or XOCFI_ORBIT_INIT_DORIS_MODE, all the OSVs in the input interval are fitted to the TLE by the Least Square method.
- In other cases (Predicted Orbit files), the input interval is populated with propagated OSV's. These OSV's are fitted to a single TLE by the Least Square method.

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.

StateVector EECFI::OrbitId::positionOnOrbitToTime | ( | long | abs_orbit_number,
|  | long | angle_type,
|  | double | angle,
|  | double | angle_rate,
|  | double | angle_rate_rate,
|  | long | deriv,
|  | long | time_ref |
| ) |  |  | const throw (CfiError)

Calculates the time, position and velocity vectors in Earth-Fixed associated to a given position on orbit.

This position on orbit is defined as the angle between the satellite position and the intersection of the orbital plane with a reference plane (the reference plane is the equator in GM2000, ToD or EF CS).

Parameters:

  | abs_orbit_number | Absolute orbit number
  | angle_type | Angle type
  | angle | Angle describing the position in the orbit
  | angle_rate | Orbit rate > 1st derivate from Angle
  | angle_rate_rate | Orbit rate rate > 2nd derivate from Angle
  | deriv | Derivative ID
  | time_ref | Time Reference

Returns:
  StateVector state vector (Eath Fixed RF)

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::setGeoOrbitInfo | ( | const GeoOrbitInfo & | geoOrbitInfo | ) | throw (CfiError)

Set geostationary satellite information.

Parameters:

  | geoOrbitInfo | Geostationary orbit information.

References EECFI::CfiError::addMsg().

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::setPrecisePropagConfig | ( | const PropagPreciseConf & | preciseConf | ) |

Set numerical propagator configuration.

Parameters:

  | preciseConf | Numerical propagator configuration.

References EECFI::CfiError::addMsg(), EECFI::PropagPreciseConf::ap, EECFI::PropagPreciseConf::atmosFlag, EECFI::PropagPreciseConf::f107, EECFI::PropagPreciseConf::f107a, EECFI::PropagPreciseConf::gravDegree, EECFI::PropagPreciseConf::gravFile, EECFI::PropagPreciseConf::gravityFlag, EECFI::PropagPreciseConf::gravOrder, EECFI::PropagPreciseConf::modelsPath, EECFI::PropagPreciseConf::scDragArea, EECFI::PropagPreciseConf::scDragCoeff, EECFI::PropagPreciseConf::scMass, EECFI::PropagPreciseConf::scSrpArea, EECFI::PropagPreciseConf::scSrpCoeff, EECFI::PropagPreciseConf::sgaApFile, EECFI::PropagPreciseConf::sgaF107File, EECFI::PropagPreciseConf::sgaFlag, EECFI::PropagPreciseConf::srpFlag, EECFI::PropagPreciseConf::step, EECFI::PropagPreciseConf::thirdbodyFlag, EECFI::CfiClass::throwWarn, and EECFI::PropagPreciseConf::userFlag.

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

Sets validity times.

Parameters:

  | valTime | Validity times.

References EECFI::CfiError::addMsg(), EECFI::ValidityTime::start, EECFI::ValidityTime::stop, EECFI::CfiClass::throwWarn, and EECFI::ValidityTime::timeRef.