Using equation 38 in ASHRAE Fundamentals 2009 Ch. 1: psat(td) = pw
| 150 | // psat(td) = pw |
| 151 | // |
| 152 | static boost::optional<double> solveForDewPoint(double drybulb, double pw, double deltaLimit, int itermax) { |
| 153 | //double deltaLimit = percentChange*0.01; |
| 154 | double tdew = drybulb; |
| 155 | int i = 0; |
| 156 | |
| 157 | while (i < itermax) { |
| 158 | i++; |
| 159 | const double pws = psat(tdew); |
| 160 | const double f = pws - pw; |
| 161 | const double fp = psatp(tdew, pws); |
| 162 | const double delta = -f / fp; |
| 163 | tdew += delta; |
| 164 | // std::cout << i << " " << tdew << " " << delta / (273.15 + tdew) << '\n'; |
| 165 | if (std::fabs(delta / (273.15 + tdew)) <= deltaLimit) { |
| 166 | return {tdew}; |
| 167 | } |
| 168 | } |
| 169 | return boost::none; |
| 170 | } |
| 171 | |
| 172 | AirState::AirState() |
| 173 | : // Set parameters |
no test coverage detected