MCPcopy Create free account
hub / github.com/SGL-UT/gnsstk / wet_mapping_function

Method wet_mapping_function

core/lib/GNSSCore/GGTropModel.cpp:127–158  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125
126
127 double GGTropModel::wet_mapping_function(double elevation) const
128 {
129 THROW_IF_INVALID();
130
131 if(elevation < 0.0) return 0.0;
132
133 GPSEllipsoid ell;
134 double ce = std::cos(elevation*DEG_TO_RAD), se = std::sin(elevation*DEG_TO_RAD);
135 double aw = -se/Cwetmap;
136 double bw = -ce*ce/(2.0*ell.a()*Cwetmap);
137 double Rw = SQRT((ell.a()+Cwetmap)*(ell.a()+Cwetmap)
138 - ell.a()*ell.a()*ce*ce) - ell.a()*se;
139
140 double Aw[9], aw2=aw*aw, bw2=bw*bw;
141 Aw[0] = 1.0;
142 Aw[1] = 4.0*aw;
143 Aw[2] = 6.0*aw2 + 4.0*bw;
144 Aw[3] = 4.0*aw*(aw2+3.0*bw);
145 Aw[4] = aw2*aw2 + 12.0*aw2*bw + 6.0*bw2;
146 Aw[5] = 4.0*aw*bw*(aw2+3.0*bw);
147 Aw[6] = bw2*(6.0*aw2+4.0*bw);
148 Aw[7] = 4.0*aw*bw*bw2;
149 Aw[8] = bw2*bw2;
150
151 double sumw=0.0;
152 for(int j=9; j>=1; j--) {
153 sumw += Aw[j-1]/double(j);
154 sumw *= Rw;
155 }
156 return sumw/GGwetscale;
157
158 }
159
160 void GGTropModel::setWeather(const double& T,
161 const double& P,

Callers 2

ProcessFunction · 0.45
run_testMethod · 0.45

Calls 3

cosFunction · 0.70
sinFunction · 0.70
aMethod · 0.45

Tested by 2

ProcessFunction · 0.36
run_testMethod · 0.36