 NCL Home > Documentation > Functions > Heat stress

# heat_index_nws

Compute the 'heat index' as calculated by the National Weather Service. Available in version 6.4.0 and later.

## Prototype

```load "\$NCARG_ROOT/lib/ncarg/nclscripts/csm/heat_stress.ncl"  ; This library is automatically loaded
; from NCL V6.5.0 onward.
; No need for user to explicitly load.

function heat_index_nws (
t          : numeric,
rh         : numeric,
iounit  : integer,
opt        : integer
)

return_val [dimsizes(t)] :  float or double
```

## Arguments

t

Scalar or array containing temperature(s) [ units see iounit ].

rh

Scalar or array containing relative humidity (%). If an array, it must have same size and shape as t.

iounit

An integer array of length 2 which specifies the units of the input t and returned heat_index:

• iounit(0)=0 input t (degC)
• iounit(0)=1 input t (degK)
• iounit(0)=2 input t (Farenheit)

• iounit(1)=0 returns units degC
• iounit(1)=1 returns units degK
• iounit(1)=2 returns units Farenheit

opt

Option which indicates which formulation should be used. If opt=False, the default is to use the formulation as indicated on the NWS website. This formulation is appropriate for temperatures 80F and above and relative humidities greater than 40%. If opt=True and the attribute "coef" is associated with opt [ie, opt@coef] and and it has the integer value 2 ( ie: opt@coef=2 ), an alternate set of coefficients appropriate for temperatures spanning 70F-115F and humidities between 0 and 80% will be used. The results are within 3F of the default formulation.

## Return value

A scalar or an array of the same size and shape as t. The output will be double if t or rh is of type double. The units are specified by iounit(1).

## Description

Calculate the heat index as described at:
http://www.wpc.ncep.noaa.gov/html/heatindex_equation.shtml

The 'Heat Index' is a measure of how hot weather "feels" to the body. The combination of temperature an humidity produce an "apparent temperature" or the temperature the body "feels". The returned values are for shady locations only. Exposure to full sunshine can increase heat index values by up to 15°F. Also, strong winds, particularly with very hot, dry air, can be extremely hazardous as the wind adds heat to the body

The computation of the heat index is a refinement of a result obtained by multiple regression analysis carried out by Lans P. Rothfusz and described in a 1990 National Weather Service (NWS) Technical Attachment (SR 90-23). All values less that 40F/4.4C/277.65K are set to the ambient temperature.

In practice, the Steadman formula is computed first and the result averaged with the temperature. If this heat index value is 80 degrees F or higher, the full regression equation along with any adjustment as described above is applied. If the ambient temperature is less the 40F (4.4C/277.65K), the heat index is set to to the ambient temperature.

Effects of the heat index (shade values)

```        HEAT INDEX
degC    degF       Notes
27-32    80-91    Caution: fatigue & cramps possible with prolonged exposure and activity.
32-41    90-105   Extreme caution: cramps, heat exhaustion & heat stroke
41-54   105-130   Danger: cramps, heat exhaustion are likely; heat stroke is probable
54+     130+    Extreme danger: heat stroke is imminent.

REFERENCES:
WWW: Heat Index

Buzan, J.R. et al (2015):
Implementation and comparison of a suite of heat stress metrics
within the Community Land Model version 4.5
Geosci. Model Dev., 8, 151–170, 2015
www.geosci-model-dev.net/8/151/2015/
doi:10.5194/gmd-8-151-2015

Lans P. Rothfusz (1990):
NWS Technical Attachment (SR 90-23)

The assessment of sultriness, Part I: A temperature-humidity
index based on human physiology and clothing science
J. Appl. Meteorol., 18, 861–873, 1979a
doi: http://dx.doi.org/10.1175/1520-0450(1979)018<0861:TAOSPI>2.0.CO;2
```

## Examples

Heat indicies below (say) 78F/25.5C/298K may not be that useful.

Example 1: Sample with degrees farenheit input [iounit(0)=2] and returned [iounit(1)=2].

```   t  = (/ 104, 100, 92, 92, 86, 80, 80, 60, 30 /)    ; degF
rh = (/  55,  65, 60, 90, 90, 40, 75, 90, 50 /)    ; %
io = (/2,2/)                                       ; degF input, degF output
hi = heat_index_nws(t, rh, io, False)
print("t="+t+"  rh="+rh+"  hi="+hi)

```
The output is as follows. The first seven entries match the Wikipedia Heat Index table from NOAA. The table does not go below 80F and 40% relative humidity.
```
degF     %      degF
(0)     t=104  rh=55  hi=137.361     Match NOAA table
(1)     t=100  rh=65  hi=135.868            "
(2)     t= 92  rh=60  hi=104.684            "
(3)     t= 92  rh=90  hi=131.256            "
(4)     t= 86  rh=90  hi=105.294            "
(5)     t= 80  rh=75  hi=83.5751            "
(6)     t= 80  rh=40  hi=79.79       Match NOAA table
(7)     t= 60  rh=90  hi=59.965
(8)     t= 30  rh=50  hi=30.00
```

Example 2: From a file

```
t  = f->TREFHT      ; degK;   (time,lat,lon)
rh = f->RHREFHT     ; %

io = (/1,2/)        ; input degK; return degF

HI = heat_index_nws(t, rh, io, False)
printMinMax(HI, 0)
```
The output returns any available meta data. Here
```
Variable: HI_NWS
Type: float
Total Size: 221184 bytes
55296 values
Number of Dimensions: 3
Dimensions and sizes:   [time | 1] x [lat | 192] x [lon | 288]
Coordinates:
time: [4623..4623]
lat: [ -90..  90]
lon: [   0..358.75]
Number Of Attributes: 5
long_name :   heat index: NWS
units :       degF
www : http://www.wpc.ncep.noaa.gov/html/heatindex_equation.shtml
info :        appropriate for shady locations with no wind
tag : NCL: heat_index_nws; (Steadman+t)*0.5 and Rothfusz
(0)
(0)     heat index: NWS: min=-96.4815   max=110.047

Example 3: Same as example 2 but:
io = (/1,0/)        ; input degK; return degC

The output would be in degC:

(0)	heat index: NWS: min=-71.3779   max=43.359

```