PRSolution.hpp
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 // This software was developed by Applied Research Laboratories at the
28 // University of Texas at Austin, under contract to an agency or agencies
29 // within the U.S. Department of Defense. The U.S. Government retains all
30 // rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 // Pursuant to DoD Directive 523024
33 //
34 // DISTRIBUTION STATEMENT A: This software has been approved for public
35 // release, distribution is unlimited.
36 //
37 //==============================================================================
38 
42 
43 #ifndef PRS_POSITION_SOLUTION_HPP
44 #define PRS_POSITION_SOLUTION_HPP
45 
46 #include <vector>
47 #include <ostream>
48 #include "gnsstk_export.h"
49 #include "stl_helpers.hpp"
50 #include "GNSSconstants.hpp"
51 #include "CommonTime.hpp"
52 #include "RinexSatID.hpp"
53 #include "Stats.hpp"
54 #include "Matrix.hpp"
55 #include "Namelist.hpp"
56 #include "NavLibrary.hpp"
57 #include "TropModel.hpp"
58 
59 namespace gnsstk
60 {
64 
67  class WtdAveStats {
68  private:
69  unsigned int N;
70  //unused
71  //double APV;
72  std::string msg;
73  std::string lab[3];
77 
78  public:
79 
80  // ctor
82  {
83  reset();
84  lab[0]="ECEF_X"; lab[1]="ECEF_Y"; lab[2]="ECEF_Z";
85  }
86 
87  void setMessage(std::string m) { msg = m; }
88  std::string getMessage(void) const { return msg; }
89 
90  void setLabels(std::string lab1, std::string lab2, std::string lab3)
91  { lab[0]=lab1; lab[1]=lab2; lab[2]=lab3; }
92 
93  Vector<double> getSol(void) const
94  {
95  return (getCov()*sumInfoState + Sbias);
96  }
97 
98  Matrix<double> getCov(void) const { return inverseSVD(sumInfo); }
99 
100  Matrix<double> getInfo(void) const { return sumInfo; }
101 
102  int getN(void) const { return N; }
103 
104  void reset(void)
105  {
106  N = 0;
109  Sbias = Vector<double>(3);
110  S[0].Reset();
111  S[1].Reset();
112  S[2].Reset();
113  }
114 
115  // add to statistics, and to weighted average solution and covariance
116  void add(const Vector<double>& Sol, const Matrix<double>& Cov)
117  {
118  try {
119  // add to the statistics
120  for(unsigned int i=0; i<3; i++) {
121  if(N==0) Sbias(i) = Sol(i);
122  S[i].Add(Sol(i)-Sbias(i));
123  }
124 
125  // NB do NOT include clock(s); this can ruin the position average
126  Vector<double> Sol3(Sol);
127  Sol3.resize(3); // assumes position states come first
128  Sol3 = Sol3 - Sbias;
129  Matrix<double> Cov3(Cov,0,0,3,3);
130 
131  // information matrix (position only)
132  Matrix<double> Info(inverseSVD(Cov3));
133  if(N == 0) { // first call: dimension and set to zero
134  sumInfo = Matrix<double>(3,3,0.0);
135  sumInfoState = Vector<double>(3,0.0);
136  }
137 
138  // add to the total information
139  sumInfo += Info;
140  sumInfoState += Info * Sol3;
141  ++N;
142  }
143  catch(Exception& e) { GNSSTK_RETHROW(e); }
144  }
145 
146  // dump statistics and weighted average
147  void dump(std::ostream& os, std::string msg="") const
148  {
149  try {
150  os << "Simple statistics on " << msg << std::endl
151  << std::fixed << std::setprecision(3);
152  if(N > 0) {
153  os << " " << lab[0] << " N: " << S[0].N()
154  << std::fixed << std::setprecision(4)
155  << " Ave: " << S[0].Average()+Sbias[0]
156  << " Std: " << S[0].StdDev()
157  << " Min: " << S[0].Minimum()+Sbias[0]
158  << " Max: " << S[0].Maximum()+Sbias[0]
159  << std::endl;
160  os << " " << lab[1] << " N: " << S[1].N()
161  << std::fixed << std::setprecision(4)
162  << " Ave: " << S[1].Average()+Sbias[1]
163  << " Std: " << S[1].StdDev()
164  << " Min: " << S[1].Minimum()+Sbias[1]
165  << " Max: " << S[1].Maximum()+Sbias[1]
166  << std::endl;
167  os << " " << lab[2] << " N: " << S[2].N()
168  << std::fixed << std::setprecision(4)
169  << " Ave: " << S[2].Average()+Sbias[2]
170  << " Std: " << S[2].StdDev()
171  << " Min: " << S[2].Minimum()+Sbias[2]
172  << " Max: " << S[2].Maximum()+Sbias[2]
173  << std::endl;
174 
175  os << "Weighted average " << msg << std::endl;
177  Vector<double> Sol(Cov * sumInfoState + Sbias);
178  os << std::setw(14) << std::setprecision(4) << Sol << " " << N;
179  }
180  else os << " No data!";
181  }
182  catch(Exception& e) { GNSSTK_RETHROW(e); }
183  }
184 
185  friend std::ostream& operator<<(std::ostream& s, const WtdAveStats& as);
186 
187  }; // end class WtdAveStats
188 
215 
217  {
218  public:
221  SlopeLimit(1000.),
222  NSatsReject(-1),
223  MaxNIterations(10),
224  ConvergenceLimit(3.e-7),
225  hasMemory(true),
226  fixedAPriori(false),
227  nsol(0), ndata(0), APV(0.0),
228  Valid(false)
229  {
230  was.reset();
231  APSolution = Vector<double>(4,0.0);
232  }
233 
235  bool isValid() const { return Valid; }
236 
237  // input parameters: -------------------------------------------------
238 
240  double RMSLimit;
241 
243  double SlopeLimit;
244 
250 
254 
258 
263  std::vector<SatelliteSystem> allowedGNSS;
264 
275  bool hasMemory;
276 
277  // input and output: -------------------------------------------------
278 
283  std::vector<SatID> SatelliteIDs;
284 
285  // output: -------------------------------------------------
286 
296 
300 
304 
307 
311  std::vector<SatelliteSystem> dataGNSS;
312 
315  double APV;
324 
325 
331 
334  double RMSResidual;
335 
338  double MaxSlope;
339 
341  double TDOP,PDOP,GDOP;
342 
345 
347  double Convergence;
348 
350  int Nsvs;
351 
355  bool TropFlag;
356 
360 
361  // member functions -------------------------------------------
362 
386  int PreparePRSolution(const CommonTime& Tr,
387  std::vector<SatID>& Sats,
388  const std::vector<double>& Pseudorange,
389  NavLibrary& eph,
390  Matrix<double>& SVP,
391  NavSearchOrder order = NavSearchOrder::User) const;
392 
430  int SimplePRSolution(const CommonTime& Tr,
431  const std::vector<SatID>& Sats,
432  const Matrix<double>& SVP,
433  const Matrix<double>& invMC,
434  TropModel *pTropModel,
435  const int& niterLimit,
436  const double& convLimit,
437  Vector<double>& Resids,
438  Vector<double>& Slopes);
439 
442  int RAIMComputeUnweighted(const CommonTime& Tr,
443  std::vector<SatID>& Satellites,
444  const std::vector<double>& Pseudorange,
445  NavLibrary& eph,
446  TropModel *pTropModel,
448 
474  int RAIMCompute(const CommonTime& Tr,
475  std::vector<SatID>& Satellites,
476  const std::vector<double>& Pseudorange,
477  const Matrix<double>& invMC,
478  NavLibrary& eph,
479  TropModel *pTropModel,
481 
485  int DOPCompute(void);
486 
487  // output -----------------------------------------------------
490  std::string outputPOSString(std::string tag, int iret=-99,
491  const Vector<double>& Vec=PRSNullVector);
492 
494  std::string outputCLKString(std::string tag, int iret=-99);
495 
497  std::string outputNAVString(std::string tag, int iret=-99,
498  const Vector<double>& Vec=PRSNullVector);
499 
502  std::string outputRMSString(std::string tag, int iret=-99);
503  std::string outputValidString(int iret=-99);
504 
506  std::string outputString(std::string tag, int iret=-99,
507  const Vector<double>& Vec=PRSNullVector);
509  std::string outputStringHeader(std::string tag)
510  { return outputString(tag,-999); }
511 
513  std::string errorCodeString(int iret);
514 
516  std::string configString(std::string tag);
517 
518  // ------------------------------------------------------------
521  void fixAPSolution(const double& X, const double& Y, const double& Z)
522  {
523  //fixedAPriori = true; //TD user input
524 
525  fixedAPrioriPos[0] = X;
526  fixedAPrioriPos[1] = Y;
527  fixedAPrioriPos[2] = Z;
528 
529  if(hasMemory) {
530  APSolution = Vector<double>(3+allowedGNSS.size(),0.0);
531  for(unsigned int i=0; i<3; i++)
532  APSolution(i) = fixedAPrioriPos[i];
533  }
534  }
535 
538  inline double getAPV(void) {
539  if(ndof > 0) return APV/ndof;
540  return 0.0;
541  }
542 
543  // dump solution, statistics and weighted average
544  void dumpSolution(std::ostream& os, std::string msg="PRS")
545  {
546  try {
547  was.setMessage(msg);
548  os << was << std::endl;
549 
550  Matrix<double> Cov(was.getCov());
551  double sig(ndof > 0 ? ::sqrt(APV/ndof) : 0.0);
552  if(ndof > 0) // scale covariance
553  {
554  for(size_t i=0; i<Cov.rows(); i++)
555  {
556  for(size_t j=i; j<Cov.cols(); j++)
557  Cov(i,j) = Cov(j,i) = Cov(i,j)*sig;
558  }
559  }
560  // print cov as labeled matrix
561  Namelist NL;
562  NL += "ECEF_X"; NL += "ECEF_Y"; NL += "ECEF_Z";
563  LabeledMatrix LM(NL,Cov);
564  LM.scientific().setprecision(3).setw(14).symmetric(true);
565 
566  os << "Covariance: " << msg << std::endl << LM << std::endl;
567  os << "APV: " << msg << std::fixed << std::setprecision(3)
568  << " sigma = " << sig << " meters with "
569  << ndof << " degrees of freedom.\n";
570  }
571  catch(Exception& e) { GNSSTK_RETHROW(e); }
572  }
573 
577  {
578  int k;
579  unsigned int i;
580 
581  // first call
582  if(APSolution.size() == 0) {
583  APSolution = Vector<double>(3+allowedGNSS.size(),0.0);
584  for(i=0; i<3; i++)
585  APSolution(i) = fixedAPrioriPos[i];
586  }
587 
588  // must expand Sol to have all allowed clocks
589  Vector<double> S(3+allowedGNSS.size(),0.0);
590  for(i=0; i<3; i++)
591  S(i) = (fixedAPriori ? fixedAPrioriPos[i] : Sol(i));
592  for(i=0; i<allowedGNSS.size(); i++) {
594  S(3+i) = (k == -1 ? APSolution[3+i] : Sol[3+k]);
595  }
596 
597  APSolution = S;
598 
599  //APSolution = Sol;
600  //if(fixedAPriori)
601  // for(int i=0; i<3; i++) APSolution(i) = fixedAPrioriPos[i];
602  }
603 
606  void addToMemory(const Vector<double>& Sol, const Matrix<double>& Cov,
607  const Vector<double>& PreFitResid, const Matrix<double>& Partials,
608  const Matrix<double>& invMeasCov)
609  {
610  was.add(Sol, Cov);
611 
612  // first solution: apriori solution has no clock, so PFR bad
613  if(was.getN() == 1) return;
614 
615  try {
616  // consider only the XYZ states, ignore clocks
617  Matrix<double> Part(Partials,0,0,Partials.rows(),3);
618  Matrix<double> invMC(invMeasCov);
619  if(invMC.rows() == 0) {
620  invMC=Matrix<double>(Part.rows(),Part.rows());
621  ident(invMC);
622  }
623  Matrix<double> sumInfo(was.getInfo());
624  Matrix<double> Ginv(Part*sumInfo*transpose(Part) + invMC);
625  Matrix<double> G(inverseSVD(Ginv));
626  Vector<double> Gpfr(G*PreFitResid);
627  APV += dot(PreFitResid,Gpfr);
628  ndata += PreFitResid.size();
629  ndof = ndata-sumInfo.rows();
630  }
631  catch(Exception& e) {
632  e.addText("APV failed.");
633  GNSSTK_RETHROW(e);
634  }
635  }
636 
637  private:
638 
640  bool Valid;
641 
644 
646  static const std::string calfmt,gpsfmt,timfmt;
647 
649  GNSSTK_EXPORT static const Vector<double> PRSNullVector;
650 
651  }; // end class PRSolution
652 
654 
655 } // namespace gnsstk
656 
657 #endif
gnsstk::PRSolution::isValid
bool isValid() const
Return the status of solution.
Definition: PRSolution.hpp:235
gnsstk::PRSolution::outputString
std::string outputString(std::string tag, int iret=-99, const Vector< double > &Vec=PRSNullVector)
return string of NAV and RMS strings
Definition: PRSolution.cpp:1031
gnsstk::WtdAveStats::getN
int getN(void) const
Definition: PRSolution.hpp:102
gnsstk::PRSolution::allowedGNSS
std::vector< SatelliteSystem > allowedGNSS
Definition: PRSolution.hpp:263
gnsstk::ident
BaseClass & ident(RefMatrixBase< T, BaseClass > &m)
Definition: MatrixBaseOperators.hpp:80
gnsstk::PRSolution::GDOP
double GDOP
Definition: PRSolution.hpp:341
gnsstk::PRSolution::SatelliteIDs
std::vector< SatID > SatelliteIDs
Definition: PRSolution.hpp:283
gnsstk::LabeledMatrix::scientific
LabeledMatrix & scientific()
Set the format to scientific.
Definition: Namelist.hpp:216
gnsstk::PRSolution::was
WtdAveStats was
The "memory" of this object, used only when hasMemory is true.
Definition: PRSolution.hpp:314
gnsstk::PRSolution::SlopeFlag
bool SlopeFlag
Definition: PRSolution.hpp:359
gnsstk::PRSolution::ndata
int ndata
Definition: PRSolution.hpp:316
gnsstk::PRSolution::RAIMCompute
int RAIMCompute(const CommonTime &Tr, std::vector< SatID > &Satellites, const std::vector< double > &Pseudorange, const Matrix< double > &invMC, NavLibrary &eph, TropModel *pTropModel, NavSearchOrder order=NavSearchOrder::User)
Definition: PRSolution.cpp:541
gnsstk::PRSolution::ndof
int ndof
Definition: PRSolution.hpp:316
gnsstk::PRSolution::dumpSolution
void dumpSolution(std::ostream &os, std::string msg="PRS")
Definition: PRSolution.hpp:544
gnsstk::WtdAveStats::operator<<
friend std::ostream & operator<<(std::ostream &s, const WtdAveStats &as)
gnsstk::PRSolution::APV
double APV
Definition: PRSolution.hpp:315
gnsstk::PRSolution::TDOP
double TDOP
DOPs computed in a call to DOPCompute() or outputString()
Definition: PRSolution.hpp:341
gnsstk::PRSolution::RMSResidual
double RMSResidual
Definition: PRSolution.hpp:334
gnsstk::Stats::Minimum
T Minimum(void) const
return minimum value
Definition: Stats.hpp:321
gnsstk::PRSolution::outputStringHeader
std::string outputStringHeader(std::string tag)
return string of the form "#tag label etc" which is header for data strings
Definition: PRSolution.hpp:509
gnsstk::dot
T dot(const SparseVector< T > &SL, const SparseVector< T > &SR)
dot (SparseVector, SparseVector)
Definition: SparseVector.hpp:789
gnsstk::Stats::StdDev
T StdDev(void) const
return computed standard deviation
Definition: Stats.hpp:347
gnsstk::PRSolution
Definition: PRSolution.hpp:216
stl_helpers.hpp
gnsstk::TrackingCode::Y
@ Y
Encrypted legacy GPS precise code.
gnsstk::WtdAveStats::add
void add(const Vector< double > &Sol, const Matrix< double > &Cov)
Definition: PRSolution.hpp:116
gnsstk::Stats::Reset
void Reset(void)
reset, i.e. ignore earlier data and restart sampling
Definition: Stats.hpp:146
gnsstk::Matrix::cols
size_t cols() const
The number of columns in the matrix.
Definition: Matrix.hpp:167
gnsstk::PRSolution::outputCLKString
std::string outputCLKString(std::string tag, int iret=-99)
return string of {SYS clock} for all systems, error code and V/NV
Definition: PRSolution.cpp:937
gnsstk::PRSolution::PDOP
double PDOP
Definition: PRSolution.hpp:341
gnsstk::TropModel
Definition: TropModel.hpp:105
gnsstk::PRSolution::currTime
CommonTime currTime
time tag of the current solution
Definition: PRSolution.hpp:643
gnsstk::PRSolution::PreFitResidual
Vector< double > PreFitResidual
Definition: PRSolution.hpp:330
gnsstk::PRSolution::dataGNSS
std::vector< SatelliteSystem > dataGNSS
Definition: PRSolution.hpp:311
gnsstk::WtdAveStats::sumInfo
Matrix< double > sumInfo
Definition: PRSolution.hpp:75
gnsstk::Matrix::rows
size_t rows() const
The number of rows in the matrix.
Definition: Matrix.hpp:165
TropModel.hpp
gnsstk::PRSolution::NSatsReject
int NSatsReject
Definition: PRSolution.hpp:249
gnsstk::PRSolution::PRSolution
PRSolution()
Constructor.
Definition: PRSolution.hpp:220
GNSSconstants.hpp
gnsstk::WtdAveStats::WtdAveStats
WtdAveStats(void)
Definition: PRSolution.hpp:81
gnsstk::inverseSVD
Matrix< T > inverseSVD(const ConstMatrixBase< T, BaseClass > &m, const T tol=T(1.e-8))
Definition: MatrixOperators.hpp:652
gnsstk::PRSolution::Solution
Vector< double > Solution
Definition: PRSolution.hpp:295
gnsstk::NavSearchOrder
NavSearchOrder
Specify the behavior of nav data searches in NavLibrary/NavDataFactory.
Definition: NavSearchOrder.hpp:51
gnsstk::PRSolution::Nsvs
int Nsvs
the number of good satellites used in the final computation
Definition: PRSolution.hpp:350
gnsstk::Triple
Definition: Triple.hpp:68
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::WtdAveStats::reset
void reset(void)
Definition: PRSolution.hpp:104
gnsstk::Stats< double >
gnsstk::PRSolution::addToMemory
void addToMemory(const Vector< double > &Sol, const Matrix< double > &Cov, const Vector< double > &PreFitResid, const Matrix< double > &Partials, const Matrix< double > &invMeasCov)
Definition: PRSolution.hpp:606
gnsstk::Vector::resize
Vector & resize(const size_t index)
Definition: Vector.hpp:262
Stats.hpp
gnsstk::WtdAveStats::dump
void dump(std::ostream &os, std::string msg="") const
Definition: PRSolution.hpp:147
gnsstk::PRSolution::DOPCompute
int DOPCompute(void)
Definition: PRSolution.cpp:842
gnsstk::Exception
Definition: Exception.hpp:151
gnsstk::PRSolution::nsol
int nsol
Definition: PRSolution.hpp:316
gnsstk::LabeledMatrix::setprecision
LabeledMatrix & setprecision(int p)
Set the precision to p digits.
Definition: Namelist.hpp:202
gnsstk::PRSolution::RAIMComputeUnweighted
int RAIMComputeUnweighted(const CommonTime &Tr, std::vector< SatID > &Satellites, const std::vector< double > &Pseudorange, NavLibrary &eph, TropModel *pTropModel, NavSearchOrder order=NavSearchOrder::User)
Definition: PRSolution.cpp:521
gnsstk::PRSolution::MaxSlope
double MaxSlope
Definition: PRSolution.hpp:338
gnsstk::PRSolution::outputRMSString
std::string outputRMSString(std::string tag, int iret=-99)
Definition: PRSolution.cpp:967
gnsstk::WtdAveStats::getCov
Matrix< double > getCov(void) const
Definition: PRSolution.hpp:98
gnsstk::PRSolution::outputPOSString
std::string outputPOSString(std::string tag, int iret=-99, const Vector< double > &Vec=PRSNullVector)
Definition: PRSolution.cpp:908
NavLibrary.hpp
gnsstk::PRSolution::errorCodeString
std::string errorCodeString(int iret)
A convenience for printing the error code (return value)
Definition: PRSolution.cpp:1041
gnsstk::transpose
SparseMatrix< T > transpose(const SparseMatrix< T > &M)
transpose
Definition: SparseMatrix.hpp:829
gnsstk::NavLibrary
Definition: NavLibrary.hpp:944
gnsstk::Matrix< double >
gnsstk::WtdAveStats::msg
std::string msg
Definition: PRSolution.hpp:72
gnsstk::PRSolution::SimplePRSolution
int SimplePRSolution(const CommonTime &Tr, const std::vector< SatID > &Sats, const Matrix< double > &SVP, const Matrix< double > &invMC, TropModel *pTropModel, const int &niterLimit, const double &convLimit, Vector< double > &Resids, Vector< double > &Slopes)
Definition: PRSolution.cpp:188
gnsstk::PRSolution::APSolution
Vector< double > APSolution
Definition: PRSolution.hpp:323
gnsstk::WtdAveStats::Sbias
Vector< double > Sbias
Definition: PRSolution.hpp:76
gnsstk::PRSolution::PreparePRSolution
int PreparePRSolution(const CommonTime &Tr, std::vector< SatID > &Sats, const std::vector< double > &Pseudorange, NavLibrary &eph, Matrix< double > &SVP, NavSearchOrder order=NavSearchOrder::User) const
Definition: PRSolution.cpp:66
gnsstk::WtdAveStats::setMessage
void setMessage(std::string m)
Definition: PRSolution.hpp:87
gnsstk::PRSolution::fixedAPriori
bool fixedAPriori
Definition: PRSolution.hpp:319
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::Stats::Maximum
T Maximum(void) const
return maximum value
Definition: Stats.hpp:325
gnsstk::PRSolution::fixAPSolution
void fixAPSolution(const double &X, const double &Y, const double &Z)
Definition: PRSolution.hpp:521
gnsstk::PRSolution::gpsfmt
static const std::string gpsfmt
Definition: PRSolution.hpp:646
gnsstk::PRSolution::fixedAPrioriPos
Triple fixedAPrioriPos
Definition: PRSolution.hpp:320
gnsstk::PRSolution::PRSNullVector
static const GNSSTK_EXPORT Vector< double > PRSNullVector
empty vector used to detect default
Definition: PRSolution.hpp:649
gnsstk::WtdAveStats::N
unsigned int N
Definition: PRSolution.hpp:69
GNSSTK_RETHROW
#define GNSSTK_RETHROW(exc)
Definition: Exception.hpp:369
gnsstk::PRSolution::RMSFlag
bool RMSFlag
Definition: PRSolution.hpp:359
gnsstk::Vector< double >
gnsstk::PRSolution::invMeasCov
Matrix< double > invMeasCov
Definition: PRSolution.hpp:303
gnsstk::PRSolution::hasMemory
bool hasMemory
Definition: PRSolution.hpp:275
gnsstk::PRSolution::calfmt
static const std::string calfmt
time formats used in prints
Definition: PRSolution.hpp:646
gnsstk::LabeledMatrix
Definition: Namelist.hpp:162
gnsstk::WtdAveStats::getMessage
std::string getMessage(void) const
Definition: PRSolution.hpp:88
gnsstk::PRSolution::TropFlag
bool TropFlag
Definition: PRSolution.hpp:355
gnsstk::WtdAveStats::getSol
Vector< double > getSol(void) const
Definition: PRSolution.hpp:93
gnsstk::PRSolution::NIterations
int NIterations
the actual number of iterations used
Definition: PRSolution.hpp:344
gnsstk::WtdAveStats
Definition: PRSolution.hpp:67
gnsstk::PRSolution::SlopeLimit
double SlopeLimit
Slope limit (dimensionless).
Definition: PRSolution.hpp:243
gnsstk::WtdAveStats::lab
std::string lab[3]
Definition: PRSolution.hpp:73
gnsstk::PRSolution::Valid
bool Valid
flag: output content is valid.
Definition: PRSolution.hpp:640
gnsstk::Vector::size
size_t size() const
STL size.
Definition: Vector.hpp:207
gnsstk::PRSolution::Partials
Matrix< double > Partials
Matrix<double> containing the partials matrix used in the final solution.
Definition: PRSolution.hpp:306
gnsstk::PRSolution::Convergence
double Convergence
the RSS change in solution at the end of iterations.
Definition: PRSolution.hpp:347
CommonTime.hpp
Namelist.hpp
gnsstk::Stats::Average
T Average(void) const
return the average
Definition: Stats.hpp:329
gnsstk::Stats::Add
void Add(const T &x)
Definition: Stats.hpp:158
gnsstk::LabeledMatrix::symmetric
LabeledMatrix & symmetric(bool s=true)
If true, the matrix is symmetrical, so print only the lower triangle.
Definition: Namelist.hpp:223
gnsstk::PRSolution::outputValidString
std::string outputValidString(int iret=-99)
Definition: PRSolution.cpp:859
gnsstk::Exception::addText
Exception & addText(const std::string &errorText)
Definition: Exception.cpp:133
gnsstk::Namelist
Definition: Namelist.hpp:287
Matrix.hpp
RinexSatID.hpp
gnsstk::NavSearchOrder::User
@ User
Return the latest message before the search time.
gnsstk::PRSolution::outputNAVString
std::string outputNAVString(std::string tag, int iret=-99, const Vector< double > &Vec=PRSNullVector)
return string of info in POS and CLK
Definition: PRSolution.cpp:875
gnsstk::PRSolution::RMSLimit
double RMSLimit
RMS limit (m) on residual of fit.
Definition: PRSolution.hpp:240
gnsstk::PRSolution::Covariance
Matrix< double > Covariance
Definition: PRSolution.hpp:299
gnsstk::PRSolution::updateAPSolution
void updateAPSolution(const Vector< double > &Sol)
Definition: PRSolution.hpp:576
gnsstk::PRSolution::ConvergenceLimit
double ConvergenceLimit
Definition: PRSolution.hpp:257
gnsstk::PRSolution::timfmt
static const std::string timfmt
Definition: PRSolution.hpp:646
gnsstk::WtdAveStats::S
Stats< double > S[3]
Definition: PRSolution.hpp:74
gnsstk::PRSolution::configString
std::string configString(std::string tag)
A convenience for printing the current configuarion.
Definition: PRSolution.cpp:1053
gnsstk::PRSolution::getAPV
double getAPV(void)
Definition: PRSolution.hpp:538
gnsstk::vectorindex
int vectorindex(const std::vector< T > &vec, const T &value)
Definition: stl_helpers.hpp:123
gnsstk::WtdAveStats::sumInfoState
Vector< double > sumInfoState
Definition: PRSolution.hpp:76
gnsstk::PRSolution::MaxNIterations
int MaxNIterations
Definition: PRSolution.hpp:253
gnsstk::Stats::N
unsigned int N(void) const
return the sample size
Definition: Stats.hpp:318
gnsstk::WtdAveStats::setLabels
void setLabels(std::string lab1, std::string lab2, std::string lab3)
Definition: PRSolution.hpp:90
gnsstk::LabeledMatrix::setw
LabeledMatrix & setw(int w)
Set the width to w characters.
Definition: Namelist.hpp:195
gnsstk::WtdAveStats::getInfo
Matrix< double > getInfo(void) const
Definition: PRSolution.hpp:100


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