OrbitDataSP3_T.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 "OrbitDataSP3.hpp"
40 #include "TestUtil.hpp"
41 #include "GPSWeekSecond.hpp"
42 #include "CivilTime.hpp"
43 #include <iomanip>
44 
45 
47 {
48 public:
50 
51  unsigned constructorTest();
52  unsigned copyXVTest();
53  unsigned copyTTest();
54  unsigned getUserTimeTest();
55  unsigned getXvtTest();
56 
59 };
60 
61 
64  : civ(2015,7,19,2,0,0.0,gnsstk::TimeSystem::GPS),
65  ct(civ)
66 {
67 }
68 
69 
70 unsigned OrbitDataSP3_T ::
72 {
73  TUDEF("OrbitDataSP3", "OrbitDataSP3");
76  uut.timeStamp);
77  TUASSERTFE(0.0, uut.pos[0]);
78  TUASSERTFE(0.0, uut.pos[1]);
79  TUASSERTFE(0.0, uut.pos[2]);
80  TUASSERTFE(0.0, uut.posSig[0]);
81  TUASSERTFE(0.0, uut.posSig[1]);
82  TUASSERTFE(0.0, uut.posSig[2]);
83  TUASSERTFE(0.0, uut.vel[0]);
84  TUASSERTFE(0.0, uut.vel[1]);
85  TUASSERTFE(0.0, uut.vel[2]);
86  TUASSERTFE(0.0, uut.velSig[0]);
87  TUASSERTFE(0.0, uut.velSig[1]);
88  TUASSERTFE(0.0, uut.velSig[2]);
89  TUASSERTFE(0.0, uut.acc[0]);
90  TUASSERTFE(0.0, uut.acc[1]);
91  TUASSERTFE(0.0, uut.acc[2]);
92  TUASSERTFE(0.0, uut.accSig[0]);
93  TUASSERTFE(0.0, uut.accSig[1]);
94  TUASSERTFE(0.0, uut.accSig[2]);
95  TUASSERTFE(0.0, uut.clkBias);
96  TUASSERTFE(0.0, uut.biasSig);
97  TUASSERTFE(0.0, uut.clkDrift);
98  TUASSERTFE(0.0, uut.driftSig);
99  TUASSERTFE(0.0, uut.clkDrRate);
100  TUASSERTFE(0.0, uut.drRateSig);
101  TURETURN();
102 }
103 
104 
105 unsigned OrbitDataSP3_T ::
107 {
108  TUDEF("OrbitDataSP3", "copyXV");
109  gnsstk::OrbitDataSP3 uut, from;
110  TUASSERTFE(0.0, uut.pos[0]);
111  TUASSERTFE(0.0, uut.pos[1]);
112  TUASSERTFE(0.0, uut.pos[2]);
113  TUASSERTFE(0.0, uut.posSig[0]);
114  TUASSERTFE(0.0, uut.posSig[1]);
115  TUASSERTFE(0.0, uut.posSig[2]);
116  TUASSERTFE(0.0, uut.vel[0]);
117  TUASSERTFE(0.0, uut.vel[1]);
118  TUASSERTFE(0.0, uut.vel[2]);
119  TUASSERTFE(0.0, uut.velSig[0]);
120  TUASSERTFE(0.0, uut.velSig[1]);
121  TUASSERTFE(0.0, uut.velSig[2]);
122  TUASSERTFE(0.0, uut.acc[0]);
123  TUASSERTFE(0.0, uut.acc[1]);
124  TUASSERTFE(0.0, uut.acc[2]);
125  TUASSERTFE(0.0, uut.accSig[0]);
126  TUASSERTFE(0.0, uut.accSig[1]);
127  TUASSERTFE(0.0, uut.accSig[2]);
128  unsigned i = 1;
129  from.pos[0] = i++;
130  from.pos[1] = i++;
131  from.pos[2] = i++;
132  from.posSig[0] = i++;
133  from.posSig[1] = i++;
134  from.posSig[2] = i++;
135  from.vel[0] = i++;
136  from.vel[1] = i++;
137  from.vel[2] = i++;
138  from.velSig[0] = i++;
139  from.velSig[1] = i++;
140  from.velSig[2] = i++;
141  from.acc[0] = i++;
142  from.acc[1] = i++;
143  from.acc[2] = i++;
144  from.accSig[0] = i++;
145  from.accSig[1] = i++;
146  from.accSig[2] = i++;
147  from.clkBias = i++;
148  from.biasSig = i++;
149  from.clkDrift = i++;
150  from.driftSig = i++;
151  from.clkDrRate = i++;
152  from.drRateSig = i++;
153  TUCATCH(uut.copyXV(from));
154  // make sure uut has been updated and from has not.
155  i = 1;
156  TUASSERTFE((double)i, uut.pos[0]);
157  TUASSERTFE((double)i++, from.pos[0]);
158  TUASSERTFE((double)i, uut.pos[1]);
159  TUASSERTFE((double)i++, from.pos[1]);
160  TUASSERTFE((double)i, uut.pos[2]);
161  TUASSERTFE((double)i++, from.pos[2]);
162  TUASSERTFE((double)i, uut.posSig[0]);
163  TUASSERTFE((double)i++, from.posSig[0]);
164  TUASSERTFE((double)i, uut.posSig[1]);
165  TUASSERTFE((double)i++, from.posSig[1]);
166  TUASSERTFE((double)i, uut.posSig[2]);
167  TUASSERTFE((double)i++, from.posSig[2]);
168  TUASSERTFE((double)i, uut.vel[0]);
169  TUASSERTFE((double)i++, from.vel[0]);
170  TUASSERTFE((double)i, uut.vel[1]);
171  TUASSERTFE((double)i++, from.vel[1]);
172  TUASSERTFE((double)i, uut.vel[2]);
173  TUASSERTFE((double)i++, from.vel[2]);
174  TUASSERTFE((double)i, uut.velSig[0]);
175  TUASSERTFE((double)i++, from.velSig[0]);
176  TUASSERTFE((double)i, uut.velSig[1]);
177  TUASSERTFE((double)i++, from.velSig[1]);
178  TUASSERTFE((double)i, uut.velSig[2]);
179  TUASSERTFE((double)i++, from.velSig[2]);
180  TUASSERTFE((double)i, uut.acc[0]);
181  TUASSERTFE((double)i++, from.acc[0]);
182  TUASSERTFE((double)i, uut.acc[1]);
183  TUASSERTFE((double)i++, from.acc[1]);
184  TUASSERTFE((double)i, uut.acc[2]);
185  TUASSERTFE((double)i++, from.acc[2]);
186  TUASSERTFE((double)i, uut.accSig[0]);
187  TUASSERTFE((double)i++, from.accSig[0]);
188  TUASSERTFE((double)i, uut.accSig[1]);
189  TUASSERTFE((double)i++, from.accSig[1]);
190  TUASSERTFE((double)i, uut.accSig[2]);
191  TUASSERTFE((double)i++, from.accSig[2]);
192  TUASSERTFE(0.0, uut.clkBias);
193  TUASSERTFE((double)i++, from.clkBias);
194  TUASSERTFE(0.0, uut.biasSig);
195  TUASSERTFE((double)i++, from.biasSig);
196  TUASSERTFE(0.0, uut.clkDrift);
197  TUASSERTFE((double)i++, from.clkDrift);
198  TUASSERTFE(0.0, uut.driftSig);
199  TUASSERTFE((double)i++, from.driftSig);
200  TUASSERTFE(0.0, uut.clkDrRate);
201  TUASSERTFE((double)i++, from.clkDrRate);
202  TUASSERTFE(0.0, uut.drRateSig);
203  TUASSERTFE((double)i++, from.drRateSig);
204  TURETURN();
205 }
206 
207 
208 unsigned OrbitDataSP3_T ::
210 {
211  TUDEF("OrbitDataSP3", "copyT");
212  gnsstk::OrbitDataSP3 uut, from;
213  TUASSERTFE(0.0, uut.clkBias);
214  TUASSERTFE(0.0, uut.biasSig);
215  TUASSERTFE(0.0, uut.clkDrift);
216  TUASSERTFE(0.0, uut.driftSig);
217  TUASSERTFE(0.0, uut.clkDrRate);
218  TUASSERTFE(0.0, uut.drRateSig);
219  unsigned i = 1;
220  from.pos[0] = i++;
221  from.pos[1] = i++;
222  from.pos[2] = i++;
223  from.posSig[0] = i++;
224  from.posSig[1] = i++;
225  from.posSig[2] = i++;
226  from.vel[0] = i++;
227  from.vel[1] = i++;
228  from.vel[2] = i++;
229  from.velSig[0] = i++;
230  from.velSig[1] = i++;
231  from.velSig[2] = i++;
232  from.acc[0] = i++;
233  from.acc[1] = i++;
234  from.acc[2] = i++;
235  from.accSig[0] = i++;
236  from.accSig[1] = i++;
237  from.accSig[2] = i++;
238  from.clkBias = i++;
239  from.biasSig = i++;
240  from.clkDrift = i++;
241  from.driftSig = i++;
242  from.clkDrRate = i++;
243  from.drRateSig = i++;
244  TUCATCH(uut.copyT(from));
245  // make sure uut has been updated and from has not.
246  i = 1;
247  TUASSERTFE(0.0, uut.pos[0]);
248  TUASSERTFE((double)i++, from.pos[0]);
249  TUASSERTFE(0.0, uut.pos[1]);
250  TUASSERTFE((double)i++, from.pos[1]);
251  TUASSERTFE(0.0, uut.pos[2]);
252  TUASSERTFE((double)i++, from.pos[2]);
253  TUASSERTFE(0.0, uut.posSig[0]);
254  TUASSERTFE((double)i++, from.posSig[0]);
255  TUASSERTFE(0.0, uut.posSig[1]);
256  TUASSERTFE((double)i++, from.posSig[1]);
257  TUASSERTFE(0.0, uut.posSig[2]);
258  TUASSERTFE((double)i++, from.posSig[2]);
259  TUASSERTFE(0.0, uut.vel[0]);
260  TUASSERTFE((double)i++, from.vel[0]);
261  TUASSERTFE(0.0, uut.vel[1]);
262  TUASSERTFE((double)i++, from.vel[1]);
263  TUASSERTFE(0.0, uut.vel[2]);
264  TUASSERTFE((double)i++, from.vel[2]);
265  TUASSERTFE(0.0, uut.velSig[0]);
266  TUASSERTFE((double)i++, from.velSig[0]);
267  TUASSERTFE(0.0, uut.velSig[1]);
268  TUASSERTFE((double)i++, from.velSig[1]);
269  TUASSERTFE(0.0, uut.velSig[2]);
270  TUASSERTFE((double)i++, from.velSig[2]);
271  TUASSERTFE(0.0, uut.acc[0]);
272  TUASSERTFE((double)i++, from.acc[0]);
273  TUASSERTFE(0.0, uut.acc[1]);
274  TUASSERTFE((double)i++, from.acc[1]);
275  TUASSERTFE(0.0, uut.acc[2]);
276  TUASSERTFE((double)i++, from.acc[2]);
277  TUASSERTFE(0.0, uut.accSig[0]);
278  TUASSERTFE((double)i++, from.accSig[0]);
279  TUASSERTFE(0.0, uut.accSig[1]);
280  TUASSERTFE((double)i++, from.accSig[1]);
281  TUASSERTFE(0.0, uut.accSig[2]);
282  TUASSERTFE((double)i++, from.accSig[2]);
283  TUASSERTFE((double)i, uut.clkBias);
284  TUASSERTFE((double)i++, from.clkBias);
285  TUASSERTFE((double)i, uut.biasSig);
286  TUASSERTFE((double)i++, from.biasSig);
287  TUASSERTFE((double)i, uut.clkDrift);
288  TUASSERTFE((double)i++, from.clkDrift);
289  TUASSERTFE((double)i, uut.driftSig);
290  TUASSERTFE((double)i++, from.driftSig);
291  TUASSERTFE((double)i, uut.clkDrRate);
292  TUASSERTFE((double)i++, from.clkDrRate);
293  TUASSERTFE((double)i, uut.drRateSig);
294  TUASSERTFE((double)i++, from.drRateSig);
295  TURETURN();
296 }
297 
298 
299 unsigned OrbitDataSP3_T ::
301 {
302  TUDEF("OrbitDataSP3", "getUserTime");
304  gnsstk::CommonTime t = gnsstk::CivilTime(2020,1,2,3,4,5);
305  uut.timeStamp = t;
307  TURETURN();
308 }
309 
310 
311 unsigned OrbitDataSP3_T ::
313 {
314  TUDEF("OrbitDataSP3", "getXvt");
316  gnsstk::CommonTime t = gnsstk::CivilTime(2020,1,2,3,4,5);
317  uut.timeStamp = t;
318  uut.pos[0] = -15381.810046000001;
319  uut.pos[1] = -15574.915217;
320  uut.pos[2] = -15688.632718000001;
321  uut.vel[0] = -15381.810046000001;
322  uut.vel[1] = -15574.915217;
323  uut.vel[2] = -15688.632718000001;
324  uut.clkBias = 123.456789;
325  uut.clkDrift = 234.56789;
326  // make sure the scales are correct.
327  gnsstk::Xvt xvt;
328  TUASSERTE(bool, true, uut.getXvt(t, xvt));
329  TUASSERTFE(-15381810.046000001, xvt.x[0]);
330  TUASSERTFE(-15574915.217, xvt.x[1]);
331  TUASSERTFE(-15688632.718000001, xvt.x[2]);
332  TUASSERTFE(-1538.1810046000001, xvt.v[0]);
333  TUASSERTFE(-1557.4915217, xvt.v[1]);
334  TUASSERTFE(-1568.8632718000001, xvt.v[2]);
335  TUASSERTFE(0.000123456789, xvt.clkbias);
336  TUASSERTFE(0.00023456789, xvt.clkdrift);
337  TURETURN();
338 }
339 
340 
341 int main()
342 {
343  OrbitDataSP3_T testClass;
344  unsigned errorTotal = 0;
345 
346  errorTotal += testClass.constructorTest();
347  errorTotal += testClass.copyXVTest();
348  errorTotal += testClass.copyTTest();
349  errorTotal += testClass.getUserTimeTest();
350  errorTotal += testClass.getXvtTest();
351 
352  std::cout << "Total Failures for " << __FILE__ << ": " << errorTotal
353  << std::endl;
354 
355  return errorTotal;
356 }
357 
gnsstk::OrbitDataSP3::posSig
Triple posSig
Standard deviation of position.
Definition: OrbitDataSP3.hpp:91
gnsstk::NavData::getUserTime
virtual CommonTime getUserTime() const
Definition: NavData.hpp:110
gnsstk::OrbitDataSP3::driftSig
double driftSig
SV clock drift std deviation in microseconds/sec.
Definition: OrbitDataSP3.hpp:99
TUCATCH
#define TUCATCH(STATEMENT)
Definition: TestUtil.hpp:193
OrbitDataSP3_T::getXvtTest
unsigned getXvtTest()
Definition: OrbitDataSP3_T.cpp:312
gnsstk::OrbitDataSP3::vel
Triple vel
ECEF velocity (dm/s) of satellite at time.
Definition: OrbitDataSP3.hpp:92
TUASSERTE
#define TUASSERTE(TYPE, EXP, GOT)
Definition: TestUtil.hpp:81
gnsstk::OrbitDataSP3::copyXV
void copyXV(const OrbitDataSP3 &right)
Definition: OrbitDataSP3.cpp:58
gnsstk::OrbitDataSP3::velSig
Triple velSig
Standard deviation of velocity.
Definition: OrbitDataSP3.hpp:93
OrbitDataSP3_T::civ
gnsstk::CivilTime civ
Definition: OrbitDataSP3_T.cpp:57
gnsstk::OrbitDataSP3::clkBias
double clkBias
SV clock bias in microseconds.
Definition: OrbitDataSP3.hpp:96
gnsstk::OrbitDataSP3::accSig
Triple accSig
Standard deviation of acceleration.
Definition: OrbitDataSP3.hpp:95
gnsstk::CommonTime::BEGINNING_OF_TIME
static const GNSSTK_EXPORT CommonTime BEGINNING_OF_TIME
earliest representable CommonTime
Definition: CommonTime.hpp:102
gnsstk::Xvt::v
Triple v
satellite velocity in ECEF Cartesian, meters/second
Definition: Xvt.hpp:152
OrbitDataSP3_T
Definition: OrbitDataSP3_T.cpp:46
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
OrbitDataSP3_T::ct
gnsstk::CommonTime ct
Definition: OrbitDataSP3_T.cpp:58
OrbitDataSP3_T::OrbitDataSP3_T
OrbitDataSP3_T()
Definition: OrbitDataSP3_T.cpp:63
gnsstk::NavData::timeStamp
CommonTime timeStamp
Definition: NavData.hpp:173
OrbitDataSP3_T::copyTTest
unsigned copyTTest()
Definition: OrbitDataSP3_T.cpp:209
gnsstk::Xvt::x
Triple x
Sat position ECEF Cartesian (X,Y,Z) meters.
Definition: Xvt.hpp:151
TestUtil.hpp
gnsstk::OrbitDataSP3::pos
Triple pos
ECEF position (km) of satellite at time.
Definition: OrbitDataSP3.hpp:90
TURETURN
#define TURETURN()
Definition: TestUtil.hpp:232
OrbitDataSP3_T::constructorTest
unsigned constructorTest()
Definition: OrbitDataSP3_T.cpp:71
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::Xvt::clkdrift
double clkdrift
satellite clock drift in seconds/second
Definition: Xvt.hpp:154
gnsstk::TimeSystem
TimeSystem
Definition of various time systems.
Definition: TimeSystem.hpp:51
gnsstk::Xvt
Definition: Xvt.hpp:60
CivilTime.hpp
TUDEF
#define TUDEF(CLASS, METHOD)
Definition: TestUtil.hpp:56
OrbitDataSP3_T::getUserTimeTest
unsigned getUserTimeTest()
Definition: OrbitDataSP3_T.cpp:300
gnsstk::OrbitDataSP3::copyT
void copyT(const OrbitDataSP3 &right)
Definition: OrbitDataSP3.cpp:70
gnsstk::OrbitDataSP3::clkDrift
double clkDrift
SV clock drift in s/s.
Definition: OrbitDataSP3.hpp:98
OrbitDataSP3.hpp
gnsstk::OrbitDataSP3::acc
Triple acc
Acceleration (m/s/s) of satellite at time.
Definition: OrbitDataSP3.hpp:94
gnsstk::CivilTime
Definition: CivilTime.hpp:55
gnsstk::OrbitDataSP3::getXvt
bool getXvt(const CommonTime &when, Xvt &xvt, const ObsID &oid=ObsID()) override
Definition: OrbitDataSP3.cpp:82
GPSWeekSecond.hpp
gnsstk::OrbitDataSP3::clkDrRate
double clkDrRate
SV clock drift rate in s/s**2.
Definition: OrbitDataSP3.hpp:100
gnsstk::OrbitDataSP3::biasSig
double biasSig
SV clock bias std deviation in microseconds.
Definition: OrbitDataSP3.hpp:97
TUASSERTFE
#define TUASSERTFE(EXP, GOT)
Definition: TestUtil.hpp:103
gnsstk::OrbitDataSP3
Class for orbit information using SP3 data tables.
Definition: OrbitDataSP3.hpp:51
gnsstk::Xvt::clkbias
double clkbias
Sat clock correction in seconds.
Definition: Xvt.hpp:153
OrbitDataSP3_T::copyXVTest
unsigned copyXVTest()
Definition: OrbitDataSP3_T.cpp:106
main
int main()
Definition: OrbitDataSP3_T.cpp:341
gnsstk::OrbitDataSP3::drRateSig
double drRateSig
Definition: OrbitDataSP3.hpp:101


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