10 ' 20 CLS 30 KEY OFF: LOCATE 10, 11 40 PRINT " PROPELLER DESIGN " 50 LOCATE 11, 10 60 PRINT " PROGRAM " 70 PRINT " " 80 LOCATE 13, 10 90 PRINT " BY " 100 LOCATE 14, 10 110 PRINT " EDWIN A. DOKUS " 120 LOCATE 15, 10 130 PRINT " EAA 51432 " 140 LOCATE 18, 10 150 PRINT "IS YOUR PRINTER ON?" 160 PRINT 170 ON ERROR GOTO 200 180 LPRINT CHR$(27); "E": LPRINT CHR$(27); "G"' REM DARK PRINT;DOUBLESTRIKE 190 LPRINT CHR$(27); "N"; CHR$(5)' REM SKIP 5 LINES AT PERFORATIONS 200 IF ERL = 180 THEN 210 ELSE 220 210 BEEP: PRINT "PRINTER IS OFF!!!": GOTO 230 220 LOCATE 18, 10: PRINT " " 230 DIM T(50), D(50), VR(50), CHORD(50), VR0(50), L(50), Q(50), PHI(50), PHI0(50) 240 DIM THETA(50), K(50), R(50), BETA(50), TH(50), TRQ(50), LFT(50), DRG(50), DT(50) 250 DIM XDAT(50), YDAT(50), TL(50) 260 TODD = 0: TEVEN = 0: DODD = 0: DEVEN = 0: QODD = 0: QEVEN = 0 270 T = 0: I = 0 'TRIAL COUNTER 280 PI = 3.1416 290 INPUT "ALLOW FOR TIP LOSS Y/N "; TL$ 300 IF TL$ = "Y" OR TL$ = "y" THEN 310 ELSE 320 310 TL$ = "YES": PRINT "YES": GOTO 330 320 TL$ = "NO": PRINT "NO" 330 INPUT "ENTER NO. OF BLADES."; BLADES: PRINT 332 PRINT "7500 Ft. IS APPROPRIATE FOR 75% POWER.": PRINT 340 INPUT "ENTER ALTITUDE,CRUISE,Ft."; ALT: 'ALTITUDE, Ft 350 RHO = .00238 - 6.6E-08 * ALT 'AIR DENSITY, SLUGS/CUBIC Ft 360 CLS : PRINT : PRINT : PRINT 370 PRINT " 1) 1408", "2) 1410", "3) 1412", "4) 2408", "5) 2410" 380 PRINT ' AIR 390 PRINT "6) 2412", "7) 2415", "8) 2418", "9) 2421", "10) 2424"' FOILS 400 PRINT 410 PRINT "11) 4412", "12) 4415", "13) 4418", "14) 4421", "15) 4424" 420 PRINT : PRINT "NACA 4415 is similar to CLARK Y": PRINT 430 INPUT "SELECT AIRFOIL TO BE USED."; S 440 ON S GOSUB 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600 450 GOTO 610 460 AIRFOIL$ = "1408": CL0 = .1: CL8 = 1: CDCL0 = 8.999999E-03: CDMIN = .0088: CD8 = .023: RETURN 470 AIRFOIL$ = "1410": CL0 = .1: CL8 = .9: CDCL0 = .0094: CDMIN = .0093: CD8 = .0175: RETURN 480 AIRFOIL$ = "1412": CL0 = .15: CL8 = .975: CDCL0 = .0098: CDMIN = .00975: CD8 = .018: RETURN 490 AIRFOIL$ = "2408": CL0 = .2: CL8 = 1.05: CDCL0 = .00899: CDMIN = .00899: CD8 = .024: RETURN 500 AIRFOIL$ = "2410": CL0 = .2: CL8 = 1!: CDCL0 = .01: CDMIN = .0095: CD8 = .019: RETURN 510 AIRFOIL$ = "2412": CL0 = .25: CL8 = 1!: CDCL0 = .01: CDMIN = .0098: CD8 = .0175: RETURN 520 AIRFOIL$ = "2415": CL0 = .2: CL8 = .95: CDCL0 = .0104: CDMIN = .0102: CD8 = .0165: RETURN 530 AIRFOIL$ = "2418": CL0 = .25: CL8 = .9: CDCL0 = .0106: CDMIN = .0105: CD8 = .0165: RETURN 540 AIRFOIL$ = "2421": CL0 = .152: CL8 = .8: CDCL0 = .0125: CDMIN = .012: CD8 = .0206: RETURN 550 AIRFOIL$ = "2424": CL0 = .15: CL8 = .8: CDCL0 = .013: CDMIN = .0128: CD8 = .024: RETURN 560 AIRFOIL$ = "4412": CL0 = .4: CL8 = 1.15: CDCL0 = .0115: CDMIN = .01: CD8 = .017: RETURN 570 AIRFOIL$ = "4415": CL0 = .4: CL8 = 1.1: CDCL0 = .0115: CDMIN = .0106: CD8 = .0155: RETURN 580 AIRFOIL$ = "4418": CL0 = .35: CL8 = 1.03: CDCL0 = .012: CDMIN = .0115: CD8 = .017: RETURN 590 AIRFOIL$ = "4421": CL0 = .3: CL8 = .95: CDCL0 = .0125: CDMIN = .012: CD8 = .022: RETURN 600 AIRFOIL$ = "4424": CL0 = .27: CL8 = .8: CDCL0 = .0133: CDMIN = .0132: CD8 = .023: RETURN 610 M = (CL8 - CL0) / 8 620 INPUT "ENTER ALPHA DESIRED,(-1 TO +8)DEG. 0, TYPICAL"; ALPHA 630 CL = CL0 + M * ALPHA 'COEFFICIENT OF LIFT 640 TOP = LOG(ABS((CD8 - CDMIN) / (CDCL0 - CDMIN))) 650 BOT = LOG(ABS((CL8 - CL0) / CL0)) 660 N1 = TOP / BOT 670 A1 = (CD8 - CDMIN) / (ABS(CL8 - CL0)) ^ N1 680 CD = CDMIN + A1 * (ABS(CL - CL0)) ^ N1 'COEFFICIENT OF DRAG 690 ALPHA = ALPHA * PI / 180 'ANGLE OF ATTACK RADIANS 700 IF K$ = "Y" OR K$ = "y" THEN 910 710 INPUT "ENTER AIRCRAFT TYPE."; AC$ 712 PRINT "USE 75% OF ENGINE HP RATING": PRINT 720 INPUT "ENTER HP, CRUISE"; HP: PRINT 'ENGINE HORSEPOWER, HP 722 PRINT "USE MAX. RATED RPM, 2700 FOR LYCOMING.": PRINT 730 INPUT "ENTER RPM, CRUISE"; RPM: PRINT 'PROP ROTATIONAL SPEED, RPM 732 PRINT "USE MAX SPEED AT 7500 FT AND MAX RPM": PRINT 740 INPUT "ENTER AIRSPEED,CRUISE,MPH."; V: PRINT 'AIRSPEED, MPH 750 INPUT "ENTER MAX TIP SPEED,Ft/SEC (800,TYPICAL)"; TS'PROP TIP SPEED, Ft/SEC 760 PRINT : CLS : LOCATE 10, 15: PRINT "SELECT PLANFORM": PRINT : PRINT 770 PRINT " 1) RECTANGULAR CHORD" 780 PRINT " 2) TAPERED CHORD" 790 PRINT " 3) ELLIPTICAL CHORD" 800 PRINT 810 PRINT "ENTER PROP PLANFORM DESIRED."; : T1 = 0 820 INPUT PLNFRM: ON PLNFRM GOSUB 850, 870, 890 830 DIAM = TS / (PI * RPM) * 60: R = DIAM / 2: DELTAR = R / 50'PROP DIAM., Ft 840 GOTO 910 850 PL$ = " RECTANGULAR"' REM CHORD IS CONSTANT 860 RETURN 870 PL$ = " TAPERED CHORD": INPUT "ENTER TIP/HUB CHORD RATIO"; T1: 'REM LINEAR TAPER 880 RETURN 890 PL$ = " ELLIPTICAL"' REM ELLIPTIC TAPER TO ZERO. 900 RETURN 910 CHORD = .5 'FIRST GUESS Ft 920 CLS 930 TODD = 0: TEVEN = 0: DODD = 0: DEVEN = 0: QODD = 0: QEVEN = 0 940 FOR I = 0 TO 50 950 IF PLNFRM = 1 THEN 980 960 IF PLNFRM = 2 THEN 990 970 IF PLNFRM = 3 THEN 1000 980 CHORD(I) = CHORD: GOTO 1010 990 CHORD(I) = CHORD * (T1 + (1 - T1) * (1 - R(I) / R)): GOTO 1010 1000 CHORD(I) = CHORD * SQR(1 - (I / 50) ^ 2): GOTO 1010 1010 NEXT I 1020 OMEGA = 2 * PI * RPM / 60 1030 IF TL$ = "YES" THEN 1050 ELSE 1040 1040 TL = 0: GOTO 1060 1050 TL = BLADES * CL * CHORD(38) / R 1060 FOR I = 1 TO 50 1070 TL(I) = TL * R(I) / R 1080 NEXT I 1090 T = T + 1: LOCATE 10, 25: PRINT "COMPUTATION IN PROGRESS!" 1100 LOCATE 12, 25: PRINT "NO. OF TRIALS ="; T 1110 FOR I = 1 TO 50 1120 R(I) = I * DELTAR 1130 VR(I) = SQR((1.466 * V) ^ 2 + (OMEGA * R(I)) ^ 2) 1140 PHI(I) = ATN(1.466 * V / (OMEGA * R(I))) 1150 K(I) = BLADES * CHORD(I) * CL / 8 / PI / R(I) 1160 THETA(I) = ATN((K(I)) / SIN(PHI(I))) 1170 PHI0(I) = PHI(I) + THETA(I) 1180 BETA(I) = PHI0(I) + ALPHA 1190 VR0(I) = VR(I) * COS(THETA(I)) 1200 L(I) = 1 / 2 * RHO * BLADES * CL * (VR0(I)) ^ 2 * CHORD(I) * (1 - TL(I))' dL/dr 1210 D(I) = 1 / 2 * RHO * BLADES * CD * (VR0(I)) ^ 2 * CHORD(I)' dD/dr 1220 Q(I) = (D(I) * COS(PHI0(I)) + L(I) * SIN(PHI0(I))) * R(I)' dQ/dR 1230 T(I) = L(I) * COS(PHI0(I)) - D(I) * SIN(PHI0(I))' dT/dR 1240 NEXT I 1250 FOR I = 1 TO 49 STEP 2 ' BEGIN SIMPSON'S RULE 1260 QODD = QODD + Q(I) 1270 NEXT I 1280 FOR I = 2 TO 48 STEP 2 1290 QEVEN = QEVEN + Q(I) 1300 NEXT I 1310 TORQUE = (Q(1) + 4 * QODD + 2 * QEVEN + Q(50)) * DELTAR / 3 1320 POWER = OMEGA * TORQUE 1330 POWERIN = HP * 550 1340 F = POWER / POWERIN 1350 IF F < .99 THEN CHORD = CHORD / F: GOTO 930 1360 IF F > 1.01 THEN CHORD = CHORD / F: GOTO 930 1370 FOR I = 1 TO 49 STEP 2 1380 TODD = TODD + T(I) 1390 NEXT I 1400 FOR I = 2 TO 48 STEP 2 1410 TEVEN = TEVEN + T(I) 1420 NEXT I 1430 THRUST = (T(1) + 4 * TODD + 2 * TEVEN + T(50)) * DELTAR / 3' END SIMPSON'S RULE 1440 N = 1.466 * V * THRUST / POWERIN 1450 FOR I = 1 TO 50: TH(I) = T(I) * DELTAR: TRQ(I) = Q(I) * DELTAR: LFT(I) = L(I) * DELTAR 1460 DRG(I) = D(I) * DELTAR: DT(I) = T(I) * DELTAR 1470 NEXT I 1480 CLS 1490 PRINT " AIRCRAFT TYPE----"; AC$: PRINT 1500 PRINT "CRUISE AIRSPEED----- "; V; "MPH." 1510 PRINT "CRUISE ALTITUDE----- "; ALT; "FEET." 1520 PRINT "CRUISE POWER-------- "; HP; "HP." 1530 PRINT "CRUISE RPM---------- "; RPM; "RPM." 1540 PRINT 1550 IF TL$ = "YES" THEN 1570 ELSE 1560 1560 TL$ = "NO" 1570 PRINT "TIP LOSS INCLUDED? "; TL$: PRINT 1580 PRINT "No. OF BLADES------- "; BLADES 1590 PRINT "PLANFORM------------ "; PL$ 1600 IF T1 THEN PRINT "TIP/HUB CHORD RATIO- "; T1 1610 PRINT "PROP AIRFOIL USED--- "; AIRFOIL$ 1620 PRINT "ALPHA--------------- "; ALPHA * 180 / PI; "DEG." 1630 PITCH = 2 * PI * R(38) * TAN(BETA(38)) * 12'INCHES 1640 PRINT "PITCH--------------- "; PITCH; "INCHES." 1642 PRINT "PITCH is referenced to blade bottom" 1650 PRINT "DIAM.--------------- "; DIAM * 12; "INCHES." 1660 PRINT "HUB CHORD----------- "; CHORD * 12; "INCHES." 1670 PRINT "3/4 RADIUS CHORD---- "; 12 * CHORD(38); "INCHES." 1680 PRINT "THRUST-------------- "; THRUST; "Lbs." 1690 PRINT "EFFICIENCY---------- "; N * 100; "%." 1700 INPUT "DO YOU WANT A PRINT-OUT?"; PR$ 1710 IF PR$ = "Y" OR PR$ = "y" THEN GOTO 1830 1720 INPUT "DO YOU WANT A LIST OF PARAMETERS VS RADIUS Y/N "; D$ 1722 PRINT SPACE$(70) 1730 IF D$ = "Y" OR D$ = "y" THEN GOSUB 2170 ELSE 1750 1740 GOTO 2070 1750 INPUT "DO YOU WANT TO TRY ANOTHER PLANFORM? Y/N"; PLN$ 1752 PRINT SPACE$(70) 1760 IF PLN$ = "Y" OR PLN$ = "y" THEN T = 0: GOTO 760 1770 INPUT " DO YOU WANT TO TRY ANOTHER AIRFOIL? Y/N"; K$ 1772 PRINT SPACE$(70) 1780 IF K$ = "Y" OR K$ = "y" THEN GOTO 360 1790 INPUT "DO YOU WANT A NEW RUN? (Y/N)"; R$ 1792 PRINT SPACE$(70) 1800 IF R$ = "Y" THEN RUN 230 1810 IF R$ = "y" THEN RUN 230 1820 CLS : LOCATE 10, 20: PRINT "PROGRAM TERMINATED, RETURNED TO DOS.": END 1830 ON ERROR GOTO 2040 1840 LPRINT " AIRCRAFT TYPE----"; AC$: PRINT 1850 LPRINT "CRUISE AIRSPEED----- "; V; "MPH." 1860 LPRINT "CRUISE ALTITUDE----- "; ALT; "FEET." 1870 LPRINT "CRUISE POWER-------- "; HP; "HP." 1880 LPRINT "CRUISE RPM---------- "; RPM; "RPM." 1890 LPRINT 1900 LPRINT "TIP LOSS INCLUDED? "; TL$: LPRINT 1910 LPRINT "No. OF BLADES------- "; BLADES 1920 LPRINT "PROP AIRFOIL USED--- "; AIRFOIL$ 1930 LPRINT "PLANFORM------------ "; PL$ 1940 IF T1 > 0 THEN LPRINT "TIP/HUB CHORD RATIO- "; T1 1950 LPRINT "ALPHA--------------- "; ALPHA * 180 / PI; "DEG." 1960 LPRINT "PITCH--------------- "; PITCH; "INCHES." 1962 LPRINT "Pitch is referenced to blade bottom" 1970 LPRINT "DIAM.--------------- "; DIAM * 12; "INCHES." 1980 LPRINT "HUB CHORD----------- "; CHORD * 12; "INCHES." 1990 LPRINT "3/4 RADIUS CHORD---- "; 12 * CHORD(38); "INCHES." 2000 LPRINT "THRUST-------------- "; THRUST; "Lbs." 2010 LPRINT "EFFICIENCY---------- "; N * 100; "%." 2020 LPRINT : LPRINT 2030 GOTO 1720 2040 IF ERL = 1840 THEN 2050 ELSE 2030 2050 BEEP: PRINT " PRINTER IS OFF!!": GOTO 1490 2060 'GOTO 1570 2070 'LISTING ROUTINE 2080 CLS 2090 R$ = "RADIUS": V$ = "|": N$ = "###.##" 2100 PRINT TAB(5); R$; TAB(20); TLE$; TAB(40); V$; TAB(45); R$; TAB(61); TLE$ 2110 PRINT TAB(5); HT$; TAB(20); LVT$; TAB(40); V$; TAB(45); HT$; TAB(61); LVT$ 2120 FOR J = 1 TO 80: PRINT "-"; : NEXT J 2130 FOR I = 11 TO 30 2140 PRINT TAB(5); : PRINT USING N$; XDAT(I); : PRINT TAB(20); : PRINT USING N$; YDAT(I); : PRINT TAB(40); V$; : PRINT TAB(45); : PRINT USING N$; XDAT(I + 20); : PRINT TAB(61); : PRINT USING N$; YDAT(I + 20) 2150 NEXT I 2160 GOTO 1720 2170 CLS : LOCATE 6, 17: PRINT "SELECT PARAMETER DESIRED." 2180 LOCATE 8, 17: PRINT " [1] LIFT -------------------------------------" 2190 LOCATE 9, 17: PRINT " [2] DRAG |" 2200 LOCATE 10, 17: PRINT " [3] THRUST |" 2210 LOCATE 11, 17: PRINT " [4] TORQUE DISTRIBUTION" 2220 LOCATE 12, 17: PRINT " [5] THETA PER" 2230 LOCATE 13, 17: PRINT " [6] BETA ELEMENT " 2240 LOCATE 14, 17: PRINT " [7] PHI OF " 2250 LOCATE 15, 17: PRINT " [8] PHI0 RADIUS " 2260 LOCATE 16, 17: PRINT " [9] Vr | " 2270 LOCATE 17, 17: PRINT " [10] Vr0 | " 2280 LOCATE 18, 17: PRINT " [11] CHORD | " 2290 LOCATE 19, 17: PRINT " [12] PITCH -------------------------------------" 2300 FOR I = 1 TO 50: XDAT(I) = R(I) * 12: NEXT I: HT$ = "INCHES" 2310 INPUT S: ON S GOSUB 2340, 2350, 2360, 2370, 2380, 2390, 2400, 2410, 2420, 2430, 2440, 2450 2320 RETURN 2330 RETURN 2340 TLE$ = "LIFT-": LVT$ = "POUNDS": FOR I = 1 TO 50: YDAT(I) = LFT(I): NEXT I: RETURN 2350 TLE$ = "DRAG-": LVT$ = "POUNDS": FOR I = 1 TO 50: YDAT(I) = DRG(I): NEXT I: RETURN 2360 TLE$ = "THRUST-": LVT$ = "POUNDS": FOR I = 1 TO 50: YDAT(I) = DT(I): NEXT I: RETURN 2370 TLE$ = "TORQUE-": LVT$ = "FOOT-POUNDS": FOR I = 1 TO 50: YDAT(I) = TRQ(I): NEXT I: RETURN 2380 TLE$ = "THETA-": LVT$ = "DEGREES": FOR I = 1 TO 50: YDAT(I) = THETA(I) * 180 / PI: NEXT I: RETURN 2390 TLE$ = "BETA-": LVT$ = "DEGREES": FOR I = 1 TO 50: YDAT(I) = BETA(I) * 180 / PI: NEXT I: RETURN 2400 TLE$ = "PHI-": LVT$ = "DEGREES": FOR I = 1 TO 50: YDAT(I) = PHI(I) * 180 / PI: NEXT I: RETURN 2410 TLE$ = "PHI0-": LVT$ = "DEGREES": FOR I = 1 TO 50: YDAT(I) = PHI0(I) * 180 / PI: NEXT I: RETURN 2420 TLE$ = "Vr-": LVT$ = "FEET PER SEC.": FOR I = 1 TO 50: YDAT(I) = VR(I): NEXT I: RETURN 2430 TLE$ = "Vr0-": LVT$ = "FEET PER SEC.": FOR I = 1 TO 50: YDAT(I) = VR0(I): NEXT I: RETURN 2440 TLE$ = "CHORD-": LVT$ = "INCHES": FOR I = 1 TO 50: YDAT(I) = CHORD(I) * 12: NEXT I: RETURN 2450 TLE$ = "PITCH-": LVT$ = "INCHES": FOR I = 1 TO 50: YDAT(I) = 2 * PI * R(I) * TAN(BETA(I)) * 12: NEXT I: RETURN 2460 ' 2470 '