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 OrbitId &other)
 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)
 Class constructor: using orbital parameters.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, long orbit0, const RefOrbitInfo &refOrbitInfo)
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit)
 Class constructor: using state vector.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< std::string > &inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1)
 Class constructor: using orbit file.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit, const PropagPreciseConf &preciseConf)
 Class constructor: numerical propagator using state vector.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< std::string > &inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1, const PropagPreciseConf &preciseConf)
 Class constructor: numerical propagator using orbit file.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< OsfFile > &osfData, long timeInitMode, double time0, double time1, long orbit0, long orbit1)
 Class constructor: using data read from OSF.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< OrbitFile > &osvData, long timeInitMode, double time0, double time1, long orbit0, long orbit1)
 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, const std::vector< OrbitFile > &osvData, const OrbitChangeData &orbitChangeData, long timeInitMode, double time0, double time1, long orbit0, long orbit1)
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< DorisFile > &dorisData, long timeInitMode, double time0, double time1, long orbit0, long orbit1)
 Class constructor: using data read from DORIS files.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< DorisFile > &dorisData, const OrbitChangeData &orbitChangeData, long timeInitMode, double time0, double time1, long orbit0, long orbit1)
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< SP3File > &sp3Data, long timeInitMode, double time0, double time1)
 Class constructor: using data read from SP3 files.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, const GeoOrbitInitData &geoOrbitInit)
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< OemFile > &oemData, long timeInitMode, double time0, double time1)
 Class constructor: using data read from OEM files.
 OrbitId (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< TleFile > &tleData, long timeInitMode, double time0, double time1)
 Class constructor: using data read from TLE files.
 OrbitId (OrbitId &orbitIdIn)
 Copy constructor.
virtual ~OrbitId () EXCEPT
 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)
 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)
 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, const double pos[3], const double vel[3], long absOrbit)
 Initialise the orbit using state vector.
void init (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, long orbitFileMode, const std::vector< std::string > &inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1)
 Initialise the orbit using orbit files.
void init (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit, const PropagPreciseConf &preciseConf)
 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 std::vector< std::string > &inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1, const PropagPreciseConf &preciseConf)
 Initialise the orbit using orbit file with numerical propagator.
void init (const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, const GeoOrbitInitData &geoOrbitInit)
void change (const OrbitChangeData &changeData)
 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.
std::vector< OsvRecgetOsv () const
 Returns the list of orbit state vectors stored in the OrbitId object.
void setOsv (const std::vector< OsvRec > &osvRecList)
 Sets the list of orbit state vectors stored in the OrbitId object.
std::vector< ANXExtragetAnx () const
 Returns the list of ANX data stored in the OrbitId object.
void setAnx (const std::vector< ANXExtra > &anxList)
 Sets the list of ANX data stored in the OrbitId object.
std::vector< OsfRecordsgetOsf () const
 Returns the list of orbital changes stored in the OrbitId object.
void setOsf (const std::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
 Get numerical propagator configuration.
void setPrecisePropagConfig (const PropagPreciseConf &preciseConf)
 Set numerical propagator configuration.
void setGeoOrbitInfo (const GeoOrbitInfo &geoOrbitInfo)
 Set geostationary satellite information.
GeoOrbitInfo getGeoOrbitInfo ()
 Get geostationary satellite information.
OrbitalInfo getOrbitInfo (long absoluteOrbit) const
 Returns orbital information for a requested orbit.
void orbitInfoConfigure (long item, long option) const
 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
 Get orbit absolute orbit and phase number from the relative orbit.
OrbitInfo getOrbitNumbersFromPhase (long phase) const
 Get orbit absolute and relative orbit from the input phase number.
OrbitInfo getOrbitNumbersFromAbs (long absOrbit) const
 Get orbit relative orbit and phase from the input absolute orbit.
StateVector osvCompute (long mode, long timeRef, double time)
 Computes a satellite state vector for a given time.
StateVectorExtraInfo osvComputeExtra (long extraChoice) const
 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
 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) const
 Generates a TLE by fitting the set of orbit state vectors stored in the orbit_id.
OrbitIdCheckReport check (const OrbitFileDiagnosticsSettings &settings) const
 Performs a diagnostic on the orbit's state vectors.
OrbitIdoperator= (const OrbitId &other)

Protected Member Functions

 OrbitId ()
 Default constructor. Important: does not initialise orbit id.

Detailed Description

Class that stores the orbit data.


Constructor & Destructor Documentation

EECFI::OrbitId::OrbitId ( const OrbitId other  ) 

Copy constructor

Parameters:
other The OrbitId to copy from
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 
)

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

References init().

EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
double  time,
long  orbit0,
const RefOrbitInfo refOrbitInfo 
)

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.

References init().

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

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.

References init().

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

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 containing state vectors (FOS predicted, 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 possibility 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.

References init().

EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
double  time,
const double  pos[3],
const double  vel[3],
long  absOrbit,
const PropagPreciseConf preciseConf 
)

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

.

References init().

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

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

.

References init().

EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
long  orbitFileMode,
const std::vector< OsfFile > &  osfData,
long  timeInitMode,
double  time0,
double  time1,
long  orbit0,
long  orbit1 
)

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(), and EECFI::CfiId::status().

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

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(), and EECFI::CfiId::status().

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

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::OrbitChangeData::changeFile, EECFI::OrbitChangeData::changeMode, EECFI::OrbitChangeData::changeOrbit, EECFI::OrbitChangeData::changeTime, EECFI::OrbitChangeData::changeTimeRef, EECFI::OrbitChangeFile::fileType, EECFI::OrbitChangeFile::osfData, EECFI::OsfFile::osfRec, and EECFI::CfiId::status().

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

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(), and EECFI::CfiId::status().

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

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::OrbitChangeData::changeFile, EECFI::OrbitChangeData::changeMode, EECFI::OrbitChangeData::changeOrbit, EECFI::OrbitChangeData::changeTime, EECFI::OrbitChangeData::changeTimeRef, EECFI::OrbitChangeFile::fileType, EECFI::OrbitChangeFile::osfData, EECFI::OsfFile::osfRec, and EECFI::CfiId::status().

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

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(), and EECFI::CfiId::status().

EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
const GeoOrbitInitData geoOrbitInit 
)

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.

References init().

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

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(), and EECFI::CfiId::status().

EECFI::OrbitId::OrbitId ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
long  orbitFileMode,
const std::vector< TleFile > &  tleData,
long  timeInitMode,
double  time0,
double  time1 
)

Class constructor: using data read from TLE 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_TLE_MODE
  • XOCFI_ORBIT_INIT_AUTO

.

tleData Vector of TleFile 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(), and EECFI::CfiId::status().

EECFI::OrbitId::OrbitId ( OrbitId orbitIdIn  ) 

Copy constructor.

Parameters:
orbitIdIn Orbit Id to be copied.
EECFI::OrbitId::~OrbitId (  )  [virtual]

Class destructor.

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

Default constructor. Important: does not initialise orbit id.


Member Function Documentation

void EECFI::OrbitId::change ( const OrbitChangeData changeData  ) 

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(), EECFI::OrbitChangeData::changeFile, EECFI::OrbitChangeData::changeMode, EECFI::OrbitChangeData::changeOrbit, EECFI::OrbitChangeData::changeTime, EECFI::OrbitChangeData::changeTimeRef, EECFI::OrbitChangeFile::fileType, EECFI::OrbitChangeFile::osfData, EECFI::OsfFile::osfRec, and EECFI::CfiClass::throwWarn.

OrbitIdCheckReport EECFI::OrbitId::check ( const OrbitFileDiagnosticsSettings settings  )  const

Performs a diagnostic on the orbit's state vectors.

Computes diagnostics data related to the OSVs contained in orbit id. The following information is returned:

  • Size of the interval covered by the file.
  • Times of first and last OSV.
  • Number and interval of GAPs in the file.
  • Number and indexes of duplicated OSVs, i.e. OSVs whose time is the same as the one of previous OSV; i.e. if time_osv1 and time_osv2 are the times of one OSV and the following one respectively, the duplicated OSVs fulfil the following condition:
    |time_osv2-time_osv1| < settings.duplicated_osv_threshold
    being settings one input parameter to the method.
  • Number and indexes of the OSVs going back in time, i.e. OSVs whose time is in the past with respect to the previous one; i.e. the OSVs are not identified as duplicated OSVs and fulfil the following conditions:
    1) time_osv2-time_osv1 < 0. 2) |time_osv2-time_osv1| > diagnostics_settings.duplicated_osv_threshold
  • Number and indexes of OSVs with inconsistent orbit number (i.e. OSVs whose number is not correlated with its neighbours OSVs).
  • Number and indexes of OSVs with non-equally spaced OSVs (i.e. OSVs that are separated from its neighbours a different step from the one expected).
  • Number and indexes of OSVs whose orbit parameters are beyond loose tolerances for corresponding satellite.
  • Number and indexes of OSVs whose orbit parameters are beyond tight tolerances for corresponding satellite.

For DORIS files only EF OSVS are checked, because they are the ones used by orbit initialization.

Parameters:
settings Parameters for computing OSV diagnostics
Returns:
Data structure with diagnostics results

References EECFI::OrbitFileDiagnosticsSettings::duplicatedOsvThreshold, EECFI::OrbitFileDiagnosticsSettings::gapThreshold, EECFI::CfiClass::throwWarn, EECFI::OrbitFileDiagnosticsSettings::timeRef, EECFI::OrbitFileDiagnosticsSettings::timeStep, and EECFI::OrbitFileDiagnosticsSettings::timeStepThreshold.

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 (  ) 
OrbitInfo EECFI::OrbitId::getOrbitNumbersFromAbs ( long  absOrbit  )  const

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, EECFI::OrbitInfo::relOrbit, and EECFI::CfiClass::throwWarn.

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

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

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, EECFI::OrbitInfo::relOrbit, and EECFI::CfiClass::throwWarn.

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

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, EECFI::OrbitInfo::relOrbit, and EECFI::CfiClass::throwWarn.

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,
long  orbit0,
const RefOrbitInfo refOrbitInfo 
)

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.

References EECFI::CfiId::addInstance(), EECFI::RefOrbitInfo::AnxLong, EECFI::RefOrbitInfo::anxLongitudeDrift, EECFI::RefOrbitInfo::cycleLength, EECFI::RefOrbitInfo::driftMode, EECFI::SatId::getSatellite(), EECFI::RefOrbitInfo::inclination, EECFI::MlstNonlinearDrift::linearApproxValidity, EECFI::ANXLongDrift::linearTerm, EECFI::RefOrbitInfo::mlst, EECFI::RefOrbitInfo::mlstDrift, EECFI::MlstNonlinearDrift::mlstHarmonics, EECFI::RefOrbitInfo::mlstNonlinearDrift, EECFI::ANXLongDrift::offset, EECFI::MlstNonlinearDrift::quadraticTerm, EECFI::RefOrbitInfo::repCycle, and EECFI::CfiClass::throwWarn.

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

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

References EECFI::CfiId::addInstance(), EECFI::SatId::getSatellite(), and EECFI::CfiClass::throwWarn.

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 
)

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

References EECFI::CfiId::addInstance(), EECFI::SatId::getSatellite(), and EECFI::CfiClass::throwWarn.

Referenced by OrbitId().

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

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

.

References EECFI::CfiId::addInstance(), EECFI::PropagPreciseConf::ap, EECFI::PropagPreciseConf::atmosFlag, EECFI::PropagPreciseConf::f107, EECFI::PropagPreciseConf::f107a, EECFI::SatId::getSatellite(), 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::init ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
long  orbitFileMode,
const std::vector< std::string > &  inputFiles,
long  timeInitMode,
double  time0,
double  time1,
long  orbit0,
long  orbit1,
const PropagPreciseConf preciseConf 
)

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

.

References EECFI::CfiId::addInstance(), EECFI::PropagPreciseConf::ap, EECFI::PropagPreciseConf::atmosFlag, EECFI::PropagPreciseConf::f107, EECFI::PropagPreciseConf::f107a, EECFI::SatId::getSatellite(), 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::init ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
long  timeRef,
double  time,
const double  pos[3],
const double  vel[3],
long  absOrbit 
)

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.

References EECFI::CfiId::addInstance(), EECFI::SatId::getSatellite(), and EECFI::CfiClass::throwWarn.

void EECFI::OrbitId::init ( const SatId satId,
const ModelId modelId,
const TimeCorrelation timeCor,
const GeoOrbitInitData geoOrbitInit 
)

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.

References EECFI::CfiId::addInstance(), EECFI::GeoGeodCoord::gcLongitude, EECFI::GeoGeodCoord::gdAltitude, EECFI::GeoGeodCoord::gdLatitude, EECFI::GeoOrbitInfo::geodCoord, EECFI::GeoOrbitInitData::geoOrbitInfo, EECFI::SatId::getSatellite(), EECFI::CfiClass::throwWarn, and EECFI::GeoOrbitInitData::type.

OrbitId & EECFI::OrbitId::operator= ( const OrbitId other  ) 

Copy assignment operator.

Parameters:
other The OrbitId to copy/assign from

References EECFI::CfiId::addInstance().

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

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

References EECFI::CfiClass::throwWarn.

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

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 in the first 4 OSV's time intervals of the file and the last 4 OSV's time intervals of the file. The degradation depends strongly in the length of the OSV's time intervals: it can be less than mm. for 1 second up to some cm. for 60 seconds. Next figure provides a graphical explanation:
The OrbitId::osvCompute function allows to extrapolate, that is, compute results for at least 60 seconds before start of the input file(s) and after end of the input file. Anyway, extrapolation is not recommended. In this case, the extrapolation window is NOT included in the valid time interval. The following table shows some values for the degradation of the extrapolation:
Time out of validity interval [number of OSV time steps] Error in position [m] as a function of the OSV time step
1 sec 10 sec 30 sec 60 sec
1 0.01 0.05 0.06 0.09
2 0.22 0.39 0.40 0.56
3 1.16 1.65 1.68 2.25
4 4.21 5.23 5.20 6.89
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).

References EECFI::CfiClass::throwWarn.

StateVectorExtraInfo EECFI::OrbitId::osvComputeExtra ( long  extraChoice  )  const

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, EECFI::StateVectorExtraInfo::modelIndep, and EECFI::CfiClass::throwWarn.

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

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

References EECFI::CfiClass::throwWarn.

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

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

COMPATIBILITY NOTE: the output of this function is consistent with the calculation of orbit number and time from ANX within the EO CFI only when the input angle is compliant with [EO_OPS] and [MCD] i.e. either ToD or EF. Using other angle types (e.g. J2000) will result in an output time that cannot be used as input elsewhere in the EO CFI, notably in the xo_time_to_orbit function.

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)

References EECFI::CfiClass::throwWarn.

SatId EECFI::OrbitId::satId (  )  const

Return satellite id.

Returns:
Satellite id.
void EECFI::OrbitId::setAnx ( const std::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  ) 

Set geostationary satellite information.

Parameters:
geoOrbitInfo Geostationary orbit information.

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

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

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 std::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 Mon Dec 11 2023 13:28:27 for by doxygen 1.7.1