GLOCNavEph.cpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 
26 //==============================================================================
27 //
28 // This software was developed by Applied Research Laboratories at the
29 // University of Texas at Austin, under contract to an agency or agencies
30 // within the U.S. Department of Defense. The U.S. Government retains all
31 // rights to use, duplicate, distribute, disclose, or release this software.
32 //
33 // Pursuant to DoD Directive 523024
34 //
35 // DISTRIBUTION STATEMENT A: This software has been approved for public
36 // release, distribution is unlimited.
37 //
38 //==============================================================================
39 #include "GLOCBits.hpp"
40 #include "GLOCNavEph.hpp"
41 #include "TimeString.hpp"
42 #include "PZ90Ellipsoid.hpp"
43 #include "GLONASSTime.hpp"
44 #include "YDSTime.hpp"
45 #include "DebugTrace.hpp"
46 
47 using namespace std;
48 
49 namespace gnsstk
50 {
51  const double GLOCNavEph::we = 7.2921151467e-5;
52 
53 
54  GLOCNavEph ::
55  GLOCNavEph()
56  : N4(-1), NT(-1), Mj(GLOCSatType::Unknown), PS(-1), tb(-1),
57  EjE(-1), EjT(-1), RjE(GLOCRegime::Unknown), RjT(GLOCRegime::Unknown),
58  FjE(-1), FjT(-1),
59  clkBias(std::numeric_limits<double>::quiet_NaN()),
60  freqBias(std::numeric_limits<double>::quiet_NaN()),
61  driftRate(std::numeric_limits<double>::quiet_NaN()),
62  tauc(std::numeric_limits<double>::quiet_NaN()),
63  taucdot(std::numeric_limits<double>::quiet_NaN()),
64  tauDelta(std::numeric_limits<double>::quiet_NaN()),
65  tauGPS(std::numeric_limits<double>::quiet_NaN()),
66  step(60.0)
67  {
69  // 3x 3 second strings.
70  msgLenSec = 9.0;
71  }
72 
73 
74  bool GLOCNavEph ::
75  validate() const
76  {
77  bool rv = (header.validate() &&
78  header11.validate() &&
79  header12.validate());
80  DEBUGTRACE("GLOCNavEph::validate returning " << rv);
81  return rv;
82  }
83 
84 
85  bool GLOCNavEph ::
86  getXvt(const CommonTime& when, Xvt& xvt, const ObsID& oid)
87  {
89  // If the exact epoch is found, let's return the values
90  if (when == Toe)
91  {
92  xvt.x[0] = pos[0]*1.e3; // m
93  xvt.x[1] = pos[1]*1.e3; // m
94  xvt.x[2] = pos[2]*1.e3; // m
95  xvt.v[0] = vel[0]*1.e3; // m/sec
96  xvt.v[1] = vel[1]*1.e3; // m/sec
97  xvt.v[2] = vel[2]*1.e3; // m/sec
98  // In the GLONASS system, 'clkbias' already includes the
99  // relativistic correction, therefore we must substract
100  // the latter from the former.
102  // Added negation here to match the SP3 sign
103  xvt.clkbias = -(clkBias + freqBias * (when - Toe) - xvt.relcorr);
104  xvt.clkdrift = freqBias;
105  xvt.frame = RefFrame(RefFrameSys::PZ90, when);
107  return true;
108  }
109  bool simplified = (std::fabs(when - Toe) <= 900);
110  Vector<double> initialState(6), accel(3), k1(6), k2(6), k3(6),
111  k4(6), tempRes(6), a1(3), a23(3), a4(3);
112  // Convert broadcast values from km to m, which is what the
113  // differential equations use.
114  initialState(0) = pos[0]*1000.0;
115  initialState(2) = pos[1]*1000.0;
116  initialState(4) = pos[2]*1000.0;
117  initialState(1) = vel[0]*1000.0;
118  initialState(3) = vel[1]*1000.0;
119  initialState(5) = vel[2]*1000.0;
120  accel(0) = acc[0]*1000.0;
121  accel(1) = acc[1]*1000.0;
122  accel(2) = acc[2]*1000.0;
123  // Integrate satellite state to desired epoch using the given step
124  double rkStep(step);
125  if ((when - Toe) < 0.0)
126  {
127  rkStep = step*(-1.0);
128  }
129  CommonTime workEpoch(Toe);
130  double tolerance(1e-9);
131  bool done(false);
132  while (!done)
133  {
134  // If we are about to overstep, change the stepsize appropriately
135  // to hit our target final time.
136  if(rkStep > 0.0)
137  {
138  if((workEpoch + rkStep) > when)
139  {
140  rkStep = (when - workEpoch);
141  }
142  }
143  else
144  {
145  if ((workEpoch + rkStep) < when)
146  {
147  rkStep = (when - workEpoch);
148  }
149  }
150  if (haveLTDMP())
151  {
152  double dt = when-Toe;
153  if (std::fabs(dt) >= 900)
154  {
155  dt = workEpoch-Toe;
156  a1 = 1000.0 * ltdmp.geta(dt);
157  a23 = 1000.0 * ltdmp.geta(dt+(rkStep/2.0));
158  a4 = 1000.0 * ltdmp.geta(dt+rkStep);
159  }
160  }
161  k1 = derivative(initialState, accel, a1, simplified);
162  tempRes = initialState + k1*rkStep/2.0;
163  k2 = derivative(tempRes, accel, a23, simplified);
164  tempRes = initialState + k2*rkStep/2.0;
165  k3 = derivative(tempRes, accel, a23, simplified);
166  tempRes = initialState + k3*rkStep;
167  k4 = derivative(tempRes, accel, a4, simplified);
168  initialState = initialState +
169  (k1/6.0 + k2/3.0 + k3/3.0 + k4/6.0) * rkStep;
170  // If we are within tolerance of the target time, we are done.
171  workEpoch += rkStep;
172  if (std::fabs(when - workEpoch) < tolerance)
173  {
174  done = true;
175  }
176  } // while (!done)
177  xvt.x[0] = initialState(0);
178  xvt.x[1] = initialState(2);
179  xvt.x[2] = initialState(4);
180  xvt.v[0] = initialState(1);
181  xvt.v[1] = initialState(3);
182  xvt.v[2] = initialState(5);
183  // In the GLONASS system, 'clkbias' already includes the relativistic
184  // correction, therefore we must substract the late from the former.
186  // Added negation here to match the SP3 sign
187  xvt.clkbias = -(clkBias + freqBias * (when - Toe) - xvt.relcorr);
188  xvt.clkdrift = freqBias;
189  xvt.frame = RefFrame(RefFrameSys::PZ90, when);
191  return true;
192  }
193 
194 
197  {
198  // I would normally use max, but ltdmp.header31/32 may not be
199  // set, leaving their time system set to Unknown. So we do
200  // this the clunky way.
201  CommonTime mr;
204  (header.xmit > mr))
205  {
206  mr = header.xmit;
207  }
209  (header11.xmit > mr))
210  {
211  mr = header11.xmit;
212  }
214  (header12.xmit > mr))
215  {
216  mr = header12.xmit;
217  }
219  (ltdmp.header31.xmit > mr))
220  {
221  mr = ltdmp.header31.xmit;
222  }
224  (ltdmp.header32.xmit > mr))
225  {
226  mr = ltdmp.header32.xmit;
227  }
228  return mr + 3.0;
229  }
230 
231 
232  void GLOCNavEph ::
234  {
237  if (haveLTDMP() && ltdmp.validate())
238  {
239  // four hour fit based on the comments in Appendix J
240  endFit = Toe + 4.0 * 3600.0;
241  }
242  else
243  {
244  // no long-term parameters available, we're limited to
245  // 15 minutes.
246  endFit = Toe + 900.0;
247  }
248  }
249 
250 
251  void GLOCNavEph ::
252  dump(std::ostream& s, DumpDetail dl) const
253  {
254  if (dl == DumpDetail::Terse)
255  {
256  dumpTerse(s);
257  return;
258  }
259  ios::fmtflags oldFlags = s.flags();
260 
261  s.setf(ios::fixed, ios::floatfield);
262  s.setf(ios::right, ios::adjustfield);
263  s.setf(ios::uppercase);
264  s.precision(0);
265  s.fill(' ');
266 
267  s << "****************************************************************"
268  << "************" << endl
269  << "GLONASS ORB/CLK (IMMEDIATE) PARAMETERS" << endl << endl
270  << "SAT : " << signal.sat << endl << " "
271  << StringUtils::asString(Mj) << endl << endl;
272 
273  // the rest is full details, so just return if Full is not asked for.
274  if (dl != DumpDetail::Full)
275  {
276  return;
277  }
278 
280  header.dumpStrOverhead("STR10:", s);
281  header11.dumpStrOverhead("STR11:", s);
282  header12.dumpStrOverhead("STR12:", s);
283  if (haveLTDMP())
284  {
285  ltdmp.header31.dumpStrOverhead("STR31:", s);
286  ltdmp.header32.dumpStrOverhead("STR32:", s);
287  }
288 
289  string tform("%02m/%02d/%Y %03j %02H:%02M:%02S %7.0s %P");
290  s << endl
291  << " TIMES OF INTEREST" << endl << endl
292  << " MM/DD/YYYY DOY HH:MM:SS SOD" << endl
293  << "Begin Valid: " << printTime(beginFit,tform) << endl
294  << "Eph Epoch: " << printTime(Toe,tform) << endl
295  << "End Valid: " << printTime(endFit,tform) << endl
296  << endl;
297 
298  s.setf(ios::scientific, ios::floatfield);
299  s.setf(ios::right, ios::adjustfield);
300  s.setf(ios::uppercase);
301  s.precision(6);
302  s.fill(' ');
303 
304  s << " CLOCK PARAMETERS" << endl << endl
305  << "Bias: " << setw(16) << clkBias << " sec (Ï„)" << endl
306  << "Drift: " << setw(16) << freqBias << " sec/sec (γ)" << endl
307  << "Drift rate: " << setw(16) << driftRate << " sec/(sec**2) (β)"
308  << endl << endl
309  << " EPHEMERIS/CLOCK STATUS" << endl
310  << endl
311  << " AGE REGIME ACCURACY (σ, m)" << endl
312  << "Ephemeris:" << setw(9) << (unsigned)EjE << " " << setw(10)
313  << StringUtils::asString(RjE) << " " << setw(8) << (int)FjE << " ("
314  << setw(0) << setprecision(1) << fixed << factorToSigma(FjE) << ")"
315  << endl
316  << "Clock: " << setw(9) << (unsigned)EjT << " " << setw(10)
317  << StringUtils::asString(RjT) << " " << setw(8) << (int)FjT << " ("
318  << setw(0) << setprecision(1) << fixed << factorToSigma(FjT) << ")"
319  << endl << endl
320  << scientific << setprecision(6)
321  << " ORBIT PARAMETERS" << endl << endl
322  << " "
323  << "X Y Z"
324  << endl
325  << "Position: " << setw(16) << pos[0] << ", " << setw(16) << pos[1]
326  << ", " << setw(16) << pos[2] << " km" << endl
327  << "Velocity: " << setw(16) << vel[0] << ", " << setw(16) << vel[1]
328  << ", " << setw(16) << vel[2] << " km/sec" << endl
329  << "Accel: " << setw(16) << acc[0] << ", " << setw(16) << acc[1]
330  << ", " << setw(16) << acc[2] << " km/sec**2" << endl
331  << "Ant Offset: " << setw(16) << apcOffset[0] << ", " << setw(16)
332  << apcOffset[1] << ", " << setw(16) << apcOffset[2] << endl
333  << endl
334  << "Code Bias: " << setw(16) << tauDelta
335  << " sec (Δτ, L3OCp time to L3OCd time)" << endl
336  << "Time corr: " << setw(16) << tauc << " sec " << setw(16) << taucdot
337  << " sec/sec (GLONASS to MT)" << endl
338  << "Time offset:" << setw(16) << tauGPS << " sec (from GPS)" << endl
339  << "Next Eph: " << setw(16) << (unsigned)PS << " strings" << endl;
340 
341  s.setf(ios::fixed, ios::floatfield);
342  s.precision(0);
343  s << "t_b: " << setw(16) << tb << " seconds (MT)" << endl
344  << "Health (H): " << setw(16) << StringUtils::asString(header.health)
345  << endl << endl;
346 
347  if (haveLTDMP())
348  {
349  s << endl << endl;
350  ltdmp.dump(s);
351  GLONASSTime ref31(N4, NT, ltdmp.tb31);
352  GLONASSTime ref32(N4, NT, ltdmp.tb32);
353  s << endl
354  << "tb (31): " << printTime(ref31,tform) << endl
355  << "tb (32): " << printTime(ref32,tform) << endl;
356  }
357 
358  s.flags(oldFlags);
359  }
360 
361 
362  void GLOCNavEph ::
363  dumpTerse(std::ostream& s) const
364  {
365  string tform("%02H:%02M:%02S");
366  string tform2("%02m/%02d/%4Y %03j %02H:%02M:%02S");
367  s << " " << setw(2) << signal.sat.id << " "
368  << printTime(beginFit,tform) << " ! "
369  << printTime(Toe,tform2) << " ! "
370  << printTime(endFit,tform) << " "
371  << header.dataInvalid << " "
372  << header.svUnhealthy << " "
373  << endl;
374  }
375 
376 
378  derivative(const Vector<double>& inState, const Vector<double>& accel,
379  const Vector<double>& lt, bool simplified)
380  const
381  {
382  // We will need some important PZ90 ellipsoid values
383  PZ90Ellipsoid pz90;
384  const double mu = pz90.gm(); // 398600.44e9;
385  const double ae = pz90.a(); // 6378136
386  const double j02 = -pz90.j20(); // 1082625.7e-9
390  const double we = 7.2921151467e-5;
391  // Let's start getting the current satellite position and velocity
392  double x(inState(0)); // X coordinate
393  double y(inState(2)); // Y coordinate
394  double z(inState(4)); // Z coordinate
395  double r2(x*x + y*y + z*z);
396  double r(std::sqrt(r2));
397  double xmu(mu/r2);
398  double rho(ae/r);
399  double xr(x/r);
400  double yr(y/r);
401  double zr(z/r);
402  double zr2(zr*zr);
403  double k1(-1.5*j02*xmu*rho*rho);
404  double cm(k1*(1.0-5.0*zr2));
405  double cmz(k1*(3.0-5.0*zr2));
406  double k2(cm-xmu);
407  double gloAx(k2*xr + we*we*x + 2.0*we*inState(3) + accel(0));
408  double gloAy(k2*yr + we*we*y - 2.0*we*inState(1) + accel(1));
409  double gloAz((cmz-xmu)*zr + accel(2));
410  if (!simplified)
411  {
412  gloAx += lt[0];
413  gloAy += lt[1];
414  gloAz += lt[2];
415  }
416  Vector<double> dxt({
417  inState(1), gloAx,
418  inState(3), gloAy,
419  inState(5), gloAz });
420  return dxt;
421  } // derivative()
422 
423 
424  double GLOCNavEph ::
425  factorToSigma(int8_t factor)
426  {
427  switch (factor)
428  {
429  case -15: return 0.01;
430  case -14: return 0.02;
431  case -13: return 0.03;
432  case -12: return 0.04;
433  case -11: return 0.06;
434  case -10: return 0.08;
435  case -9: return 0.1;
436  case -8: return 0.15;
437  case -7: return 0.2;
438  case -6: return 0.3;
439  case -5: return 0.4;
440  case -4: return 0.6;
441  case -3: return 0.7;
442  case -2: return 0.8;
443  case -1: return 0.9;
444  case 0: return 1;
445  case 1: return 2;
446  case 2: return 2.5;
447  case 3: return 4;
448  case 4: return 5;
449  case 5: return 7;
450  case 6: return 10;
451  case 7: return 12;
452  case 8: return 14;
453  case 9: return 16;
454  case 10: return 32;
455  case 11: return 64;
456  case 12: return 128;
457  case 13: return 256;
458  case 14: return 512;
459  default: return std::numeric_limits<double>::quiet_NaN();
460  }
461  }
462 }
gnsstk::GLOCNavEph::Mj
GLOCSatType Mj
What satellite j is and what it transmits.
Definition: GLOCNavEph.hpp:138
YDSTime.hpp
gnsstk::GLOCNavEph::validate
bool validate() const override
Definition: GLOCNavEph.cpp:75
gnsstk::GLOCNavEph::RjT
GLOCRegime RjT
Regime for generation of clock data.
Definition: GLOCNavEph.hpp:144
gnsstk::RefFrameSys::PZ90
@ PZ90
The reference frame used by Glonass.
gnsstk::GLOCNavEph::getUserTime
CommonTime getUserTime() const override
Definition: GLOCNavEph.cpp:196
gnsstk::GLOCNavEph::vel
Triple vel
Satellite velocity at tb in km/s.
Definition: GLOCNavEph.hpp:154
gnsstk::NavData::msgLenSec
double msgLenSec
Definition: NavData.hpp:199
gnsstk::SatID::id
int id
Satellite identifier, e.g. PRN.
Definition: SatID.hpp:154
gnsstk::GLOCNavEph::getXvt
bool getXvt(const CommonTime &when, Xvt &xvt, const ObsID &=ObsID()) override
Definition: GLOCNavEph.cpp:86
gnsstk::GLOCNavLTDMP::header32
GLOCNavHeader header32
Header (incl xmit time) data from string 32.
Definition: GLOCNavLTDMP.hpp:79
gnsstk::GLOCNavEph::PS
uint8_t PS
Number of strings from this type 10 to the next.
Definition: GLOCNavEph.hpp:139
gnsstk::GLOCNavHeader::dumpStrOverhead
void dumpStrOverhead(const std::string &label, std::ostream &s) const
Definition: GLOCNavHeader.cpp:81
gnsstk::GLOCNavEph::acc
Triple acc
Satellite acceleration at tb in km/s**2.
Definition: GLOCNavEph.hpp:155
gnsstk::GLOCNavEph::EjT
uint8_t EjT
Age of clock (6-hour intervals).
Definition: GLOCNavEph.hpp:142
gnsstk::GLOCNavHeader::dumpOverHeader
static void dumpOverHeader(std::ostream &s)
Definition: GLOCNavHeader.cpp:72
gnsstk::GLOCNavEph::EjE
uint8_t EjE
Age of ephemeris (6-hour intervals).
Definition: GLOCNavEph.hpp:141
gnsstk::GLOCNavLTDMP::dump
void dump(std::ostream &s) const
Dump (in full detail) the contents of this object.
Definition: GLOCNavLTDMP.cpp:133
gnsstk::GLOCNavEph::pos
Triple pos
Satellite position at tb in km.
Definition: GLOCNavEph.hpp:153
gnsstk::PZ90Ellipsoid::a
virtual double a() const noexcept
Definition: PZ90Ellipsoid.hpp:60
gnsstk::GLOCNavEph::factorToSigma
static double factorToSigma(int8_t factor)
Definition: GLOCNavEph.cpp:425
gnsstk::GLOCNavEph::Toe
CommonTime Toe
Reference time, combining N4, NT and tb.
Definition: GLOCNavEph.hpp:135
gnsstk::GLOCNavEph::tauDelta
double tauDelta
Offset of L3OCP time to L3OCD time.
Definition: GLOCNavEph.hpp:159
gnsstk::GLOCNavEph::RjE
GLOCRegime RjE
Regime for generation of ephemeris data.
Definition: GLOCNavEph.hpp:143
gnsstk::GLOCNavData::header
GLOCNavHeader header
Common data.
Definition: GLOCNavData.hpp:65
gnsstk::toXvtHealth
gnsstk::Xvt::HealthStatus toXvtHealth(SVHealth e)
Cast SVHealth to Xvt::HealthStatus.
Definition: SVHealth.cpp:43
gnsstk::GLOCNavHeader::dataInvalid
bool dataInvalid
Data validity flag (lj, false=valid).
Definition: GLOCNavHeader.hpp:88
gnsstk::NavMessageID::messageType
NavMessageType messageType
Definition: NavMessageID.hpp:97
gnsstk::GLOCNavLTDMP::tb31
unsigned long tb31
Reference instant in Moscow time for string 31.
Definition: GLOCNavLTDMP.hpp:80
DEBUGTRACE
#define DEBUGTRACE(EXPR)
Definition: DebugTrace.hpp:119
example5.oid
oid
Definition: example5.py:29
gnsstk::Xvt::frame
RefFrame frame
reference frame of this data
Definition: Xvt.hpp:156
gnsstk::NavFit::endFit
CommonTime endFit
Time at end of fit interval.
Definition: NavFit.hpp:55
gnsstk::GLOCNavEph::apcOffset
Triple apcOffset
L3OC APC offset from center of mass.
Definition: GLOCNavEph.hpp:158
gnsstk::TimeSystem::Any
@ Any
wildcard; allows comparison with any other type
gnsstk::StringUtils::asString
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
Definition: IonexStoreStrategy.cpp:46
gnsstk::CommonTime::setTimeSystem
CommonTime & setTimeSystem(TimeSystem timeSystem)
Definition: CommonTime.hpp:195
gnsstk::GLOCNavEph::dump
void dump(std::ostream &s, DumpDetail dl) const override
Definition: GLOCNavEph.cpp:252
gnsstk::Xvt::v
Triple v
satellite velocity in ECEF Cartesian, meters/second
Definition: Xvt.hpp:152
gnsstk::RefFrame
Definition: RefFrame.hpp:53
gnsstk::NavData::signal
NavMessageID signal
Source signal identification for this navigation message data.
Definition: NavData.hpp:175
GLOCNavEph.hpp
gnsstk::TimeSystem::Unknown
@ Unknown
unknown time frame; for legacy code compatibility
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::IonexStoreStrategy::Unknown
@ Unknown
Unknown or uninitialized stategy value.
gnsstk::Xvt::relcorr
double relcorr
relativity correction (standard 2R.V/c^2 term), seconds
Definition: Xvt.hpp:155
gnsstk::GLOCNavEph::we
static const GNSSTK_EXPORT double we
Definition: GLOCNavEph.hpp:65
gnsstk::GLOCNavEph::freqBias
double freqBias
Satellite relative frequency bias (gamma^j).
Definition: GLOCNavEph.hpp:148
gnsstk::NavData::timeStamp
CommonTime timeStamp
Definition: NavData.hpp:173
gnsstk::GLOCNavEph::header11
GLOCNavHeader header11
Header (incl xmit time) data from string 11.
Definition: GLOCNavEph.hpp:163
PZ90Ellipsoid.hpp
gnsstk::GLOCNavEph::haveLTDMP
bool haveLTDMP() const
Definition: GLOCNavEph.hpp:132
gnsstk::GLONASSTime
Definition: GLONASSTime.hpp:59
gnsstk::PZ90Ellipsoid::j20
virtual double j20() const noexcept
Definition: PZ90Ellipsoid.hpp:122
gnsstk::GLOCSatType
GLOCSatType
Values for Word M in the ephemeris (immediate) and almanac data.
Definition: GLOCSatType.hpp:47
gnsstk::Xvt::x
Triple x
Sat position ECEF Cartesian (X,Y,Z) meters.
Definition: Xvt.hpp:151
y
page HOWTO subpage DoxygenGuide Documenting Your Code page DoxygenGuide Documenting Your Code todo Flesh out this document section doctips Tips for Documenting When defining make sure that the prototype is identical between the cpp and hpp including both the namespaces and the parameter names for you have std::string as the return type in the hpp file and string as the return type in the cpp Doxygen may get confused and autolink to the cpp version with no documentation If you don t use the same parameter names between the cpp and hpp that will also confuse Doxygen Don t put type information in return or param documentation It doesn t really add anything and will often cause Doxygen to complain and not produce the documentation< br > use note Do not put a comma after a param name unless you mean to document multiple parameters< br/> the output stream</code >< br/> y
Definition: DOCUMENTING.dox:15
gnsstk::GLOCNavEph::taucdot
double taucdot
Rate of correction for GLONASS to Moscow time.
Definition: GLOCNavEph.hpp:151
gnsstk::GLOCNavLTDMP::tb32
unsigned long tb32
Reference instant in Moscow time for string 32.
Definition: GLOCNavLTDMP.hpp:81
gnsstk::GLOCNavHeader::validate
bool validate() const
Definition: GLOCNavHeader.cpp:64
gnsstk::GLOCNavEph::fixFit
void fixFit()
Definition: GLOCNavEph.cpp:233
gnsstk::GLOCNavEph::clkBias
double clkBias
Satellite clock bias in sec (tau^j).
Definition: GLOCNavEph.hpp:147
gnsstk::GLOCNavEph::tauGPS
double tauGPS
Fractional part of offset from GPS to GLONASS time.
Definition: GLOCNavEph.hpp:160
gnsstk::ObsID
Definition: ObsID.hpp:82
GLOCBits.hpp
gnsstk::NavSatelliteID::sat
SatID sat
ID of satellite to which the nav data applies.
Definition: NavSatelliteID.hpp:169
gnsstk::GLOCNavEph::tauc
double tauc
Correction for GLONASS to Moscow time.
Definition: GLOCNavEph.hpp:150
gnsstk::GLOCNavEph::dumpTerse
void dumpTerse(std::ostream &s) const
Definition: GLOCNavEph.cpp:363
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::Xvt::clkdrift
double clkdrift
satellite clock drift in seconds/second
Definition: Xvt.hpp:154
gnsstk::GLOCNavEph::FjE
int8_t FjE
Accuracy factors dependent on ephemeris errors.
Definition: GLOCNavEph.hpp:145
gnsstk::GLOCRegime
GLOCRegime
Regime for data generation (RjE, RjT, see ICD 5.2.2.8).
Definition: GLOCRegime.hpp:47
gnsstk::NavFit::beginFit
CommonTime beginFit
Time at beginning of fit interval.
Definition: NavFit.hpp:54
gnsstk::GLOCNavLTDMP::header31
GLOCNavHeader header31
Header (incl xmit time) data from string 31.
Definition: GLOCNavLTDMP.hpp:78
gnsstk::Xvt
Definition: Xvt.hpp:60
gnsstk::PZ90Ellipsoid::gm
virtual double gm() const noexcept
Definition: PZ90Ellipsoid.hpp:102
gnsstk::GLOCNavEph::FjT
int8_t FjT
Accuracy factors dependent on clock errors.
Definition: GLOCNavEph.hpp:146
gnsstk::DumpDetail::Full
@ Full
Include all detailed information.
gnsstk::Vector< double >
gnsstk::GLOCNavHeader::health
SVHealth health
SV health status.
Definition: GLOCNavHeader.hpp:89
GLONASSTime.hpp
gnsstk::Xvt::health
HealthStatus health
Health status of satellite at ref time.
Definition: Xvt.hpp:157
gnsstk::DumpDetail::Terse
@ Terse
Aptly named, multiple lines of output with no labels.
gnsstk::GLOCNavEph::N4
uint8_t N4
Number of leap years since 1996.
Definition: GLOCNavEph.hpp:136
gnsstk::GLOCNavHeader::svUnhealthy
bool svUnhealthy
Health flag (Hj, false=healthy).
Definition: GLOCNavHeader.hpp:87
gnsstk::CommonTime::getTimeSystem
TimeSystem getTimeSystem() const
Obtain time system info (enum).
Definition: CommonTime.cpp:288
gnsstk::DumpDetail
DumpDetail
Specify level of detail for dump output.
Definition: DumpDetail.hpp:51
gnsstk::PZ90Ellipsoid
Definition: PZ90Ellipsoid.hpp:54
gnsstk::printTime
std::string printTime(const CommonTime &t, const std::string &fmt)
Definition: TimeString.cpp:64
DebugTrace.hpp
gnsstk::GLOCNavEph::derivative
Vector< double > derivative(const Vector< double > &inState, const Vector< double > &accel, const Vector< double > &lt, bool simplified) const
Definition: GLOCNavEph.cpp:378
std
Definition: Angle.hpp:142
gnsstk::NavMessageType::Ephemeris
@ Ephemeris
Precision orbits for the transmitting SV.
gnsstk::GLOCNavEph::ltdmp
GLOCNavLTDMP ltdmp
Long-term dynamic model parameters.
Definition: GLOCNavEph.hpp:161
gnsstk::GLOCNavEph::NT
uint16_t NT
Day within four-year interval N4.
Definition: GLOCNavEph.hpp:137
gnsstk::GLOCNavEph::driftRate
double driftRate
Half rate of relative deviation of carrier freq.
Definition: GLOCNavEph.hpp:149
gnsstk::GLOCNavHeader::xmit
CommonTime xmit
Transmit time of the string.
Definition: GLOCNavHeader.hpp:78
DEBUGTRACE_FUNCTION
#define DEBUGTRACE_FUNCTION()
Definition: DebugTrace.hpp:117
gnsstk::Xvt::clkbias
double clkbias
Sat clock correction in seconds.
Definition: Xvt.hpp:153
gnsstk::Xvt::computeRelativityCorrection
virtual double computeRelativityCorrection(void)
Definition: Xvt.cpp:98
example3.mu
int mu
Definition: example3.py:36
gnsstk::GLOCNavEph::header12
GLOCNavHeader header12
Header (incl xmit time) data from string 12.
Definition: GLOCNavEph.hpp:164
gnsstk::GLOCNavEph::step
double step
Definition: GLOCNavEph.hpp:169
gnsstk::GLOCNavLTDMP::validate
bool validate() const
Definition: GLOCNavLTDMP.cpp:70
gnsstk::GLOCNavEph::tb
unsigned long tb
Instant in Moscow time this data relates to.
Definition: GLOCNavEph.hpp:140
TimeString.hpp
gnsstk::GLOCNavLTDMP::geta
Vector< double > geta(double deltat) const
Definition: GLOCNavLTDMP.cpp:107


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:39