Recent Releases of Thermofeel
Thermofeel - 2.3.0
- Added a scientific validation campaign under
validation/for every method
new in this release: per-index methodology READMEs, runnable validation
scripts with pre-registered acceptance criteria, and versioned result tables
and plots. Evidence includes the ISO 7730:2005 Annex D table and 58k ASHRAE
Thermal Comfort Database II field records (PMV/PPD), NOAA SURFRAD ground
observations and the live IFS open-data pipeline (fdir estimators), the NREL
SPA ephemeris (Earth-Sun distance factor), and independent peer-reviewed
implementations/transcriptions (pythermalcomfort, pvlib, BoM/Asghari forms)
for the simple heat indices. Installpip install thermofeel[validation]to
run; seevalidation/README.mdfor the verdict table (all PASS). - Added
calculate_discomfort_index: Thom's Discomfort Index (Temperature-
Humidity Index) from 2 m temperature and relative humidity, returning Kelvin.
Implements the Celsius/relative-humidity formulation of Thom's index given by
Giles et al. (1990, https://doi.org/10.1007/BF01093455),
DI = T - 0.55 (1 - 0.01 RH)(T - 14.5); the index originates with Thom (1959,
https://doi.org/10.1080/00431672.1959.9926960). Validated against analytic
reference values (including the RH=100% -> DI=Ta and T=14.5 °C -> DI=14.5 °C
identities) and pinned by a regression CSV. Adds a guide page. See also the
review Epstein & Moran (2006, https://doi.org/10.2486/indhealth.44.388), which
uses a different wet-bulb formulation. - Added a batch of new thermal indices (all vectorised, SI in/out, each cited
and validated against published/independent references; see the per-index
guide pages underdocs/guide/):calculate_apparent_temperature_radiation: the radiation-inclusive
Steadman/BoM Apparent Temperature from 2 m temperature, 10 m wind, relative
humidity and a caller-supplied body-absorbed net radiationq
(Steadman 1994, https://doi.org/10.1071/es94001; Australian BoM).calculate_relative_strain_index: the Relative Strain Index from 2 m
temperature and relative humidity (Lee & Henschel 1966,
https://doi.org/10.1111/j.1749-6632.1966.tb43059.x; hPa closed form and
bands from Asghari et al. 2020, https://doi.org/10.2174/1874213002013010011).calculate_summer_simmer_index: Pepi's Summer Simmer Index (common 1987
closed form, an affine transform of Thom's THI) from 2 m temperature and
relative humidity (Pepi 1987, https://doi.org/10.1080/00431672.1987.9933356;
equation reproduced from secondary sources — see the guide).calculate_pmvandcalculate_ppd: Fanger's Predicted Mean Vote and
Predicted Percentage of Dissatisfied (ISO 7730:2005; Fanger 1970), from air
and mean-radiant temperature, body-level air velocity, humidity, metabolic
rate and clothing insulation; validated against the ISO 7730 Annex D table.
- Modernised the
examples/scripts and notebook to the ECMWF earthkit 1.0
stack (earthkit-data / earthkit-meteo / earthkit-plots):compute-thermal-indices.py
now fetches gridded ECMWF forecasts online (open data, Polytope or MARS, or a
local file) and writes GRIB/NetCDF;compute-obs.pycomputes indices from
near-real-time station METARs; the notebook draws maps with earthkit-plots.
Removed orphaned example data files. Install withpip install thermofeel[examples].
(Examples are not part of the shipped library.) - Added the
thermofeel.approximationsnamespace (namespace-only, not
re-exported at the top level) with estimators of the direct solar radiation
fdirfrom global radiationssrd+ solar geometry, for datasets that lack
it:approximate_fdir_erbs(Erbs et al. 1982, with an optional Earth-Sun
distance correction) andapproximate_fdir_disc(DISC; Maxwell 1987). Both
reproducepvlibto machine precision (validation oracle only). The
compute-thermal-indices.pyexample exposes them via
--approximate-fdir[=erbs|disc].
Consumption - Buildings and Heating
- Python
Published by tlmquintino about 1 month ago
Thermofeel - 2.2.0
- Added inline type hints across the public API and a
py.typedmarker
(PEP 561), so downstream type-checkers pick up thermofeel's signatures - Exported
fahrenheit_to_celsiusat the top level, completing the C/K/F
converter set - Fixed silent integer-dtype truncation in
calculate_saturation_vapour_pressure_multiphaseandapproximate_dsrp: an
integer-typed input array no longer truncates the float result - Added the missing citation for
calculate_relative_humidity_percent
(Magnus-Tetens; Murray 1967) and documented validity ranges in the UTCI, wet
bulb, simple WBGT, NET, apparent-temperature and humidex docstrings; documented
the array calling convention and that relative humidity is not clamped calculate_bgt(and therefore the Stullcalculate_wbgt) now returns the
mean radiant temperature at exactly zero wind — the analytic calm-air limit
(no convection ⇒ globe at radiative equilibrium) — instead ofNaN. Values for
any positive wind are unchanged- Ran a first numerical-robustness pass (
ROBUSTNESS.md): audited the
log/sqrt/power/division domains and addedNaN-propagation and
error-contract tests - The published wheel now ships only the
thermofeelpackage (examples/,
scripts/andtests/are no longer packaged) - Raised the minimum supported Python to 3.10 (
requires-python = ">=3.10"),
refreshed the trove classifiers and added Python 3.14 - Repaired the
examples/compute-thermal-indices.pyexample to the 2.x API:
solar geometry now obtained fromearthkit-meteo
(solar.cos_solar_zenith_angle_integrated),calculate_utci/calculate_wbgt/
calculate_bgt/calculate_normal_effective_temperaturereturn Kelvin directly,
renamed/removed functions and the obsolete timing decorators dropped - Removed dead, overwritten code in
scale_windspeed(kept the computed log-law
coefficient) and corrected theapproximate_dsrpthreshold comment - Added the
thermofeel.excess_heatsubmodule: Excess Heat Factor (EXHF),
Excess Cold Factor (EXCF), heatwave severity, and the supporting daily mean
temperature, significance and acclimatisation indices, after Nairn & Fawcett
(2014). The factors are also exposed at the top level as
calculate_excess_heat_factor/calculate_excess_cold_factor. The functions
implement the per-day formulas; the temporal aggregations are left to upstream
tooling (e.g. earthkit-transforms) - Added
calculate_wbgt_liljegren: physically based Wet Bulb Globe Temperature
using the Liljegren et al. (2008) method, validated against Liljegren's
reference implementation (github.com/mdljts/wbgt) - Added
calculate_wind_speed_2m_liljegren: the KNMI/Liljegren
stability-dependent 10 m-to-2 m wind-speed profile, used by default in
calculate_wbgt_liljegren(selectable via itswind_scalingargument) - Added
calculate_heat_force: the KNMI 0–10 heat-force (hittekracht) scale
derived from WBGT (KNMI Technical Report TR-26-04) - Removed the broken, unexported
experimental_wbgtmodule, now superseded by
calculate_wbgt_liljegren - Fixed the
calculate_bgtargument order in the scalar test suite
Consumption - Buildings and Heating
- Python
Published by tlmquintino 2 months ago
Thermofeel - 2.1.7
ChangeLog:
- Change project to single branch main
Full Changelog: https://github.com/ecmwf/thermofeel/compare/2.1.5...2.1.7
Consumption - Buildings and Heating
- Python
Published by tlmquintino 7 months ago
Thermofeel - 2.1.5
- Fix descriptions
- Fix variable names
- Updated humidex calculation and reference
Consumption - Buildings and Heating
- Python
Published by cladinapoli 7 months ago
Thermofeel - 2.1.4
- Fix setup of project
- Removed unused dependency on earthkit-meteo
Consumption - Buildings and Heating
- Python
Published by cladinapoli 9 months ago
Thermofeel - 2.1.3
Documentation revised and updated
Consumption - Buildings and Heating
- Python
Published by cladinapoli 9 months ago
Thermofeel - 2.1.2
ChangeLog
- Small fix in the heat index adjusted computation
Consumption - Buildings and Heating
- Python
Published by cladinapoli 11 months ago
Thermofeel - 2.1.1
ChangeLog
- Small bug fix in the UTCI computaiton
What's Changed
- Rename utci variable by @tlmquintino in https://github.com/ecmwf/thermofeel/pull/39
- release 2.1.1 by @tlmquintino in https://github.com/ecmwf/thermofeel/pull/40
Full Changelog: https://github.com/ecmwf/thermofeel/compare/2.1.0...2.1.1
Consumption - Buildings and Heating
- Python
Published by tlmquintino over 1 year ago
Thermofeel - 2.1.0
Version 2.1.0
What's Changed
- Fix computaiton of normal effective temperature
- Fix documentation links to new repository URL
- Better explanation of T0
Full Changelog: https://github.com/ecmwf/thermofeel/compare/2.0.0...2.1.0
Consumption - Buildings and Heating
- Python
Published by tlmquintino almost 2 years ago
Thermofeel - 2.0.0
Version 2.0.0
Standardisation
- I/O variables converted into International System of Units (SI) (e.g., K)
- Docstrings standardised in their descriptions (e.g., inputs as float arrays) and references
- Variable names standardised across function declarations (i.e., t2m vs t2k vs t_k → now t2_k)
- Use of temperature converter functions
- Input variables are limited to those explicitly needed in the function formula (see e.g.,
calculate_normal_effective_temperaturefunction)
New Functions
scale_windspeedfunction to scale 10m wind speed to height h with h < 10mcalculate_nonsaturation_vapour_pressureto calculate vapour pressure at a given relative humidity and air temperaturecalculate_wbgt_simplefunction renamedcalculate_normal_effective_temperaturefunction renamed
Improvements
- thermofeel library docstring lists computed variables in alphabetical order
- the cosine of the solar zenith angle now computed via the
earthkit-meteo <https://github.com/ecmwf/earthkit-meteo>_ library calculate_bgtfunction is calculated via a 4x faster formulacalculate_saturation_vapour_pressure_multiphaseformulas replaced with those used in the IFS- changeable threshold in
approximate_dsrpfunction (set to 0.1 by default) - invalidity outside input variables range specified in
calculate_wind_chillfunction docstring
Bug Fixes
- fixed
approximate_dsrpto avoid fdir being overwritten with dsrp when calculating MRT - fixed
calculate_wbgt_simpleconstant value and vapour pressure calculated from non-saturated formula - fixed
calculate_bgtwind speed at 1.1m in input - fixed
calculate_mrt_from_bgtwind speed at 1.1m in input - fixed
calculate_normal_effective_temperaturewind speed at 1.2m in input - fixed
calculate_apparent_temperaturewind speed at 10m in input; vapour pressure calculated from non-saturated formula - fixed
calculate_wind_chillwind speed in km/h and operation symbols in main formula - fixed
calculate_heat_index_simplifieda wrong sign and missing constant value in hiarray; hi set to 2m air temperature when the latter is below 20°C - fixed
fahrenheit_to_kelvinconverter function
Consumption - Buildings and Heating
- Python
Published by tlmquintino almost 3 years ago
Thermofeel - 1.3.0
Multiple fixes and documentation
Consumption - Buildings and Heating
- Python
Published by tlmquintino almost 4 years ago
Thermofeel -
Introduced optional Numba JIT optimisation of functions for significant speedup.
Improved some functions to make them compilable and vectorisable by Numba.
Remove __wrap function, as such many functions now require numpy arrays as input.
Fixed calculate_heat_index_adjusted.
Added calculate_wbt_dj
More and improved examples.
Improved documentation.
Consumption - Buildings and Heating
- Python
Published by tlmquintino over 4 years ago
Thermofeel - 1.1.3
Update to the Documentation
Small changes to the an example file in the examples folder and updating the documentation for read the docs.
Full Changelog: https://github.com/ecmwf-projects/thermofeel/compare/1.1.2...1.1.3
Consumption - Buildings and Heating
- Python
Published by chlobrim over 4 years ago
Thermofeel - 1.1.2
Improvements in the examples
Consumption - Buildings and Heating
- Python
Published by tlmquintino almost 5 years ago
Thermofeel - 1.1.1
What's Changed
- Temporarily pin the Python version until new NumPy wheels are available by @dvuckovic in https://github.com/ecmwf-projects/thermofeel/pull/10
New Contributors
- @dvuckovic made their first contribution in https://github.com/ecmwf-projects/thermofeel/pull/10
Full Changelog: https://github.com/ecmwf-projects/thermofeel/compare/1.1.0...1.1.1
Consumption - Buildings and Heating
- Python
Published by tlmquintino almost 5 years ago
Thermofeel - 1.1.0
Consumption - Buildings and Heating
- Python
Published by tlmquintino almost 5 years ago
Thermofeel - 1.0.5
Updating the cosine of the solar zenith angle to a faster integrating approach, implementing a change to UTCI to take either dew point temperature or e_hPa.
Consumption - Buildings and Heating
- Python
Published by chlobrim almost 5 years ago
Thermofeel -
Consumption - Buildings and Heating
- Python
Published by tlmquintino about 5 years ago
Thermofeel -
Consumption - Buildings and Heating
- Python
Published by tlmquintino about 5 years ago
Thermofeel -
Consumption - Buildings and Heating
- Python
Published by tlmquintino about 5 years ago
Thermofeel -
Consumption - Buildings and Heating
- Python
Published by tlmquintino about 5 years ago
Thermofeel - First public release
First public release of thermofeel
Consumption - Buildings and Heating
- Python
Published by tlmquintino about 5 years ago
Thermofeel -
Consumption - Buildings and Heating
- Python
Published by tlmquintino about 5 years ago
Thermofeel -
Consumption - Buildings and Heating
- Python
Published by tlmquintino about 5 years ago