Go to the documentation of this file.
43 #define THROW_IF_INVALID_DETAILED() {if (!valid) {\
45 if(!validWeather) e.addText("Invalid trop model: Weather"); \
46 if(!validRxHeight) e.addText("Invalid trop model: Rx Height"); \
47 if(!validRxLatitude) e.addText("Invalid trop model: Rx Latitude"); \
48 if(!validDOY) e.addText("Invalid trop model: day of year"); \
55 { 0.00058021897, 0.00056794847, 0.00058118019, 0.00059727542, 0.00061641693 };
57 { 0.0014275268, 0.0015138625, 0.0014572752, 0.0015007428, 0.0017599082 };
59 { 0.043472961, 0.046729510, 0.043908931, 0.044626982, 0.054736038 };
63 { 0.0012769934, 0.0012683230, 0.0012465397, 0.0012196049, 0.0012045996 };
65 { 0.0029153695, 0.0029152299, 0.0029288445, 0.0029022565, 0.0029024912 };
67 { 0.062610505, 0.062837393, 0.063721774, 0.063824265, 0.064258455 };
70 { 0.0, 0.000012709626, 0.000026523662, 0.000034000452, 0.000041202191 };
72 { 0.0, 0.000021414979, 0.000030160779, 0.000072562722, 0.00011723375 };
74 { 0.0, 0.000090128400, 0.000043497037, 0.00084795348, 0.0017037206 };
124 InvalidTropModel(
"Invalid Saastamoinen trop model: weather"));
126 InvalidTropModel(
"Invalid Saastamoinen trop model: Rx Latitude"));
128 InvalidTropModel(
"Invalid Saastamoinen trop model: Rx Height"));
130 InvalidTropModel(
"Invalid Saastamoinen trop model: day of year"));
132 InvalidTropModel(
"Valid flag corrupted in Saastamoinen trop model"));
135 if(elevation < 0.0)
return 0.0;
159 InvalidTropModel(
"Invalid Saastamoinen trop model: weather"));
161 InvalidTropModel(
"Invalid Saastamoinen trop model: Rx Latitude"));
163 InvalidTropModel(
"Invalid Saastamoinen trop model: Rx Height"));
165 InvalidTropModel(
"Invalid Saastamoinen trop model: day of year"));
206 double pwv = 0.01 *
humid * ::exp(-37.2465+0.213166*T-0.000256908*T*T);
218 return ( 0.002277*((1255/T)+0.05)*pwv /
227 if(elevation < 0.0)
return 0.0;
244 int i=int(lat/15.0)-1;
245 double frac=(lat-15.*(i+1))/15.;
261 double map = (1.+a/(1.+b/(1.+c)))/(
se+a/(
se+b/(
se+c)));
266 map += (
height/1000.0)*(1./
se-(1+a/(1.+b/(1.+c)))/(
se+a/(
se+b/(
se+c))));
276 if(elevation < 0.0)
return 0.0;
286 int i=int(lat/15.0)-1;
287 double frac=(lat-15.*(i+1))/15.;
299 double map = (1.+a/(1.+b/(1.+c)))/(
se+a/(
se+b/(
se+c)));
313 double exp=7.5*T/(T+237.3);
314 humid = 6.11 * (H/100.) * std::pow(10.0,exp);
328 catch(InvalidParameter& e)
double se
obliquity cos, T*cos, sin coefficients
static const double SaasWetB[5]
bool validRxLatitude
flag for valid Rx latitude
static const double SaasDryA[5]
SaasTropModel()
Empty constructor.
double height
height (m) of the receiver above the geoid
float temperature
degrees Centigrade
static const double SaasWetA[5]
virtual double wet_mapping_function(double elevation) const
double SaasDryDelay(const double pr, const double lat, const double ht) const
bool validDOY
flag for valid day of year
A Single Weather Observation.
#define THROW_IF_INVALID_DETAILED()
bool validWeather
flag for valid weather
static const double SaasDryC1[5]
double sin(gnsstk::Angle x)
static const double SaasWetC[5]
static const double SaasDryC[5]
static const GNSSTK_EXPORT double CELSIUS_TO_KELVIN
double humid
latest value of relative humidity (percent)
virtual double correction(double elevation) const
static const double SaasDryB1[5]
double getHeight() const noexcept
return height above ellipsoid (meters)
static const double SaasDryB[5]
bool validRxHeight
flag for valid Rx longitude
double latitude
latitude (deg) of receiver
double getGeodeticLatitude() const noexcept
return geodetic latitude (deg N)
void setReceiverHeight(const double &ht)
virtual void setWeather(const WxObservation &wx)
bool valid
true only if current model parameters are valid
double cos(gnsstk::Angle x)
double press
latest value of pressure (millibars)
#define GNSSTK_RETHROW(exc)
@ P
Legacy GPS precise code.
virtual double dry_zenith_delay() const
#define GNSSTK_THROW(exc)
void setDayOfYear(const int &d)
virtual double dry_mapping_function(double elevation) const
static const double SaasDryA1[5]
double temp
latest value of temperature (kelvin or celsius)
void setReceiverLatitude(const double &lat)
double elevation(const Position &Target) const
virtual double wet_zenith_delay() const
static const double DEG_TO_RAD
Conversion Factor from degrees to radians (units: degrees^-1)
gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:41