Source code for ladybug_comfort.at

# coding=utf-8
"""Utility functions for calculating the Apparent Temperature (AT)."""
from __future__ import division

import math


[docs] def apparent_temperature(ta, rh, ws): """Calculate apparent temperature (AT) from air temperature, relative humidity, and wind speed. The Australian Apparent Temperature (AT) is a type of heat index that was used by the Australian Bureau of Meteorology (ABM). It is based on a mathematical model published by Robert G. Steadman in 1994 [1]. Two forms of the model are available, one including radiation and one without. This algorithm uses the non-radiation version. [2] Note: [1] Steadman, R. G. (1994). Norms of apparent temperature in Australia. Aust. Met. Mag, 43, 1-16. [2] Thermal Comfort observations. (n.d.). Retrieved May 20, 2016, from http://www.bom.gov.au/info/thermal_stress/ Args: ta: Air temperature [C] rh: Relative humidity [%] ws: Wind speed (km /h) Returns: at -- Apparent Temperature[C] """ # e = Water vapour pressure (hPa) [humidity] e = (rh / 100) * 6.105 * math.exp((17.27 * ta) / (237.7 + ta)) at = ta + (0.33 * e) - (0.70 * ws) - 4.00 return at
[docs] def apparent_temperature_warning_category(at): """Get the category of apparent suggestion associated with a given apparent temperature (AT). Categories to indicate apparent suggestion: * 4 = (>40 C) Minimal clothing; sun protection required. * 3 = (35-40 C) Minimal clothing; sun protection as needed. * 2 = (30-35 C) Short sleeve, shirt and shorts. * 1 = (25-30 C) Light undershirt. * 0 = (20-25 C) Cotton-type slacks (pants). * -1 = (15-20 C) Normal office wear. * -2 = (10-15 C) Thin or sleeveless sweater. * -3 = (5-10 C) Sweater. Thicker underwear. * -4 = (0-5 C) Coat and sweater. * -5 = (-5-0 C) Overcoat. Wind protection as needed. * -6 = (<-5 C) Overcoat. Head insulation. Heavier footwear. Args: at: Apparent temperature [C] Returns: category -- An integer indicating the level of warning associated with the heat index. Values are one of the following: - 4 = Minimal clothing. - 3 = Minimal clothing. - 2 = Short sleeve, shirt and shorts. - 1 = Light undershirt. - 0 = Cotton-type slacks (pants). - -1 = Normal office wear. - -2 = Thin or sleeveless sweater. - -3 = Sweater. Thicker underwear. - -4 = Coat and sweater. - -5 = Overcoat. - -6 = Overcoat. """ if at > 40: category = 4 elif at > 35: category = 3 elif at > 30: category = 2 elif at > 25: category = 1 elif at > 20: category = 0 elif at > 15: category = -1 elif at > 10: category = -2 elif at > 5: category = -3 elif at > 0: category = -4 elif at > -5: category = -5 else: category = -6 return category