Tropospheric model based on the Global mapping functions (GMF) and Global Pressure and Temperature (GPT) models.
Ref (GMF). Boehm, J., A.E. Niell, P. Tregoning, H. Schuh (2006), "Global Mapping Functions (GMF): A new empirical mapping function based on numerical weather model data," Geoph. Res. Letters, Vol. 33, L07304, doi:10.1029/2005GL025545. Ref (GPT). J. Böhm, R. Heinkelmann, H. Schuh (2007), "Short Note: A Global Model of Pressure and Temperature for Geodetic Applications," Journal of Geodesy, doi:10.1007/s00190-007-0135-3.
The user must specify a time (date) and a receiver position. The model then computes the (GPT) pressure and temperature, as well as (GMF) wet and hydrostatic (dry) zenith delays and, with the elevation angle, mapping functions.
depedency cheat sheet: User provides: Model computes/stores: Output of model: lat,lon,ht ---> coeffs [in updateGTMCoeff()] time (doy) ---> dayfactor [ setTime(mjd) ] humidity% ---> humid
[in getGPT():] height,coeffs,dayfactor -> P,T humid,T -----------------------> wet_zenith_delay() P,T,lat -----------------------> dry_zenith_delay() dayfactor,coeffs --------------> wet_mapping_function(elev) dayfactor,coeffs --------------> dry_mapping_function(elev) So, change lat => coeffs => P,T => wet/dry zen/map lon => coeffs => P,T => wet/dry zen/map ht => coeffs => P,T => wet/dry zen/map time => dayfactor => P,T => wet/dry zen/map humid => wet zen
A typical way to use this model follows:
Once all the basic model parameters are set, then we are able to compute the tropospheric correction as a function of elevation:
Definition at line 118 of file GlobalTropModel.hpp.
#include <GlobalTropModel.hpp>
Public Member Functions | |
virtual double | correction (const Position &RX, const Position &SV) |
virtual double | correction (const Position &RX, const Position &SV, const CommonTime &tt) |
virtual double | correction (double elevation) const |
virtual double | dry_mapping_function (double elevation) const |
virtual double | dry_zenith_delay () const |
void | getGPT (double &P, double &T, double &U) |
double | getHeightLimit () |
Get the height limit for this model, in meters. More... | |
GlobalTropModel () | |
Default constructor. More... | |
GlobalTropModel (const double &ht, const double &lat, const double &lon, const double &mjd) | |
GlobalTropModel (const Position &RX, const CommonTime &time) | |
virtual std::string | name () |
Return the name of the model. More... | |
virtual void | setDayOfYear (const int &doy) |
void | setHumidity (const double &rh) |
virtual void | setParameters (const CommonTime &time, const Position &rxPos) |
virtual void | setReceiverHeight (const double &ht) |
virtual void | setReceiverLatitude (const double &lat) |
virtual void | setReceiverLongitude (const double &lon) |
virtual void | setWeather (const double &T, const double &P, const double &H) |
virtual void | setWeather (const WxObservation &wx) |
virtual double | wet_mapping_function (double elevation) const |
virtual double | wet_zenith_delay () const |
![]() | |
virtual double | correction (const Xvt &RX, const Xvt &SV, const CommonTime &tt) |
bool | isValid () |
Return validity of model. More... | |
double | SaasDryDelay (const double pr, const double lat, const double ht) const |
virtual | ~TropModel () |
Destructor. More... | |
Private Member Functions | |
void | setTime (const CommonTime &time) |
void | setTime (const double &mjd) |
void | setValid () |
void | testValidity () const |
void | updateGTMCoeff () |
Update coefficients when latitude and/or longitude changes. More... | |
Private Attributes | |
double | aP [55] |
double | bP [55] |
double | dayfactor |
double | height |
double | latitude |
double | longitude |
double | P [10][10] |
double | undul |
bool | validCoeff |
bool | validDay |
bool | validHeight |
bool | validLat |
bool | validLon |
Static Private Attributes | |
static const double | ADryAmp [55] |
static const double | ADryMean [55] |
static const double | Ageoid [55] |
static const double | APressAmp [55] |
static const double | APressMean [55] |
static const double | ATempAmp [55] |
static const double | ATempMean [55] |
static const double | AWetAmp [55] |
static const double | AWetMean [55] |
static const double | BDryAmp [55] |
static const double | BDryMean [55] |
static const double | Bgeoid [55] |
static const double | BPressAmp [55] |
static const double | BPressMean [55] |
static const double | BTempAmp [55] |
static const double | BTempMean [55] |
static const double | BWetAmp [55] |
static const double | BWetMean [55] |
static const double | Factorial [19] |
static const GNSSTK_EXPORT double | HEIGHT_LIMIT = 44243. |
Model is limited in height, at this value, in m. More... | |
Additional Inherited Members | |
![]() | |
static void | weatherByStandardAtmosphereModel (const double &ht, double &T, double &P, double &H) |
![]() | |
static const GNSSTK_EXPORT double | CELSIUS_TO_KELVIN = 273.15 |
![]() | |
double | humid |
latest value of relative humidity (percent) More... | |
double | press |
latest value of pressure (millibars) More... | |
double | temp |
latest value of temperature (kelvin or celsius) More... | |
bool | valid |
true only if current model parameters are valid More... | |
gnsstk::GlobalTropModel::GlobalTropModel | ( | ) |
Default constructor.
Definition at line 287 of file GlobalTropModel.cpp.
|
inline |
Constructor to create a Global trop model providing the height of the receiver above mean sea level (as defined by ellipsoid model), its latitude and the day of year.
ht | Height of the receiver above mean sea level, in meters. |
lat | Latitude of receiver, in degrees. |
lon | Longitude of receiver, in degrees. |
mjd | MJD (double) |
Definition at line 132 of file GlobalTropModel.hpp.
|
inline |
Constructor to create a Global trop model providing the position of the receiver and current time.
RX | Receiver position. |
time | Time. |
Definition at line 148 of file GlobalTropModel.hpp.
Compute and return the full tropospheric delay, in meters, given the positions of receiver and satellite.
This version is more useful within positioning algorithms, where the receiver position may vary; it computes the elevation (and other receiver location information as height and latitude) and passes them to appropriate methods.
You must set time using method setReceiverDOY() before calling this method.
RX | Receiver position. |
SV | Satellite position. |
InvalidTropModel |
Definition at line 321 of file GlobalTropModel.cpp.
|
inlinevirtual |
Compute and return the full tropospheric delay, in meters, given the positions of receiver and satellite and the time tag. This version is most useful within positioning algorithms, where the receiver position and timetag may vary; it computes the elevation (and other receiver location information) and passes them to appropriate set...() routines and the correction(elevation) routine.
RX | Receiver position |
SV | Satellite position |
tt | Time tag of the signal |
InvalidTropModel |
Reimplemented from gnsstk::TropModel.
Definition at line 183 of file GlobalTropModel.hpp.
|
virtual |
Compute and return the full tropospheric delay, in meters
elevation | Elevation of satellite as seen at receiver, in degrees |
InvalidTropModel |
Reimplemented from gnsstk::TropModel.
Definition at line 301 of file GlobalTropModel.cpp.
|
virtual |
Implements gnsstk::TropModel.
Definition at line 364 of file GlobalTropModel.cpp.
|
virtual |
Compute and return the zenith delay for hydrostatic (dry) component of the troposphere. Use the Saastamoinen value. Ref. Davis etal 1985 and Leick, 3rd ed, pg 197.
InvalidTropModel |
Implements gnsstk::TropModel.
Definition at line 348 of file GlobalTropModel.cpp.
void gnsstk::GlobalTropModel::getGPT | ( | double & | P, |
double & | T, | ||
double & | U | ||
) |
Compute the pressure and temperature at height, and the undulation, for the given position and time.
P | output pressure |
T | output temperature |
U | output undulation |
InvalidTropModel | if the height is larger than 44247 meters, which is beyond the model. |
Definition at line 493 of file GlobalTropModel.cpp.
|
inline |
Get the height limit for this model, in meters.
Definition at line 268 of file GlobalTropModel.hpp.
|
inlinevirtual |
Return the name of the model.
Reimplemented from gnsstk::TropModel.
Definition at line 158 of file GlobalTropModel.hpp.
|
virtual |
Define the day of year; this is required by some models before calling correction() or any of the zenith_delay or mapping_function routines.
d | Day of year. |
Reimplemented from gnsstk::TropModel.
Definition at line 587 of file GlobalTropModel.cpp.
|
inline |
GlobalTropModel does not accept weather input, except humid; thus the setWeather() routines are dummies; this sets the relative humidity.
rh | double relative humidity in percent (0 <= rh <= 100) |
InvalidParameter |
Definition at line 242 of file GlobalTropModel.hpp.
|
virtual |
Convenient method to set all non-weather model parameters in one call
time | CommonTime of interest |
rxPos | Receiver position object. |
Definition at line 594 of file GlobalTropModel.cpp.
|
virtual |
Define the receiver height; this is required by some models before calling correction() or any of the zenith_delay or mapping_function routines.
ht | Height of the receiver above mean sea level, in meters. |
Reimplemented from gnsstk::TropModel.
Definition at line 535 of file GlobalTropModel.cpp.
|
virtual |
Define the latitude of the receiver; this is required by some models before calling correction() or any of the zenith_delay or mapping_function routines.
lat | Latitude of the receiver in degrees. |
Reimplemented from gnsstk::TropModel.
Definition at line 546 of file GlobalTropModel.cpp.
|
virtual |
Define the receiver longitude; this is required by some models before calling correction() or any of the zenith_delay routines.
lon | Longitude of receiver, in degrees East. |
Reimplemented from gnsstk::TropModel.
Definition at line 557 of file GlobalTropModel.cpp.
|
private |
Define the time of interest; this is required before calling correction() or any of the zenith_delay routines.
time | CommonTime of interest |
Definition at line 580 of file GlobalTropModel.cpp.
|
private |
Define the time of interest; this is required before calling correction() or any of the zenith_delay routines.
mjd | MJD (double) |
Definition at line 568 of file GlobalTropModel.cpp.
|
inlineprivate |
Utility to set valid based on the other flags, and update coefficients and press, temp as needed
InvalidTropModel |
Definition at line 327 of file GlobalTropModel.hpp.
|
inlinevirtual |
Re-define the tropospheric model with explicit weather data. Typically called just before correction().
T | temperature in degrees Celsius |
P | atmospheric pressure in millibars |
H | relative humidity in percent |
InvalidParameter |
Reimplemented from gnsstk::TropModel.
Definition at line 224 of file GlobalTropModel.hpp.
|
inlinevirtual |
Re-define the tropospheric model with explicit weather data. Typically called just before correction().
wx | the weather to use for this correction |
InvalidParameter |
Reimplemented from gnsstk::TropModel.
Definition at line 231 of file GlobalTropModel.hpp.
|
private |
Utility to test valid flags
InvalidTropModel |
Definition at line 642 of file GlobalTropModel.cpp.
|
private |
Update coefficients when latitude and/or longitude changes.
Definition at line 606 of file GlobalTropModel.cpp.
|
virtual |
Implements gnsstk::TropModel.
Definition at line 450 of file GlobalTropModel.cpp.
|
virtual |
Compute and return the zenith delay for wet component of the troposphere. Ref. Leick, 3rd ed, pg 197.
InvalidTropModel |
Implements gnsstk::TropModel.
Definition at line 356 of file GlobalTropModel.cpp.
|
staticprivate |
Definition at line 287 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 285 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 294 of file GlobalTropModel.hpp.
|
private |
Definition at line 312 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 298 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 296 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 302 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 300 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 291 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 289 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 288 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 286 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 295 of file GlobalTropModel.hpp.
|
private |
Definition at line 312 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 299 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 297 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 303 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 301 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 292 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 290 of file GlobalTropModel.hpp.
|
private |
Definition at line 311 of file GlobalTropModel.hpp.
|
staticprivate |
Definition at line 305 of file GlobalTropModel.hpp.
|
private |
Definition at line 311 of file GlobalTropModel.hpp.
|
staticprivate |
Model is limited in height, at this value, in m.
Definition at line 309 of file GlobalTropModel.hpp.
|
private |
Definition at line 311 of file GlobalTropModel.hpp.
|
private |
Definition at line 311 of file GlobalTropModel.hpp.
|
private |
Definition at line 312 of file GlobalTropModel.hpp.
|
private |
Definition at line 311 of file GlobalTropModel.hpp.
|
private |
Definition at line 313 of file GlobalTropModel.hpp.
|
private |
Definition at line 313 of file GlobalTropModel.hpp.
|
private |
Definition at line 313 of file GlobalTropModel.hpp.
|
private |
Definition at line 313 of file GlobalTropModel.hpp.
|
private |
Definition at line 313 of file GlobalTropModel.hpp.