Thermal Index Report Generator (ti) by Kevin Ford updated 3/25/95 I. The e-mail server ---------------------- RAOB weather reports can be obtained by sending an e-mail message to soar@csrp.tamu.edu Indicate the type of information you want in the subject line. Currently, the following subject lines are accepted: INFO request this file SOURCE request thermal index program source code (in C) UPA12 request the latest 12Z RAOB data, in raw format UPA00 request the latest 00Z RAOB data, in raw format anything else request a thermal index report The text of the message contains various lines which indicate the specific information required. These lines may occur in any order. The following line is required for all requests: ReturnAddress: you@your.address This is the address that the requested information will be sent to. If the address contains any '!' characters, please preceed them with a backslash '\' character, or the script will not run properly. Compuserve users make sure to change the comma to a period in your address. Requests for RAOB data or thermal index reports must have the line: UpperStation: id where id is the three or four letter identification of the sounding station. Only one station may be listed in each request to the server. A list of stations that the server recognizes is given later in this file. Request for thermal index reports must, in addition, contain the next line: MaxAltitude: maxalt maxalt is the maximum altitude you want the thermal index calculated to, in feet. *** Don't put in any commas. To obtain the thermal index reports, one of the following lines must be present: SurfaceStation: id or ForecastHigh: num Here id is the three or four letter identifier for the city that the forecast high temperature is taken from. A list of cities that are recognized by the server is given later in this file. num is the forecast high temperature in Fahrenheit. If both of the above lines appear, the line with ForecastHigh will be used. If neither line appears, then a temperature of 85 F is used as the forecast high. The values given for the thermal index will not be valid, but you can still use the trigger temperature column to evaluate the soaring outlook (see the examples below). Example. If I wanted a thermal index report for FWD (Fort Worth, TX) using the forecast high from AUS (Austin), to 18,000 feet, the text of the message would be UpperStation: FWD SurfaceStation: AUS MaxAltitude: 18000 ReturnAddress: ford@math.ias.edu ** NOTE ** The ids for the sounding station and surface forecast MUST be in uppercase. Most everything else is case insensitive. The thermal index reports consist of a tabular list of the sounding data, plus the thermal index calculations and some other calculations. If run between 1200Z and 0059Z, the report will be based on the 12Z sounding data. Otherwise it will be based on the 0Z data, using the forecast high temperature for that day (if the line with SurfaceStation: is used), or the actual high temperature listed in the line with ForecastHigh: if this is used. The raw RAOB data is provided for people who wnat to perform their own calculations and/or plotting with their own programs. Instructions on decoding these is provided later in this file. -- Errors If your mail bounces, the report never arrives, or you get a message like ti error: XXX data not found this could mean several things: i) Your message is not in the proper format. All of the keywords, like UpperStation must be spelled correctly, and be followed by a colon. ii) The data you requested is simply not available at that time. The upper air RAOB data is usually not available on the computer until one hour after the measurements were taken. You can try again later, or try a different station. iii) You have discovered a bug in my program. For questions, comments or bug reports, send mail to me at ford@math.ias.edu Do not send anything except server requests to soar@csrp.tamu.edu. II. Thermal index reports -------------------------- TI is a program that takes raw upper air data and a forecast high temperature and calculates the thermal index at 500 foot intervals. Pretty simple. Actually the data is in a special coded form and half of the program is concerned with decoding this data. --- Output The sounding data in tabular form. A second table listing the thermal index and winds aloft at 500 foot increments. The trigger temperature. This is defined as the surface temperature at which the thermal index reaches -3 at a particular altitude. --- Where the data comes from The University of Illinois and Urbana-Champaign has a feed from the National Weather Service. Incoming data is placed in a variety of files on the Dept. of Atmospheric Sciences HP9000. Twice a day, at 0Z and 12Z, at about 200 locations in North America, weather balloons are sent up to gather data on temperature, pressure, dewpoint, wind speed and wind direction. The data is usually available on the computer within an hour after the observation. The 12Z sounding is particularly useful in the United States for forecasting soaring conditions. I receive the data for the 12Z sounding at 1315Z and 1430Z. If the data for a paticular station is not in the 1315Z data set, you will have to wait until 1430 to obtain it. --- Why I wrote the program I like to have some idea what the soaring conditions will be like to determine whether it will be a cross-country day or not. Using traditional weather sources (The Weather Channel, DUAT, FSS) it is not possible to obtain current, detailed or accurate information about upper air conditions. The upper air sounding is the most important piece of weather information a soaring pilot can have. And it's not available on DUAT of 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 usually higher than the thermals will go. The weather changes very rapidly and relying on old data is worse than having no data. 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 the thermal index is The thermal index 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 t.i. 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 threshhold t.i. value of -3 to estimate the highest they will be able to fly. The actual difference between a rising air parcel and the surrounding air is usually not more than .1 C, however. Therefore the t.i. value is not very useful in determining thermal strength. The maximum height of convection is more important. --- Reading the output The following is a sample thermal index report: Date: 930518 12Z Forecast high taken from MSP Soaring report from STC upper air data Forecast high : 59 dewpoint : 33 Surface virtual temp = 15.8 P(mb) H(ft) Tv(C) T(C) DP(C) wind dir wind spd 977.0 1024 7.5 6.6 3.4 340 6 962.0 1441 7.7 7.0 1.0 920.0 2640 5.2 4.6 -1.4 360 23 904.0 3108 3.8 3.2 -2.8 850.0 4736 0.1 -0.5 -4.1 345 18 824.0 5549 -1.9 -2.5 -4.5 803.0 6219 -3.5 -3.9 -8.1 781.0 6937 -5.4 -5.9 -7.0 734.0 8520 -9.7 -10.1 -11.3 706.0 9503 -10.4 -10.5 -23.5 700.0 9719 -10.2 -10.3 -24.3 290 21 684.0 10303 -10.6 -10.7 -25.7 621.0 12718 -15.4 -15.5 -30.5 584.0 14234 -17.0 -17.1 -32.1 510.0 17519 -24.6 -24.7 -36.7 500.0 17992 -24.4 -24.5 -37.5 300 56 400.0 23214 -34.7 -34.7 -44.7 285 66 345.0 26564 -40.1 -40.1 -51.1 300.0 29652 -46.3 -46.3 270 79 alt(ft MSL) ti wind dir wind spd trigger temp 2000 -6.2 355 23 54 F 2500 -5.7 360 23 55 F 3000 -5.7 5 22 55 F 3500 -5.4 56 F 4000 -5.1 5 20 56 F 4500 -4.7 345 18 57 F 5000 -4.4 57 F 5500 -4.2 58 F 6000 -3.9 325 18 58 F 6500 -3.6 59 F 7000 -3.5 310 15 59 F 7500 -3.4 59 F 8000 -3.3 285 17 59 F 8500 -3.1 59 F 9000 -2.0 285 20 61 F 9500 -0.9 290 21 63 F 10000 0.6 65 F 10500 1.5 67 F 11000 2.0 68 F Estimated cloud base: 5800 feet AGL - - - - - - - - - - - - - - - - - - - - - - - - - - - - The first table is raw data: P = pressure in millibars, H = height in feet, Tv = virtual temperature in degrees Celcius (the meaning of this is explained below), T = temperature in degrees Celcius, DP = dewpoint in degrees Celcius, wind direction in degrees, wind speed in knots. The second table is the thermal index calculations: alt = altitude in feet MSL, ti = thermal index in degrees Celcius, wind direction in degrees, wind speed in knots, tigger temp = trigger temperature at that altitude. The forecast dewpoint for the day (33 in this example) is given by the average dewpoint in the lowest 500 meters (1600 feet) of the atmosphere. The cload base (in thousands of feet) is then estimated as the dewpoint depression (temperature minus dewpoint) in F divided by 4.4. Virtual Temperature (Tv) - 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 parcel of air would have at the same pressure and density, but with no water vapor. 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). III. Reading raw RAOB data --------------------------- The raw data that was used to produce the above report is listed below: STC 00123 X X 92766 04656 36023 85449 00536 34518 70969 10364 29021 50549 24563 30056 40708 34760 28566 30905 46399 27079 25024 51599 26573 20169 51599 27556 15355 52999 29542 10615 54999 28520 07841 57799 30019 05055 54999 34507 03385 49799 02509 02651 47399 10510 01115 39763 01504 88233 52999 27072 77350 27580 977 06632 962 07056 904 03256 824 02520 803 03942 781 05911 734 10112 706 10563 684 10765 621 15565 584 17165 510 24762 345 40161 233 52999 160 51599 88 56999 77 59399 59 54999 36 53599 34 50199 15 46999 7 34165 X 00 34006 02 35523 03 00522 04 00520 06 32518 07 31015 08 28517 09 28520 12 31528 14 31039 16 30547 20 29560 25 28069 26 27580 30 27079 35 26573 45 29539 50 28519 53 28520 54 28520 59 28022 64 34512 70 33506 73 01513 74 03012 76 02512 77 07014 89 11516 90 13010 93 16012 98 35012 $ Most of it is easy to figure out by comparing it to the above report. The data comes in three sections: mandatory levels (first 5 lines), significant levels (next 4 lines), and winds aloft (last 5 lines). Each mandatory level has three blocks of numbers, with an X meaning missing data. For example, the sequence 50549 24563 30056 means at the 500 mb level, the altitude is 5490 meters, the temperature is -24.5 C, the dewpoint depression is 13 C, and the wind is 300 at 56 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, and are not used by the thermal index report program. The significant levels consist of two blocks of number each: e.g. 706 10563 means at 706 millibars the temp is -10.5 C and the dpd is 13 C. The last one is followed by an X. The winds aloft section also consists of two blocks of numbers per level; e.g. 30 27079 means at 30000 feet MSL the wind is 270 at 79 knots. The 00 level is the surface. IV. List of valid SurfaceStation ids: -------------------------------------- ABE ABI ABQ ACT ACY ADH ADM ALB ALO ALS ALW AMA ANC AST ATL AUS AVL AVP AXS BDL BDR BET BFD BGR BHM BIL BIS BKW BNA BOI BOS BRO BTR BTV BUF BWI CAE CAK CAR CDC CHA CHI CHS CLE CLK CLT CMH CNK CON COS COU CPR CRP CRW CSG CVG CYS DAB DAG DAY DCA DDC DEN DFW DLH DSM DTW DUA EKN EKO ELP ERI EUG EVV EWR EYW FAI FAR FAT FCA FLG FNT FSD FSM FWA GEG GGW GJT GLD GRB GRR GSO GSP GTF HAR HBR HLN HNL HSV HTS HVR IAH ICT ILG ILM IND INW IPL IPT ISN JAN JAX JBR JKL JNU L35 LAN LAS LAW LAX LBB LBF LCH LEX LFK LGA LIT LMT LND LNK LSE LZK MAF MCI MCN MCO MEI MEM MFR MGM MGW MIA MKE MLC MLI MOB MSN MSO MSP MSY NYC OKC OLM OMA OME ORD ORF PAH PBI PDT PDX PHL PHX PIA PIH PIR PIT PKB PNC PUB PVD PWM RAP RBL RDU RFD RIC RKS RNO ROA ROC SAC SAF SAN SAT SAV SBD SBN SDF SEA SFO SGF SHR SHV SJC SJT SJU SLC SLE SPI SPS SSM STL STT SUX SWO SYR TCC TLH TOL TOP TPA TRI TUL TUP TUS TXK TYS WDG WWR YAK YKM YNG YUM V. List of valid UpperStation ids: ----------------------------------- (there have been many changes to this list since this file was last updated) United States ident el(m) name ----- ----- ---- BRW 4 BARROW/POST-ROG AK US BTI 15 BARTER ISLAND ( AK US OTZ 5 KOTZEBUE/RALPH AK US OME 7 NOME AK US BET 46 BETHEL ARPT AK US MCG 103 MCGRATH AK US FAI 138 FAIRBANKS INTL AK US PABG 398 FT GREELY/ALLEN AK US PAFR 115 FT RICHARDSON/B AK US ANC 40 ANCHORAGE INTL AK US SNP 9 SAINT PAUL ISLA AK US CDB 31 COLD BAY AK US PAKN 17 KING SALMON AK US ADQ 34 KODIAK AK US YAK 9 YAKUTAT AK US ANN 34 ANNETTE ISLAND AK US PASY 30 SHEMYA AFB AK US ADK 6 ADAK NS./MITCHE AK US BMX 178 SHELBY COUNTY AL US LZK 165 NORTH LITTLE RO AR US TUS 779 TUCSON AZ US INW 1488 WINSLOW (AUTOB) AZ US MYF 124 SAN DIEGO/MONTG CA US EDW 702 EDWARDS AFB CA US NTD 4 POINT MAGU CA US VBG 112 VANDENBERG AFB CA US OAK 3 OAKLAND CA US DEN 1625 DENVER/STAPLETO CO US GJT 1475 GRAND JUNCTION CO US XMR 3 CAPE CANAVERAL FL US EYW 6 KEY WEST INTL FL US PBI 6 WEST PALM BEACH FL US TBW 13 TAMPA BAY AREA FL US TLH 18 TALLAHASSEE FL US FFC 264 PEACHTREE CITY GA US PMDY 9 MIDWAY ISLAND N HI US LIH 45 LIHUE-ON-KAUAI HI US PHHI 256 WHEELER AFB/OAH HI US ITO 11 HILO/LYMAN HI US BOI 874 BOISE MUNICIPAL ID US DVN 229 DAVENPORT IA US ILX 178 LINCOLN IL US DDC 790 DODGE CITY MUNI KS US TOP 270 TOPEKA/BILLARD KS US SIL 3 SLIDELL LA US LCH 10 LAKE CHARLES MU LA US SHV 84 SHREVEPORT LA US CHH 16 CHATHAM MA US CAR 190 CARIBOU MUNICIP ME US DTX 329 DETROIT MI US SSM 221 SAULT STE MARIE MI US JAN 101 JACKSON/THOMPSO MS US INL 361 INTERNATIONAL F MN US STC 312 ST CLOUD/WHITNE MN US UMN 437 MONETT MO US GGW 700 GLASGOW MT US TFX 1130 GREAT FALLS MT US LBF 849 NORTH PLATTE/LE NE US OAX 350 OMAHA-VALLEY NE US ABQ 1613 ALBUQUERQUE/KIR NM US GSO 270 GREENSBORO-HIGH NC US MHX 11 MOREHEAD CITY NC US BIS 506 BISMARCK MUNICI ND US REV 1515 RENO NV US DRA 1009 MERCURY/DESERT NV US ELY 1909 ELY/YELLAND FLD NV US BUF 215 BUFFALO NY US ALB 89 ALBANY NY US OKX 20 BROOKHAVEN NY US OUN 362 NORMAN OK US DAY 306 DAYTON/JAMES M OH US MFR 405 MEDFORD OR US SLE 61 SALEM/MCNARY OR US PIT 373 PITTSBURGH PA US CHS 14 CHARLESTON MUNC SC US ABR 397 ABERDEEN SD US RAP 966 RAPID CITY REGI SD US BNA 180 NASHVILLE TN US BRO 6 BROWNSVILLE TX US CRP 13 CORPUS CHRISTI TX US DRT 313 DEL RIO (AUTOB) TX US MAF 872 MIDLAND REGIONA TX US ELP 1194 EL PASO TX US AMA 1099 AMARILLO TX US FWD 196 FORT WORTH TX US SLC 1288 SALT LAKE CITY UT US WAL 3 WALLOPS ISLAND VA US IAD 98 WASHINGTON/DULL VA US HTS 255 HUNTINGTON/TRI WV US LND 1694 LANDER/HUNT FLD WY US GRB 214 GREEN BAY/STRAU WI US GEG 721 SPOKANE INTL WA US UIL 62 QUILLAYUTE STAT WA US GYX ? ? CANADA YVQ 73 NORMAN WELLS NT CN YMD 12 MOULD BAY NT CN YUX 8 HALL BEACH NT CN WLT 63 ALERT NT CN YZT 22 PORT HARDY BC CN WVK 555 VERNON BRIDGE BC CN WSE 766 EDMONTON/STONY AB CN WIQ 702 PRIMROSE LAKE AB CN WOS 30 SHELBURNE NS CN WSA 4 SABLE ISLAND NS CN YQI 41 YARMOUTH NS CN YWA 130 PETAWAWA (CAN-M ON CN YCX 51 GAGETOWN NB CN YOY 168 VALCARTIER QB CN WMW 170 MANIWAKI QB CN YYT 140 ST JOHN*S/TORBA NF CN YZV 55 SEPT-ILES QB CN YJT 26 STEPHENVILLE NF CN YYR 44 GOOSE BAY NF CN YAH 313 LA GRANDE IV QB CN WZC 10 MOOSONEE ON CN WPL 373 PICKLE LAKE ON CN WTL 222 BIG TROUT LAKE ON CN WLO 382 SHILO MN CN YQD 271 THE PAS MN CN YXS 691 PRINCE GEORGE BC CN YVP 37 KUUJJUAQ QB CN YPH 3 INUKJUAK QB CN YFB 34 FROBISHER BAY NT CN YYQ 29 CHURCHILL MN CN YZS 64 CORAL HARBOUR NT CN WEU 10 EUREKA NT CN YRB 67 RESOLUTE NT CN YCB 27 CAMBRIDGE BAY NT CN YBK 18 BAKER LAKE NT CN YSM 203 FORT SMITH NT CN YYE 382 FORT NELSON BC CN YEV 68 INUVIK NT CN YXY 703 WHITEHORSE YK CN YXE 504 SASKATOON SA CN Mexico GUD 25 ISLA GUADALUPE -- MX CUU 1435 CHIHUAHUA UNIVE -- MX GYM 11 EMPALME-IN-SONO -- MX ADN 448 MONTERREY INTL -- MX MZT 4 MAZATLAN -- MX GDL 1551 GUADALAJARA -- MX MID 9 MERIDA INTL ARP -- MX ZLO 3 MANZANILLO -- MX MEX 2234 MEXICO CITY/JUA -- MX VER 35 VERACRUZ -- MX SOC 35 ISLA SOCORRO -- MX Other PTKK 2 TRUK/MOEN FLT S -- KA PTPN 46 PONAPE -- KA PKWA 8 KWAJALEIN/BUCHO -- MH PKMJ 3 MAJURO ATOLL -- MH PTRO 33 KOROR/PALAU ISL -- PN PTYA 17 YAP ISLAND -- KA NWWN 72 NOUMEA/CALEDONI -- NC NGTA 4 TARAWA/BONRIKI -- KB NGFU 2 FUNAFUTI -- TV NFFN 18 NANDI INTL ARPT -- FJ NSTU 3 PAGO PAGO INTL -- ZM NCRG 7 AVARUA/RAROTONG -- KU NTAA 2 TAHITI ISL/FAAA -- PF NTTO 3 HAO ISLAND -- PF PGAC 111 ANDERSEN AFB/GU -- MY PWAK 4 WAKE ISLAND AIR -- WK TXKF 3 BERMUDA NAS/KIN -- BE MYNN 7 NASSAU INTL -- BA CAM 122 CAMAGUEY -- CU MUGM 17 GUANTANAMO BAY -- CU MWCR 3 OWEN ROBERTS AR -- GC MKJP 14 KINGSTON/N-MANL -- JM TSDM 14 SANTO DOMINGO -- DR TJSJ 19 SAN JUAN INTL -- PU MZBZ 5 BELIZE INTL -- BH MGGT 1489 GUATEMALA/LA AU -- GU MHTG 1007 TEGUCIGALPA/TON -- HO MROC 939 SAN JOSE/SANTAM -- CS MPHO 16 HOWARD AFB -- PM TNCM 9 JULIANA AIRPORT -- MN TFFR 8 LE RAIZET/GUADE -- MF TBPB 56 GRANTLEY ADAMS -- BR MKPE 6 PEARLS AIRPORT -- GD TTPP 15 PIARCO/PORT OFS -- TD TNCC 67 HATO ARPT/CURAC -- NU