Feels Like


Introduction

Feels Like is a concept often quoted in weather forecasts, as the name suggests it attempts to quantify what human skin detects as the temperature, taking into account any warming or cooling effect of exposure to different humidity levels, high wind, or shade/sunshine. The best way to quantify that has been discussed in many scientific papers following on from experimentation in various laboratories, and so different formulae have been used at different times as more is learnt about how the body reacts to different conditions.

All formulae involve the air temperature and at least one of the following variables as well as air temperature:

  • (relative) humidity
  • wind (speed)
  • sunshine (radiation)


The preferred expression varies as research into the effects of the 3 variables listed above on how temperature is perceived by bare skin on the human body continues. There has in the past been much divergence between different nations, but most now use that developed by scientists and medical experts on the Joint Action Group for Temperature Indices (JAG/TI).

The official feels like temperature index formula of JAG/TI-2000 (temperature is measured at 1.50 metres, and wind speed at 10 metres, above ground):

G = 13.12 + 0.6215 x Temperatureair in Celsius − (11.37 x (wind_speedm s-1 x 3.6)0.16 + 0.3965 x Temperatureair in Celsius x (wind_speedm s-1 x 3,6) x 2.30.16

Cumulus MX from version 3.6.0 fully supports (in terms of derived outputs just listed) another of the Joint Action Group for Temperature Indices (JAG/TI) formulae for feels like.

The various ways to express Feels Like

  1. Different organisations use different formulae.
  2. All those calculations have been very popular, at different dates. Often used by many people, they may have been expressed using a distinctive name or called Feels Like temperature.
  3. You will find, when some of these formulae are quoted, that a year is given as well as the name.
    • This reflects that scientific advance refines the understanding of how the weather affects the human body, and this leads to a change in the definition of many of them.
  4. Consequently, the date of the relevant scientific paper or committee meeting is relevant to understanding how the named parameter was calculated.


Davis stations also provide, two other ways of expressing Feels Like, to the legacy Cumulus THW index and THWS index (former not available to MX).

You can research this in your own time. Here we are only concerned with what legacy Cumulus and its MX replacement do.


How to express Feels Like if the air temperature is below 10 oCelsius (50 oFahrenheit)

  • Wind chill is usually used for feels like (this ignores effects of humidity and sunshine)
    • Some weather station calculate Wind Chill and supply it to Cumulus software, you can choose whether to use that or the derivative calculated by Cumulus
    • Prior to 2001, Wind Chill was expressed in Watts metres-2, a measure of the energy leaving your skin.
    • The most recent formula expresses wind Chill as an equivalent temperature, this is formula known to Steve Loft, was that developed by scientists and medical experts on the Joint Action Group for Temperature Indices (JAG/TI) issued in November 2001. Steve said the legacy software used the "North American" formula as described by Wikipedia. This is because Canada used a different formula, with a closer relationship to just the air temperature, based on the effect of winds varying between different terrains.
    • This Wind Chill Temperature is officially defined for temperatures at or below 10 °C (50 °F) and wind speeds above 4.828 kilometres per hour (3.0 mph) but below 177 kilometres per hour (110 mph)
    • The legacy Cumulus formula (by default) calculates only within those limits:  
      • The various constants in that formula are based on assumptions about size of face, its height above ground, the speed a person moves at and body thermal conductance
    • From Cumulus release version 3.6.10 build 3086, the same formula is used for both Feels like and (if it is asked to calculate it) Wind Chill

at such air temperatures.

    • Wind Chill is greater if temperature gets lower, or wind speed gets higher

How to express Feels Like for highest temperatures

  • There is much more divergence on what formula to use at higher temperature, reflecting that the highest temperature seen vary across the world, and because other factors like humidity also vary it is harder for Scientists to agree on what is the best way to measure effects.
    • In the USA, a dimensionless Heat index measure is used, for temperatures above 27 °C (80 °F). The measure combines air temperature and relative humidity, and thus gives an indication of evaporation rate.
      • From a very early build Cumulus used the formula exactly as defined in Wikipedia for heat index. HI = c_1 + c_2 x T°F + c_3 x RH + c_4 x T°F x R + c_5 x T2 + c_6 * RH2 + c_7 x T°F2 x RH + c_8 x T°F x RH2 + c_9 x T°F2 x RH2
      • This was improved from version 1.9.0 (11 Sept 2010) in Cumulus 1 with a new formula covering a greater range of humidities accurately. Steve Loft did not document this change, however his MX beta source (as handed over to the community) uses Rothfusz adjustments to reduce the index reported if the relative humidity is below 13%, and he stated he created MX beta from a machine-level translation of Cumulus 1.9.4.
      • The current MX release has not changed that MX beta code, it uses a minimum of 80 oFahrenheit air temperature cut-off in MX, and on the assumption that this measure is only of interest in USA, the calculation is entirely done in Fahrenheit. Mark did remove any temperature conversion of output.
      • In the UK, with its cooler climate, some people use a modified formula for Heat Index with the cut-off revised to 20 oCelsius (68 oFahrenheit). (All Cumulus releases, for temperatures below 80 oFahrenheit, will show the air temperature wherever Heat Index would appear).
    • In Canada, Humidity Index also combines the effects of heat and humidity. The actual formula involves air temperature and dew point:

Humidity Index = Temperatureair_in_Celsius + 5÷9 x 6.11 x 2.718285417.7530 x 1÷273.16 - 1÷273.15 + T{dew_in_Celsius - 10

5417.7530 is a rounded constant based on the molecular weight of water, Enthalpy of vaporization|latent heat of evaporation, and the universal gas constant. The humidity adjustment approximately amounts to one Fahrenheit degree for every millibar by which the Vapour pressure of water(partial pressure of water) in the atmosphere exceeds 10 mb.
    • In Australia, Apparent temperature uses a mathematical model of the effects of temperature, humidity, wind speed, and (optionally) solar radiation.
      • From Version 1.9.1 (6 April 2011) the original Cumulus implemented the 1971 formula by Steadman (without solar radiation) when reporting Apparent Temperature.
      • All releases of MX use that same formula for any output labelled Apparent Temperature.
      • There are many alternative formulae for calculating the vapour pressure of water, so there is a certain lack of consistency in how any Feels Like Temperature based on Apparent Temperature is reported. Cumulus MX has tried various formulas for calculating vapour pressure.
      • For versions 3.5.4 (25 Apr 2020 build 3075) to version 3.6.7 (4 June 2020 build 3083) of MX used a different formula for water vapour to that used for version 3.6.8 build 3084. These differences affected the calculation these releases did for Feels Like Temperature at higher air temperatures. Because these have been superseded, I have deleted the formula that was quoted here.

How to express Feels Like when air temperature is above 20 oCelsius (68 oFahrenheit)

  • From Cumulus release version 3.6.10 build 3086, Cumulus reports exactly same for both Feels like and Apparent Temperature

at such air temperatures.


How to express Feels Like when air temperature is 10 oCelsius (50 oFahrenheit) to 20 oCelsius (68 oFahrenheit) inclusive

  • Traditionally, (as described in code provided at end of this page) Apparent temperature was considered the best indicator to use.
    • This was because it was the only "feels like" derivative that the legacy Cumulus calculated in this temperature range
  • The Feels Like temperature reported by MX within this range of air temperatures is calculated by applying a modification of the Wind Chill formula and adding in a modification of the Apparent Temperature (as used for higher temperatures)
    • The two are blended together, so the weighting of the Wind Chill element decreases as you move up from the lower temperature limit, and the weighting of the Apparent temperature element increases as you move closer to the upper temperature limit.
    • For versions 3.5.4 (25 Apr 2020 build 3075) to version 3.6.7 (4 June 2020 build 3083) of MX used a different formula for water vapour to that used for version 3.6.8 build 3084. These differences affected the calculation these releases did for Feels Like Temperature in this temperature range.
    • From Cumulus release version 3.6.10 build 3086, the apparent temperature element (before weighting) is based on the same formula as used to report 'Apparent Temperature'.

Support for these derivived parameters in daily extremes, monthly extremes, yearly extremes, all-time extremes, and monthly all-time extremes

  • The extent to which these different expressions for feels like are supported in Cumulus varies depending on which release you are running
  • Earlier releases have limited support:
    • Wind Chill (based on formula discussed above)
      • Prior to version 1.8.8, Wind Chill was reported even if the calculated number made no sense because there was a problem with either the temperature or the wind speed being used
      • Wind Chill is fully suported for lowest extreme (daily, monthly, monthly-all-time, yearly, and all-time) in releases from version 1.8.8 (1 Dec 2009), including all MX releases.
    • The Canadian Humidity Index (Humidex)
      • is only available for "current conditions" in the legacy Cumulus
      • is fully supported for highest extreme (daily, monthly, monthly-all-time, yearly, and all-time) in releases from 3.7.0
    • The USA Heat Index
      • is fully supported for both legacy Cumulus and MX
    • The Australian Apparent Temperature (as reported when labelled as such)
      • is fully supported for both lowest and highest extremes (daily, monthly, monthly-all-time, yearly, and all-time) from Version 1.9.1 (6 April 2011), including all MX releases.
    • Feels like (as a separate derivative)
      • Calculated correctly from Cumulus release version 3.6.10 build 3086, and is fully supported for both lowest and highest extremes (daily, monthly, monthly-all-time, yearly, and all-time)




Rest of this article

The rest of this article was written for versions of Cumulus that did not report JAG/TI feels like, and uses JavaScript for deciding whether to display Heat Index, Apparent Temperature, or Wind Chill, based on the current weather conditions. It was designed to work with standard Cumulus web templates that produce HTML and do not use PHP.


Web implementation

  1. Want to display a 'Feels Like' temperature (and you are using a version of Cumulus that does not give you it) with a figure that is useful at all possible temperatures)?
  2. Would you like to display Wind chill when it is cold and windy, Heat index or Humidex when it is hot and humid, and Apparent temperature at other times?
    • (Note that Humidex is available if you want to display a feel like current coditions, but for highest on daily or longer period only heat Index is available in legacy Cumulus)
  3. Do you understand how to call JavaScript code from HTML?
  4. Can you modify a Cascading Stylesheets (CSS) file to include new classes to define the appearance of various items?

If you can answer yes to all these questions, the following JavaScript code may be useful to you. Depending on the element id that it finds on your HTML page, it either inserts an appropriate 'Feels Like temperature' as a figure, or it draws up a temperature bar graph in the standard Cumulus style, but shows the current value for a parameter selected depending on the current conditions (although it also draws any maximum and/or minimum values of that parameter that are available).


Modifying the table on "indexT.htm" to display a feels like figure

 
set of values

The element id="variable_figure" in the replacement below would result in the numerical value being inserted as per screen image on left. Moving your mouse over the figure would display the information about the parameter being shown. This could be suitable for your 'now' page (the standard Cumulus indexT.htm displays wind chill, heat index and apparent temperature, but maybe you want to alter that?


HTML amendment to call new script

Supposing you stored the new script below in a file called "temperature.js" in the same directory as the calling html, then the HTML needs a call to the new script.

There are two options:

  1. Modify the "indexT.htm" template to include the extra value setting bit of script in it
  2. The insertion point is just before </head>.
  3. Create a template file "temperatureT.js"
    • It will need to be added to the extra web file list, use browse to find it in the local box, put the right path to "temperature.js" in the remote box, mark "Process", mark "realtime" and "FTP" as you would for any other extra files.
    • It will include the value setting bit of script shown, then when Cumulus processes the JavaScript template it will replace the web tags included with variables so ensuring the variable names in the script have the correct values for the formulae in calculation bit of script shown

Look for:

</body>

Replace that with:

<script src="temperature.js"></script>
</body>

Script for setting values

If you are inserting into "indexT.htm" template, you must insert new lines just before </head>. First type <script>; then type the code shown below, and finally type </script>.

If you are creating a "temperatureT.js" template, then it should contain what is shown below as well as what is listed for the formulae part of "temperature.js".

var tempscale= "<#tempunitnodeg>"; // This is temperature unit, it contains F or C (without the HTML code for degree because JavaScript cannot understand it)
var air_temp = "<#RCtemp>"; /* OUTSIDE TEMPERATURE */
var temp_wc = "<#RCwchill>"; // wind chill
var app_temp =  Math.round(<#RCtemp> + (0.33 * (<#RChum> / 100 * 6.105 * exp (17.27 * <#RCtemp> / (237.7 + <#temp>) ))) - (0.7 * $RCwspeed) - 4.0, 2); /* Not provided in remove commas option directly, but if you use decimal points, not decimal commas then the right hand side can be simplified to '''"<#apptemp>";''' */
var humidex =  Math.round(<#RCtemp> + 5/9 * (6.1094 * Math.exp(5417.753 * ((1/273.16) - 1/(273.16 + <#RCdew>)))) - 10); // based on temperature over 15 in Celsius, remove "5/9 *" term if you use Fahrenheit
var heat_index = "<#RCheatindex>";  // can choose to use this instead of previous
var wind_speed_unit = "<#windunit>";
var wind_gust_speed = "<#wgust>";  // for wind chill, here consider highest wind speed, could use average instead

Script for doing formulae and inserting text into HTML

The following script is loaded when the browser has finished creating the table structure (that is why the call to this script is placed just before

</body>

.

if you are writing a script template, then the code shown above will be needed at the start of the script, otherwise the browser will have set the Javascript values when it processed </head>.

The code shown below does two tasks:

  1. It uses formulae within conditions to determine by examing the current air temperature, what to show for feels like
  2. It uses instructions to modify what the browser is showing so the blank table cells on the page show the right title and the right value
var m, n, tu = " °" + tempscale;
/* are units Celsius or Fahrenheit? */
if(tempscale=="C"){ // Celsius
n= 10.5; // wind chill
m = 15; // humidex
u  = 27; // heat index
}else{ // Fahrenheit
n = 51; // wind chill
m = 60; // humidex
u = 80; // heat index
}
var label, value, display_unit;
if(air_temp < n)
{
    label = "Wind Chill";
    display_unit = tu;
    value = temp_wc;	
}else if(air_temp > m)  // replace m by u if want heat index
{
    label = "Humidex"; // if want replace "Humidex" by "Heat Index"
    display_unit = "";
    value = humidex; // if want replace humidex by heat_index
}else{
   label = "Apparent";
    display_unit = tu;
   value = app_temp;   
} 
if(document.getElementById("fl_label"))
{
   eidh=document.getElementById("fl_label");
   eidh.innerHTML += label;// variable title written
}

if(document.getElementById("variable_figure"))
{
   eidv=document.getElementById("variable_figure");
   eidv.innerHTML += value;// variable value written
}

HTML table rows to replace

<tr class="td_temperature_data">
    <td>Windchill</td>
    <td><#wchill> <#tempunit></td>
    <td>Humidity</td>
    <td><#hum>%</td>
</tr>
<tr class="td_temperature_data">
    <td>Humidex</td>
    <td><#humidex></td>
    <td>Apparent Temperature</td>
    <td><#apptemp> <#tempunit></td>
</tr>


Replacement HTML code required for inserting figure

<tr class="td_temperature_data">
      <td id="fl_label"></td>
      <td id="variable_figure"></td>
      <td>Humidity</td>
      <td><#hum>%</td>
 </tr>




Sfws 18:53, 27 December 2012 (UTC)