43 #define THROW_IF_INVALID_DETAILED() {if (!valid) { \
45 if(!validHeight) e.addText("Invalid trop model: Rx Height"); \
46 if(!validLat) e.addText("Invalid trop model: Rx Latitude"); \
47 if(!validDOY) e.addText("Invalid trop model: day of year"); \
66 { 0.00058021897, 0.00056794847, 0.00058118019,
67 0.00059727542, 0.00061641693 };
69 { 0.0014275268, 0.0015138625, 0.0014572752,
70 0.0015007428, 0.0017599082 };
72 { 0.043472961, 0.046729510, 0.043908931,
73 0.044626982, 0.054736038 };
77 { 0.0012769934, 0.0012683230, 0.0012465397,
78 0.0012196049, 0.0012045996 };
80 { 0.0029153695, 0.0029152299, 0.0029288445,
81 0.0029022565, 0.0029024912 };
83 { 0.062610505, 0.062837393, 0.063721774,
84 0.063824265, 0.064258455 };
87 { 0.0, 0.000012709626, 0.000026523662,
88 0.000034000452, 0.000041202191 };
90 { 0.0, 0.000021414979, 0.000030160779,
91 0.000072562722, 0.00011723375 };
93 { 0.0, 0.000090128400, 0.000043497037,
94 0.00084795348, 0.0017037206 };
129 catch(GeometryException& e)
136 throw InvalidTropModel(
"Invalid model");
144 catch(InvalidTropModel& e)
208 double ddry( 2.29951*std::exp( (-0.000116 *
NeillHeight) ) );
230 t =
static_cast<double>(
NeillDOY) - 28.0;
249 int i=int(lat/15.0)-1;
250 double frac=(lat-15.*(i+1))/15.;
267 double map = (1.+a/(1.+b/(1.+c)))/(
se+a/(
se+b/(
se+c)));
273 ( 1./
se - ( (1.+a/(1.+b/(1.+c))) / (
se+a/(
se+b/(
se+c))) ) );
298 int i=int(lat/15.0)-1;
299 double frac=(lat-15.*(i+1))/15.;
312 double map = ( 1.+ a/ (1.+ b/(1.+c) ) ) / (
se + a/(
se + b/(
se+c) ) );
326 "NeillTropModel must have Rx latitude before computing weather");
333 "NeillTropModel must have day of year before computing weather");
370 if( (doy>=1) && (doy<=366) )