Earth Observation Mission CFI Software Lib Software User Manual |
00001 //-------------------------------------------------------------------- 00002 // CVS Info: $Id: LibData.h,v 1.12 2010/03/17 15:51:23 rucc Exp $ 00003 //-------------------------------------------------------------------- 00004 00009 00010 #ifndef __EECFI_LIBDATA__ 00011 #define __EECFI_LIBDATA__ 00012 00013 //--INCLUDE----------------------------------------------------------- 00014 #include <vector> 00015 00016 //--NAMESPACES-------------------------------------------------------- 00017 using namespace std; 00018 00019 namespace EECFI 00020 { 00021 00022 //------------------------------------------------------ 00023 // CONSTANTS 00024 //------------------------------------------------------ 00026 #define MCFI_PI 3.14159265358979323846 00027 00028 //------------------------------------------------------ 00029 // DATA STRUCTURES 00030 //------------------------------------------------------ 00031 00033 class TimeInterval 00034 { 00035 public: 00036 long timeRef; 00037 double startTime; 00038 double stopTime; 00039 00041 TimeInterval() 00042 {timeRef = -1, startTime = 0, stopTime = 0;}; 00043 00045 TimeInterval(long ref, double start, double stop) 00046 {timeRef = ref, startTime = start, stopTime = stop;}; 00047 }; 00048 00050 class OrbitInterval 00051 { 00052 public: 00053 long startOrbit; 00054 long stopOrbit; 00055 00057 OrbitInterval() {startOrbit = 0, stopOrbit = 0;}; 00058 00060 OrbitInterval(long start, long stop) 00061 {startOrbit = start, stopOrbit = stop;}; 00062 }; 00063 00065 class TimeData 00066 { 00067 public: 00068 double taiTime; 00069 double ut1Time; 00070 double tai_utc; 00071 double tai_ut1; 00072 double tai_gps; 00073 }; 00074 00076 class LeapSecondInfo 00077 { 00078 public: 00079 long flag; 00080 double utcTime; 00081 }; 00082 00084 class TimeCorrelationData 00085 { 00086 public: 00087 vector<TimeData> timeCorrVector; 00088 LeapSecondInfo leapSecond; 00089 }; 00090 00092 class Kepler 00093 { 00094 public: 00095 long mode; 00096 long cs; 00097 double a; 00098 double e; 00099 double i; 00100 double ra; 00101 double w; 00102 double m; 00103 }; 00104 00106 class Topocentric 00107 { 00108 public: 00109 double azim; 00110 double elev; 00111 double range; 00112 double azimDer; 00113 double elevDer; 00114 double rangeDer; 00115 }; 00116 00118 class ModelData 00119 { 00120 public: 00121 long earthModel; 00122 long sunModel; 00123 long moonModel; 00124 long planetModel; 00125 long starModel; 00126 long nutationModel; 00127 long precessionModel; 00128 long constantsModel; 00129 00130 /* Earth shape and gravity */ 00131 double re; 00132 double mu; 00133 double j2; 00134 double j3; 00135 double j4; 00136 00137 double majorAxis; 00138 double minorAxis; 00139 double ecc; 00140 double flat; 00141 00142 /* Earth rotation */ 00143 double gcoef0; 00144 double gcoef1; 00145 double gcoef2; 00146 00147 double gcoefSim0; 00148 double gcoefSim1; 00149 double gcoefSim2; 00150 00151 /* constants */ 00152 double au; 00153 }; 00154 00155 //------------------------------------------------------ 00156 // DATA ENUMERATION 00157 // Enumeration values are defined in an equivalent way to the C library 00158 // except for the prefix that has been changed from XX_ to XXCFI_ 00159 //------------------------------------------------------ 00160 00162 typedef enum 00163 { 00164 XLCFI_SAT_DEFAULT = 0, 00165 XLCFI_SAT_DEFAULT1 = 1, 00166 XLCFI_SAT_DEFAULT2 = 2, 00167 XLCFI_SAT_DEFAULT3 = 3, 00168 XLCFI_SAT_DEFAULT4 = 4, 00169 XLCFI_SAT_DEFAULT5 = 5, 00170 XLCFI_SAT_DEFAULT6 = 6, 00171 XLCFI_SAT_DEFAULT7 = 7, 00172 XLCFI_SAT_DEFAULT8 = 8, 00173 XLCFI_SAT_DEFAULT9 = 9, 00174 XLCFI_SAT_ERS1 = 11, 00175 XLCFI_SAT_ERS2 = 12, 00176 XLCFI_SAT_ENVISAT = 21, 00177 XLCFI_SAT_METOP1 = 31, 00178 XLCFI_SAT_METOP2 = 32, 00179 XLCFI_SAT_METOP3 = 33, 00180 XLCFI_SAT_CRYOSAT = 41, 00181 XLCFI_SAT_ADM = 51, 00182 XLCFI_SAT_GOCE = 61, 00183 XLCFI_SAT_SMOS = 71, 00184 XLCFI_SAT_TERRASAR = 81, 00185 XLCFI_SAT_EARTHCARE = 91, 00186 XLCFI_SAT_SWARM_A = 101, 00187 XLCFI_SAT_SWARM_B = 102, 00188 XLCFI_SAT_SWARM_C = 103, 00189 XLCFI_SAT_SENTINEL_1A = 110, 00190 XLCFI_SAT_SENTINEL_1B = 111, 00191 XLCFI_SAT_SENTINEL_2 = 112, 00192 XLCFI_SAT_SENTINEL_3 = 113, 00193 XLCFI_SAT_SEOSAT = 120, 00194 XLCFI_SAT_GENERIC = 200 00195 } SatIdEnum; 00196 00197 00199 typedef enum 00200 { 00201 XLCFI_TIMEMOD_AUTO = -2, 00202 XLCFI_TIMEMOD_USER = -1, 00203 XLCFI_TIMEMOD_NONE = 0, 00204 XLCFI_TIMEMOD_IERS_B_PREDICTED = 1, 00205 XLCFI_TIMEMOD_IERS_B_RESTITUTED, 00206 XLCFI_TIMEMOD_FOS_PREDICTED, 00207 XLCFI_TIMEMOD_FOS_RESTITUTED, 00208 XLCFI_TIMEMOD_DORIS_PRELIMINARY, 00209 XLCFI_TIMEMOD_DORIS_PRECISE, 00210 XLCFI_TIMEMOD_DORIS_NAVIGATOR, 00211 XLCFI_TIMEMOD_OSF 00212 } TimeModelEnum; 00213 00214 00216 typedef enum 00217 { 00218 XLCFI_TIME_UNDEF = -1, 00219 XLCFI_TIME_TAI, 00220 XLCFI_TIME_UTC, 00221 XLCFI_TIME_UT1, 00222 XLCFI_TIME_GPS 00223 } XLTimeRefEnum; 00224 00225 00227 typedef enum 00228 { 00229 XLCFI_PROC = 0 00230 } TimeProcEnum; 00231 00233 typedef enum 00234 { 00235 XLCFI_TRANS_STD = 0, 00236 XLCFI_TRANS_ENVI_GS = 11, 00237 XLCFI_TRANS_CRYO_GS = 21, 00238 XLCFI_TRANS_CRYO_TM = 22, 00239 XLCFI_TRANS_CRYO_TM_SIRAL = 23, 00240 XLCFI_TRANS_SMOS_TM = 31 00241 } TimeTransEnum; 00242 00243 00262 typedef enum 00263 { 00264 XLCFI_ASCII_UNDEF = -1, 00265 XLCFI_ASCII_STD = 11, 00266 XLCFI_ASCII_STD_REF = 12, 00267 XLCFI_ASCII_STD_MICROSEC = 13, 00268 XLCFI_ASCII_STD_REF_MICROSEC = 14, 00269 XLCFI_ASCII_COMPACT = 21, 00270 XLCFI_ASCII_COMPACT_REF = 22, 00271 XLCFI_ASCII_COMPACT_MICROSEC = 23, 00272 XLCFI_ASCII_COMPACT_REF_MICROSEC = 24, 00273 XLCFI_ASCII_ENVI = 31, 00274 XLCFI_ASCII_ENVI_REF = 32, 00275 XLCFI_ASCII_ENVI_MICROSEC = 33, 00276 XLCFI_ASCII_ENVI_REF_MICROSEC = 34, 00277 XLCFI_ASCII_CCSDSA = 41, 00278 XLCFI_ASCII_CCSDSA_REF = 42, 00279 XLCFI_ASCII_CCSDSA_MICROSEC = 43, 00280 XLCFI_ASCII_CCSDSA_REF_MICROSEC = 44, 00281 XLCFI_ASCII_CCSDSA_COMPACT = 51, 00282 XLCFI_ASCII_CCSDSA_COMPACT_REF = 52, 00283 XLCFI_ASCII_CCSDSA_COMPACT_MICROSEC = 53, 00284 XLCFI_ASCII_CCSDSA_COMPACT_REF_MICROSEC = 54 00285 } TimeAsciiEnum; 00286 00287 00289 typedef enum // Flag to indicate the grade of a derivative 00290 { 00291 XLCFI_NO_DER = 0, 00292 XLCFI_DER_1ST, 00293 XLCFI_DER_2ND 00294 } DerivEnum; 00295 00296 00298 typedef enum // It defines a coordinate system 00299 { 00300 XLCFI_CS_UNDEF, 00301 XLCFI_CS_GALACTIC, 00302 XLCFI_CS_BM1950, 00303 XLCFI_CS_BM2000, 00304 XLCFI_CS_HM2000, 00305 XLCFI_CS_GM2000, 00306 XLCFI_CS_MOD, 00307 XLCFI_CS_TOD, 00308 XLCFI_CS_EF, 00309 XLCFI_CS_TOPOCENTRIC, 00310 XLCFI_CS_SAT_ORBITAL_REF, 00311 XLCFI_CS_SAT_NOMINAL_ATT, 00312 XLCFI_CS_SAT_ATT, 00313 XLCFI_CS_INSTR_ATT 00314 } CoordinateSystemEnum; 00315 00317 typedef enum 00318 { 00319 XLCFI_KEPLER_MEAN = 1, 00320 XLCFI_KEPLER_OSC 00321 } KeplerModeEnum; 00322 00324 typedef enum 00325 { 00326 XLCFI_MODE_FLAG_LOCATION = 0, 00327 XLCFI_MODE_FLAG_DIRECTION 00328 } ModeFlagEnum; 00329 00331 typedef enum 00332 { 00333 XLCFI_MERCURY = 1, 00334 XLCFI_VENUS, 00335 XLCFI_EM_BAR, 00336 XLCFI_MARS, 00337 XLCFI_JUPITER, 00338 XLCFI_SATURN, 00339 XLCFI_URANUS, 00340 XLCFI_NEPTUNE 00341 } PlanetEnum; 00342 00344 typedef enum 00345 { 00346 XLCFI_FK4 = 0, 00347 XLCFI_FK5 00348 } StarCatalogEnum; 00349 00350 00352 typedef enum 00353 { 00354 XLCFI_ANGLE_TYPE_TRUE_LAT_TOD = 1, 00355 XLCFI_ANGLE_TYPE_MEAN_LAT_TOD 00356 } AngleTypeEnum; 00357 00359 typedef enum 00360 { 00361 XLCFI_MODEL_DEFAULT, 00362 XLCFI_MODEL_CONFIG 00363 } ModelSetsEnum; 00364 00366 typedef enum 00367 { 00368 XLCFI_MODEL_TYPE_EARTH, 00369 XLCFI_MODEL_TYPE_SUN, 00370 XLCFI_MODEL_TYPE_MOON, 00371 XLCFI_MODEL_TYPE_PLANET, 00372 XLCFI_MODEL_TYPE_STAR, 00373 XLCFI_MODEL_TYPE_NUTATION, 00374 XLCFI_MODEL_TYPE_PRECESSION, 00375 XLCFI_MODEL_TYPE_CONSTANTS, 00376 XLCFI_NUM_MODEL_TYPES_ENUM 00377 } ModelTypesEnum; 00378 00380 typedef enum 00381 { 00382 XLCFI_MODEL_EARTH_DEFAULT 00383 } ModelEarthEnum; 00384 00385 00387 typedef enum 00388 { 00389 XLCFI_MODEL_SUN_DEFAULT 00390 } ModelSunEnum; 00391 00392 00394 typedef enum 00395 { 00396 XLCFI_MODEL_MOON_DEFAULT 00397 } ModelMoonEnum; 00398 00399 00401 typedef enum 00402 { 00403 XLCFI_MODEL_PLANETS_DEFAULT 00404 } ModelPlanetsEnum; 00405 00406 00408 typedef enum 00409 { 00410 XLCFI_MODEL_STAR_DEFAULT 00411 } ModelStarEnum; 00412 00413 00415 typedef enum 00416 { 00417 XLCFI_MODEL_NUTATION_DEFAULT 00418 } ModelNutationEnum; 00419 00420 00422 typedef enum 00423 { 00424 XLCFI_MODEL_PRECESSION_DEFAULT 00425 } ModelPrecessionEnum; 00426 00428 typedef enum 00429 { 00430 XLCFI_MODEL_CONSTANTS_DEFAULT 00431 } ModelConstantsEnum; 00432 00433 } // closing namespace 00434 00435 #endif