Python code to calculate Excess Heat Factor and derived heatwave metrics Daniel Argüeso @ University of New South Wales email: [email protected]
Contributors: Annette Hirsch (UNSW), Clemente López Bravo (UNSW)
This is a Python 3 code to calculate Excess Heat Factor and heatwave metrics on a temperature array (time,lat,lon).
The main function is located in compute_EHFheatwaves.py and is called compute_EHF You will need to provide:
| Input | Description |
|---|---|
| tave | Daily Mean temperature computed from daily tmax and tmin. |
| dates | An list of datetime objects |
| thres_file | [OPTIONAL] A netCDF file with the thresholds used to calculate extreme temperature (95th or 90th percentiles) |
| bsyear | [OPTIONAL] If no thres_file is provided, this is the first year of the reference period to calculate thresholds |
| beyear | [OPTIONAL] If no thres_file is provided, this is the last year of the reference period to calculate thresholds |
| month_starty | [OPTIONAL] Month that we consider the first of the year. For Southern Hemisphere, you may set this to 7 - no summers split |
| mask | [OPTIONAL] Array with mask where EHF wont be calculated. For example, Land-Sea mask |
| method | Choose between Nairn and Fawcett (2013) [NF13] or Perkins and Alexander (2013) [PA13]. Differences in the calculations of percentiles |
| nwindow | For PA13 method, length of the window to calculate the calendar day thresholds. Default 15 days |
| EHFaccl | True/False. Whether to use Acclimatization over the previous 30 days. Default False |
| season | Calculate EHF and metrics over particular seasons only. Only NH and SH summer supported. Yearly (no seasons) also supported |
Outputs are
| Output | Description | Units |
|---|---|---|
| HWA | Peak of the hottest heatwave per year - yearly maximum of each heatwave peak | degC or degC2 (depending on EHFaccl) |
| HWM | Average magnitude of the yearly heatwave - yearly average of heatwave magnitude | degC or degC2 (depending on EHFaccl) |
| HWF | Number of heatwave days - expressed as the percentage relative to the total number of days | days |
| HWN | Number of heatwaves per year | hw/year |
| HWD | Duration of the longest heatwave per year | days |
| HWT | Time of the first heat wave day of the year from 1st month of the year | day |
| pct | Percentile 90th or 95th over the entire base_period | degC |
| EHF | Excess Heat Factor index | degC or degC2 (depending on EHFaccl) |
| HWMt | Average temperature for all yearly heatwave - yearly average of temperature heatwave days | degC |
| HWAt | Temperature at the peak of the hottest heatwave per year - yearly maximum of each heatwave peak | degC |
| spell_all | Length of the heatwave in days after the date | days |
| HWL | Mean duration of heat waves | days |
constants.py contains a bunch of constanst that may be used in the calculation. HWvariables_info.py contains a dictionary with information on the output variables for reference in the netCDF writing out.
(25/07/2018) NOTE: Now, only the functions are provided. I will update soon a sample script to call them (30/11/2022) UPDATE: a sample script to call the functions is provided now