| Earth Observation Mission CFI Software Lib Software User Manual |

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

# Z:/work/code/expcfidev/cplusplusWrapper/Lib/include/LibData.h

    00001 //--------------------------------------------------------
    00002 // Earth Observation Mission CFI Software. Version 4.4
    00003 //--------------------------------------------------------
    00004
    00005 //--------------------------------------------------------------------
    00006 // CVS Info: $Id: LibData.h,v 1.22 2012/07/09 10:06:24 expcfi Exp $
    00007 //--------------------------------------------------------------------
    00008
    00013
    00014 #ifndef __EECFI_LIBDATA__
    00015 #define __EECFI_LIBDATA__
    00016
    00017 //--INCLUDE-----------------------------------------------------------
    00018 #include <vector>
    00019 #include "DataHandlingData.h"
    00020
    00021 //--NAMESPACES--------------------------------------------------------
    00022 using namespace std;
    00023
    00024 namespace EECFI
    00025 {
    00026
    00027   //------------------------------------------------------
    00028   // CONSTANTS
    00029   //------------------------------------------------------
    00031   #define MCFI_PI  3.14159265358979323846
    00032
    00033   //------------------------------------------------------
    00034   // DATA ENUMERATION
    00035   // Enumeration values are defined in an equivalent way to the C library
    00036   // except for the prefix that has been changed from XX_ to XXCFI_
    00037   //------------------------------------------------------
    00038
    00040   typedef enum
    00041   {
    00042     XLCFI_SAT_DEFAULT     = 0,
    00043     XLCFI_SAT_DEFAULT1    = 1,
    00044     XLCFI_SAT_DEFAULT2    = 2,
    00045     XLCFI_SAT_DEFAULT3    = 3,
    00046     XLCFI_SAT_DEFAULT4    = 4,
    00047     XLCFI_SAT_DEFAULT5    = 5,
    00048     XLCFI_SAT_DEFAULT6    = 6,
    00049     XLCFI_SAT_DEFAULT7    = 7,
    00050     XLCFI_SAT_DEFAULT8    = 8,
    00051     XLCFI_SAT_DEFAULT9    = 9,
    00052     XLCFI_SAT_ERS1        = 11,
    00053     XLCFI_SAT_ERS2        = 12,
    00054     XLCFI_SAT_ENVISAT     = 21,
    00055     XLCFI_SAT_METOP1      = 31,
    00056     XLCFI_SAT_METOP2      = 32,
    00057     XLCFI_SAT_METOP3      = 33,
    00058     XLCFI_SAT_CRYOSAT     = 41,
    00059     XLCFI_SAT_ADM         = 51,
    00060     XLCFI_SAT_GOCE        = 61,
    00061     XLCFI_SAT_SMOS        = 71,
    00062     XLCFI_SAT_TERRASAR    = 81,
    00063     XLCFI_SAT_EARTHCARE   = 91,
    00064     XLCFI_SAT_SWARM_A     = 101,
    00065     XLCFI_SAT_SWARM_B     = 102,
    00066     XLCFI_SAT_SWARM_C     = 103,
    00067     XLCFI_SAT_SENTINEL_1A = 110,
    00068     XLCFI_SAT_SENTINEL_1B = 111,
    00069     XLCFI_SAT_SENTINEL_2  = 112,
    00070     XLCFI_SAT_SENTINEL_3  = 113,
    00071     XLCFI_SAT_SEOSAT      = 120,
    00072     XLCFI_SAT_SENTINEL_1C = 125,
    00073     XLCFI_SAT_SENTINEL_2A = 126,
    00074     XLCFI_SAT_SENTINEL_2B = 127,
    00075     XLCFI_SAT_SENTINEL_2C = 128,
    00076     XLCFI_SAT_SENTINEL_3A = 129,
    00077     XLCFI_SAT_SENTINEL_3B = 130,
    00078     XLCFI_SAT_SENTINEL_3C = 131,
    00079     XLCFI_SAT_GENERIC     = 200,
    00080     // AN-353
    00081     XLCFI_SAT_GENERIC_GEO = 300,
    00082     XLCFI_SAT_MTG         = 301
    00083     // END AN-353
    00084   } SatIdEnum;
    00085
    00086
    00088   typedef enum
    00089   {
    00090     XLCFI_TIMEMOD_AUTO = -2,
    00091     XLCFI_TIMEMOD_USER = -1,
    00092     XLCFI_TIMEMOD_NONE = 0,
    00093     XLCFI_TIMEMOD_IERS_B_PREDICTED = 1,
    00094     XLCFI_TIMEMOD_IERS_B_RESTITUTED,
    00095     XLCFI_TIMEMOD_FOS_PREDICTED,
    00096     XLCFI_TIMEMOD_FOS_RESTITUTED,
    00097     XLCFI_TIMEMOD_DORIS_PRELIMINARY,
    00098     XLCFI_TIMEMOD_DORIS_PRECISE,
    00099     XLCFI_TIMEMOD_DORIS_NAVIGATOR,
    00100     XLCFI_TIMEMOD_OSF,
    00101     XLCFI_TIMEMOD_IERS_A_ONLY_PREDICTION,
    00102     XLCFI_TIMEMOD_IERS_A_PREDICTION_AND_FORMULA,
    00103     XLCFI_TIMEMOD_IERS_B_AND_A_ONLY_PREDICTION
    00104   } TimeModelEnum;
    00105
    00106
    00108   typedef enum
    00109   {
    00110     XLCFI_TIME_UNDEF = -1,
    00111     XLCFI_TIME_TAI,
    00112     XLCFI_TIME_UTC,
    00113     XLCFI_TIME_UT1,
    00114     XLCFI_TIME_GPS
    00115   } XLTimeRefEnum;
    00116
    00117
    00119   typedef enum
    00120   {
    00121     XLCFI_PROC = 0
    00122   } TimeProcEnum;
    00123
    00125   typedef enum
    00126   {
    00127     XLCFI_TRANS_STD              = 0,
    00128     XLCFI_TRANS_ENVI_GS          = 11,
    00129     XLCFI_TRANS_CRYO_GS          = 21,
    00130     XLCFI_TRANS_CRYO_TM          = 22,
    00131     XLCFI_TRANS_CRYO_TM_SIRAL    = 23,
    00132     XLCFI_TRANS_SMOS_TM          = 31,
    00133     XLCFI_TRANS_GENERIC_GPS_SEC  = 41,
    00134     XLCFI_TRANS_GENERIC_GPS_WEEK = 42
    00135   } TimeTransEnum;
    00136
    00137
    00156   typedef enum
    00157   {
    00158     XLCFI_ASCII_UNDEF                       = -1,
    00159     XLCFI_ASCII_STD                         = 11,
    00160     XLCFI_ASCII_STD_REF                     = 12,
    00161     XLCFI_ASCII_STD_MICROSEC                = 13,
    00162     XLCFI_ASCII_STD_REF_MICROSEC            = 14,
    00163     XLCFI_ASCII_COMPACT                     = 21,
    00164     XLCFI_ASCII_COMPACT_REF                 = 22,
    00165     XLCFI_ASCII_COMPACT_MICROSEC            = 23,
    00166     XLCFI_ASCII_COMPACT_REF_MICROSEC        = 24,
    00167     XLCFI_ASCII_ENVI                        = 31,
    00168     XLCFI_ASCII_ENVI_REF                    = 32,
    00169     XLCFI_ASCII_ENVI_MICROSEC               = 33,
    00170     XLCFI_ASCII_ENVI_REF_MICROSEC           = 34,
    00171     XLCFI_ASCII_CCSDSA                      = 41,
    00172     XLCFI_ASCII_CCSDSA_REF                  = 42,
    00173     XLCFI_ASCII_CCSDSA_MICROSEC             = 43,
    00174     XLCFI_ASCII_CCSDSA_REF_MICROSEC         = 44,
    00175     XLCFI_ASCII_CCSDSA_COMPACT              = 51,
    00176     XLCFI_ASCII_CCSDSA_COMPACT_REF          = 52,
    00177     XLCFI_ASCII_CCSDSA_COMPACT_MICROSEC     = 53,
    00178     XLCFI_ASCII_CCSDSA_COMPACT_REF_MICROSEC = 54
    00179   } TimeAsciiEnum;
    00180
    00181
    00183   typedef enum  // Flag to indicate the grade of a derivative
    00184   {
    00185     XLCFI_NO_DER = 0,
    00186     XLCFI_DER_1ST,
    00187     XLCFI_DER_2ND,
    00188     XLCFI_ITER_NO_DER,
    00189     XLCFI_ITER_DER_1ST,
    00190     XLCFI_NO_ITER_NO_DER,
    00191     XLCFI_NO_ITER_DER_1ST,
    00192   } DerivEnum;
    00193
    00194
    00196   typedef enum   // It defines a coordinate system
    00197   {
    00198     XLCFI_CS_UNDEF,
    00199     XLCFI_CS_GALACTIC,
    00200     XLCFI_CS_BM1950,
    00201     XLCFI_CS_BM2000,
    00202     XLCFI_CS_HM2000,
    00203     XLCFI_CS_GM2000,
    00204     XLCFI_CS_MOD,
    00205     XLCFI_CS_TOD,
    00206     XLCFI_CS_PEF,
    00207     XLCFI_CS_EF,
    00208     XLCFI_CS_TOPOCENTRIC,
    00209     XLCFI_CS_SAT_ORBITAL_REF,
    00210     XLCFI_CS_SAT_NOMINAL_ATT,
    00211     XLCFI_CS_SAT_ATT,
    00212     XLCFI_CS_INSTR_ATT
    00213   } CoordinateSystemEnum;
    00214
    00216   typedef enum
    00217   {
    00218     XLCFI_KEPLER_MEAN = 1,
    00219     XLCFI_KEPLER_OSC
    00220   } KeplerModeEnum;
    00221
    00223   typedef enum
    00224   {
    00225     XLCFI_MODE_FLAG_LOCATION = 0,
    00226     XLCFI_MODE_FLAG_DIRECTION
    00227   } ModeFlagEnum;
    00228
    00230   typedef enum
    00231   {
    00232     XLCFI_MERCURY = 1,
    00233     XLCFI_VENUS,
    00234     XLCFI_EM_BAR,
    00235     XLCFI_MARS,
    00236     XLCFI_JUPITER,
    00237     XLCFI_SATURN,
    00238     XLCFI_URANUS,
    00239     XLCFI_NEPTUNE
    00240   } PlanetEnum;
    00241
    00243   typedef enum
    00244   {
    00245     XLCFI_FK4 = 0,
    00246     XLCFI_FK5
    00247   } StarCatalogEnum;
    00248
    00249
    00251   typedef enum
    00252   {
    00253     XLCFI_ANGLE_TYPE_TRUE_LAT_TOD = 1,
    00254     XLCFI_ANGLE_TYPE_MEAN_LAT_TOD,
    00255     XLCFI_ANGLE_TYPE_TRUE_LAT_GM2000,
    00256     XLCFI_ANGLE_TYPE_TRUE_LAT_EF
    00257   } AngleTypeEnum;
    00258
    00260   typedef enum
    00261   {
    00262     XLCFI_MODEL_DEFAULT,
    00263     XLCFI_MODEL_CONFIG
    00264   } ModelSetsEnum;
    00265
    00267   typedef enum
    00268   {
    00269     XLCFI_MODEL_TYPE_EARTH,
    00270     XLCFI_MODEL_TYPE_SUN,
    00271     XLCFI_MODEL_TYPE_MOON,
    00272     XLCFI_MODEL_TYPE_PLANET,
    00273     XLCFI_MODEL_TYPE_STAR,
    00274     XLCFI_MODEL_TYPE_NUTATION,
    00275     XLCFI_MODEL_TYPE_PRECESSION,
    00276     XLCFI_MODEL_TYPE_CONSTANTS,
    00277     XLCFI_NUM_MODEL_TYPES_ENUM
    00278   } ModelTypesEnum;
    00279
    00281   typedef enum
    00282   {
    00283     XLCFI_MODEL_EARTH_DEFAULT
    00284   } ModelEarthEnum;
    00285
    00286
    00288   typedef enum
    00289   {
    00290     XLCFI_MODEL_SUN_DEFAULT
    00291   } ModelSunEnum;
    00292
    00293
    00295   typedef enum
    00296   {
    00297     XLCFI_MODEL_MOON_DEFAULT
    00298   } ModelMoonEnum;
    00299
    00300
    00302   typedef enum
    00303   {
    00304     XLCFI_MODEL_PLANETS_DEFAULT
    00305   } ModelPlanetsEnum;
    00306
    00307
    00309   typedef enum
    00310   {
    00311     XLCFI_MODEL_STAR_DEFAULT
    00312   } ModelStarEnum;
    00313
    00314
    00316   typedef enum
    00317   {
    00318     XLCFI_MODEL_NUTATION_DEFAULT
    00319   } ModelNutationEnum;
    00320
    00321
    00323   typedef enum
    00324   {
    00325     XLCFI_MODEL_PRECESSION_DEFAULT
    00326   } ModelPrecessionEnum;
    00327
    00329   typedef enum
    00330   {
    00331     XLCFI_MODEL_CONSTANTS_DEFAULT
    00332   } ModelConstantsEnum;
    00333
    00335   typedef enum
    00336   {
    00337     XLCFI_NO_BULLETIN = -1,
    00338     XLCFI_BULLETIN_B,
    00339     XLCFI_BULLETIN_A,
    00340     XLCFI_BULLETIN_B_AND_A
    00341   } XLBulletinTypeEnum;
    00342
    00344   typedef enum
    00345   {
    00346     XLCFI_FORMULA_ENABLED,
    00347     XLCFI_FORMULA_DISABLED
    00348   } IersFormulaFlagEnum;
    00349
    00350   //------------------------------------------------------
    00351   // DATA STRUCTURES
    00352   //------------------------------------------------------
    00353
    00355   class TimeInterval
    00356   {
    00357     public:
    00358       long   timeRef;
    00359       double startTime;
    00360       double stopTime;
    00361
    00363       TimeInterval()
    00364         {timeRef = -1, startTime = 0, stopTime = 0;};
    00365
    00367       TimeInterval(long ref, double start, double stop)
    00368         {timeRef = ref, startTime = start, stopTime = stop;};
    00369   };
    00370
    00372   class OrbitInterval
    00373   {
    00374     public:
    00375       long startOrbit;
    00376       long stopOrbit;
    00377
    00379       OrbitInterval() {startOrbit = 0, stopOrbit = 0;};
    00380
    00382       OrbitInterval(long start, long stop)
    00383         {startOrbit = start, stopOrbit = stop;};
    00384   };
    00385
    00387   class TimeData
    00388   {
    00389     public:
    00390       double   taiTime;
    00391       double   ut1Time;
    00392       double   tai_utc;
    00393       double   tai_ut1;
    00394       double   tai_gps;
    00395   };
    00396
    00398   class LeapSecondInfo
    00399   {
    00400     public:
    00401       long   flag;
    00402       double utcTime;
    00403   };
    00404
    00406   class TimeCorrelationData
    00407   {
    00408     public:
    00409       long                       iersBulletinType;
    00410       long                       iersFormulaFlag;
    00411       long                       predictionFirstRecord;
    00412       PolarMotionFormula         polarMotionFormula;
    00413       TimeCorrelationFormula     timeCorrelationFormula;
    00414       vector<TimeData>           timeCorrVector;
    00415       vector<PolarMotionParams>  polarMotionParams;
    00416       LeapSecondInfo             leapSecond;
    00417
    00419       TimeCorrelationData()
    00420       {
    00421         iersBulletinType      = XLCFI_NO_BULLETIN;
    00422         iersFormulaFlag       = XLCFI_FORMULA_DISABLED;
    00423         predictionFirstRecord = 0L;
    00424       }
    00425
    00427       TimeCorrelationData(long bulType, long iersFormula, long predFirst,
    00428                           PolarMotionFormula &polarForm, TimeCorrelationFormula &timeForm,
    00429                           vector<TimeData> &timData, vector<PolarMotionParams> &polarData,
    00430                           LeapSecondInfo &leapInfo )
    00431       {
    00432         iersBulletinType       = bulType;
    00433         iersFormulaFlag        = iersFormula;
    00434         predictionFirstRecord  = predFirst;
    00435         polarMotionFormula     = polarForm;
    00436         timeCorrelationFormula = timeForm;
    00437         timeCorrVector         = timData;
    00438         polarMotionParams      = polarData;
    00439         leapSecond             = leapInfo;
    00440       }
    00441   };
    00442
    00444   class Kepler
    00445   {
    00446     public:
    00447       long   mode;
    00448       long   cs;
    00449       double a;
    00450       double e;
    00451       double i;
    00452       double ra;
    00453       double w;
    00454       double m;
    00455   };
    00456
    00458   class Topocentric
    00459   {
    00460     public:
    00461       double azim;
    00462       double elev;
    00463       double range;
    00464       double azimDer;
    00465       double elevDer;
    00466       double rangeDer;
    00467   };
    00468
    00470   class ModelData
    00471   {
    00472     public:
    00473     long   earthModel;
    00474     long   sunModel;
    00475     long   moonModel;
    00476     long   planetModel;
    00477     long   starModel;
    00478     long   nutationModel;
    00479     long   precessionModel;
    00480     long   constantsModel;
    00481
    00482     /* Earth shape and gravity */
    00483     double re;
    00484     double mu;
    00485     double j2;
    00486     double j3;
    00487     double j4;
    00488
    00489     double majorAxis;
    00490     double minorAxis;
    00491     double ecc;
    00492     double flat;
    00493
    00494     /* Earth rotation */
    00495     double gcoef0;
    00496     double gcoef1;
    00497     double gcoef2;
    00498
    00499     double gcoefSim0;
    00500     double gcoefSim1;
    00501     double gcoefSim2;
    00502
    00503     /* constants */
    00504     double au;
    00505   };
    00506
    00507 } // closing namespace
    00508
    00509 #endif