[Tutorial] Heat Index

Heat Index

Heat index is a measure of how hot it really feels when relative humidity is factored in with the actual air temperature. Facer does not currently have a tag for this calculation currently, so I decided to look into the math needed for it.

Details

The Math

In my online research I located NOAA’s website which included an online calculator, explanation, and equation. Converting this to something Facer could use ended up being quite tricky. The other complicating factor is that these calculations are all focused on Temperature in Fahrenheit. To appeal to all users there needed to be two versions of the formula that would detect what the user has selected.
http://www.wpc.ncep.noaa.gov/html/heatindex_equation.shtml

HI = -42.379 + 2.04901523T + 10.14333127RH — .22475541TRH — .00683783TT — .05481717RHRH + .00122874TTRH + .00085282TRHRH — .00000199TTRHRH

National Weather Service

The calculation is adapted by substituting Facer tags for the appropriate values:
T = Temperature = #WCT#
RH = Relative Humidity = #WCHN#

(round(-42.379 + (2.04901523*#WCT#) + (10.14333127*#WCHN#) — (0.22475541*#WCT##WCHN#) — (0.00683783#WCT##WCT#) — (0.05481717#WCHN##WCHN#) + (0.00122874#WCT##WCT##WCHN#) + (0.00085282*#WCT##WCHN##WCHN#) — (0.00000199*#WCT##WCT##WCHN#*#WCHN#)))
Round was added to the full expression to limit the long decimal.

Complications

There is a complication to the formula however. The Rothfusz regression is not valid for extreme temperature and relative humidity conditions beyond the range of data considered by Steadman. Anything with temps lower than 80F or Relative Humidity lower than 40% will not work as you can see in the NOAA chart above. So a conditional statement needed to be added to not return a result when conditions were outside of these values:

$(#WCT#)>=80&&(#WCHN#)>40? (round(-42.379 + (2.04901523*#WCT#) + (10.14333127*#WCHN#) — (0.22475541*#WCT##WCHN#) — (0.00683783#WCT##WCT#) — (0.05481717#WCHN##WCHN#) + (0.00122874#WCT##WCT##WCHN#) + (0.00085282*#WCT##WCHN##WCHN#) — (0.00000199*#WCT##WCT##WCHN#*#WCHN#)))F:(#WCT#)F$

The above calculation is valid only for Fahrenheit. To convert for Celsius we need to use the following calculation for the #WCT# tag:

((#WCT#*1.8)+32)

And the applied to the whole formula:

$((#WCT#1.8)+32)>=80&&(#WCHN#)>40? (round((((-42.379 + (2.04901523((#WCT#1.8)+32)) + (10.14333127#WCHN#) — (0.22475541*((#WCT#1.8)+32)#WCHN#) — (0.00683783*((#WCT#1.8)+32)((#WCT#1.8)+32)) — (0.05481717#WCHN##WCHN#) + (0.00122874((#WCT#1.8)+32)((#WCT#1.8)+32)#WCHN#) + (0.00085282*((#WCT#1.8)+32)#WCHN##WCHN#) — (0.00000199((#WCT#1.8)+32)((#WCT#1.8)+32)#WCHN#*#WCHN#)))-32)*0.5555))C:(#WCT#)C$

Final Touches

For the final touches, adding in transparency conditions for the F/C user setting is required. This requires two elements. One each for the users preference in Temperature units. Place this formula in the transparency field:

Element 1 — Fahrenheit

$#WM#=F?100:0$

Element 2 — Celsius

$#WM#=C?100:0$

Additional Samples

Great tutorial and nice watch face. May I ask you how long does it take to make such a watch face included the research behind the heat index?

This one definitely took a while. I focused on the chart first. I had intended to submit it as a Fahrenheit only design. Later at the suggestion of Facer Staff, I added in all layers for Celsius. Once I figured out the ratio of the graph, things moved along more quickly.

The heat index took a few additional days. It was one where I had to put it down for a few days and come back to it later. Again, adding in an alternate value for Celsius took a while.

All in all I’d say a couple of weeks.