15double vmf1h(
const double& ah,
const double& dmjd,
16 const double& dlat,
const double& ht,
const double& zd)
18 double doy = dmjd - 44239.0 + 1 - 28;
23 auto [phh, c11h, c10h] = dlat < 0.0
24 ? std::make_tuple(M_PI, 0.007, 0.002)
25 : std::make_tuple(0.0, 0.005, 0.001);
27 double ch = c0h + ((std::cos(doy / 365.25 * 2.0 * M_PI + phh) + 1.0) * c11h / 2.0 + c10h) * (1.0 - std::cos(dlat));
29 double sine = std::sin(M_PI / 2.0 - zd);
30 double beta = bh / (sine + ch);
31 double gamma = ah / (sine + beta);
32 double topcon = 1.0 + ah / (1.0 + bh / (1.0 + ch));
33 double vmf1h = topcon / (sine + gamma);
36 double a_ht = 2.53e-5;
37 double b_ht = 5.49e-3;
38 double c_ht = 1.14e-3;
39 double hs_km = ht / 1000.0;
40 beta = b_ht / (sine + c_ht);
41 gamma = a_ht / (sine + beta);
42 topcon = 1.0 + a_ht / (1.0 + b_ht / (1.0 + c_ht));
43 double ht_corr_coef = 1.0 / sine - topcon / (sine + gamma);
44 double ht_corr = ht_corr_coef * hs_km;
double vmf1h(const double &ah, const double &dmjd, const double &dlat, const double &ht, const double &zd)
mapping functions with height correction