Skip to content

Commit

Permalink
Merge pull request #36450 from swwu/swwu/fix-36449
Browse files Browse the repository at this point in the history
Cap windchill heat from vapor pressure to 50C
  • Loading branch information
Rivet-the-Zombie authored Dec 28, 2019
2 parents d136e46 + d4c7fbf commit 54c97b2
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/weather.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -715,8 +715,14 @@ int get_local_windchill( double temperature, double humidity, double windpower )
tmpwind = tmpwind * 0.44704;
tmptemp = temp_to_celsius( tmptemp );

windchill = 0.33 * ( humidity / 100.00 * 6.105 * exp( 17.27 * tmptemp /
( 237.70 + tmptemp ) ) ) - 0.70 * tmpwind - 4.00;
// Cap the vapor pressure term to 50C of extra heat, as this term
// otherwise grows logistically to an asymptotic value of about 2e7
// for large values of temperature. This is presumably due to the
// model being designed for reasonable ambient temperature values,
// rather than extremely high ones.
windchill = 0.33 * std::min<float>( 150.00, humidity / 100.00 * 6.105 *
exp( 17.27 * tmptemp / ( 237.70 + tmptemp ) ) ) - 0.70 *
tmpwind - 4.00;
// Convert to Fahrenheit, but omit the '+ 32' because we are only dealing with a piece of the felt air temperature equation.
windchill = windchill * 9 / 5;
}
Expand Down

0 comments on commit 54c97b2

Please sign in to comment.