![]() |
Earth Explorer Mission CFI Software Lib Software User Manual |
![]() |
00001 //-------------------------------------------------------------------- 00002 // CVS Info: $Id: LibData.h,v 1.9 2009/04/13 13:30:09 expcfi 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 } SatIdEnum; 00192 00193 00195 typedef enum 00196 { 00197 XLCFI_TIMEMOD_AUTO = -2, 00198 XLCFI_TIMEMOD_USER = -1, 00199 XLCFI_TIMEMOD_NONE = 0, 00200 XLCFI_TIMEMOD_IERS_B_PREDICTED = 1, 00201 XLCFI_TIMEMOD_IERS_B_RESTITUTED, 00202 XLCFI_TIMEMOD_FOS_PREDICTED, 00203 XLCFI_TIMEMOD_FOS_RESTITUTED, 00204 XLCFI_TIMEMOD_DORIS_PRELIMINARY, 00205 XLCFI_TIMEMOD_DORIS_PRECISE, 00206 XLCFI_TIMEMOD_DORIS_NAVIGATOR 00207 } TimeModelEnum; 00208 00209 00211 typedef enum 00212 { 00213 XLCFI_TIME_UNDEF = -1, 00214 XLCFI_TIME_TAI, 00215 XLCFI_TIME_UTC, 00216 XLCFI_TIME_UT1, 00217 XLCFI_TIME_GPS 00218 } XLTimeRefEnum; 00219 00220 00222 typedef enum 00223 { 00224 XLCFI_PROC = 0 00225 } TimeProcEnum; 00226 00228 typedef enum 00229 { 00230 XLCFI_TRANS_STD = 0, 00231 XLCFI_TRANS_ENVI_GS = 11, 00232 XLCFI_TRANS_CRYO_GS = 21, 00233 XLCFI_TRANS_CRYO_TM = 22, 00234 XLCFI_TRANS_CRYO_TM_SIRAL = 23, 00235 XLCFI_TRANS_SMOS_TM = 31 00236 } TimeTransEnum; 00237 00238 00257 typedef enum 00258 { 00259 XLCFI_ASCII_UNDEF = -1, 00260 XLCFI_ASCII_STD = 11, 00261 XLCFI_ASCII_STD_REF = 12, 00262 XLCFI_ASCII_STD_MICROSEC = 13, 00263 XLCFI_ASCII_STD_REF_MICROSEC = 14, 00264 XLCFI_ASCII_COMPACT = 21, 00265 XLCFI_ASCII_COMPACT_REF = 22, 00266 XLCFI_ASCII_COMPACT_MICROSEC = 23, 00267 XLCFI_ASCII_COMPACT_REF_MICROSEC = 24, 00268 XLCFI_ASCII_ENVI = 31, 00269 XLCFI_ASCII_ENVI_REF = 32, 00270 XLCFI_ASCII_ENVI_MICROSEC = 33, 00271 XLCFI_ASCII_ENVI_REF_MICROSEC = 34, 00272 XLCFI_ASCII_CCSDSA = 41, 00273 XLCFI_ASCII_CCSDSA_REF = 42, 00274 XLCFI_ASCII_CCSDSA_MICROSEC = 43, 00275 XLCFI_ASCII_CCSDSA_REF_MICROSEC = 44, 00276 XLCFI_ASCII_CCSDSA_COMPACT = 51, 00277 XLCFI_ASCII_CCSDSA_COMPACT_REF = 52, 00278 XLCFI_ASCII_CCSDSA_COMPACT_MICROSEC = 53, 00279 XLCFI_ASCII_CCSDSA_COMPACT_REF_MICROSEC = 54 00280 } TimeAsciiEnum; 00281 00282 00284 typedef enum // Flag to indicate the grade of a derivative 00285 { 00286 XLCFI_NO_DER = 0, 00287 XLCFI_DER_1ST, 00288 XLCFI_DER_2ND 00289 } DerivEnum; 00290 00291 00293 typedef enum // It defines a coordinate system 00294 { 00295 XLCFI_CS_UNDEF, 00296 XLCFI_CS_GALACTIC, 00297 XLCFI_CS_BM1950, 00298 XLCFI_CS_BM2000, 00299 XLCFI_CS_HM2000, 00300 XLCFI_CS_GM2000, 00301 XLCFI_CS_MOD, 00302 XLCFI_CS_TOD, 00303 XLCFI_CS_EF, 00304 XLCFI_CS_TOPOCENTRIC, 00305 XLCFI_CS_SAT_ORBITAL_REF, 00306 XLCFI_CS_SAT_NOMINAL_ATT, 00307 XLCFI_CS_SAT_ATT, 00308 XLCFI_CS_INSTR_ATT 00309 } CoordinateSystemEnum; 00310 00312 typedef enum 00313 { 00314 XLCFI_KEPLER_MEAN = 1, 00315 XLCFI_KEPLER_OSC 00316 } KeplerModeEnum; 00317 00319 typedef enum 00320 { 00321 XLCFI_MODE_FLAG_LOCATION = 0, 00322 XLCFI_MODE_FLAG_DIRECTION 00323 } ModeFlagEnum; 00324 00326 typedef enum 00327 { 00328 XLCFI_MERCURY = 1, 00329 XLCFI_VENUS, 00330 XLCFI_EM_BAR, 00331 XLCFI_MARS, 00332 XLCFI_JUPITER, 00333 XLCFI_SATURN, 00334 XLCFI_URANUS, 00335 XLCFI_NEPTUNE 00336 } PlanetEnum; 00337 00339 typedef enum 00340 { 00341 XLCFI_FK4 = 0, 00342 XLCFI_FK5 00343 } StarCatalogEnum; 00344 00345 00347 typedef enum 00348 { 00349 XLCFI_ANGLE_TYPE_TRUE_LAT_TOD = 1, 00350 XLCFI_ANGLE_TYPE_MEAN_LAT_TOD 00351 } AngleTypeEnum; 00352 00354 typedef enum 00355 { 00356 XLCFI_MODEL_DEFAULT, 00357 XLCFI_MODEL_CONFIG 00358 } ModelSetsEnum; 00359 00361 typedef enum 00362 { 00363 XLCFI_MODEL_TYPE_EARTH, 00364 XLCFI_MODEL_TYPE_SUN, 00365 XLCFI_MODEL_TYPE_MOON, 00366 XLCFI_MODEL_TYPE_PLANET, 00367 XLCFI_MODEL_TYPE_STAR, 00368 XLCFI_MODEL_TYPE_NUTATION, 00369 XLCFI_MODEL_TYPE_PRECESSION, 00370 XLCFI_MODEL_TYPE_CONSTANTS, 00371 XLCFI_NUM_MODEL_TYPES_ENUM 00372 } ModelTypesEnum; 00373 00375 typedef enum 00376 { 00377 XLCFI_MODEL_EARTH_DEFAULT 00378 } ModelEarthEnum; 00379 00380 00382 typedef enum 00383 { 00384 XLCFI_MODEL_SUN_DEFAULT 00385 } ModelSunEnum; 00386 00387 00389 typedef enum 00390 { 00391 XLCFI_MODEL_MOON_DEFAULT 00392 } ModelMoonEnum; 00393 00394 00396 typedef enum 00397 { 00398 XLCFI_MODEL_PLANETS_DEFAULT 00399 } ModelPlanetsEnum; 00400 00401 00403 typedef enum 00404 { 00405 XLCFI_MODEL_STAR_DEFAULT 00406 } ModelStarEnum; 00407 00408 00410 typedef enum 00411 { 00412 XLCFI_MODEL_NUTATION_DEFAULT 00413 } ModelNutationEnum; 00414 00415 00417 typedef enum 00418 { 00419 XLCFI_MODEL_PRECESSION_DEFAULT 00420 } ModelPrecessionEnum; 00421 00423 typedef enum 00424 { 00425 XLCFI_MODEL_CONSTANTS_DEFAULT 00426 } ModelConstantsEnum; 00427 00428 } // closing namespace 00429 00430 #endif