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. Install pip install thermofeel[validation] to
    run; see validation/README.md for 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 under docs/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 radiation q
      (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_pmv and calculate_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.py computes indices from
    near-real-time station METARs; the notebook draws maps with earthkit-plots.
    Removed orphaned example data files. Install with pip install thermofeel[examples].
    (Examples are not part of the shipped library.)
  • Added the thermofeel.approximations namespace (namespace-only, not
    re-exported at the top level) with estimators of the direct solar radiation
    fdir from global radiation ssrd + solar geometry, for datasets that lack
    it: approximate_fdir_erbs (Erbs et al. 1982, with an optional Earth-Sun
    distance correction) and approximate_fdir_disc (DISC; Maxwell 1987). Both
    reproduce pvlib to machine precision (validation oracle only). The
    compute-thermal-indices.py example 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.typed marker
    (PEP 561), so downstream type-checkers pick up thermofeel's signatures
  • Exported fahrenheit_to_celsius at the top level, completing the C/K/F
    converter set
  • Fixed silent integer-dtype truncation in
    calculate_saturation_vapour_pressure_multiphase and approximate_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 Stull calculate_wbgt) now returns the
    mean radiant temperature at exactly zero wind — the analytic calm-air limit
    (no convection ⇒ globe at radiative equilibrium) — instead of NaN. Values for
    any positive wind are unchanged
  • Ran a first numerical-robustness pass (ROBUSTNESS.md): audited the
    log/sqrt/power/division domains and added NaN-propagation and
    error-contract tests
  • The published wheel now ships only the thermofeel package (examples/,
    scripts/ and tests/ 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.py example to the 2.x API:
    solar geometry now obtained from earthkit-meteo
    (solar.cos_solar_zenith_angle_integrated), calculate_utci/calculate_wbgt/
    calculate_bgt/calculate_normal_effective_temperature return 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 the approximate_dsrp threshold comment
  • Added the thermofeel.excess_heat submodule: 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 its wind_scaling argument)
  • 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_wbgt module, now superseded by
    calculate_wbgt_liljegren
  • Fixed the calculate_bgt argument 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

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_temperature function)

New Functions

  • scale_windspeed function to scale 10m wind speed to height h with h < 10m
  • calculate_nonsaturation_vapour_pressure to calculate vapour pressure at a given relative humidity and air temperature
  • calculate_wbgt_simple function renamed
  • calculate_normal_effective_temperature function 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_bgt function is calculated via a 4x faster formula
  • calculate_saturation_vapour_pressure_multiphase formulas replaced with those used in the IFS
  • changeable threshold in approximate_dsrp function (set to 0.1 by default)
  • invalidity outside input variables range specified in calculate_wind_chill function docstring

Bug Fixes

  • fixed approximate_dsrp to avoid fdir being overwritten with dsrp when calculating MRT
  • fixed calculate_wbgt_simple constant value and vapour pressure calculated from non-saturated formula
  • fixed calculate_bgt wind speed at 1.1m in input
  • fixed calculate_mrt_from_bgt wind speed at 1.1m in input
  • fixed calculate_normal_effective_temperature wind speed at 1.2m in input
  • fixed calculate_apparent_temperature wind speed at 10m in input; vapour pressure calculated from non-saturated formula
  • fixed calculate_wind_chill wind speed in km/h and operation symbols in main formula
  • fixed calculate_heat_index_simplified a wrong sign and missing constant value in hiarray; hi set to 2m air temperature when the latter is below 20°C
  • fixed fahrenheit_to_kelvin converter 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

New Contributors

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