HeatStressR calculates meteorological heat-stress metrics from aligned observations. Version 3 introduces canonical snake_case endpoints, one method registry, common validation and diagnostics, Romps thermodynamic wet bulb, and the simplified 2026 Lu Heat Index.
HeatStressR is an independently maintained GPL-3 fork of HeatStress
at f77a263. Ana Casanueva wrote the original package
and R translation; Yifei Zheng maintains this fork. It is not affiliated
with the original project or authors.
Use citation("HeatStressR") for the package citation.
Please also cite the original methodological reference for each
heat-stress method used; see the corresponding function
documentation.
Requires R 4.1 or later. The new Romps and Lu methods depend on the
authors’ heatindex
package; source installs of that dependency require C++17/Rcpp.
HeatStressR itself contains R code.
# CRAN:
install.packages("HeatStressR")
# R-universe:
install.packages(
"HeatStressR",
repos = c("https://zyf0717.r-universe.dev", "https://cloud.r-project.org")
)
# GitHub (development version):
remotes::install_github("zyf0717/HeatStressR")
library(HeatStressR)
heat_methods()Temperatures are Celsius, humidity is percent, pressure is hPa, wind
is m/s, and downwelling shortwave radiation is W/m². See
heat_methods() for each method’s requirements, humidity
phase convention, units and references. Humidex uses a
Celsius-equivalent index scale.
heat_index_rothfusz(c(25, 35), c(50, 10))
heat_index_lu(c(25, 35), c(50, 70))
wet_bulb_romps(30, 70, pressure = 950)
wbgt_simplified_abm(30, 70)
wbgt_simplified_indoor(30, 70)
indices <- heat_indices(c(25, 30), c(60, 70))
selected <- heat_indices(
c(25, 30), c(60, 70), wind_10m = c(1, 2),
indices = c("humidex", "heat_index_lu", "apparent_temperature")
)heat_indices() automatically selects every method
supported by supplied inputs, including numerical methods. Select
indices explicitly for stable columns and predictable computation. It
does not infer missing humidity inputs or substitute wind heights.
wet_bulb_romps() calculates thermodynamic liquid-water
wet bulb. Natural wet bulb, aspirated wet bulb and WBGT are different
quantities. The ABM and indoor simplified WBGT formulas also represent
different approximations.
The existing vectorized R heat-balance solver remains the implementation, with automatic scalar fallback and optional PSOCK workers. Wind must be at 2 m; adjust other heights externally. Supply timestamps as instants and align interval data before calculation.
time <- as.POSIXct(
c("2024-06-01 12:00:00", "2024-06-01 13:00:00"), tz = "UTC"
)
wbgt <- wbgt_liljegren(
tas = c(30, 31), dewp = c(22, 22.5), wind = c(1.5, 2),
radiation = c(700, 750), time = time, lon = 0, lat = 15,
direct_fraction = c(0.6, 0.8)
)
detail <- wbgt_liljegren(
30, 22, 1.5, 700, time[1], 0, 15, diagnostics = TRUE
)
detail$componentsPressure defaults to 1010 hPa, an explicit near-sea-level assumption.
control groups advanced root/residual precision, albedo,
globe diameter and minimum wind speed. Use workers > 1
only for a sufficiently large call and avoid nesting worker pools.
The model is an independently maintained R implementation, rather than a bitwise port of the original C program (see lwbgt). Match physical assumptions when comparing implementations.
Legacy 2.x names remain as deprecated adapters and warn once per
session. Removal is planned no earlier than v4.0.0. hi()
uses the corrected NWS procedure; swbgt() continues to
represent the indoor approximation.
Reference fixtures use heatindex 0.0.2. The runtime
dependency accepts compatible later versions; pin the dependency in your
own environment for identical reproducibility. Diagnostic metadata
reports the installed version. Use
tools/install-reference-dependencies.R for the pinned
validation library.
For local source tests, use an isolated library containing this checkout so PSOCK workers load the same package version as the parent:
Rscript tools/install-reference-dependencies.R /tmp/heatstressr-test-library
R_LIBS=/tmp/heatstressr-test-library R CMD INSTALL --library=/tmp/heatstressr-test-library .
R_LIBS=/tmp/heatstressr-test-library Rscript -e 'testthat::test_local()'