Skip to content

Overview of thermofeel

thermofeel is a thermal-indices library which allows these indices to be integrated in numerical weather prediction systems. It was developed and is maintained by ECMWF (European Centre for Medium-Range Weather Forecasts).

thermofeel calculates the following thermal indices:

  • Apparent Temperature
  • Heat Index
  • Humidex
  • Normal Effective Temperature
  • Universal Thermal Climate Index
  • Wet Bulb Globe Temperature
  • Wet Bulb Globe Temperature (Liljegren method)
  • Heat Force (KNMI 0–10 heat-stress scale)
  • Excess Heat Factor and Excess Cold Factor
  • Wind Chill

In support of the above, it also calculates:

  • Globe Temperature
  • Mean Radiant Temperature
  • Mean Radiant Temperature from Globe Temperature
  • Relative Humidity Percentage
  • Saturation Vapour Pressure
  • Wet Bulb Temperature

Calling convention

Every function is vectorised over NumPy and works elementwise on arrays of any shape. Inputs and outputs are SI (temperatures in Kelvin, wind in m/s at 10 m, relative humidity in %, vapour pressure in hPa); the excess heat/cold factors are the documented unit-agnostic exception.

Pass NumPy arrays, and wrap a scalar in an array, e.g.:

import numpy as np
import thermofeel as tf

utci = tf.calculate_utci(
    t2_k=np.array([300.0]), va=np.array([3.0]), mrt=np.array([310.0]),
    td_k=np.array([290.0]),
)

Most functions also accept a bare Python scalar, but those that branch internally (e.g. calculate_heat_index_simplified, approximate_dsrp, calculate_saturation_vapour_pressure_multiphase) require array input — so wrapping scalars in an array is the reliable convention. Inputs are not clamped to each index's validity range (see the per-function docstrings); masking out-of-range points is the caller's responsibility.