Source code for ladybug_comfort.di
# coding=utf-8
"""Utility function for calculating Discomfort Index (DI)."""
[docs]
def discomfort_index(ta, rh):
"""Calculate discomfort index (DI) from air temperature and relative
humidity.
Discomfort Index is derived from original work carried out by Eral C. Thom
[1] which defined discomfort index based on dry-bulb and wet-bulb
temperature. It is the human-perceived increase in air temperature due to
humidity increase.
Note:
[1] Thom, E.C. (1959) "The Discomfort Index". Weatherwise, 12, 57-61.
Args:
ta: Air temperature [C]
rh: Relative humidity [%]
Returns:
di -- Discomfort index [C]
"""
di = ta - (0.55 - 0.0055 * rh) * (ta - 14.5)
return di
[docs]
def discomfort_index_effect_category(di):
"""Get the category of effect associated with a given discomfort index
(DI).
Each number (from -6 to 3) represents a certain DI thermal sensation
category. With categories being the following:
* -6 = Hyper-glacial
* -5 = Glacial
* -4 = Extremely cold
* -3 = Very cold
* -2 = Cold
* -1 = Cool
* 0 = Comfortable
* 1 = Hot
* 2 = Very hot
* 3 = Torrid
Args:
di: Discomfort Index [C]
Returns:
category -- An integer indicating the level of effect associated with the
discomfort index. Values are one of the following:
- -6 = Hyper-glacial
- -5 = Glacial
- -4 = Extremely cold
- -3 = Very cold
- -2 = Cold
- -1 = Cool
- 0 = Comfortable
- 1 = Hot
- 2 = Very hot
- 3 = Torrid
"""
if di >= 30:
category = 3
elif di >= 26.5:
category = 2
elif di >= 20:
category = 1
elif di >= 15:
category = 0
elif di >= 13:
category = -1
elif di >= -1.8:
category = -2
elif di >= -10:
category = -3
elif di >= -20:
category = -4
elif di >= -40:
category = -5
else:
category = -6
return category