Thermal Index Report Generator

(ti)

by
Kevin Ford - ford@math.utexas.edu
and
Gary Helmstetter - gh@world.std.com

updated 07-Jun-2002

General Information

The thermal index reports consist of thermal index calculations depicted in tabular form and graphically.

Where does the data come from?

Various web sites obtain weather data from the National Weather Service via several different communications service providers. Twice a day, at 0Z and 12Z, at about 150 locations in North America, weather bureau offices send up "RAOB" balloons to gather data on temperature, pressure, dewpoint, wind speed and wind direction. This data is checked (somewhat), transmitted to NWS to be merged with that from other locations, and the entire collection is usually available on the 'net well under an hour after the observations are completed. The 12Z sounding is particularly useful in the United States for forecasting soaring conditions.

When does the data arrive?

The 12Z data usually starts arriving about 1225Z, but it may be until 1330Z before some station data arrives. For esoteric reasons, sometimes certain station's data doesn't arrive at all.

Why did you write the program?

I like to have some idea what the soaring conditions will be like, and the upper air sounding is the most important piece of weather information a soaring pilot can have. And it's not available on DUAT or from FSS. Sure, you can get the "Winds Aloft Forecast", but this is next to useless because 1) it's based on upper air data that is 15-18 hours old, and 2) the lowest level that the temperature is forecast is 6000 MSL in the Eastern U.S., which is frequently higher than the thermals will go. With the morning's sounding you get the actual temperatures and winds aloft (at 1000 foot intervals) that existed 3-6 hours before your flight.

What is a thermal index?

The thermal index ("TI") at a given altitude is the difference between the actual air temperature and the temperature that a parcel of air would have if it started at the surface and rose adiabatically (as it does in a thermal) to that altitude. Negative values mean that the air parcel is at a higher temperature than the surrounding air, and therefore the air will continue to rise. The altitude for which the TI reaches zero can be used as an approximation for the maximum height of thermals for the day. The maximum altitude a sailplane may reach may be lower. Some people use the threshold TI value of -3 to estimate the highest they will be able to fly. Due to continuous mixing in the atmosphere, the actual difference between a rising air parcel and the surrounding air is usually not more than .1 C, however. Therefore the TI value is not very useful in determining thermal strength. The maximum height of convection is more important.

What good is the 0Z sounding data?

The 0Z sounding data can tell you much about the soaring conditions that occurred that day. The convection during the day mixes the atmosphere, and so you will see the actual lapse rate very close to the dry adiabatic lapse rate from the surface up to some altitude. That altitude is either cloudbase or the maximum thermal height. This can be very useful for evaluating days you didn't fly, especially blue days.

The Complete Report

A sample report is shown below.
2002-06-07: ALB upper air data from David J. Knight's server at SUNY Albany.
Forecast max temp from AVN MOS for Fitchburg MA from nws.noaa.gov.
=== Interpolations from ALB data - temps:deg. F, altitudes:feet MSL ===
  MSL  *TI* Wdir@kts trig  VirT  2.1 degrees/division ("`": Dry Adiabatic)
-----  ---- -------- ---- . ---- -----------------------------------------
12000  12.3   20  35   86 | 25.9 `             :
11500  11.8            85 | 27.6  `             :
11000  10.9   20  38   83 | 28.6    `            :
10500   9.9            82 | 29.6      `          :
10000   9.1   25  35   80 | 30.7       `          :
 9500   8.6            79 | 32.5         `         :
 9000   7.4   35  32   77 | 33.1           `        :
 8500   5.8            74 | 32.9             `     :
 8000   4.2   45  25   72 | 32.7              `    :
 7500   2.8            69 | 32.8                `  :
 7000   2.3   60  15   68 | 34.6                  `  :
 6500   1.8            67 | 36.4                    ` :
 6000   1.3   70  14   66 | 38.1                     ` :
 5500   0.8            65 | 39.9                       `:
 5000   0.3   75  11   64 | 41.7 (High: 64)              :
 4500  -0.3            64 | 43.3                          :`
 4000  -0.8   45  10   63 | 45.0                           :`
 3500  -0.7            64 | 47.8                             :`
 3000  -0.7   40  12   64 | 50.5 (CB: 3300)                    :`
 2500  -0.9            63 | 52.8                                : `
 2000  -1.4   30  16   62 | 54.7                                  :`
 1500  -2.4            61 | 55.5                                  :  `
 1000  -3.4   25  19   59 | 56.3                                   :   `
  500  -4.6   25   5   57 | 56.9                                   :     `
The header includes the date the report was generated; the data station used; the owner of the web site at which the first reliable upper-air data appeared that day; and the kind and source of the forecast high temperature used in the TI calculations.

The table on the left shows the TI values ("*TI" column); wind data (Wdir@kts columns; Wdir is in true degrees); and trigger (trig) and virtual (VirT) temperatures at altitudes above sea level ("MSL" column) at 500 foot intervals. The trigger temperature is the ground temperature which will produce a TI value of -3 - a thermal strong enough to lift a glider - at that altitude. VirtT is the virtual temperature, and is explained below.

The graph at right shows a ":" corresponding to the temperature aloft at the given altitude, as well as a dry adiabat line (` characters) starting at the surface forecast high temperature. The graph also shows the forecast high temperature (High: 64) on the line corresponding to its matching trigger temperature, and the resulting cloudbase height (CB: 3300) on the line corresponding to its matching altitude. Amount of cloud increases or decreases if the CB: note is below or above the High: note, respectively. If CB is several lines above High, a blue day is likely; if several lines below, overdevelopment is likely.

This particular graph is from an overcast day; it shows that the air is very unstable, but there will not be sufficient sunshine to heat it to temperatures useful for soaring. If the maximum temperature forecast is incorrect and temperatures reach the 70s, soaring would be excellent (assuming a higher cloud base) up to the inversion at about 7500 MSL, which would effectively cap the thermals.

The Cloudbase Estimate

The cloudbase estimate is based on taking the average dewpoint in the lowest 500 meters (1600 feet) of the atmosphere as the surface dewpoint. The cloud base (in thousands of feet) is then estimated as the dewpoint depression (temperature minus dewpoint) in F divided by 4.4. It represents the height that convective clouds will form IF they form at all.

Virtual Temperature

The presence of water vapor in the air makes air less dense than dry air at the same temperature and pressure, the difference depending on the mixing ratio, or water to air ratio (by weight). The virtual temperature is the temperature a dry parcel of air would have at the same pressure and density. Since the buoyancy of an air parcel depends entirely on the density, it makes sense to calculate the thermal index based on the virtual temperature rather than the actual temperature. The difference, however, is usually small, being less than 1 degree in dry conditions, and only 4 degrees in extreme humidity (dewpoint >70 Fahrenheit).

Reading raw RAOB data

The data is in an encoded format intended to minimize transmission time when it was originally being sent over 110 baud (you read that right) modems. A few examples of the odd tricks used to minimize the number of characters sent are given below. Below is a slightly reformatted but still encoded copy of some raw data.
ALB
00172 12409 02505
92824 09847 03513
85521 04401 07512
70084 01360 02535
50571 15302 23526
40736 26964 22033
30937 40167 21056
25059 47766 20574
20204 55165 21563
15389 53170 24539
10648 58374 26029
88197 55565 22555
88105 X 25031
77252 20574 41804
 X X X X X X X X X X X
009 12002
950 11650
880 06000
770 00501
721 00259
664 02762
610 06956
589 07716
553 09338
503 14902
446 21509
436 22964
398 27165
390 28157
324 38367
305 39367
278 44167
203 54765
197 55565
169 53967
125 53973
X
00 01001 01 02519 02 03016
03 04012 04 04510 05 07511
06 07014 07 06015 08 04525
09 03532
11 02038 12 02035 13 01531
14 36022 15 32015 16 28519
17 25025
20 22525 21 22026 23 22531
25 21035
30 20556 35 20574
48 24536
50 26033 52 23030
$
Much of it is possible to figure out by comparing it to the above report. The data comes in three sections: "mandatory" levels (first group, before the line of X's), "significant" levels (next group, before the line with the single X), and "wind" levels.

Measurements won't be used at all by NWS unless all "mandatory" data is available. The presence of other levels is required, or not, depending on specific use.

Each mandatory level has three blocks of numbers, with an X meaning missing data. For example, the sequence

   70084 01360 02535
means at the 700 mb level, the altitude is 3084 meters, the temperature is 1.3 C, the dewpoint depression is 2.0 C, and the wind is 025 at 35 knots. The 00 level is 1000 mb, and the altitudes are decoded differently for each level. My program doesn't use these, however, since they can be easily calculated from the other data values.

Temperatures ending in an odd tenth are negative, and those ending in an even tenth are positive. The two digits comprising the dewpoint depression (dpd) are decoded as follows: if code<=55 then dpd=code/10 else dpd=code-50. e.g. the digits 42 mean a dpd of 4.2 C and the digits 62 mean a dpd of 12 C. The final two levels, which start with 88 and 77, are the tropopause level and maximum wind level, respectively.

The "significant" levels consist of two blocks of numbers each: e.g.

   950 11650
means at the 950 millibar level the temp is 11.6 C and the dpd is 5.0 C. The last one is followed by an X.

The winds aloft section also consists of two blocks of numbers per level; e.g.

   09 03532
means at 9000 feet MSL the wind is from 035 degrees (true) at 32 knots. The 00 level is the surface (regardless of actual altitude MSL).

For more complete details about the data format and encoding, see RAOB provided by the University of North Dakota's Department of Meteorology.

For lists of weather stations and their products, see Meteorological Station Lookup provided by the National Weather Service's Office of Systems Operations.