Benchmark Data for Force Model Comparisons ========================================== Models and data compiled by Torsten Mayer-Guerr (mayer-guerr@tugraz.at) in the framework of COST-G Directories: - documents/ : Applied conventions - models/ : The orginal and converted data - satellite/ : The simulated orbit with computed accelerations 00 orbit ======== Integrated orbit using 'models/EIGEN6-C4.gfc' (degree/order 0..180). Day 2008-07-03, sampling 30 seconds - 00orbit_icrf.txt: gps time [mjd], x, y, z [m], vx, vy, vz [m/s], ax, ay, az [m/s**2] - 00orbit_itrf.txt: gps time [mjd], x, y, z [m], vx, vy, vz [m/s], ax, ay, az [m/s**2] (velocities and accelerations are expressed in earth fixed coordinates but still inertial definitions: \omega\times\r correction no applied) Also provided in SP3 format, but without guarantee. 01 earth rotation ================= IERS 2010 conventions: sofa (20170420) routines: X, Y = iau_xy06(2400000.5+timeTT.mjdInt(), timeTT.mjdMod()); s = iau_s06 (2400000.5+timeTT.mjdInt(), timeTT.mjdMod(), X,Y); s' = iau_sp00(2400000.5+timeTT.mjdInt(), timeTT.mjdMod()); The EOP from file 'models/eopc04_14_IAU2000.62-now' are interpolated using a polynomial (degree 3, 4 points) and corrected using: ortho_eop.f (section 5.5.1.2) pmsdnut2.f (section 5.5.1.3) utlibr.f (section 5.5.3.3) Interpolated and corrected EOP as used in eq. (5.3), (5.5), (5.6), (5.7): - 01earthRotation_interpolatedEOP.txt: gps time [mjd], xp, yp, s' [rad], dUT1, LOD [seconds], X, Y, s [rad] - 01earthRotation_quaternion.txt: gps time [mjd], q0, qx, qy, qz [-] - 01earthRotation_rotaryMatrix.txt: gps time [mjd], xx, xy, xz, yx, yy, yz, zx, zy, zz [-] 02 accelerations ================ All files: - xxxxx_icrf.txt: gps time [mjd], ax, ay, az [m/s**2] 02 gravity field ---------------- 'models/EIGEN6-C4.gfc' (degree/order 2..180) - 02gravityfield_icrf.txt - 02gravityfield_itrf.txt 03 direct tides --------------- Based on JPL DE421 ephemeris. Bodies as point masses. Constants defined in GROOPS: GM_Sun = 1.32712442076e20; GM_Moon = 0.49028010560e13; GM_MERCURY = GM_Sun/6023600.0; GM_VENUS = GM_Sun/408523.71; GM_MARS = GM_Sun/3098708.0; GM_JUPITER = GM_Sun/1047.3486; GM_SATURN = GM_Sun/3497.898; - 03directTideMoon_icrf.txt - 03directTideMoon_withJ2_icrf.txt: Considering the Earth oblateness with c20 = -4.84166854896119e-04 - 03directTideSun_icrf.txt - 03directTidePlanets_icrf.txt: MERCURY, VENUS, MARS, JUPITER, SATURN 04 solid Earth Tides -------------------- IERS 2010 conventions. Based on JPL DE421 ephemeris. Equations (6.6), (6.7), (6.8b) and table 6.3 (Anelastic Earth), table 6.5a, table 6.5b Permanent tides included: eq. (6.14) not applied - 04solidEarthTide_icrf.txt 05 Solid Earth pole tide ------------------------ IERS 2010 conventions, last equation in section 6.4. m1, m2 computed using eq. (7.24), xp and yp taken from '01earthRotation_interpolatedEOP.txt' (converted to arc sec) Mean pole (new secular pole): xp_bar = 55e-3 + 1.677e-3 * t [arc seconds] yp_bar = 320.5e-3 + 3.460e-3 * t, time t is (MJD-51544.5)/365.25; - 05poleTide_icrf.txt 06 Ocean pole tide ------------------ IERS 2010 conventions, eq. (6.23), pole (m1, m2) as in Solid Earth pole tide. Constants used as given in the conventions, except load love numbers as only a few numbers are given. Used Load love numbers instead: 'models/loadLoveNumbers_Gegout97.txt' degree/order 2..180 - 06oceanPoleTide_icrf.txt 07 Relativistic correction -------------------------- IERS 2010 conventions, eq. (10.12) - 07relativistic_icrf.txt 08 AOD1B RL06 ------------- degree/order 2..180 - 08aod1b_RL06_icrf.txt 09 AOD1B RL06 atmospheric tides ------------------------------- From 'GRACE_AOD1B_Product_Description_Document_for_RL06.pdf' (table 5.1) the following doodson codes are derived: p1: 163.555 s1: 164.555 k1: 165.555 n2: 245.655 m2: 255.555 l2: 265.455 t2: 272.556 s2: 273.555 r2: 274.554 t3: 381.555 s3: 382.555 r3: 383.555 The converted model is provided in models/AOD1B_tides_groops_gfc/ in 3 different formats: - *.gfc (Doodson-Wartburg correction (Xi) already applied) - atmosTides_AOD1BRL06.epos.txt(in EPOS format) - atmosTides_AOD1BRL06.iers.txt degree/order 2..180 - 09aod1b_atmosphericTides_S1_icrf.txt: Only S1 is used - 09aod1b_atmosphericTides_icrf.txt: All 12 tides are used 10 Ocean tides -------------- EOT11a ocean tide model is provided in models/EOT11a_oceanTide/ in different formats: - eot11a/*.gfc - oceanTide_EOT11a.epos.txt (in EPOS format) - oceanTide_EOT11a.potential.iers.txt - oceanTide_EOT11a.waterHeight.iers.txt A MATLAB routine is provided to compute the admittance. 18 major tides in EOT11a: 055.565 om1 xi = 180 055.575 om2 xi = 0 056.554 sa xi = 0 057.555 ssa xi = 0 065.455 mm xi = 0 075.555 mf xi = 0 085.455 mtm xi = 0 093.555 msq xi = 0 135.655 q1 xi = -90 145.555 o1 xi = -90 163.555 p1 xi = -90 165.555 k1 xi = 90 235.755 2n2 xi = 0 245.655 n2 xi = 0 255.555 m2 xi = 0 273.555 s2 xi = 0 275.555 k2 xi = 0 455.555 m4 xi = 0 degree/order 2..120 - 10oceanTide_eot11a_M2_icrf.txt: Only M2 is used - 10oceanTide_eot11a_18major_icrf.txt: All 18 major tides are used - 10oceanTide_eot11a_with256Admittance_icrf.txt: With minor tides computed by linear admittance 11 Ocean tides -------------- FES2014b ocean tide model is provided in models/FES2014b_oceanTide/ in different formats: - fes2014b/*.gfc - oceanTide_FES2014b.potential.iers.txt - oceanTide_FES2014b.waterHeight.iers.txt A MATLAB routine is provided to compute the admittance. The model is based on our conversion from the original FES2014 grids. degree/order 2..180 major tides: 055.565 om1 xi = 180 055.575 om2 xi = 0 056.554 sa xi = 0 057.555 ssa xi = 0 065.455 mm xi = 0 075.555 mf xi = 0 085.455 mtm xi = 0 093.555 msq xi = 0 135.655 q1 xi = -90 145.555 o1 xi = -90 163.555 p1 xi = -90 164.555 s1 xi = 180 165.555 k1 xi = 90 175.455 j1 xi = 90 227.655 eps2 xi = 0 235.755 2n2 xi = 0 237.555 mu2 xi = 0 245.655 n2 xi = 0 247.455 nu2 xi = 0 255.555 m2 xi = 0 263.655 la2 xi = 180 265.455 l2 xi = 180 272.556 t2 xi = 0 273.555 s2 xi = 0 274.554 r2 xi = 180 275.555 k2 xi = 0 355.555 m3 xi = 180 435.755 n4 xi = 0 445.655 mn4 xi = 0 455.555 m4 xi = 0 473.555 ms4 xi = 0 491.555 s4 xi = 0 655.555 m6 xi = 0 855.555 m8 xi = 0 - 11oceanTide_fes2014b_34major_icrf.txt: All 34 major tides are used - 11oceanTide_fes2014b_with361Admittance_icrf.txt: With minor tides computed by linear admittance Doodson arguments ================= Doodson arguments and fundamental arguments - 90doodsonArguments.txt: gps time [mjd], 6 doodson arguments, 5 fundamental arguments [rad] GROOPS source code: Vector Doodson::arguments(const Time &timeGPS) { Vector a(6); const Vector f = Planets::fundamentals(timeGPS); a(1) = f(2)+f(4); a(2) = f(2)+f(4)-f(3); a(3) = f(2)+f(4)-f(0); a(4) = -f(4); a(5) = f(2)+f(4)-f(3)-f(1); a(0) = Planets::gmst(timeGPS2UTC(timeGPS)) + PI - a(1); return a; } Vector Planets::fundamentals(const Time &timeGPS) { const Double T = timeGPS2JC(timeGPS); // julian centuries Vector F(5); F(0) = SEKRAD*( 485868.249036+T*(1717915923.2178+T*( 31.8792+T*( 0.051635+T*(-0.00024470))))); F(1) = SEKRAD*(1287104.793048+T*( 129596581.0481+T*( -0.5532+T*( 0.000136+T*(-0.00001149))))); F(2) = SEKRAD*( 335779.526232+T*(1739527262.8478+T*(-12.7512+T*(-0.001037+T*( 0.00000417))))); F(3) = SEKRAD*(1072260.703692+T*(1602961601.2090+T*( -6.3706+T*( 0.006593+T*(-0.00003169))))); F(4) = SEKRAD*( 450160.398036+T*( - 6962890.5431+T*( 7.4722+T*( 0.007702+T*(-0.00005939))))); return F; } Double Planets::gmst(const Time &timeUT1) // is called with UTC instead of UT1 { Double Tu0 = (timeUT1.mjdInt()-51544.5)/36525.0; Double GMST0 = (6.0/24 + 41.0/(24*60) + 50.54841/(24*60*60)) + (8640184.812866/(24*60*60))*Tu0 + (0.093104/(24*60*60))*Tu0*Tu0 + (-6.2e-6/(24*60*60))*Tu0*Tu0*Tu0; Double r = 1.002737909350795 + 5.9006e-11*Tu0 - 5.9e-15*Tu0*Tu0; return fmod(2*PI*(GMST0 + r * timeUT1.mjdMod()), 2*PI); } Time systems ============ DELTA_TAI_GPS = 19.0; DELTA_TT_GPS = 51.184; J2000 = 51544.5; inline Time timeGPS2TT (const Time &timeGPS) { return timeGPS + seconds2time(DELTA_TT_GPS); } inline Double timeGPS2JC (const Time &timeGPS) { return (timeGPS2TT(timeGPS)-mjd2time(J2000)).mjd()/36525.; } inline Time timeGPS2UTC(const Time &timeGPS) { const Double mjd = timeGPS.mjd(); for(UInt i=0; i= MJD_UTC_GPS.at(i)-DELTA_UTC_GPS.at(i)/86400.) return timeGPS + seconds2time(DELTA_UTC_GPS.at(i)); throw(Exception("no leap seconds available at "+timeGPS.dateTimeStr())); } Leap seconds: MJD_UTC_GPS.push_back(57754); DELTA_UTC_GPS.push_back(-18); MJD_UTC_GPS.push_back(57204); DELTA_UTC_GPS.push_back(-17); MJD_UTC_GPS.push_back(56109); DELTA_UTC_GPS.push_back(-16); MJD_UTC_GPS.push_back(54832); DELTA_UTC_GPS.push_back(-15); MJD_UTC_GPS.push_back(53736); DELTA_UTC_GPS.push_back(-14); MJD_UTC_GPS.push_back(51179); DELTA_UTC_GPS.push_back(-13); MJD_UTC_GPS.push_back(50630); DELTA_UTC_GPS.push_back(-12); MJD_UTC_GPS.push_back(50083); DELTA_UTC_GPS.push_back(-11); MJD_UTC_GPS.push_back(49534); DELTA_UTC_GPS.push_back(-10); MJD_UTC_GPS.push_back(49169); DELTA_UTC_GPS.push_back(-9); MJD_UTC_GPS.push_back(48804); DELTA_UTC_GPS.push_back(-8); MJD_UTC_GPS.push_back(48257); DELTA_UTC_GPS.push_back(-7); MJD_UTC_GPS.push_back(47892); DELTA_UTC_GPS.push_back(-6); MJD_UTC_GPS.push_back(47161); DELTA_UTC_GPS.push_back(-5); MJD_UTC_GPS.push_back(46247); DELTA_UTC_GPS.push_back(-4); MJD_UTC_GPS.push_back(45516); DELTA_UTC_GPS.push_back(-3); MJD_UTC_GPS.push_back(45151); DELTA_UTC_GPS.push_back(-2); MJD_UTC_GPS.push_back(44786); DELTA_UTC_GPS.push_back(-1); MJD_UTC_GPS.push_back(44239); DELTA_UTC_GPS.push_back(0); MJD_UTC_GPS.push_back(43874); DELTA_UTC_GPS.push_back(1); MJD_UTC_GPS.push_back(43509); DELTA_UTC_GPS.push_back(2); MJD_UTC_GPS.push_back(43144); DELTA_UTC_GPS.push_back(3); MJD_UTC_GPS.push_back(42778); DELTA_UTC_GPS.push_back(4); MJD_UTC_GPS.push_back(42413); DELTA_UTC_GPS.push_back(5); MJD_UTC_GPS.push_back(42048); DELTA_UTC_GPS.push_back(6); MJD_UTC_GPS.push_back(41683); DELTA_UTC_GPS.push_back(7); MJD_UTC_GPS.push_back(41499); DELTA_UTC_GPS.push_back(8); MJD_UTC_GPS.push_back(41317); DELTA_UTC_GPS.push_back(9); MJD_UTC_GPS.push_back(0); DELTA_UTC_GPS.push_back(10);