5 REM **** PROGRAM SKEWT **** 10 REM **** THIS PROGRAM CONSTRUCTS **** 15 REM **** A SKEW T LOG P DIAGRAM **** 20 REM **** AND MOVES AIR VERTICALLY. **** 30 DECLARE SUB PLOT (T1, P1, T2, P2, CLR, RD, FF) 40 REM **** PHYSICAL CONSTANTS **** 50 PBOT = 1.05 * 10 ^ 5: PTOP = 1.5 * 10 ^ 4: DP = -500 60 RD = 287: RV = 461.7: EPS = .622: CP = 1004: KPA = 2 / 7 70 L0 = 2.5 * 10 ^ 6: DLDT = -2338: ES0 = 610.8: CPV = 1848 80 TK0 = 273.15: P0 = 10 ^ 5: NPL = (PTOP - P0) / DP + 1 90 SCREEN 12: PRCLR = 14 100 GOSUB 2500 110 IF NCH = 2 THEN 2000 ELSE CLS 120 REM **** GRAPH COORDINATES **** 130 TMIN = 233: TMAX = 313: YF = 12 140 YMIN = -RD * LOG(PBOT): YMAX = -RD * LOG(PTOP): 150 XMINF = YMIN / YF: XMAXF = YMAX / YF 160 XMIN = TMIN + XMINF: XMAX = XMIN + TMAX - TMIN 170 WINDOW (XMIN, YMIN)-(XMAX, YMAX) 180 PCLR = 4: TCLR = 2: THCLR = 9: WCLR = 13: TWCLR = 15: SCLR = 11 190 REM **** ISOTHERMS **** 200 FOR T = TMIN TO TMAX STEP 10 210 X1 = XMIN + T - TMIN: Y1 = YMIN 220 IF T > XMAX - YTOP / YF THEN X2 = XMAX ELSE X2 = T + YTOP / YF 230 IF T > XMAX - YTOP / YF THEN Y2 = (XMAX - T) * YF ELSE Y2 = YMAX 240 LINE (X1, Y1)-(X2, Y2), TCLR 250 NEXT T 260 FOR T = TMIN - 30 TO TMIN - 10 STEP 10 270 X1 = XMIN: Y1 = YF * (XMIN - T) 280 X2 = T + YMAX / YF: Y2 = YMAX 290 LINE (X1, Y1)-(X2, Y2), TCLR 295 NEXT T 300 REM **** ISOBARS **** 310 FOR I = 2 TO 10 320 P = I * 10 ^ 4 330 Y = -RD * LOG(P) 340 X1 = XMIN 350 LINE (X1, Y)-(XMAX, Y), PCLR 360 NEXT I 400 REM **** DRY ADIABATS **** 410 FOR THTA = 233 TO 383 STEP 10 420 P1 = P0 430 T1 = THTA * (P1 / P0) ^ KPA 500 FOR K = 1 TO NPL 510 P2 = P1 + DP 520 T2 = THTA * (P2 / P0) ^ KPA 530 CALL PLOT(T1, P1, T2, P2, THCLR, RD, YF) 570 P1 = P2: T1 = T2: REM X1 = X2: REM Y1 = Y2 580 NEXT K 590 NEXT THTA 600 REM **** CONSTANT MIXING RATIO LINES USING Td **** 610 FOR I = 1 TO 11 620 P1 = P0 630 WS = (10 ^ -3) / 32 * 2 ^ I 640 ES1 = P0 * WS / (EPS + WS) 650 REM ****FIND TD USING SUCCESSIVE APPROXIMATIONS **** 660 LM = L0 + DLDT * (-35 + 5 * I) 700 FOR J = 1 TO 4 710 TD1 = (1 / TK0 - RV / LM * LOG(ES1 / ES0)) ^ (-1) 720 LM = L0 + DLDT * (TD1 - TK0) / 2 730 NEXT J 740 L = L0 + (TD1 - TK0) * DLDT 800 FOR K = 1 TO NPL 810 L = L0 + (TD1 - TK0) * DLDT 820 TD2 = TD1 + DP * RV * TD1 ^ 2 / (P1 * L) 830 P2 = P1 + DP 840 CALL PLOT(TD1, P1, TD2, P2, WCLR, RD, YF) 870 TD1 = TD2: P1 = P2: REM X1 = X2: REM Y1 = Y2: 880 NEXT K 890 NEXT I 900 REM **** MOIST ADIABATS USING Tw **** 910 FOR I = 1 TO 12 920 P1 = P0 930 TW1 = 233 + 10 * I 1000 FOR K = 1 TO NPL 1020 LM = L0 + (TW1 - TK0) * DLDT / 2 1030 L = L0 + (TW1 - TK0) * DLDT 1040 ES = ES0 * EXP(LM / RV * (1 / TK0 - 1 / TW1)) 1050 W = EPS * ES / (P1 - ES) 1060 F1 = 1 + W + (L + .61 * RD * TW1) * P1 * W / (RD * TW1 * (1 + .61 * W) * (P1 - ES)) 1070 F2 = CP + CPV * W + .61 * RD * W + (L + .61 * RD * TW1) * P1 * W * L / (RV * TW1 ^ 2 * (P1 - ES)) 1080 DTW = DP * F1 / F2 * RD * TW1 * (1 + .61 * W) / P1 1090 TW2 = TW1 + DTW 1100 P2 = P1 + DP 1110 CALL PLOT(TW1, P1, TW2, P2, TWCLR, RD, YF) 1170 P1 = P2: TW1 = TW2: REM X1 = X2: REM Y1 = Y2 1180 NEXT K 1190 NEXT I 1200 REM **** LABELS FOR LINES **** 1205 COLOR PCLR 1210 LOCATE 1, 1: PRINT PTOP / 100; 1222 LOCATE 11, 1: PRINT "300"; 1232 LOCATE 19, 2: PRINT "500"; 1237 LOCATE 24, 2: PRINT "700"; 1240 LOCATE 30, 1: PRINT "1000"; 1245 LINE (XMIN, YMIN)-(XMAX, YMIN), PCLR 1246 LINE (XMIN, YMAX)-(XMAX, YMAX), PCLR 1248 COLOR TCLR 1252 LOCATE 23, 11: PRINT "-40"; 1254 LOCATE 8, 14: PRINT "-60"; 1262 LOCATE 23, 52: PRINT "0"; 1272 LOCATE 23, 31: PRINT "-20"; 1274 LOCATE 23, 72: PRINT "20"; 1300 COLOR WCLR 1310 LOCATE 27, 3: PRINT ".125"; 1312 LOCATE 27, 11: PRINT ".25"; 1314 LOCATE 27, 18: PRINT ".5"; 1316 LOCATE 27, 27: PRINT "1"; 1318 LOCATE 27, 35: PRINT "2": 1320 LOCATE 27, 44: PRINT "4"; 1322 LOCATE 27, 54: PRINT "8"; 1324 LOCATE 27, 64: PRINT "16"; 1326 LOCATE 27, 75: PRINT "32"; 1350 COLOR THCLR 1360 LOCATE 17, 3: PRINT "273"; 1362 LOCATE 17, 19: PRINT "293"; 1364 LOCATE 17, 34: PRINT "313"; 1366 LOCATE 17, 50: PRINT "333"; 1368 LOCATE 17, 66: PRINT "353"; 1400 COLOR TWCLR 1410 REM LOCATE 17, 64: PRINT "16"; 1412 REM LOCATE 17, 75: PRINT "32"; 1414 LOCATE 13, 3: PRINT "286"; 1416 LOCATE 13, 17: PRINT "307"; 1418 LOCATE 13, 38: PRINT "341"; 1420 LOCATE 13, 59: PRINT "392"; 1500 IF NCH = 3 THEN 2000 1510 WHILE INKEY$ = "": WEND 1520 END 2000 REM **** MOVE PARCEL VERTICALLY **** 2010 P1 = PPAR1: T1 = TPAR: TD1 = TDPAR 2020 DP = (PPAR2 - PPAR1) / 200 2030 THTA = T1 * (P0 / P1) ^ KPA 2100 FOR K = 1 TO 200 2110 IF T1 < TD1 THEN 2200 2120 REM **** DRY ADIABATIC MOTION **** 2130 L = L0 + (TD1 - TK0) * DLDT 2140 TD2 = TD1 + DP * RV * TD1 ^ 2 / (P1 * L) 2150 P2 = P1 + DP 2160 T2 = THTA * (P2 / P0) ^ KPA 2170 IF NCH <> 2 THEN CALL PLOT(T1, P1, T2, P2, PRCLR, RD, YF) 2175 IF NCH <> 2 THEN CALL PLOT(TD1, P1, TD2, P2, PRCLR, RD, YF) 2180 P1 = P2: T1 = T2: TD1 = TD2 2185 IF T2 < TD2 THEN PCL = P2: TCL = T2 2190 GOTO 2300 2200 REM **** MOIST ADIABATIC ASCENT **** 2210 LM = L0 + (T1 - TK0) * DLDT / 2 2220 L = L0 + (T1 - TK0) * DLDT 2230 ES = ES0 * EXP(LM / RV * (1 / TK0 - 1 / T1)) 2240 W = EPS * ES / (P1 - ES) 2250 F1 = 1 + W + (L + .61 * RD * T1) * P1 * W / (RD * T1 * (1 + .61 * W) * (P1 - ES)) 2260 F2 = CP + CPV * W + .61 * RD * W + (L + .61 * RD * T1) * P1 * W * L / (RV * T1 ^ 2 * (P1 - ES)) 2270 DT = DP * F1 / F2 * RD * T1 * (1 + .61 * W) / P1 2280 T2 = T1 + DT: P2 = P1 + DP 2290 IF NCH <> 2 THEN CALL PLOT(T1, P1, T2, P2, PRCLR, RD, YF) 2300 T1 = T2: P1 = P2 2310 NEXT K 2330 IF NCH <> 2 THEN 2460 2400 REM **** PRINTING PARCEL TEMPERATURES **** 2410 COLOR PRCLR 2420 IF PCL = 0 THEN 2450 2430 LOCATE 26, 26: PRINT "CONDENSATION LEVEL = "; PCL / 100 2440 LOCATE 27, 22: PRINT "AT CONDENSATION LEVEL, T = "; TCL - TK0 2450 LOCATE 28, 22: PRINT "FINAL PARCEL TEMPERATURE = "; T2 - TK0 2460 WHILE INKEY$ = "": WEND 2480 END 2500 REM **** SUBROUTINE FOR DESCRIBING THE PROGRAM **** 2510 LINE (0, 0)-(640, 10), 2, BF 2520 LINE (0, 0)-(10, 480), 2, BF 2530 LINE (0, 470)-(640, 480), 2, BF 2540 LINE (630, 0)-(640, 480), 2, BF 2550 LOCATE 5, 28: PRINT "THE SKEWT - LOG P CHART" 2555 COLOR 12 2560 LOCATE 12, 5: PRINT "TYPE 1 TO SEE THE SKEW T CHART ONLY" 2570 LOCATE 13, 5: PRINT "TYPE 2 FOR PARCEL CHANGES ONLY " 2580 LOCATE 14, 5: PRINT "TYPE 3 TO SEE BOTH CHART AND PARCEL" 2585 COLOR 14 2590 LOCATE 13, 55: INPUT " YOUR CHOICE = ", NCH 2600 IF NCH = 1 THEN 2790 2610 COLOR 11 2620 LOCATE 19, 27: PRINT "ENTER AIR PARCEL PROPERTIES" 2630 LOCATE 21, 5: INPUT "ENTER STARTING P(MB) = ", PPAR1 2640 PPAR1 = PPAR1 * 100 2650 LOCATE 22, 5: INPUT "ENTER ENDING P(MB) = ", PPAR2 2660 PPAR2 = PPAR2 * 100 2670 LOCATE 23, 5: INPUT "ENTER T(øC) = ", TPAR 2680 TPAR = TPAR + TK0 2690 LOCATE 24, 5: INPUT "ENTER Td(øC) = ", TDPAR 2700 TDPAR = TDPAR + TK0 2790 RETURN 3000 SUB PLOT (T1, P1, T2, P2, CLR, RD, YF) 3010 Y1 = -RD * LOG(P1): Y2 = -RD * LOG(P2) 3020 X1 = T1 + Y1 / YF: X2 = T2 + Y2 / YF 3030 LINE (X1, Y1)-(X2, Y2), CLR 3040 IF CLR = 14 THEN 3050 ELSE 3070 3050 FOR JJ = 1 TO 150 3060 NEXT JJ 3070 END SUB