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