GlobalTropModel.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 
45 #ifndef GLOBAL_TROP_MODEL_HPP
46 #define GLOBAL_TROP_MODEL_HPP
47 
48 #include "CommonTime.hpp"
49 #include "TropModel.hpp"
50 
51 namespace gnsstk
52 {
55 
118  class GlobalTropModel : public TropModel
119  {
120  public:
122  GlobalTropModel();
123 
132  GlobalTropModel(const double& ht, const double& lat, const double& lon,
133  const double& mjd)
134  {
136  false;
137  setReceiverHeight(ht);
138  setReceiverLatitude(lat);
140  setTime(mjd);
141  }
142 
149  {
154  setTime(time);
155  }
156 
158  virtual std::string name()
159  { return std::string("Global"); }
160 
162  virtual double correction(double elevation) const;
163 
180  virtual double correction(const Position& RX, const Position& SV);
181 
183  virtual double correction(const Position& RX,
184  const Position& SV,
185  const CommonTime& tt)
186  {
187  setTime(tt);
188  return correction(RX,SV);
189  }
190 
196  virtual double dry_zenith_delay() const;
197 
202  virtual double wet_zenith_delay() const;
203 
205  virtual double dry_mapping_function(double elevation) const;
206 
208  virtual double wet_mapping_function(double elevation) const;
209 
218  void getGPT(double& P, double& T, double& U);
219 
224  virtual void setWeather(const double& T, const double& P, const double& H)
225  { setHumidity(H); }
226 
231  virtual void setWeather(const WxObservation& wx)
232  { setHumidity(wx.humidity); }
233 
242  void setHumidity(const double& rh)
243  {
244  if(rh < 0.0 || rh > 100.)
245  GNSSTK_THROW(InvalidParameter("Invalid humidity (%)"));
246  humid = rh;
247  }
248 
250  virtual void setReceiverLatitude(const double& lat);
251 
253  virtual void setReceiverLongitude(const double& lon);
254 
256  virtual void setReceiverHeight(const double& ht);
257 
259  virtual void setDayOfYear(const int& doy);
260 
265  virtual void setParameters(const CommonTime& time, const Position& rxPos);
266 
268  double getHeightLimit()
269  { return HEIGHT_LIMIT; }
270 
271  private:
276  void setTime(const double& mjd);
277 
282  void setTime(const CommonTime& time);
283 
284  // GMF
285  static const double ADryMean[55];
286  static const double BDryMean[55];
287  static const double ADryAmp[55];
288  static const double BDryAmp[55];
289  static const double AWetMean[55];
290  static const double BWetMean[55];
291  static const double AWetAmp[55];
292  static const double BWetAmp[55];
293  // GPT
294  static const double Ageoid[55];
295  static const double Bgeoid[55];
296  static const double APressMean[55];
297  static const double BPressMean[55];
298  static const double APressAmp[55];
299  static const double BPressAmp[55];
300  static const double ATempMean[55];
301  static const double BTempMean[55];
302  static const double ATempAmp[55];
303  static const double BTempAmp[55];
304 
305  static const double Factorial[19];
306 
308  GNSSTK_EXPORT
309  static const double HEIGHT_LIMIT;
310 
312  double P[10][10], aP[55], bP[55];
314 
316  void updateGTMCoeff();
317 
321  void testValidity() const;
322 
327  void setValid()
328  {
329  try{
331  if(valid && !validCoeff) {
332  updateGTMCoeff();
333  validCoeff = true;
335  }
336  } catch(Exception& e) { GNSSTK_RETHROW(e); }
337  }
338 
339  }; // end class GlobalTropModel
340 
342 } // end namespace
343 
344 #endif // #define GLOBAL_TROP_MODEL_HPP
gnsstk::GlobalTropModel::latitude
double latitude
Definition: GlobalTropModel.hpp:311
gnsstk::GlobalTropModel::testValidity
void testValidity() const
Definition: GlobalTropModel.cpp:642
gnsstk::GlobalTropModel::setReceiverHeight
virtual void setReceiverHeight(const double &ht)
Definition: GlobalTropModel.cpp:535
gnsstk::GlobalTropModel::P
double P[10][10]
Definition: GlobalTropModel.hpp:312
example6.mjd
mjd
Definition: example6.py:102
gnsstk::GlobalTropModel::setDayOfYear
virtual void setDayOfYear(const int &doy)
Definition: GlobalTropModel.cpp:587
gnsstk::GlobalTropModel::setParameters
virtual void setParameters(const CommonTime &time, const Position &rxPos)
Definition: GlobalTropModel.cpp:594
gnsstk::GlobalTropModel::validCoeff
bool validCoeff
Definition: GlobalTropModel.hpp:313
gnsstk::GlobalTropModel::GlobalTropModel
GlobalTropModel(const double &ht, const double &lat, const double &lon, const double &mjd)
Definition: GlobalTropModel.hpp:132
gnsstk::GlobalTropModel::BWetMean
static const double BWetMean[55]
Definition: GlobalTropModel.hpp:290
gnsstk::GlobalTropModel::BPressAmp
static const double BPressAmp[55]
Definition: GlobalTropModel.hpp:299
gnsstk::GlobalTropModel::setReceiverLatitude
virtual void setReceiverLatitude(const double &lat)
Definition: GlobalTropModel.cpp:546
gnsstk::GlobalTropModel::APressMean
static const double APressMean[55]
Definition: GlobalTropModel.hpp:296
gnsstk::GlobalTropModel::correction
virtual double correction(const Position &RX, const Position &SV, const CommonTime &tt)
Definition: GlobalTropModel.hpp:183
gnsstk::GlobalTropModel::GlobalTropModel
GlobalTropModel(const Position &RX, const CommonTime &time)
Definition: GlobalTropModel.hpp:148
gnsstk::GlobalTropModel::dayfactor
double dayfactor
Definition: GlobalTropModel.hpp:311
gnsstk::Position::getAltitude
double getAltitude() const noexcept
return height above ellipsoid (meters)
Definition: Position.hpp:469
gnsstk::TropModel
Definition: TropModel.hpp:105
gnsstk::GlobalTropModel::AWetAmp
static const double AWetAmp[55]
Definition: GlobalTropModel.hpp:291
gnsstk::WxObservation
A Single Weather Observation.
Definition: WxObsMap.hpp:55
gnsstk::GlobalTropModel::BTempAmp
static const double BTempAmp[55]
Definition: GlobalTropModel.hpp:303
TropModel.hpp
gnsstk::GlobalTropModel::setValid
void setValid()
Definition: GlobalTropModel.hpp:327
gnsstk::GlobalTropModel::validDay
bool validDay
Definition: GlobalTropModel.hpp:313
gnsstk::GlobalTropModel::validHeight
bool validHeight
Definition: GlobalTropModel.hpp:313
gnsstk::GlobalTropModel::HEIGHT_LIMIT
static const GNSSTK_EXPORT double HEIGHT_LIMIT
Model is limited in height, at this value, in m.
Definition: GlobalTropModel.hpp:309
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::GlobalTropModel::getHeightLimit
double getHeightLimit()
Get the height limit for this model, in meters.
Definition: GlobalTropModel.hpp:268
gnsstk::GlobalTropModel::correction
virtual double correction(double elevation) const
Definition: GlobalTropModel.cpp:301
gnsstk::GlobalTropModel::setHumidity
void setHumidity(const double &rh)
Definition: GlobalTropModel.hpp:242
gnsstk::Exception
Definition: Exception.hpp:151
gnsstk::GlobalTropModel::ADryAmp
static const double ADryAmp[55]
Definition: GlobalTropModel.hpp:287
gnsstk::TropModel::humid
double humid
latest value of relative humidity (percent)
Definition: TropModel.hpp:282
gnsstk::GlobalTropModel::aP
double aP[55]
Definition: GlobalTropModel.hpp:312
gnsstk::GlobalTropModel::validLon
bool validLon
Definition: GlobalTropModel.hpp:313
gnsstk::GlobalTropModel::Bgeoid
static const double Bgeoid[55]
Definition: GlobalTropModel.hpp:295
gnsstk::GlobalTropModel::BWetAmp
static const double BWetAmp[55]
Definition: GlobalTropModel.hpp:292
gnsstk::GlobalTropModel
Definition: GlobalTropModel.hpp:118
example4.time
time
Definition: example4.py:103
gnsstk::Position::getGeodeticLatitude
double getGeodeticLatitude() const noexcept
return geodetic latitude (deg N)
Definition: Position.hpp:454
gnsstk::GlobalTropModel::setWeather
virtual void setWeather(const double &T, const double &P, const double &H)
Definition: GlobalTropModel.hpp:224
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::GlobalTropModel::BTempMean
static const double BTempMean[55]
Definition: GlobalTropModel.hpp:301
gnsstk::GlobalTropModel::height
double height
Definition: GlobalTropModel.hpp:311
gnsstk::GlobalTropModel::updateGTMCoeff
void updateGTMCoeff()
Update coefficients when latitude and/or longitude changes.
Definition: GlobalTropModel.cpp:606
gnsstk::TropModel::valid
bool valid
true only if current model parameters are valid
Definition: TropModel.hpp:279
gnsstk::GlobalTropModel::bP
double bP[55]
Definition: GlobalTropModel.hpp:312
gnsstk::TropModel::press
double press
latest value of pressure (millibars)
Definition: TropModel.hpp:281
gnsstk::GlobalTropModel::undul
double undul
Definition: GlobalTropModel.hpp:311
GNSSTK_RETHROW
#define GNSSTK_RETHROW(exc)
Definition: Exception.hpp:369
gnsstk::GlobalTropModel::BDryMean
static const double BDryMean[55]
Definition: GlobalTropModel.hpp:286
gnsstk::GlobalTropModel::name
virtual std::string name()
Return the name of the model.
Definition: GlobalTropModel.hpp:158
gnsstk::GlobalTropModel::setTime
void setTime(const double &mjd)
Definition: GlobalTropModel.cpp:568
gnsstk::GlobalTropModel::ATempAmp
static const double ATempAmp[55]
Definition: GlobalTropModel.hpp:302
gnsstk::GlobalTropModel::APressAmp
static const double APressAmp[55]
Definition: GlobalTropModel.hpp:298
gnsstk::GlobalTropModel::dry_zenith_delay
virtual double dry_zenith_delay() const
Definition: GlobalTropModel.cpp:348
gnsstk::GlobalTropModel::longitude
double longitude
Definition: GlobalTropModel.hpp:311
gnsstk::GlobalTropModel::BPressMean
static const double BPressMean[55]
Definition: GlobalTropModel.hpp:297
CommonTime.hpp
gnsstk::GlobalTropModel::Ageoid
static const double Ageoid[55]
Definition: GlobalTropModel.hpp:294
gnsstk::GlobalTropModel::Factorial
static const double Factorial[19]
Definition: GlobalTropModel.hpp:305
gnsstk::Position::getLongitude
double getLongitude() const noexcept
return longitude (deg E) (either geocentric or geodetic)
Definition: Position.hpp:464
gnsstk::GlobalTropModel::GlobalTropModel
GlobalTropModel()
Default constructor.
Definition: GlobalTropModel.cpp:287
gnsstk::GlobalTropModel::validLat
bool validLat
Definition: GlobalTropModel.hpp:313
gnsstk::GlobalTropModel::wet_mapping_function
virtual double wet_mapping_function(double elevation) const
Definition: GlobalTropModel.cpp:450
gnsstk::Position
Definition: Position.hpp:136
GNSSTK_THROW
#define GNSSTK_THROW(exc)
Definition: Exception.hpp:366
gnsstk::WxObservation::humidity
float humidity
percent
Definition: WxObsMap.hpp:84
gnsstk::GlobalTropModel::AWetMean
static const double AWetMean[55]
Definition: GlobalTropModel.hpp:289
gnsstk::GlobalTropModel::setWeather
virtual void setWeather(const WxObservation &wx)
Definition: GlobalTropModel.hpp:231
gnsstk::TropModel::temp
double temp
latest value of temperature (kelvin or celsius)
Definition: TropModel.hpp:280
gnsstk::GlobalTropModel::getGPT
void getGPT(double &P, double &T, double &U)
Definition: GlobalTropModel.cpp:493
gnsstk::GlobalTropModel::setReceiverLongitude
virtual void setReceiverLongitude(const double &lon)
Definition: GlobalTropModel.cpp:557
gnsstk::GlobalTropModel::BDryAmp
static const double BDryAmp[55]
Definition: GlobalTropModel.hpp:288
gnsstk::GlobalTropModel::ATempMean
static const double ATempMean[55]
Definition: GlobalTropModel.hpp:300
gnsstk::GlobalTropModel::dry_mapping_function
virtual double dry_mapping_function(double elevation) const
Definition: GlobalTropModel.cpp:364
gnsstk::GlobalTropModel::wet_zenith_delay
virtual double wet_zenith_delay() const
Definition: GlobalTropModel.cpp:356
gnsstk::GlobalTropModel::ADryMean
static const double ADryMean[55]
Definition: GlobalTropModel.hpp:285


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