A Python-based subseasonal heat-stress forecasting system that generates WBGT-based daytime and nighttime heat-stress outlooks, maps, and visualizations from ECMWF medium-range forecasts. The tool supports early warning and risk monitoring by translating weather forecasts into human-perceived heat stress across the Greater Horn of Africa.
# Heat-Stress Forecast Tools
First release of a heat-stress forecasting tool for the Greater Horn of Africa,
developed and tested using ECMWF open-data medium-range forecasts under the PASSAGE
Project at ICPAC.
The heat stress forecasting tool has been rigorously tested using 80 years of
historical ERA5 reanalysis data to evaluate its performance across a wide range
of climate conditions and extreme heat events. This extensive historical assessment
has helped verify the robustness of the methodology, ensure the reliability of the
forecast products, and build confidence in its application for operational heat stress
monitoring and early warning over the Greater Horn of Africa.
The pipeline downloads ECMWF IFS open-data forecasts, derives the meteorological
inputs required by the forecasting system, computes gridded **daytime and nighttime WBGT**
with the Liljegren et al. (2008) method, and produces weekly heat-stress summary
and operational category maps.
> Maintained by the IGAD Climate Prediction and Applications Centre (**ICPAC**).
---
## Contents
| File | Role |
|------|------|
| `download_ecmwf_open-data_forecast.py` | Download ECMWF open-data surface GRIB2 fields per forecast step |
| `preproc_ecmwf2wbgt.py` | Build the continuous 6-hourly WBGT input fields (day/night: T, RH, wind, pressure, radiation) |
| `calc_spatial_WBGT_forecast.py` | Compute gridded daytime/nighttime WBGT (driver script) |
| `wbgt_functions.py` | WBGT library for solver |
| `postproc_WBGT_weekly_forecast.py` | Weekly summary maps + operational heat-stress category maps |
| `environment.yml` | Reproducible conda environment (`heat-stress`) |
| `NEWS.md` | Change log : notable updates, newest first |
---
## How it works
```mermaid
flowchart TD
A[ECMWF open-data IFS 0.25 deg GRIB2] -->|download_ecmwf_open-data_forecast.py| B[ecmwf_forecasts_YYYYMMDD/]
B -->|preproc_ecmwf2wbgt.py| C[ecmwf_forecasts4wbgt_YYYYMMDD.nc]
C -->|calc_spatial_WBGT_forecast.py| D[WBGT_forecast_output_YYYY-MM …