home *** CD-ROM | disk | FTP | other *** search
- (*$LINESIZE:132,$PAGESIZE:62,$SIMPLE,$SYMTAB- *)
- (** 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 (*FOR*);
- 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 (*FOR*)
- END (* WINDCHILL *).
-
-