Changeset 2579 in ntrip
- Timestamp:
- Aug 29, 2010, 11:46:55 AM (15 years ago)
- Location:
- trunk/BNC
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/bnc.pro
r2519 r2579 41 41 bncfigurelate.h bncpppclient.h bncversion.h \ 42 42 bancroft.h bncmodel.h bncfigureppp.h bncrawfile.h \ 43 bnctides.h \ 43 44 RTCM/GPSDecoder.h RTCM/RTCM2.h RTCM/RTCM2Decoder.h \ 44 45 RTCM/RTCM2_2021.h RTCM/rtcm_utils.h \ … … 70 71 bncfigurelate.cpp bncpppclient.cpp bnctime.cpp \ 71 72 bancroft.cpp bncmodel.cpp bncfigureppp.cpp bncrawfile.cpp \ 73 bnctides.cpp \ 72 74 RTCM/RTCM2.cpp RTCM/RTCM2Decoder.cpp \ 73 75 RTCM/RTCM2_2021.cpp RTCM/rtcm_utils.cpp \ -
trunk/BNC/bnctides.cpp
r2578 r2579 5 5 6 6 #include "bnctides.h" 7 #include "bncutils.h" 7 8 8 9 using namespace std; … … 167 168 * r_Moon; 168 169 } 170 171 // Tidal Correction 172 //////////////////////////////////////////////////////////////////////////// 173 void tides(const bncTime& time, ColumnVector& xyz) { 174 175 static double lastMjd = 0.0; 176 static ColumnVector xSun(3); 177 static ColumnVector xMoon(3); 178 static double rSun; 179 static double rMoon; 180 181 double Mjd = time.mjd() + time.daysec() / 86400.0; 182 183 if (Mjd != lastMjd) { 184 lastMjd = Mjd; 185 xSun = Sun(Mjd); 186 rSun = sqrt(DotProduct(xSun,xSun)); 187 xSun /= rSun; 188 xMoon = Moon(Mjd); 189 rMoon = sqrt(DotProduct(xMoon,xMoon)); 190 xMoon /= rMoon; 191 } 192 193 double rRec = sqrt(DotProduct(xyz, xyz)); 194 ColumnVector xyzUnit = xyz / rRec; 195 196 // Love's Numbers 197 // -------------- 198 const double H2 = 0.6090; 199 const double L2 = 0.0852; 200 201 // Tidal Displacement 202 // ------------------ 203 double scSun = DotProduct(xyzUnit, xSun); 204 double scMoon = DotProduct(xyzUnit, xMoon); 205 206 double p2Sun = 3.0 * (H2/2.0-L2) * scSun * scSun - H2/2.0; 207 double p2Moon = 3.0 * (H2/2.0-L2) * scMoon * scMoon - H2/2.0; 208 209 double x2Sun = 3.0 * L2 * scSun; 210 double x2Moon = 3.0 * L2 * scMoon; 211 212 const double gmWGS = 398.6005e12; 213 const double gms = 1.3271250e20; 214 const double gmm = 4.9027890e12; 215 216 double facSun = gms / gmWGS * 217 (rRec * rRec * rRec * rRec) / (rSun * rSun * rSun); 218 double facMoon = gmm / gmWGS * 219 (rRec * rRec * rRec * rRec) / (rMoon * rMoon * rMoon); 220 221 double theta = GMST(Mjd); 222 223 double Ell[3]; xyz2ell(xyz.data(), Ell); 224 225 ColumnVector dX = facSun * (x2Sun * xSun + p2Sun * xyzUnit) + 226 facMoon * (x2Moon * xMoon + p2Moon * xyzUnit) - 227 0.025 * sin(Ell[0]) * cos(Ell[0]) * sin(theta+Ell[1]) * xyzUnit; 228 229 xyz += dX; 230 }
Note:
See TracChangeset
for help on using the changeset viewer.