Source code for ladybug_comfort.humidex
# coding=utf-8
"""Utility functions for calculating the Humidex."""
from __future__ import division
import math
[docs]
def humidex(ta, tdp):
"""Calculate Humidex from air temperature and the Dew Point.
The Humidex is a Canadian innovation first used in 1965.
It combines the temperature and humidity into one number to reflect the
perceived temperature.
Because it takes into account the two most important
factors that affect summer comfort, it can be a better
measure of how stifling the air feels than either temperature or
humidity alone. [1]
Air temperatures below 20c will give a generally meaningless result as the Humidex
only describes perceived heat.
The Humidex is a "nominally dimensionless quantity" but is generally
recognized by the public as equivalent to the degree Celsius [2]
Note:
[1] Environment Canada (October 2017). "Warm Season Weather Hazards".
https://www.canada.ca/en/environment-climate-change/services/seasonal\
-weather-hazards/warm-season-weather-hazards.html#toc7
[2] https://en.wikipedia.org/wiki/Humidex
Args:
ta: Air temperature [C]
tdp: The Dew Point [C]
Returns:
float -- Humidex
"""
dew_point_k = tdp + 273.15 # celsius to kelvin
e = 6.11 * math.exp(5417.7530 * ((1 / 273.15) - (1 / dew_point_k)))
h = 0.5555 * (e - 10.0)
humidex_value = float(ta + h)
return humidex_value
[docs]
def humidex_degree_of_comfort(humidex):
"""Get the degree of comfort associated with a given Humidex value.
Degrees of comfort are provided by the Government of Canada and are indicated
here with the following integer values:
* 0 = No discomfort (Humidex of 19 and below)
* 1 = Little discomfort (Humidex between 20 - 29)
* 2 = Some discomfort (Humidex between 30 - 39)
* 3 = Great discomfort; avoid exertion (Humidex between 40 - 45)
* 4 = Dangerous; heat stroke possible (Humidex of 45 and above)
See: https://www.canada.ca/en/environment-climate-change/services/seasonal-\
weather-hazards/warm-season-weather-hazards.html#toc7
Args:
humidex: Humidex
Returns:
int -- Degree of Comfort
"""
if humidex < 20.0:
return 0
elif humidex < 30.0:
return 1
elif humidex < 40.0:
return 2
elif humidex < 46.0:
return 3
return 4