(** WINDCHILL - GENERATE A WIND-CHILL EFFECTIVE TEMPERATURE CHART. * * ANDY MICKEL 74/02/01, 80/02/08. * * COPYRIGHT (C) 1980. *) (* THE WIND-CHILL EFFECTIVE TEMPERATURE IS DETERMINED BY CALCULATING * THE RELATIVE HEAT LOSS RESULTING FROM RADIATION, CONDUCTION, AND CONVECTION * FOR A GIVEN AIR TEMPERATURE AND WINDSPEED. THE EQUATION FOR HEAT LOSS IS: * * H = (C1 + C2 * SQRT(V) + C3 * V) * (33.0 - T) * * WHERE H IS THE HEAT LOSS (WIND-CHILL INDEX) IN KILOGRAM-CALORIES PER * SQUARE METER PER HOUR (KG-CAL/M*M/HR), * V IS THE WIND SPEED IN METERS PER SECOND (MPS), * 33.0 - T IS THE DIFFERENCE BETWEEN NORMAL SKIN TEMPERATURE AND AIR * TEMPERATURE IN DEGREES CELSIUS, * C1 = 10.45 (COOLING CAUSED BY RADIATION AND CONDUCTION), * C2 = 10.00 (COOLING CAUSED BY CONVECTION), AND * C3 = -1.00 . * * THE CONSTANTS C1, C2, AND C3 DEPEND ON THE BODY BEING COOLED. * COMPLETE SHADE IS ASSUMED; UNDER BRIGHT SUNSHINE THE HEAT LOSS SHOULD BE * REDUCED BY ABOUT 200 KILOGRAM-CALORIES PER SQUARE METER PER HOUR. * * REFERENCE: "WIND CHILL (EQUIVALENT TEMPERATURES)", INFORMATION ATTACHMENT * NO. 3, U.S. DEPT. OF COMMERCE, NATIONAL OCEANIC AND ATMOSPHERIC * ADMINISTRATION, SILVER SPRING, MD, APRIL 1971. *) PROGRAM WINDCHILL (OUTPUT); CONST SPEEDINCREMENT = 5.0 (* KPH *); MAXSPEEDS = 16 (* WIDTH OF CHART - 1 *); MAXTEMP = 2 (* DEGREES CELSIUS *); MINTEMP = -33; SKINTEMP = 33; CRCOOLING = 10.45 (* CONDUCTION AND RADIATION *); CCOOLING = 10.00 (* CONVECTION *); FOURBLANKS = ' '; TYPE SPEEDRANGE = 0 .. MAXSPEEDS; VAR CHART: ARRAY[SPEEDRANGE] OF REAL (* ONE LINE OF CHART *); KPH2MPS: REAL (* CONVERSION FACTOR: KILOMETERS PER HOUR TO METERS PER SECOND. *); TEMP: MINTEMP .. MAXTEMP; ADJTEMP: REAL; WINDSPEED: REAL; WALKINGSPEED: REAL; DENOMINATOR: REAL; SPEED: SPEEDRANGE; PROCEDURE WRITEHEADINGS; BEGIN PAGE(OUTPUT); WRITELN; WRITELN; WRITELN('WIND-CHILL EFFECTIVE TEMPERATURE CHART':87); WRITELN('---------- --------- ----------- -----':87); WRITELN; WRITELN; WRITELN('TEMPERATURE':12, 'WIND SPEED':61); WRITELN('(CELSIUS)':11, '(KILOMETERS/HOUR)':66); WRITELN; END (* WRITEHEADINGS *); BEGIN (* WINDCHILL *) KPH2MPS := 10.0 / 36.0; WALKINGSPEED := 6.0 * KPH2MPS; DENOMINATOR := CRCOOLING + CCOOLING * SQRT(WALKINGSPEED) - WALKINGSPEED; WRITEHEADINGS; WRITE(FOURBLANKS, FOURBLANKS, FOURBLANKS); FOR SPEED := 0 TO MAXSPEEDS DO WRITE((SPEEDINCREMENT * SPEED):7:1); WRITELN; WRITELN; FOR TEMP := MAXTEMP DOWNTO MINTEMP DO BEGIN ADJTEMP := SKINTEMP - TEMP; FOR SPEED := 0 TO MAXSPEEDS DO BEGIN WINDSPEED := SPEEDINCREMENT * KPH2MPS * SPEED; IF WINDSPEED < WALKINGSPEED THEN CHART[SPEED] := TEMP ELSE CHART[SPEED] := SKINTEMP - (CRCOOLING + CCOOLING * SQRT(WINDSPEED) - WINDSPEED) * (ADJTEMP / DENOMINATOR); END; WRITE((TEMP * 1.0):8:1, FOURBLANKS); FOR SPEED := 0 TO MAXSPEEDS DO WRITE(CHART[SPEED]:7:1); WRITELN; IF ODD(TEMP) THEN WRITELN END END (* WINDCHILL *).