Go to the documentation of this file.
43 #define THROW_IF_INVALID_DETAILED() {if (!valid) { \
45 if(!validLat) e.addText("Invalid trop model: validLat"); \
46 if(!validHeight) e.addText("Invalid trop model: validHeight"); \
47 if(!validTime) e.addText("Invalid trop model: day of year"); \
53 static const double MOPSg=9.80665;
91 if(elevation < 5.0)
return 0.0;
113 catch(GeometryException& e)
118 if(!
valid)
throw InvalidTropModel(
"Invalid model");
125 catch(InvalidTropModel& e)
190 double ddry, zh_dry, exponent;
215 double dwet, zh_wet, exponent;
243 "MOPSTropModel must have Rx latitude before computing weather");
251 "MOPSTropModel must have day of year before computing weather");
262 catch(InvalidTropModel& e)
300 if ( (doy>=1) && (doy<=366))
367 double MOPSsigma2trop = (0.12*map_f)*(0.12*map_f);
369 return MOPSsigma2trop;
401 fact = 2.0*
PI*((double)(
MOPSTime-idmin))/365.25;
405 if ( axfi <= 15.0 ) index=0;
406 if ( (axfi > 15.0) && (axfi <= 30.0) ) index=1;
407 if ( (axfi > 30.0) && (axfi <= 45.0) ) index=2;
408 if ( (axfi > 45.0) && (axfi <= 60.0) ) index=3;
409 if ( (axfi > 60.0) && (axfi < 75.0) ) index=4;
410 if ( axfi >= 75.0 ) index=5;
415 avr0(j)=
avr(index,j);
416 svr0(j)=
svr(index,j);
422 avr0(j) =
avr(index-1,j) + (
avr(index,j)-
avr(index-1,j)) *
423 (axfi-
fi0(index-1))/(
fi0( index)-
fi0(index-1));
425 svr0(j) =
svr(index-1,j) + (
svr(index,j)-
svr(index-1,j)) *
426 (axfi-
fi0(index-1))/(
fi0( index)-
fi0(index-1));
430 avr0(j) =
avr(index-1,j);
431 svr0(j) =
svr(index-1,j);
441 InvalidTropModel e(
"Problem computing extra MOPS parameters.");
456 avr(0,0) = 1013.25;
avr(0,1) = 299.65;
avr(0,2) = 26.31;
457 avr(0,3) = 0.0063;
avr(0,4) = 2.77;
459 avr(1,0) = 1017.25;
avr(1,1) = 294.15;
avr(1,2) = 21.79;
460 avr(1,3) = 0.00605;
avr(1,4) = 3.15;
462 avr(2,0) = 1015.75;
avr(2,1) = 283.15;
avr(2,2) = 11.66;
463 avr(2,3) = 0.00558;
avr(2,4) = 2.57;
465 avr(3,0) = 1011.75;
avr(3,1) = 272.15;
avr(3,2) = 6.78;
466 avr(3,3) = 0.00539;
avr(3,4) = 1.81;
468 avr(4,0) = 1013.00;
avr(4,1) = 263.65;
avr(4,2) = 4.11;
469 avr(4,3) = 0.00453;
avr(4,4) = 1.55;
474 svr(0,0) = 0.00;
svr(0,1) = 0.00;
svr(0,2) = 0.00;
475 svr(0,3) = 0.00000;
svr(0,4) = 0.00;
477 svr(1,0) = -3.75;
svr(1,1) = 7.00;
svr(1,2) = 8.85;
478 svr(1,3) = 0.00025;
svr(1,4) = 0.33;
480 svr(2,0) = -2.25;
svr(2,1) = 11.00;
svr(2,2) = 7.24;
481 svr(2,3) = 0.00032;
svr(2,4) = 0.46;
483 svr(3,0) = -1.75;
svr(3,1) = 15.00;
svr(3,2) = 5.36;
484 svr(3,3) = 0.00081;
svr(3,4) = 0.74;
486 svr(4,0) = -0.50;
svr(4,1) = 14.50;
svr(4,2) = 3.39;
487 svr(4,3) = 0.00062;
svr(4,4) = 0.30;
492 fi0(0) = 15.0;
fi0(1) = 30.0;
fi0(2) = 45.0;
493 fi0(3) = 60.0;
fi0(4) = 75.0;
Vector< double > MOPSParameters
Matrix & resize(size_t rows, size_t cols)
virtual double correction(double elevation) const
double MOPSsigma2(double elevation)
#define THROW_IF_INVALID_DETAILED()
static const double MOPSRd
virtual double mapping_function(double elevation) const
static const double MOPSk2
double getAltitude() const noexcept
return height above ellipsoid (meters)
virtual void setDayOfYear(const int &doy)
#define THROW_IF_INVALID()
const double PI
GPS value of PI; also specified by GAL.
virtual void setReceiverHeight(const double &ht)
Vector & resize(const size_t index)
double getHeight() const noexcept
return height above ellipsoid (meters)
static const double MOPSk1
virtual void prepareParameters()
virtual void setReceiverLatitude(const double &lat)
double getGeodeticLatitude() const noexcept
return geodetic latitude (deg N)
virtual double dry_zenith_delay() const
bool valid
true only if current model parameters are valid
double cos(gnsstk::Angle x)
double beta(double x, double y)
static const double MOPSgm
#define GNSSTK_RETHROW(exc)
@ P
Legacy GPS precise code.
MOPSTropModel()
Empty constructor.
#define GNSSTK_THROW(exc)
virtual double wet_zenith_delay() const
static const double MOPSg
double elevationGeodetic(const Position &Target) const
virtual void prepareTables()
virtual void setAllParameters(const CommonTime &time, const Position &rxPos)
gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:40