1000 'PROGRAM TO GENERATE NACA AIRFOIL COORDINATES
1010 '
1020 'COMPILER METACOMMAND
1030 '$DYNAMIC
1040 '
1050 'WRITTEN BY D. LEDNICER, dave@amiwest.com
1060 ' COPYRIGHT 1995 - THIS SOFTWARE IS DECLARED TO BE FREEWARE
1070 '
1080 VERSN = 4.5
1090 '
1100 'SET INPUT POINT LIMITS AND OTHER CONSTANTS
1110 PI = 4 * ATN(1)
1120 DEF FNR5 (X) = INT(X * 100000! + .5)
1130 DEF FNX (X) = 9 + INT(X * 300 + .5)
1140 DEF FNY (Y) = 95 - INT(Y * 270 + .5)
1150 NP = 100
1160 MPTS = 400
1170 DTP = 3
1180 QM = 640 'HORIZONTAL SCREEN COORDINATES
1190 RM = 350 'VERTICAL SCREEN COORDINATES
1200 STOL = .0001
1210 N6S = 5 'NUMBER OF 6 SERIES IN DATABASE (63 - 67)
1220 N6T = 8 'NUMBER OF 6 SERIES THICKNESS FORMS FOR EACH SUBSERIES
1230 N6AS = 3 'NUMBER OF 6A SERIES IN DATABASE (63 - 65)
1240 N6AT = 7 'NUMBER OF 6A SERIES THICKNESS FORMS FOR EACH SUBSERIES
1250 N6C = 11 'NUMBER OF NACA 6 SERIES CAMBERLINES IN DATABASE
1260 N6AC = 1 'NUMBER OF NACA 6A SERIES CAMBERLINES IN DATABASE
1270 N6P = 26 'NUMBER OF 6 SERIES X POINTS IN DATABASE
1280 '
1290 WIDTH 80: SCREEN 0, 0, 0: COLOR 7, 1: KEY OFF: CLS
1300 LOCATE 2, 14: COLOR 0, 7
1310 PRINT USING " THE NACA AIRFOIL ORDINATE GENERATION PROGRAM v#.# "; VERSN
1320 COLOR 7, 1: PRINT : PRINT
1330 VIEW PRINT 5 TO 24
1340 '
1350 INPUT " Do You Want To Reset Constants Used In The Program (Y/N)[N]"; CHGE$
1360 IF CHGE$ = "y" OR CHGE$ = "Y" THEN GOSUB 15600
1370 '
1380 DIM XCC(MPTS), XU(MPTS), YU(MPTS), XL(MPTS), YL(MPTS), YT(MPTS), YC(MPTS)
1390 DIM XDD(MPTS), DYC(MPTS), XQ(2), YQ(2), ALP(14)
1400 DIM P(2, NP * 4), A1(3), B1(3), DT(3), X(MPTS), Y(MPTS), YP(MPTS), DY(2)
1410 DIM N(NP * 4, 4), B(3, NP * 4), L(NP * 4), U(3, NP * 4), C(2, NP * 4), R(2), F(4, 2)
1420 DIM T6(N6S), TF6(1 + N6S * N6T + N6AS * N6AT + 2 * N6C + 2 * N6AC, N6P)
1430 DIM ENDSLP(2), DYDX(2), XI(30), YI(30)
1440 '
1450 PRINT
1460 PRINT " You Have The Following Options:"
1470 PRINT " 1 - NACA 4 Digit Airfoil"
1480 PRINT " 2 - NACA 5 Digit Airfoil"
1490 PRINT " 3 - NACA Modified 4 Digit Airfoil"
1500 PRINT " 4 - NACA Modified 5 Digit Airfoil"
1510 PRINT " 5 - NACA 16 Series Airfoil"
1520 PRINT " 6 - NACA 6 Series Airfoil"
1530 PRINT " 7 - NACA 6A Series Airfoil"
1540 PRINT " 8 - Symmetrical Biconvex Airfoil"
1550 PRINT ""
1560 INPUT " Your Choice [1]"; OPT
1570 IF OPT = 0 THEN OPT = 1
1580 '
1590 PRINT ""
1600 PRINT " You Have The Following Options For Coordinate Spacing:"
1610 PRINT " 1 - Equal Spacing"
1620 PRINT " 2 - Half Cosine With Smaller Increments Near 0"
1630 PRINT " 3 - Half Cosine With Smaller Increments Near 1"
1640 PRINT " 4 - Full Cosine"
1650 PRINT " 5 - Read X/C Values From A File"
1660 PRINT " 6 - Manual Entry Of X/C Values"
1670 PRINT ""
1680 INPUT " Your Choice [4]"; SPAC
1690 IF SPAC = 0 THEN SPAC = 4
1700 VIEW PRINT 1 TO 24
1710 CLS : PRINT
1720 '
1730 ' MANUAL ENTRY
1740 '
1750 IF SPAC = 6 THEN
1760 PRINT " You Have Chosen Manual Entry"
1770 INPUT " How Many Points Are You Going To Enter"; NPP
1780 PRINT " Ok, Now Enter The Points, The First Being 0 And The Last Being 1"
1790 PRINT ""
1800 FOR I = 1 TO NPP
1810 PRINT USING " Point Number ### = "; I: INPUT XDD(I)
1820 NEXT I
1830 IF XDD(1) <> 0 THEN PRINT " *** THE FIRST POINT IS NOT 0, TRY AGAIN ***": GOTO 1790
1840 IF XDD(NPP) <> 1 THEN PRINT " *** THE LAST POINT IS NOT 1, TRY AGAIN ***": GOTO 1790
1850 END IF
1860 '
1870 ' FILE INPUT
1880 '
1890 IF SPAC = 5 THEN
1900 PRINT
1910 INPUT " Enter Name Of File Containing Values"; XVAL$
1920 OPEN XVAL$ FOR INPUT AS 3
1930 NPP = 0
1940 IF EOF(3) THEN GOTO 1980
1950 NPP = NPP + 1
1960 INPUT #3, XDD(NPP)
1970 GOTO 1940
1980 CLOSE 3
1990 END IF
2000 '
2010 IF SPAC < 5 THEN
2020 CLS : PRINT
2030 INPUT " How Many Points Do You Want Generated"; NPP
2040 END IF
2050 '
2060 ' EQUAL SPACING
2070 '
2080 IF SPAC = 4 THEN
2090 DELTH = PI / (NPP - 1)
2100 FOR I = 1 TO NPP
2110 XDD(I) = .5 - .5 * COS(DELTH * (I - 1))
2120 NEXT I
2130 END IF
2140 '
2150 ' HALF COSINE AFT PACKED
2160 '
2170 IF SPAC = 3 THEN
2180 DELTH = PI / 2 / (NPP - 1)
2190 FOR I = 1 TO NPP
2200 XDD(I) = COS(PI / 2 - DELTH * (I - 1))
2210 NEXT I
2220 END IF
2230 '
2240 ' HALF COSINE FWD PACKED
2250 '
2260 IF SPAC = 2 THEN
2270 DELTH = PI / 2 / (NPP - 1)
2280 FOR I = 1 TO NPP
2290 XDD(I) = 1 - COS(DELTH * (I - 1))
2300 NEXT I
2310 END IF
2320 '
2330 ' FULL COSINE
2340 '
2350 IF SPAC = 1 THEN
2360 DELTH = 1 / (NPP - 1)
2370 FOR I = 1 TO NPP
2380 XDD(I) = DELTH * (I - 1)
2390 NEXT I
2400 END IF
2410 '
2420 ' REJOIN PATHS
2430 '
2440 DELTH = PI / NP
2450 FOR I = 1 TO NP
2460 XCC(I) = .5 - .5 * COS(DELTH * I)
2470 NEXT I
2480 CLS : PRINT
2490 '
2500 ' NACA 4 DIGIT --------------------------------------------------
2510 '
2520 IF OPT > 1 THEN GOTO 2910
2530 PRINT " You Have Chosen To Create A NACA 4 Digit Airfoil"
2540 PRINT ""
2550 INPUT " Enter The First Digit Of The 4 Digit Designation"; MM
2560 INPUT " Enter The Second Digit Of The 4 Digit Designation"; PP
2570 INPUT " Enter The Last Two Digits Of The 4 Digit Designation"; TOC
2580 PRINT ""
2590 IF MM = 0 THEN
2600 NP = NPP
2610 FOR I = 1 TO NP
2620 XCC(I) = XDD(I)
2630 NEXT I
2640 END IF
2650 MC = MM / 100
2660 PC = PP / 10
2670 TC = TOC / 100
2680 FOR I = 1 TO NP
2690 YT(I) = TC * (1.4845 * SQR(XCC(I)) - .63 * XCC(I) - 1.758 * XCC(I) ^ 2 + 1.4215 * XCC(I) ^ 3 - .5075 * XCC(I) ^ 4)
2700 IF MC = 0 THEN
2710 YC(I) = 0
2720 DYC(I) = 0
2730 ELSE
2740 IF XCC(I) > PC THEN
2750 YC(I) = MC / (1 - PC) ^ 2 * (1 - 2 * PC + 2 * PC * XCC(I) - XCC(I) ^ 2)
2760 DYC(I) = 2 * MC / (1 - PC) ^ 2 * (PC - XCC(I))
2770 ELSE
2780 YC(I) = MC / PC ^ 2 * (2 * PC * XCC(I) - XCC(I) ^ 2)
2790 DYC(I) = 2 * MC / PC ^ 2 * (PC - XCC(I))
2800 END IF
2810 END IF
2820 NEXT I
2830 LER = 1.1019 * TC ^ 2
2840 TEANG = 2 * ATN(1.16925 * TC)
2850 DESIG = MM * 1000 + PP * 100 + TOC
2860 DESIG$ = STR$(DESIG)
2870 GOTO 6800
2880 '
2890 ' NACA 5 DIGIT --------------------------------------------------
2900 '
2910 IF OPT > 2 THEN GOTO 3540
2920 PRINT " You Have Chosen To Create A NACA 5 Digit Airfoil"
2930 PRINT ""
2940 INPUT " Enter The First Digit Of The 5 Digit Designation"; LL
2950 INPUT " Enter The Second Digit Of The 5 Digit Designation"; PP
2960 INPUT " Enter The Third Digit Of The 5 Digit Designation"; QQ
2970 INPUT " Enter The Last Two Digits Of The 5 Digit Designation"; TOC
2980 PRINT ""
2990 IF QQ < 0 OR QQ > 1 THEN
3000 PRINT " THIRD DIGIT OUT OF RANGE, ASSUMING NEAREST VALID VALUE"
3010 END IF
3020 IF LL = 0 THEN
3030 NP = NPP
3040 FOR I = 1 TO NP
3050 XCC(I) = XDD(I)
3060 NEXT I
3070 END IF
3080 LC = LL / 10
3090 PC = PP / 20
3100 TC = TOC / 100
3110 MC = PC / 2
3120 PCT = SQR(MC ^ 2 * (MC / 3 - 2 * SQR(MC / 3) + 1))
3130 IF ABS(PC - PCT) <= .0001 THEN GOTO 3160
3140 MC = MC * PC / PCT
3150 GOTO 3120
3160 SVAL = 1 - 2 * MC
3170 GOSUB 10800
3180 QC = (3 * MC - 7 * MC ^ 2 + 8 * MC ^ 3 - 4 * MC ^ 4) / SQR(MC * (1 - MC)) - 1.5 * (1 - 2 * MC) * (PI / 2 - THETA)
3190 K1 = 9 * LC / QC
3200 K2K1 = (3 * (MC - PC) ^ 2 - MC ^ 3) / (1 - MC) ^ 3
3210 FOR I = 1 TO NP
3220 YT(I) = TC * (1.4845 * SQR(XCC(I)) - .63 * XCC(I) - 1.758 * XCC(I) ^ 2 + 1.4215 * XCC(I) ^ 3 - .5075 * XCC(I) ^ 4)
3230 IF LL = 0 THEN GOTO 3380
3240 IF QQ > 0 THEN GOTO 3320
3250 IF XCC(I) > MC THEN GOTO 3290
3260 YC(I) = K1 / 6 * (XCC(I) ^ 3 - 3 * MC * XCC(I) ^ 2 + MC ^ 2 * (3 - MC) * XCC(I))
3270 DYC(I) = K1 / 6 * (3 * XCC(I) ^ 2 - 6 * MC * XCC(I) + MC ^ 2 * (3 - MC))
3280 GOTO 3380
3290 YC(I) = K1 / 6 * MC ^ 3 * (1 - XCC(I))
3300 DYC(I) = -K1 / 6 * MC ^ 3
3310 GOTO 3380
3320 IF XCC(I) > MC THEN GOTO 3360
3330 YC(I) = K1 / 6 * ((XCC(I) - MC) ^ 3 - K2K1 * (1 - MC) ^ 3 * XCC(I) - MC ^ 3 * XCC(I) + MC ^ 3)
3340 DYC(I) = K1 / 6 * (3 * (XCC(I) - MC) ^ 2 - K2K1 * (1 - MC) ^ 3 - MC ^ 3)
3350 GOTO 3380
3360 YC(I) = K1 / 6 * (K2K1 * (XCC(I) - MC) ^ 3 - K2K1 * (1 - MC) ^ 3 * XCC(I) - MC ^ 3 * XCC(I) + MC ^ 3)
3370 DYC(I) = K1 / 6 * (3 * K2K1 * (XCC(I) - MC) ^ 2 - K2K1 * (1 - MC) ^ 3 - MC ^ 3)
3380 NEXT I
3390 LER = 1.1019 * TC ^ 2
3400 TEANG = 2 * ATN(1.16925 * TC)
3410 DESIG = LL * 10000 + PP * 1000 + QQ * 100 + TOC
3420 DESIG$ = STR$(DESIG)
3430 'INPUT " Enter Name Of Camberline Output File"; DEST2$
3440 'OPEN DEST2$ FOR OUTPUT AS 3
3450 'FOR I = 1 TO NP
3460 ' PRINT #3, USING " #.####### #.#######"; XCC(I); YC(I)
3470 'NEXT I
3480 'PRINT ""
3490 'CLOSE 3
3500 GOTO 6800
3510 '
3520 ' NACA MODIFIED 4 DIGIT -----------------------------------------
3530 '
3540 IF OPT > 3 THEN GOTO 4040
3550 PRINT " You Have Chosen To Create A NACA Modified 4 Digit Airfoil"
3560 PRINT ""
3570 INPUT " Enter The First Digit Of The 4 Digit Designation"; MM
3580 INPUT " Enter The Second Digit Of The 4 Digit Designation"; PP
3590 INPUT " Enter The Last Two Digits Of The 4 Digit Designation"; TOC
3600 INPUT " Enter The First Digit Of The Appended Number"; IP
3610 INPUT " Enter The Second Digit Of The Appended Number"; TT
3620 PRINT ""
3630 IF MM = 0 THEN
3640 NP = NPP
3650 FOR I = 1 TO NP
3660 XCC(I) = XDD(I)
3670 NEXT I
3680 END IF
3690 MC = MM / 100
3700 PC = PP / 10
3710 TC = TOC / 100
3720 TP = TT / 10
3730 D1 = (2.24 - 5.42 * TP + 12.3 * TP ^ 2) / 10 / (1 - .878 * TP)
3740 D2 = (.294 - 2 * (1 - TP) * D1) / (1 - TP) ^ 2
3750 D3 = (-.196 + (1 - TP) * D1) / (1 - TP) ^ 3
3760 A0 = .296904 * IP / 6
3770 R1 = (1 - TP) ^ 2 / 5 / (.588 - 2 * D1 * (1 - TP))
3780 AA1 = .3 / TP - 15 * A0 / 8 / SQR(TP) - TP / 10 / R1
3790 A2 = -.3 / TP ^ 2 + 5 * A0 / 4 / TP ^ (1.5) + 1 / 5 / R1
3800 A3 = .1 / TP ^ 3 - .375 * A0 / TP ^ (2.5) - 1 / 10 / R1 / TP
3810 FOR I = 1 TO NP
3820 IF XCC(I) > TP THEN GOTO 3850
3830 YT(I) = 5 * TC * (A0 * SQR(XCC(I)) + AA1 * XCC(I) + A2 * XCC(I) ^ 2 + A3 * XCC(I) ^ 3)
3840 GOTO 3860
3850 YT(I) = 5 * TC * (.002 + D1 * (1 - XCC(I)) + D2 * (1 - XCC(I)) ^ 2 + D3 * (1 - XCC(I)) ^ 3)
3860 IF MM = 0 THEN GOTO 3930
3870 IF XCC(I) > PC THEN GOTO 3910
3880 YC(I) = MC / PC ^ 2 * (2 * PC * XCC(I) - XCC(I) ^ 2)
3890 DYC(I) = 2 * MC / PC ^ 2 * (PC - XCC(I))
3900 GOTO 3930
3910 YC(I) = MC / (1 - PC) ^ 2 * (1 - 2 * PC + 2 * PC * XCC(I) - XCC(I) ^ 2)
3920 DYC(I) = 2 * MC / (1 - PC) ^ 2 * (PC - XCC(I))
3930 NEXT I
3940 LER = 1.1019 * (IP / 6 * TC) ^ 2
3950 IF IP >= 9 THEN LER = 3 * 1.1019 * (TC) ^ 2
3960 TEANG = 2 * ATN(1.16925 * TC)
3970 DESIG = MM * 1000 + PP * 1000 + TOC
3980 SESIG = IP * 10 + TT
3990 DESIG$ = STR$(DESIG) + "-" + STR$(SESIG)
4000 GOTO 6800
4010 '
4020 ' NACA MODIFIED 5 DIGIT -----------------------------------------
4030 '
4040 IF OPT > 4 THEN GOTO 4770
4050 PRINT " You Have Chosen To Create A NACA Modified 5 Digit Airfoil"
4060 PRINT ""
4070 INPUT " Enter The First Digit Of The 5 Digit Designation"; LL
4080 INPUT " Enter The Second Digit Of The 5 Digit Designation"; PP
4090 INPUT " Enter The Third Digit Of The 5 Digit Designation"; QQ
4100 INPUT " Enter The Last Two Digits Of The 5 Digit Designation"; TOC
4110 INPUT " Enter The First Digit Of The Appended Number"; IP
4120 INPUT " Enter The Second Digit Of The Appended Number"; TT
4130 PRINT ""
4140 IF QQ < 0 OR QQ > 1 THEN
4150 PRINT " THIRD DIGIT OUT OF RANGE, ASSUMING NEAREST VALID VALUE"
4160 END IF
4170 IF LL = 0 THEN
4180 NP = NPP
4190 FOR I = 1 TO NP
4200 XCC(I) = XDD(I)
4210 NEXT I
4220 END IF
4230 LC = LL / 10
4240 PC = PP / 20
4250 TC = TOC / 100
4260 MC = PC / 2
4270 TP = TT / 10
4280 D1 = (2.24 - 5.42 * TP + 12.3 * TP ^ 2) / 10 / (1 - .878 * TP)
4290 D2 = (.294 - 2 * (1 - TP) * D1) / (1 - TP) ^ 2
4300 D3 = (-.196 + (1 - TP) * D1) / (1 - TP) ^ 3
4310 A0 = .296904 * IP / 6
4320 R1 = (1 - TP) ^ 2 / 5 / (.588 - 2 * D1 * (1 - TP))
4330 AA1 = .3 / TP - 15 * A0 / 8 / SQR(TP) - TP / 10 / R1
4340 A2 = -.3 / TP ^ 2 + 5 * A0 / 4 / TP ^ (1.5) + 1 / 5 / R1
4350 A3 = .1 / TP ^ 3 - .375 * A0 / TP ^ (2.5) - 1 / 10 / R1 / TP
4360 PCT = SQR(MC ^ 2 * (MC / 3 - 2 * SQR(MC / 3) + 1))
4370 IF ABS(PC - PCT) <= .0001 THEN GOTO 4400
4380 MC = MC * PC / PCT
4390 GOTO 4360
4400 SVAL = 1 - 2 * MC
4410 GOSUB 10800
4420 QC = (3 * MC - 7 * MC ^ 2 + 8 * MC ^ 3 - 4 * MC ^ 4) / SQR(MC * (1 - MC)) - 1.5 * (1 - 2 * MC) * (PI / 2 - THETA)
4430 K1 = 9 * LC / QC
4440 K2K1 = (3 * (MC - PC) ^ 2 - MC ^ 3) / (1 - MC) ^ 3
4450 FOR I = 1 TO NP
4460 IF XCC(I) > TP THEN GOTO 4490
4470 YT(I) = 5 * TC * (A0 * SQR(XCC(I)) + AA1 * XCC(I) + A2 * XCC(I) ^ 2 + A3 * XCC(I) ^ 3)
4480 GOTO 4500
4490 YT(I) = 5 * TC * (.002 + D1 * (1 - XCC(I)) + D2 * (1 - XCC(I)) ^ 2 + D3 * (1 - XCC(I)) ^ 3)
4500 IF LL = 0 THEN GOTO 4650
4510 IF QQ > 0 THEN GOTO 4590
4520 IF XCC(I) > MC THEN GOTO 4560
4530 YC(I) = K1 / 6 * (XCC(I) ^ 3 - 3 * MC * XCC(I) ^ 2 + MC ^ 2 * (3 - MC) * XCC(I))
4540 DYC(I) = K1 / 6 * (3 * XCC(I) ^ 2 - 6 * MC * XCC(I) + MC ^ 2 * (3 - MC))
4550 GOTO 4650
4560 YC(I) = K1 / 6 * MC ^ 3 * (1 - XCC(I))
4570 DYC(I) = -K1 / 6 * MC ^ 3
4580 GOTO 4650
4590 IF XCC(I) > MC THEN GOTO 4630
4600 YC(I) = K1 / 6 * ((XCC(I) - MC) ^ 3 - K2K1 * (1 - MC) ^ 3 * XCC(I) - MC ^ 3 * XCC(I) + MC ^ 3)
4610 DYC(I) = K1 / 6 * (3 * (XCC(I) - MC) ^ 2 - K2K1 * (1 - MC) ^ 3 - MC ^ 3)
4620 GOTO 4650
4630 YC(I) = K1 / 6 * (K2K1 * (XCC(I) - MC) ^ 3 - K2K1 * (1 - MC) ^ 3 * XCC(I) - MC ^ 3 * XCC(I) + MC ^ 3)
4640 DYC(I) = K1 / 6 * (3 * K2K1 * (XCC(I) - MC) ^ 2 - K2K1 * (1 - MC) ^ 3 - MC ^ 3)
4650 NEXT I
4660 LER = 1.1019 * (IP / 6 * TC) ^ 2
4670 IF IP >= 9 THEN LER = 3 * 1.1019 * (TC) ^ 2
4680 TEANG = 2 * ATN(1.16925 * TC)
4690 DESIG = LL * 10000 + PP * 1000 + QQ * 100 + TOC
4700 DESIG$ = STR$(DESIG)
4710 SESIG = IP * 10 + TT
4720 DESIG$ = STR$(DESIG) + "-" + STR$(SESIG)
4730 GOTO 6800
4740 '
4750 ' NACA 16 SERIES ------------------------------------------------
4760 '
4770 IF OPT > 5 THEN GOTO 5220
4780 PRINT " You Have Chosen To Create A NACA 16 Series Airfoil"
4790 PRINT ""
4800 INPUT " Enter The First Two Digits Of The Designation"; FSTTWO
4810 INPUT " Enter The Third Digit Of The Designation"; MM
4820 INPUT " Enter The Last Two Digits Of The Designation"; TOC
4830 PRINT ""
4840 IF MM = 0 THEN
4850 NP = NPP
4860 FOR I = 1 TO NP
4870 XCC(I) = XDD(I)
4880 NEXT I
4890 END IF
4900 IP = 4
4910 T = 5
4920 MC = MM / 10
4930 TC = TOC / 100
4940 TP = T / 10
4950 D1 = (2.24 - 5.42 * TP + 12.3 * TP ^ 2) / 10 / (1 - .878 * TP)
4960 D2 = (.294 - 2 * (1 - TP) * D1) / (1 - TP) ^ 2
4970 D3 = (-.196 + (1 - TP) * D1) / (1 - TP) ^ 3
4980 A0 = .296904 * IP / 6
4990 R1 = (1 - TP) ^ 2 / 5 / (.588 - 2 * D1 * (1 - TP))
5000 AA1 = .3 / TP - 15 * A0 / 8 / SQR(TP) - TP / 10 / R1
5010 A2 = -.3 / TP ^ 2 + 5 * A0 / 4 / TP ^ (1.5) + 1 / 5 / R1
5020 A3 = .1 / TP ^ 3 - .375 * A0 / TP ^ (2.5) - 1 / 10 / R1 / TP
5030 FOR I = 1 TO NP
5040 IF XCC(I) > TP THEN GOTO 5070
5050 YT(I) = 5 * TC * (A0 * SQR(XCC(I)) + AA1 * XCC(I) + A2 * XCC(I) ^ 2 + A3 * XCC(I) ^ 3)
5060 GOTO 5080
5070 YT(I) = 5 * TC * (.002 + D1 * (1 - XCC(I)) + D2 * (1 - XCC(I)) ^ 2 + D3 * (1 - XCC(I)) ^ 3)
5080 IF MM = 0 THEN GOTO 5120
5090 IF XCC(I) = 0 OR XCC(I) = 1 THEN GOTO 5120
5100 YC(I) = -MC / 4 / PI * ((1 - XCC(I)) * LOG(1 - XCC(I)) + XCC(I) * LOG(XCC(I)))
5110 DYC(I) = -MC / 4 / PI * (-1 / (1 - XCC(I)) - LOG(1 - XCC(I)) + XCC(I) / (1 - XCC(I)) + LOG(XCC(I)) + 1)
5120 NEXT I
5130 LER = 1.1019 * (IP / 6 * TC) ^ 2
5140 IF IP >= 9 THEN LER = 3 * 1.1019 * (TC) ^ 2
5150 TEANG = 2 * ATN(1.16925 * TC)
5160 DESIG = FSTTWO * 1000 + MM * 100 + TOC
5170 DESIG$ = STR$(DESIG)
5180 GOTO 6800
5190 '
5200 ' NACA 6 or 6A SERIES ------------------------------------------------
5210 '
5220 IF OPT > 7 THEN GOTO 6570
5230 IF OPT = 6 THEN
5240 PRINT " You Have Chosen To Create A NACA 6 Series Airfoil"
5250 PRINT ""
5260 INPUT " Enter The First Digit Of The 6 Series Designation"; LL
5270 INPUT " Enter The Second Digit Of The 6 Series Designation"; PP
5280 INPUT " Enter The Third Digit Of The 6 Series Designation"; MM
5290 INPUT " Enter The Last Two Digits Of The 6 Series Designation"; TOC
5300 IF MM <> 0 THEN
5310 INPUT " Enter Value Of a For Camberline (0-1)[1]"; AA$
5320 IF AA$ = "" THEN AA = 1 ELSE AA = VAL(AA$)
5330 END IF
5340 IF PP < 3 OR PP > 7 THEN
5350 PRINT " YOU HAVE ASKED FOR A 6 SERIES AIRFOIL OUTSIDE THE THICKNESS"
5360 PRINT " FORM DATABASE. RESULTS WILL NOT NECESSARILY BE VALID"
5370 PRINT
5380 END IF
5390 ELSE
5400 PRINT " You Have Chosen To Create A NACA 6A Series Airfoil"
5410 PRINT ""
5420 INPUT " Enter The First Digit Of The 6A Series Designation"; LL
5430 INPUT " Enter The Second Digit Of The 6A Series Designation"; PP
5440 INPUT " Enter The Third Digit Of The 6A Series Designation"; MM
5450 INPUT " Enter The Last Two Digits Of The 6A Series Designation"; TOC
5460 IF PP < 3 OR PP > 5 THEN
5470 PRINT " YOU HAVE ASKED FOR A 6 SERIES AIRFOIL OUTSIDE THE THICKNESS"
5480 PRINT " FORM DATABASE. RESULTS WILL NOT NECESSARILY BE VALID"
5490 PRINT
5500 END IF
5510 END IF
5520 PRINT
5530 GOSUB 13790
5540 '
5550 NP = N6P
5560 MC = MM / 10
5570 TC = TOC / 100
5580 IF OPT = 6 THEN
5590 NS = N6S
5600 NT = N6T
5610 JBASE = 1
5620 KBASE = 1 + N6S * N6T + N6AS * N6AT
5630 MINTC = .06
5640 MAXTC = .21
5650 ELSE
5660 NS = N6AS
5670 NT = N6AT
5680 JBASE = 1 + N6S * N6T
5690 KBASE = 1 + N6S * N6T + N6AS * N6AT + N6C * 2
5700 MINTC = .06
5710 MAXTC = .21
5720 END IF
5730 FOR I = 1 TO NP
5740 XCC(I) = TF6(1, I) / 100
5750 IF TC < MINTC THEN
5760 FOR J = 1 TO NS
5770 T6(J) = TF6(JBASE + 1 + ((J - 1) * NT), I) * TC / MINTC / 100
5780 NEXT J
5790 ELSEIF TC > MAXTC THEN
5800 FOR J = 1 TO NS
5810 T6(J) = TF6(JBASE + NT + ((J - 1) * NT), I) * TC / MAXTC / 100
5820 NEXT J
5830 ELSE
5840 FOR J = 1 TO NS
5850 N = NT
5860 IF NT = 8 THEN
5870 XI(1) = .06: XI(2) = .08: XI(3) = 9.000001E-02: XI(4) = .1
5880 XI(5) = .12: XI(6) = .15: XI(7) = .18: XI(8) = .21
5890 ELSE
5900 XI(1) = .06: XI(2) = .08: XI(3) = .1: XI(4) = .12
5910 XI(5) = .15: XI(6) = .18: XI(7) = .21
5920 END IF
5930 FOR K = 1 TO NT
5940 YI(K) = TF6(JBASE + K + (J - 1) * NT, I) / 100
5950 NEXT K
5960 XD = TC
5970 GOSUB 14830
5980 T6(J) = YD
5990 NEXT J
6000 END IF
6010 FOR J = 1 TO NS
6020 XI(J) = J + 2
6030 YI(J) = T6(J)
6040 NEXT J
6050 N = NS
6060 XD = PP
6070 GOSUB 14830
6080 YT(I) = YD
6090 '
6100 IF OPT = 6 THEN
6110 IF MC = 0 THEN
6120 YC(I) = 0
6130 DYC(I) = 0
6140 ELSE
6150 N = N6C
6160 FOR K = 1 TO N
6170 XI(K) = (K - 1) / 10
6180 YI(K) = TF6(KBASE + (K - 1) * 2 + 1, I) / 100
6190 NEXT K
6200 XD = AA
6210 GOSUB 14830
6220 YC(I) = YD * MC
6230 '
6240 N = N6C
6250 FOR K = 1 TO N
6260 XI(K) = (K - 1) / 10
6270 YI(K) = TF6(KBASE + (K - 1) * 2 + 2, I)
6280 NEXT K
6290 XD = AA
6300 GOSUB 14830
6310 DYC(I) = YD * MC
6320 END IF
6330 ELSE
6340 YC(I) = TF6(KBASE + 1, I) / 100 * MC
6350 DYC(I) = TF6(KBASE + 2, I) * MC
6360 END IF
6370 '
6380 NEXT I
6390 DESIG = LL * 10 + PP
6400 SESIG = MM * 100 + TOC
6410 IF OPT = 6 THEN
6420 DESIG$ = STR$(DESIG) + "-" + STR$(SESIG)
6430 ELSE
6440 DESIG$ = STR$(DESIG) + "A" + STR$(SESIG)
6450 END IF
6460 'INPUT " Enter Name Of Camberline Output File"; DEST2$
6470 'OPEN DEST2$ FOR OUTPUT AS 3
6480 'FOR I = 1 TO NP
6490 ' PRINT #3, USING " #.####### #.#######"; XCC(I); YC(I)
6500 'NEXT I
6510 'PRINT ""
6520 'CLOSE 3
6530 GOTO 6800
6540 '
6550 ' BICONVEX AIRFOIL ---------------------------------------------
6560 '
6570 IF OPT > 8 THEN GOTO 1330
6580 PRINT " You Have Chosen To Create A Biconvex Airfoil"
6590 PRINT ""
6600 INPUT " Enter The Desired Thickness To Chord Ratio"; TOC
6610 PRINT ""
6620 RAD = (2 + 8 * (TOC / 2) ^ 2) / 16 / (TOC / 2)
6630 NP = NPP
6640 FOR I = 1 TO NP
6650 XCC(I) = XDD(I)
6660 NEXT I
6670 FOR I = 1 TO NP
6680 YT(I) = SQR(RAD ^ 2 - (XCC(I) - .5) ^ 2)
6690 YC(I) = 0
6700 DYC(I) = 0
6710 NEXT I
6720 Y0 = YT(1)
6730 FOR I = 1 TO NP
6740 YT(I) = YT(I) - Y0
6750 NEXT I
6760 DESIG$ = "BICONVEX"
6770 GOTO 6800
6780 '
6790 ' REJOIN PATHS ----------------------------------------------------
6800 '
6810 FOR I = 1 TO NP
6820 THET = ATN(DYC(I))
6830 XU(I) = XCC(I) - YT(I) * SIN(THET)
6840 YU(I) = YC(I) + YT(I) * COS(THET)
6850 XL(I) = XCC(I) + YT(I) * SIN(THET)
6860 YL(I) = YC(I) - YT(I) * COS(THET)
6870 NEXT I
6880 INPUT " Do You Want To Bypass Point Redistribution (Y/N)[N]"; ANSD$
6890 IF ANSD$ = "Y" OR ANSD$ = "y" THEN
6900 NPP = NP
6910 GOTO 6940
6920 END IF
6930 GOSUB 11230
6940 CLS : LOCATE 12, 18
6950 INPUT " Would You Like To View The Airfoil (Y/N)[Y]"; WOW$
6960 IF WOW$ = "N" OR WOW$ = "n" THEN GOTO 7060
6970 LOCATE 14, 18
6980 INPUT " Connect Points With Lines (Y/N)[N]"; ANSC$
6990 IF ANSC$ = "" OR ANSC$ = "n" OR ANSC$ = "N" THEN ANSC$ = "N" ELSE ANSC$ = "Y"
7000 GOSUB 10870
7010 '
7020 TITLE$ = "NACA " + DESIG$ + " AIRFOIL"
7030 '
7040 ' OUTPUT
7050 '
7060 CLS : PRINT
7070 INPUT " Enter The Filename For Output Of The Coordinates"; DEST$
7080 OPEN DEST$ FOR OUTPUT AS #1
7090 PRINT : PRINT
7100 PRINT " You Have The Following OUTPUT Format Options:"
7110 PRINT " 1 - LED Format"
7120 PRINT " 2 - ISES Format"
7130 PRINT " 3 - Eppler Format"
7140 PRINT " 4 - WIBCO Format"
7150 PRINT " 5 - Loftsman SD Format"
7160 PRINT " 6 - VSAERO Format"
7170 PRINT " 7 - AutoCAD SCR Format"
7180 INPUT " Your Choice [1]"; OOPT
7190 ON OOPT + 1 GOSUB 7230, 7230, 7510, 7710, 9930, 10220, 10370, 10500
7200 CLOSE #1
7210 END
7220 '-----------------------------------------------------------------
7230 'LED FORMAT OUTPUT
7240 '
7250 IF OPT = 1 THEN
7260 PRINT #1, USING " NACA 4-DIGIT AIRFOIL M = #.#, P = #.#, T/C = ##.#"; MM; PP; TOC
7270 ELSEIF OPT = 2 THEN
7280 PRINT #1, USING " NACA 5-DIGIT AIRFOIL L = #.#, P = #.#, Q = #.#, T/C = ##.#"; LL; PP; QQ; TOC
7290 ELSEIF OPT = 3 THEN
7300 PRINT #1, USING " NACA MODIFIED 4-DIGIT AIRFOIL M = #.#, P = #.#, T/C = ##.# IP = #.#, T = #.#"; MM; PP; TOC; IP; TT
7310 ELSEIF OPT = 4 THEN
7320 PRINT #1, USING " NACA MODIFIED 5-DIGIT AIRFOIL L = #.#, P = #.#, Q = #.#, T/C = ##.# IP = #.#, T = #.#"; LL; PP; QQ; TOC; IP; TT
7330 ELSEIF OPT = 5 THEN
7340 PRINT #1, USING " NACA 16 SERIES AIRFOIL M = #.#, T/C = ##.#"; MM; TOC
7350 ELSEIF OPT = 6 THEN
7360 PRINT #1, USING " NACA 6 SERIES AIRFOIL P = #.#, M = #.#, T/C = ##.#"; PP; MM; TOC
7370 ELSEIF OPT = 7 THEN
7380 PRINT #1, USING " NACA 6A SERIES AIRFOIL P = #.#, M = #.#, T/C = ##.#"; PP; MM; TOC
7390 END IF
7400 PRINT #1, USING " ###. ###."; NPP; NPP
7410 PRINT #1, ""
7420 FOR I = 1 TO NPP
7430 PRINT #1, USING " #.####### #.#######"; XU(I); YU(I)
7440 NEXT I
7450 PRINT #1, ""
7460 FOR I = 1 TO NPP
7470 PRINT #1, USING " #.####### #.#######"; XL(I); YL(I)
7480 NEXT I
7490 RETURN
7500 '-----------------------------------------------------------------
7510 'ISES FORMAT OUTPUT
7520 '
7530 CLS : PRINT : PRINT
7540 INPUT " Enter Length Of Computational Domain Upstream (~2)[2]"; CHINL
7550 IF CHINL = 0 THEN CHINL = 2
7560 INPUT " Enter Length Of Computational Domain Downstream (~2)[2]"; CHOUT
7570 IF CHOUT = 0 THEN CHOUT = 2
7580 INPUT " Enter Approximate Mach Number For Analysis [0.2]"; MACH
7590 IF MACH = 0 THEN MACH = .2
7600 CHWID = 6 / SQR(1 - MACH ^ 2)
7610 PRINT #1, TITLE$
7620 PRINT #1, USING " 0.0 0.0 ##.# ##.# ##.#"; CHINL; CHOUT; CHWID
7630 FOR I = NPP TO 1 STEP -1
7640 PRINT #1, USING " #.####### #.#######"; XU(I); YU(I)
7650 NEXT I
7660 FOR I = 2 TO NPP
7670 PRINT #1, USING " #.####### #.#######"; XL(I); YL(I)
7680 NEXT I
7690 RETURN
7700 '-----------------------------------------------------------------
7710 'EPPLER FORMAT OUTPUT
7720 '
7730 PRINT #1, "FXPR"
7740 PRINT #1, TITLE$
7750 PRINT #1, USING " ## ##"; NPP; NPP
7760 FORMAT$ = "#.####### #.####### #.####### #.####### #.####### #.####### #.####### #.#######"
7770 FOR I = 1 TO NPP
7780 PRINT #1, USING FORMAT$; XU(I);
7790 GOSUB 9850
7800 NEXT I
7810 GOSUB 9900
7820 FOR I = 1 TO NPP
7830 PRINT #1, USING FORMAT$; YU(I);
7840 GOSUB 9850
7850 NEXT I
7860 GOSUB 9900
7870 FOR I = 1 TO NPP
7880 PRINT #1, USING FORMAT$; XL(I);
7890 GOSUB 9850
7900 NEXT I
7910 GOSUB 9900
7920 FOR I = 1 TO NPP
7930 PRINT #1, USING FORMAT$; YL(I);
7940 GOSUB 9850
7950 NEXT
7960 GOSUB 9900
7970 L% = 3
7980 WHILE ADD$(L%) <> ""
7990 PRINT #1, ADD$(L%)
8000 L% = L% + 1
8010 WEND
8020 '
8030 CLS : PRINT : PRINT
8040 'MACH CARD
8050 INPUT " Enter Mach Number For This Case [0]"; MACHN
8060 MN = INT(MACHN * 1000)
8070 IF MN <> 0 THEN
8080 PRINT #1, USING "MACH ####"; MN
8090 END IF
8100 'ALFA CARD
8110 PRINT
8120 INPUT " Enter Number Of Angles Of Attack To Be Entered (14 max)[1]"; NALP
8130 IF NALP < 1 THEN GOTO 9810
8140 IF NALP <> 0 THEN
8150 FOR I = 1 TO NALP
8160 PRINT " Angle Of Attack #"; I; : INPUT ALP(I)
8170 NEXT I
8180 END IF
8190 PRINT #1, "ALFA";
8200 PRINT
8210 PRINT " Is A Printout Of Moment Coefficient Required"
8220 INPUT " For Each Angle Of Attack (Y/N)[Y]"; MOM$
8230 IF MOM$ <> "N" AND MOM$ <> "n" THEN NUPA = 1 ELSE NUPA = 2
8240 PRINT #1, USING "#"; NUPA;
8250 NUPE = 1
8260 PRINT #1, USING "#"; NUPE;
8270 PRINT
8280 PRINT " Are The Angles Of Attack Relative To:"
8290 PRINT " 1) The Chord Line"
8300 PRINT " 2) The Zero-Lift Line"
8310 INPUT " Option (1/2)[1]"; AREF
8320 IF AREF <> 2 THEN AREF = 1
8330 PRINT
8340 PRINT " What Should Be Printed Out (And Plotted):"
8350 PRINT " 1) Velocity Ratios v/V"
8360 PRINT " 2) Pressure Coefficients Cp"
8370 INPUT " Option (1/2)[2]"; PPR
8380 IF PPR <> 1 THEN PPR = 2
8390 IF AREF = 1 AND PPR = 1 THEN NUPI = 1
8400 IF AREF = 2 AND PPR = 1 THEN NUPI = 0
8410 IF AREF = 1 AND PPR = 2 THEN NUPI = 3
8420 IF AREF = 2 AND PPR = 2 THEN NUPI = 2
8430 PRINT #1, USING "#"; NUPI;
8440 PRINT #1, USING "###"; NALP;
8450 FOR I = 1 TO NALP
8460 PRINT #1, USING "#####"; INT(ALP(I) * 100);
8470 NEXT I
8480 PRINT #1, ""
8490 'DIAG CARD
8500 PRINT
8510 IF PPR = 1 THEN
8520 INPUT " Is A Plot Of The Velocity Distributions Required (Y/N)[N]", PL$
8530 ELSE
8540 INPUT " Is A Plot Of The Cp Distributions Required (Y/N)[N]", PL$
8550 END IF
8560 IF PL$ = "y" OR PL$ = "Y" THEN
8570 PRINT #1, USING "DIAG #"; PPR
8580 END IF
8590 'RE CARD
8600 PRINT
8610 INPUT " How Many Combinations Of Re And Transition Type Are Required (5 max)[1]"; NCOMBO
8620 IF NCOMBO < 1 THEN NCOMBO = 1
8630 INPUT " Print Just A Summary Or The Entire Boundary Layer History (1/2)[1]"; PRTO
8640 IF PRTO = 2 THEN
8650 PRINT " At Each Step In The Boundary Layer Print:"
8660 PRINT " 1) Momentum Thickness"
8670 PRINT " 2) Reynolds Number Based Upon Momentum Thickness"
8680 PRINT " 3) Displacement Thickness"
8690 INPUT " Option (1/2/3)[1]"; BLO
8700 IF BLO < 1 OR BLO > 3 THEN BLO = 1
8710 END IF
8720 RST$ = "RE 1"
8730 DUM$ = STR$((BLO + 1) * 10)
8740 NUPE$ = MID$(DUM$, 2, 1)
8750 RST$ = RST$ + NUPE$ + " "
8760 GOSUB 15440
8770 ITRANS = 0
8780 FOR I = 1 TO NCOMBO
8790 PRINT " For Case #"; I
8800 INPUT " Enter Reynolds Number"; REY
8810 REYN = INT(REY / 1000)
8820 PRINT " Enter Transition Type (1/2/3/4)[3]"
8830 INPUT " (Enter ? To See Options Again)"; TTYPE$
8840 IF TTYPE$ = "?" THEN
8850 GOSUB 15440
8860 GOTO 8820
8870 END IF
8880 TTYPE = VAL(TTYPE$)
8890 IF TTYPE < 1 OR TTYPE > 4 THEN TTYPE = 3
8900 IF TTYPE = 1 THEN
8910 MU = 0
8920 END IF
8930 IF TTYPE = 2 THEN
8940 ITRANS = ITRANS + 1
8950 IF ITRANS > 2 THEN
8960 PRINT " ONLY TWO FIXED TRANSITION CASES ALLOWED"
8970 ITRANS = 2
8980 GOTO 8820
8990 ELSE
9000 INPUT " Enter X/C Location of Transition On Upper Surface"; XTU(ITRANS)
9010 INPUT " Enter X/C Location of Transition On Lower Surface"; XTL(ITRANS)
9020 MU = ITRANS
9030 END IF
9040 END IF
9050 IF TTYPE = 3 THEN
9060 MU = 3
9070 END IF
9080 IF TTYPE = 4 THEN
9090 INPUT " Enter Roughness Level (0-6, ? For Options)[0]"; ROUGH$
9100 IF ROUGH$ = "?" THEN
9110 GOSUB 15440
9120 GOTO 9090
9130 END IF
9140 ROUGH = VAL(ROUGH$)
9150 MU = INT(ROUGH + 3)
9160 END IF
9170 DUM$ = STR$(MU)
9180 MU$ = " " + MID$(DUM$, 2, 1) + " "
9190 RST$ = RST$ + MU$
9200 DUM$ = STR$(REYN)
9210 LD = LEN(DUM$)
9220 REY$ = MID$(DUM$, 2, LD - 1)
9230 LR = LEN(REY$)
9240 IF LR <> 5 THEN
9250 FOR J = 1 TO LR
9260 REY$ = " " + REY$
9270 NEXT J
9280 END IF
9290 RST$ = RST$ + REY$
9300 NEXT I
9310 IF ITRANS > 0 THEN
9320 LR = LEN(RST$)
9330 DR = 60 - LR
9340 FOR J = 1 TO DR
9350 RST$ = RST$ + " "
9360 NEXT J
9370 FOR J = 1 TO ITRANS
9380 DUM$ = STR$(INT(XTU(ITRANS) * 10000))
9390 LD = LEN(DUM$)
9400 XT$ = MID$(DUM$, 2, LD - 1)
9410 LD = LEN(XT$)
9420 DL = 5 - LD
9430 FOR K = 1 TO DL
9440 RST$ = RST$ + " "
9450 NEXT K
9460 RST$ = RST$ + XT$
9470 DUM$ = STR$(INT(XTL(ITRANS) * 10000))
9480 LD = LEN(DUM$)
9490 XT$ = MID$(DUM$, 2, LD - 1)
9500 LD = LEN(XT$)
9510 DL = 5 - LD
9520 FOR K = 1 TO DL
9530 RST$ = RST$ + " "
9540 NEXT K
9550 RST$ = RST$ + XT$
9560 NEXT J
9570 END IF
9580 PRINT #1, RST$
9590 PRINT
9600 INPUT " Is A CD-CL Plot Required (Y/N)[Y]"; PL$
9610 IF PL$ <> "n" AND PL$ <> "N" THEN
9620 PRINT #1, "CDCL"
9630 END IF
9640 PRINT
9650 INPUT " Is A Flap Deflection Case Required (Y/N)[N]"; FLP$
9660 IF FLP$ = "Y" OR FLP$ = "y" THEN
9670 INPUT " Enter X/C Location Of Hinge"; XLOC
9680 INPUT " Enter Y/C Location Of Hinge"; YLOC
9690 INPUT " Enter Flap Deflection (deg, Negative Is Upwards)"; DEFL
9700 FST$ = "FLAP "
9710 DUM$ = STR$(INT((1 - XLOC) * 10000))
9720 FLC$ = LEFT$(DUM$, 5)
9730 DUM$ = STR$(INT(YLOC * 10000))
9740 YLC$ = LEFT$(DUM$, 5)
9750 TRS$ = " 400"
9760 DUM$ = STR$(INT(DEFL * 100))
9770 DFL$ = LEFT$(DUM$, 5)
9780 FST$ = FST$ + FLC$ + YLC$ + TRS$ + DFL$
9790 PRINT #1, RST$
9800 END IF
9810 PRINT #1, "ENDE"
9820 RETURN
9830 '-----------------------------------------------------------------
9840 'EPPLER OUTPUT UTILITY SUBROUTINE
9850 IF I / 8 = INT(I / 8) THEN PRINT #1, ""
9860 RETURN
9870 '-----------------------------------------------------------------
9880 'EPPLER OUTPUT UTILITY SUBROUTINE
9890 I = I - 1
9900 IF I / 8 <> INT(I / 8) THEN PRINT #1, ""
9910 RETURN
9920 '-----------------------------------------------------------------
9930 'WIBCO FORMAT OUTPUT
9940 '
9950 GOSUB 9520
9960 PRINT #1, USING " ##."; NPP
9970 FORMAT$ = " #.###### #.###### #.###### #.###### #.###### #.######"
9980 FOR I = 1 TO NPP
9990 PRINT #1, USING FORMAT$; XU(I);
10000 GOSUB 10150
10010 NEXT I
10020 GOSUB 10180
10030 FOR I = 1 TO NPP
10040 PRINT #1, USING FORMAT$; YU(I);
10050 GOSUB 10150
10060 NEXT I
10070 GOSUB 10180
10080 FOR I = 1 TO NPP
10090 PRINT #1, USING FORMAT$; YL(I);
10100 GOSUB 10150
10110 NEXT I
10120 GOSUB 10180
10130 RETURN
10140 '
10150 IF I / 7 = INT(I / 7) THEN PRINT #1, ""
10160 RETURN
10170 '
10180 I = I - 1
10190 IF I / 7 <> INT(I / 7) THEN PRINT #1, ""
10200 RETURN
10210 '-----------------------------------------------------------------
10220 'LOFTSMAN [SD] FORMAT OUTPUT - CODE FROM NICK PARKYN
10230 '
10240 TT = ABS(YL(NPP)) + ABS(YU(NPP))
10250 PRINT #1, USING "### 1.000000 #.###### #.######"; ((NPP * 2) - 1); TT; TC
10260 J = 1
10270 FOR I = NPP TO 1 STEP -1
10280 PRINT #1, USING " ### #.####### #.#######"; J; XU(I); YU(I)
10290 J = J + 1
10300 NEXT I
10310 FOR I = 2 TO NPP
10320 PRINT #1, USING " ### #.####### #.#######"; J; XL(I); YL(I)
10330 J = J + 1
10340 NEXT I
10350 RETURN
10360 '-----------------------------------------------------------------
10370 'VSAERO FORMAT OUTPUT
10380 '
10390 PRINT #1, " 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 2 0 0 0"
10400 FOR I = NPP TO 1 STEP -1
10410 PRINT #1, USING " #.####### #.#######"; XL(I); YL(I)
10420 NEXT I
10430 PRINT
10440 FOR I = 2 TO NPP
10450 PRINT #1, USING " #.####### #.#######"; XU(I); YU(I)
10460 NEXT I
10470 PRINT #1, " 3 0 0"
10480 RETURN
10490 '-----------------------------------------------------------------
10500 'AUTOCAD SCRIPT FORMAT OUTPUT
10510 PRINT
10520 IF RIGHT$(DEST$, 3) <> "SCR" AND RIGHT$(DEST$, 3) <> "scr" THEN
10530 PRINT " ERROR: Output Filename Must Have A .SCR Extension"
10540 CLOSE 1
10550 INPUT " Enter The Filename For Output Of The Coordinates"; DEST$
10560 OPEN DEST$ FOR OUTPUT AS #1
10570 END IF
10580 '
10590 'TURN OFF LIMITS TO PREVENT LOCKUP
10600 PRINT #1, "LIMITS OFF"
10610 'PLACE NODE POINT AT CHORD LINE LEADING EDGE
10620 PRINT #1, "POINT 0,0"
10630 'DRAW CHORD LINE
10640 PRINT #1, "LINE 0,0 1,0 "
10650 'DRAW UPPER SURFACE STARTING AT 0,0
10660 PRINT #1, "PLINE"
10670 FOR I = 1 TO NPP
10680 PRINT #1, USING "#.#######,#.#######"; XU(I); YU(I)
10690 NEXT I
10700 'DRAW LOWER SURFACE STARTING AT 0,0
10710 PRINT #1, " PLINE"
10720 FOR I = 1 TO NPP
10730 PRINT #1, USING "#.#######,#.#######"; XL(I); YL(I)
10740 NEXT I
10750 'RESTORE LIMITS
10760 PRINT #1, " LIMITS ON"
10770 RETURN
10780 '-----------------------------------------------------------------
10790 'ASIN SUBROUTINE
10800 IF SVAL = 0 THEN THETA = 0
10810 IF SVAL = 1 THEN THETA = PI / 2
10820 IF SVAL = -1 THEN THETA = -PI / 2
10830 IF SVAL = 0 OR SVAL = 1 OR SVAL = -1 THEN GOTO 10850
10840 THETA = ATN(SVAL / SQR(1 - SVAL ^ 2))
10850 RETURN
10860 '-----------------------------------------------------------------
10870 'SCREEN DISPLAY SUBROUTINE
10880 KEY OFF
10890 IF DTP = 1 THEN SCREEN 1
10900 IF DTP > 1 THEN SCREEN 9
10910 COLOR 1, 0: CLS
10920 LINE (.05 * QM, .25 * RM)-(.05 * QM, .75 * RM)
10930 LINE (.05 * QM, .5 * RM)-(.95 * QM, .5 * RM)
10940 COLR = 7
10950 FOR I = 1 TO NPP
10960 XQ(1) = .05 * QM + XU(I) * QM * .9
10970 YQ(1) = .5 * RM - YU(I) * QM * .9
10980 IF ANSC$ = "N" THEN
10990 PSET (XQ(1), YQ(1)), COLR
11000 GOTO 11060
11010 END IF
11020 IF I = 1 THEN GOTO 11040
11030 LINE (XQ(2), YQ(2))-(XQ(1), YQ(1)), COLR
11040 XQ(2) = XQ(1)
11050 YQ(2) = YQ(1)
11060 NEXT I
11070 FOR I = 1 TO NPP
11080 XQ(1) = .05 * QM + XL(I) * QM * .9
11090 YQ(1) = .5 * RM - YL(I) * QM * .9
11100 IF ANSC$ = "N" THEN
11110 PSET (XQ(1), YQ(1)), COLR
11120 GOTO 11180
11130 END IF
11140 IF I = 1 THEN GOTO 11160
11150 LINE (XQ(2), YQ(2))-(XQ(1), YQ(1)), COLR
11160 XQ(2) = XQ(1)
11170 YQ(2) = YQ(1)
11180 NEXT I
11190 IF INKEY$ = "" THEN 11190 ELSE 11200
11200 WIDTH 80: SCREEN 0, 0, 0: COLOR 7, 1: CLS
11210 RETURN
11220 '-----------------------------------------------------------------
11230 'POINT REDISTRIBUTION ROUTINE
11240 'set up constants
11250 DEG.TO.RAD = PI / 180
11260 RAD.TO.DEG = 180 / PI
11270 N.TOT = NP * 2 - 1
11280 NUP = NP
11290 NLO = NP
11300 S = 2
11310 C1 = 1
11320 C2 = 1
11330 COLOR 7, 1: CLS
11340 II = 0
11350 FOR I = NUP TO 1 STEP -1
11360 II = II + 1
11370 P(1, I) = XU(II)
11380 P(2, I) = YU(II)
11390 NEXT I
11400 II = 0
11410 FOR I = NUP TO N.TOT
11420 II = II + 1
11430 P(1, I) = XL(II)
11440 P(2, I) = YL(II)
11450 NEXT I
11460 XTRAIL = P(1, N.TOT)
11470 YTRAIL = P(2, N.TOT)
11480 'compute number of points to add
11490 N = N.TOT
11500 Z = INT(300 / N.TOT + .5)
11510 LOCATE 12, 19: PRINT "Will Insert"; Z; " Points Between Given Points"
11520 LOCATE 13, 28: PRINT "Calculating Cubic Spline"
11530 N(1, 2) = 1
11540 N(1, 3) = .5
11550 FOR J = 1 TO N - 1
11560 L(J) = SQR((P(1, J + 1) - P(1, J)) ^ 2 + (P(2, J + 1) - P(2, J)) ^ 2)
11570 NEXT J
11580 FOR K = 1 TO 2
11590 B(K, 1) = (3 / (2 * L(1))) * (P(K, 2) - P(K, 1))
11600 NEXT K
11610 N(N, 1) = 2
11620 N(N, 2) = 4
11630 FOR K = 1 TO 2
11640 B(K, N) = (6 / L(N - 1)) * (P(K, N) - P(K, N - 1))
11650 NEXT K
11660 FOR K = 1 TO 2
11670 B(K, N) = (6 / L(N - 1)) * (P(K, N) - P(K, N - 1))
11680 NEXT K
11690 FOR J = 2 TO N - 1
11700 N(J, 1) = L(J)
11710 N(J, 2) = 2 * (L(J) + L(J - 1))
11720 N(J, 3) = L(J - 1)
11730 FOR K = 1 TO 2
11740 B(K, J) = 3 * (L(J - 1) ^ 2 * (P(K, J + 1) - P(K, J)) + L(J) ^ 2 * (P(K, J) - P(K, J - 1)))
11750 B(K, J) = B(K, J) / (L(J) * L(J - 1))
11760 NEXT K
11770 NEXT J
11780 FOR I = 2 TO N
11790 IF N(I, 1) = 0 THEN GOTO 11900
11800 D = N(I - 1, 2) / N(I, 1)
11810 FOR K = 1 TO 3
11820 N(I, K) = N(I, K) * D - N(I - 1, K + 1)
11830 B(K, I) = B(K, I) * D - B(K, I - 1)
11840 NEXT K
11850 Q = N(I, 2)
11860 FOR K = 1 TO 3
11870 N(I, K) = N(I, K) / Q
11880 B(K, I) = B(K, I) / Q
11890 NEXT K
11900 NEXT I
11910 FOR K = 1 TO 2
11920 FOR J = 0 TO N - 1
11930 U(K, N - J) = (B(K, N - J) - N(N - J, 3) * U(K, N + 1 - J)) / N(N - J, 2)
11940 NEXT J
11950 NEXT K
11960 IF FLAG THEN RETURN
11970 CLS : LOCATE 12, 28: PRINT "Performing Interpolation"
11980 I = 1
11990 FOR J = 1 TO N - 1
12000 FOR K = 1 TO 2
12010 F(1, K) = P(K, J)
12020 F(2, K) = U(K, J)
12030 F(3, K) = (3 / L(J) ^ 2) * (P(K, J + 1) - P(K, J)) - (1 / L(J)) * (U(K, J + 1) + 2 * U(K, J))
12040 F(4, K) = (-2 / L(J) ^ 3) * (P(K, J + 1) - P(K, J)) + (1 / L(J) ^ 2) * (U(K, J + 1) + U(K, J))
12050 NEXT K
12060 TINC = L(J) / Z
12070 T = 0
12080 IF J = 1 OR T <> 0 THEN
12090 FOR K = 1 TO 2
12100 R(K) = F(1, K) + F(2, K) * T + F(3, K) * T * T + F(4, K) * T ^ 3
12110 NEXT K
12120 C(1, I) = R(1)
12130 C(2, I) = R(2)
12140 I = I + 1
12150 END IF
12160 IF T = 0 AND ABS(C(1, I - 1) - P(1, J)) > .00001 THEN
12170 C(1, I) = P(1, J)
12180 C(2, I) = P(2, J)
12190 I = I + 1
12200 END IF
12210 T = T + TINC
12220 IF T <= L(J) THEN GOTO 12080
12230 NEXT J
12240 NUM.PTS = I - 1
12250 CLS : LOCATE 12, 27: PRINT "Number Of Points = "; NUM.PTS
12260 'move points to P array, go back to find first derivatives for all points
12270 IF ABS(C(1, NUM.PTS) - XTRAIL) > .00001 THEN
12280 NUM.PTS = NUM.PTS + 1
12290 C(1, NUM.PTS) = XTRAIL
12300 C(2, NUM.PTS) = YTRAIL
12310 END IF
12320 FOR I = 1 TO NUM.PTS
12330 P(1, I) = C(1, I)
12340 P(2, I) = C(2, I)
12350 NEXT I
12360 N = NUM.PTS
12370 FLAG = -1
12380 PRINT TAB(26); "Computing First Derivatives"
12390 GOSUB 11530
12400 'convert to slopes in radians, store as B array
12410 FOR I = 1 TO NUM.PTS
12420 B(1, I) = U(2, I) / U(1, I)
12430 NEXT I
12440 'split airfoil into upper and lower surfaces
12450 MIN = P(1, 1)
12460 FOR I = 1 TO NUM.PTS
12470 IF P(1, I) < MIN THEN
12480 IMIN = I
12490 MIN = P(1, I)
12500 END IF
12510 NEXT I
12520 GOSUB 13490
12530 'move upper surface to N arrays 1&2, move slopes to C1 array
12540 FOR I = IMIN TO 1 STEP -1
12550 N(I, 1) = P(1, I)
12560 N(I, 2) = P(2, I)
12570 C(1, I) = B(1, I)
12580 NEXT I
12590 'move lower surface to N arrays 3&4, move slopes to C2 array
12600 K = 0
12610 FOR I = IMIN TO N
12620 K = K + 1
12630 N(K, 3) = P(1, I)
12640 N(K, 4) = P(2, I)
12650 C(2, K) = B(1, I)
12660 NEXT I
12670 NUM.UP.PTS = IMIN
12680 NUM.LO.PTS = NUM.PTS - IMIN + 1
12690 PRINT
12700 CLS : LOCATE 11, 1
12710 PRINT TAB(26); "Number Of Upper Points ="; NUM.UP.PTS
12720 PRINT TAB(26); "Number Of Lower Points ="; NUM.LO.PTS
12730 FOR I = 1 TO NUM.UP.PTS
12740 K = NUM.UP.PTS - I + 1
12750 X(I) = N(K, 1)
12760 Y(I) = N(K, 2)
12770 YP(I) = C(1, K)
12780 NEXT I
12790 PRINT TAB(24); "Calculating Desired Coordinates"
12800 IF SGN(YP(1)) <> SGN(YP(2)) THEN YP(1) = -YP(1)
12810 N% = NUM.UP.PTS
12820 XU(1) = XDD(1)
12830 YU(1) = 0
12840 FOR I = 2 TO NPP
12850 XU(I) = XDD(I)
12860 XD = XDD(I)
12870 GOSUB 13100
12880 YU(I) = YD
12890 NEXT
12900 FOR I = 1 TO NUM.LO.PTS
12910 X(I) = N(I, 3)
12920 Y(I) = N(I, 4)
12930 YP(I) = C(2, I)
12940 NEXT I
12950 IF SGN(YP(1)) <> SGN(YP(2)) THEN YP(1) = -YP(1)
12960 RESTORE
12970 N% = NUM.LO.PTS
12980 XL(1) = XDD(1)
12990 YL(1) = 0
13000 FOR I = 2 TO NPP
13010 XL(I) = XDD(I)
13020 XD = XDD(I)
13030 GOSUB 13100
13040 YL(I) = YD
13050 NEXT
13060 CLS
13070 RETURN
13080 '-----------------------------------------------------------------
13090 'INTERPOLATION ROUTINE FOR REDISTRIBUTION
13100 LL% = 0
13110 UL% = N% + 1
13120 IF (UL% - LL% = 1) THEN GOTO 13270
13130 IN% = (UL% - LL%) \ 2 + LL%
13140 DX = XD - X(IN%)
13150 IF DX < 0 THEN
13160 UL% = IN%
13170 GOTO 13120
13180 END IF
13190 IF DX = 0 THEN
13200 YD = Y(IN%)
13210 GOTO 13460
13220 END IF
13230 IF DX > 0 THEN
13240 LL% = IN%
13250 GOTO 13120
13260 END IF
13270 IF UL% < 2 THEN UL% = 2
13280 IF UL% > N% THEN UL% = N%
13290 LL% = UL% - 1
13300 SL = (Y(UL%) - Y(LL%)) / (X(UL%) - X(LL%))
13310 YZ = Y(LL%) + SL * (XD - X(LL%))
13320 FOR I% = 1 TO 2
13330 K2% = LL% + I% - 1
13340 DY(I%) = Y(K2%) + YP(K2%) * (XD - X(K2%)) - YZ
13350 NEXT I%
13360 TEST = DY(1) * DY(2)
13370 IF TEST = 0 THEN
13380 YD = YZ
13390 GOTO 13460
13400 END IF
13410 IF TEST > 0 THEN
13420 YD = YZ + TEST / (DY(1) + DY(2))
13430 GOTO 13460
13440 END IF
13450 YD = YZ + (TEST * (XD + XD - X(LL%) - X(UL%))) / ((DY(1) - DY(2)) * (X(UL%) - X(LL%)))
13460 RETURN
13470 '-----------------------------------------------------------------
13480 'ROTATION SUBROUTINE
13490 CLS : LOCATE 12, 30: PRINT "Performing Rotation"
13500 XRP = 1
13510 YRP = 0
13520 YTE = (P(2, 1) + P(2, NUM.PTS)) / 2
13530 DELTA = ATN(((P(2, IMIN) - YTE) - YRP) / (P(1, IMIN) - XRP))
13540 DDELTA = DELTA * 180 / PI
13550 LOCATE 13, 28: PRINT USING "Angle = ##.######## Deg"; DDELTA
13560 CDLT = COS(DELTA)
13570 SDLT = SIN(DELTA)
13580 TDLT = TAN(DELTA)
13590 FOR I = 1 TO NUM.PTS
13600 XRS = P(1, I)
13610 P(2, I) = P(2, I) - YTE
13620 P(1, I) = XRP + (P(1, I) - XRP) * CDLT + (P(2, I) - YRP) * SDLT
13630 P(2, I) = YRP + (P(2, I) - YRP) * CDLT - (XRS - XRP) * SDLT
13640 B(1, I) = B(1, I) - TDLT
13650 NEXT I
13660 P(1, NUM.PTS) = (P(1, 1) + P(1, NUM.PTS)) / 2
13670 P(1, 1) = P(1, NUM.PTS)
13680 XRLE = P(1, IMIN)
13690 FOR I = 1 TO NUM.PTS
13700 P(1, I) = P(1, I) - XRLE
13710 NEXT I
13720 XRCRD = P(1, 1)
13730 FOR I = 1 TO NUM.PTS
13740 P(1, I) = P(1, I) / XRCRD
13750 P(2, I) = P(2, I) / XRCRD
13760 NEXT I
13770 RETURN
13780 '-----------------------------------------------------------------
13790 'NACA CONSTANTS
13800 N = 1 + N6S * N6T + N6AS * N6AT + 2 * N6C + 2 * N6AC
13810 FOR I = 1 TO N
13820 FOR J = 1 TO N6P
13830 READ TF6(I, J)
13840 NEXT J
13850 NEXT I
13860 RETURN
13870 'NACA X/C LOCATIONS
13880 DATA 0.0000, 0.5000, 0.7500, 1.2500, 2.5000, 5.0000, 7.5000, 10.0000, 15.0000, 20.0000, 25.0000, 30.0000, 35.0000, 40.0000, 45.0000, 50.0000, 55.0000, 60.0000, 65.0000, 70.0000, 75.0000, 80.0000, 85.0000, 90.0000, 95.0000, 100.0000
13890 'NACA THICKNESS FORMS 6-21%, 63-67 SERIES
13900 DATA 0.0000, 0.5030, 0.6090, 0.7710, 1.0570, 1.4620, 1.7660, 2.0100, 2.3860, 2.6560, 2.8410, 2.9540, 3.0000, 2.9710, 2.8770, 2.7230, 2.5170, 2.2670, 1.9820, 1.6700, 1.3420, 1.0080, 0.6830, 0.3830, 0.1380, 0.0000
13910 DATA 0.0000, 0.6683, 0.8089, 1.0244, 1.4073, 1.9517, 2.3588, 2.6858, 3.1896, 3.5501, 3.7965, 3.9459, 3.9999, 3.9579, 3.8254, 3.6133, 3.3338, 2.9984, 2.6173, 2.2003, 1.7616, 1.3171, 0.8870, 0.4963, 0.1777, 0.0000
13920 DATA 0.0000, 0.7490, 0.9060, 1.1510, 1.5820, 2.1960, 2.6550, 3.0240, 3.5910, 3.9970, 4.2750, 4.4420, 4.5000, 4.4470, 4.2960, 4.0560, 3.7390, 3.3580, 2.9280, 2.4580, 1.9660, 1.4710, 0.9900, 0.5500, 0.1960, 0.0000
13930 DATA 0.0000, 0.8290, 1.0040, 1.2750, 1.7560, 2.4400, 2.9500, 3.3620, 3.9940, 4.4450, 4.7530, 4.9380, 5.0000, 4.9380, 4.7660, 4.4960, 4.1400, 3.7150, 3.2340, 2.7120, 2.1660, 1.6180, 1.0880, 0.6040, 0.2140, 0.0000
13940 DATA 0.0000, 0.9850, 1.1940, 1.5190, 2.1020, 2.9250, 3.5420, 4.0390, 4.7990, 5.3420, 5.7120, 5.9300, 6.0000, 5.9200, 5.7040, 5.3700, 4.9350, 4.4200, 3.8400, 3.2100, 2.5560, 1.9020, 1.2740, 0.7070, 0.2500, 0.0000
13950 DATA 0.0000, 1.2040, 1.4620, 1.8780, 2.6100, 3.6480, 4.4270, 5.0550, 6.0110, 6.6930, 7.1550, 7.4210, 7.5000, 7.3860, 7.0990, 6.6650, 6.1080, 5.4530, 4.7210, 3.9340, 3.1190, 2.3100, 1.5410, 0.8520, 0.3000, 0.0000
13960 DATA 0.0000, 1.4040, 1.7130, 2.2170, 3.1040, 4.3620, 5.3080, 6.0680, 7.2250, 8.0480, 8.6000, 8.9130, 9.0000, 8.8450, 8.4820, 7.9420, 7.2560, 6.4550, 5.5670, 4.6220, 3.6500, 2.6910, 1.7870, 0.9850, 0.3480, 0.0000
13970 DATA 0.0000, 1.5830, 1.9370, 2.5270, 3.5770, 5.0650, 6.1820, 7.0800, 8.4410, 9.4100, 10.0530, 10.4120, 10.5000, 10.2980, 9.8540, 9.2060, 8.3900, 7.4410, 6.3960, 5.2900, 4.1600, 3.0540, 2.0210, 1.1130, 0.3920, 0.0000
13980 DATA 0.0000, 0.4940, 0.5960, 0.7540, 1.0240, 1.4050, 1.6920, 1.9280, 2.2980, 2.5720, 2.7720, 2.9070, 2.9810, 2.9950, 2.9190, 2.7750, 2.5750, 2.3310, 2.0500, 1.7400, 1.4120, 1.0720, 0.7370, 0.4230, 0.1570, 0.0000
13990 DATA 0.0000, 0.6580, 0.7940, 1.0050, 1.3650, 1.8750, 2.2590, 2.5740, 3.0690, 3.4370, 3.7040, 3.8840, 3.9790, 3.9920, 3.8830, 3.6840, 3.4110, 3.0810, 2.7040, 2.2910, 1.8540, 1.4040, 0.9610, 0.5500, 0.2060, 0.0000
14000 DATA 0.0000, 0.7390, 0.8920, 1.1280, 1.5330, 2.1090, 2.5430, 2.8980, 3.4550, 3.8680, 4.1700, 4.3730, 4.4790, 4.4900, 4.3640, 4.1360, 3.8260, 3.4520, 3.0260, 2.5610, 2.0690, 1.5640, 1.0690, 0.6110, 0.2270, 0.0000
14010 DATA 0.0000, 0.8200, 0.9890, 1.2500, 1.7010, 2.3430, 2.8260, 3.2210, 3.8420, 4.3020, 4.6390, 4.8640, 4.9800, 4.9880, 4.8430, 4.5860, 4.2380, 3.8200, 3.3450, 2.8270, 2.2810, 1.7220, 1.1760, 0.6710, 0.2480, 0.0000
14020 DATA 0.0000, 0.9780, 1.1790, 1.4900, 2.0350, 2.8100, 3.3940, 3.8710, 4.6200, 5.1730, 5.5760, 5.8440, 5.9780, 5.9810, 5.7980, 5.4800, 5.0560, 4.5480, 3.9740, 3.3500, 2.6950, 2.0290, 1.3820, 0.7860, 0.2880, 0.0000
14030 DATA 0.0000, 1.2080, 1.4560, 1.8420, 2.5280, 3.5040, 4.2400, 4.8420, 5.7850, 6.4800, 6.9850, 7.3190, 7.4820, 7.4730, 7.2240, 6.8100, 6.2660, 5.6200, 4.8950, 4.1130, 3.2960, 2.4720, 1.6770, 0.9500, 0.3460, 0.0000
14040 DATA 0.0000, 1.4280, 1.7200, 2.1770, 3.0050, 4.1860, 5.0760, 5.8030, 6.9420, 7.7820, 8.3910, 8.7890, 8.9790, 8.9520, 8.6300, 8.1140, 7.4450, 6.6580, 5.7820, 4.8420, 3.8660, 2.8880, 1.9510, 1.1010, 0.4000, 0.0000
14050 DATA 0.0000, 1.6460, 1.9850, 2.5170, 3.4850, 4.8710, 5.9150, 6.7690, 8.1080, 9.0950, 9.8070, 10.2690, 10.4810, 10.4310, 10.0300, 9.4040, 8.6070, 7.6780, 6.6490, 5.5490, 4.4160, 3.2870, 2.2130, 1.2450, 0.4490, 0.0000
14060 DATA 0.0000, 0.4760, 0.5740, 0.7170, 0.9560, 1.3100, 1.5890, 1.8240, 2.1970, 2.4820, 2.6970, 2.8520, 2.9520, 2.9980, 2.9830, 2.9000, 2.7410, 2.5180, 2.2460, 1.9350, 1.5940, 1.2330, 0.8650, 0.5100, 0.1950, 0.0000
14070 DATA 0.0000, 0.6270, 0.7560, 0.9450, 1.2670, 1.7450, 2.1180, 2.4320, 2.9310, 3.3120, 3.5990, 3.8050, 3.9380, 3.9980, 3.9740, 3.8570, 3.6380, 3.3370, 2.9710, 2.5530, 2.0960, 1.6170, 1.1310, 0.6640, 0.2520, 0.0000
14080 DATA 0.0000, 0.7000, 0.8450, 1.0580, 1.4210, 1.9610, 2.3830, 2.7360, 3.2990, 3.7270, 4.0500, 4.2820, 4.4310, 4.4960, 4.4690, 4.3360, 4.0860, 3.7430, 3.3280, 2.8560, 2.3420, 1.8050, 1.2600, 0.7380, 0.2800, 0.0000
14090 DATA 0.0000, 0.7720, 0.9320, 1.1690, 1.5740, 2.1770, 2.6470, 3.0400, 3.6660, 4.1430, 4.5030, 4.7600, 4.9240, 4.9960, 4.9630, 4.8120, 4.5300, 4.1460, 3.6820, 3.1560, 2.5840, 1.9870, 1.3850, 0.8100, 0.3060, 0.0000
14100 DATA 0.0000, 0.9230, 1.1090, 1.3870, 1.8750, 2.6060, 3.1720, 3.6470, 4.4020, 4.9750, 5.4060, 5.7160, 5.9120, 5.9970, 5.9490, 5.7570, 5.4120, 4.9430, 4.3810, 3.7430, 3.0590, 2.3450, 1.6300, 0.9470, 0.3560, 0.0000
14110 DATA 0.0000, 1.1240, 1.3560, 1.7020, 2.3240, 3.2450, 3.9590, 4.5550, 5.5040, 6.2230, 6.7640, 7.1520, 7.3960, 7.4980, 7.4270, 7.1680, 6.7200, 6.1180, 5.4030, 4.6000, 3.7440, 2.8580, 1.9770, 1.1440, 0.4280, 0.0000
14120 DATA 0.0000, 1.3370, 1.6080, 2.0140, 2.7510, 3.8660, 4.7330, 5.4570, 6.6060, 7.4760, 8.1290, 8.5950, 8.8860, 8.9990, 8.9010, 8.5680, 8.0080, 7.2670, 6.3950, 5.4260, 4.3960, 3.3380, 2.2950, 1.3190, 0.4900, 0.0000
14130 DATA 0.0000, 1.5220, 1.8380, 2.3010, 3.1540, 4.4720, 5.4980, 6.3520, 7.7000, 8.7200, 9.4870, 10.0360, 10.3750, 10.4990, 10.3660, 9.9520, 9.2770, 8.3900, 7.3600, 6.2240, 5.0240, 3.8000, 2.5980, 1.4840, 0.5460, 0.0000
14140 DATA 0.0000, 0.4610, 0.5540, 0.6930, 0.9180, 1.2570, 1.5240, 1.7520, 2.1190, 2.4010, 2.6180, 2.7820, 2.8990, 2.9710, 3.0000, 2.9850, 2.9250, 2.8150, 2.6110, 2.3160, 1.9530, 1.5430, 1.1070, 0.6650, 0.2620, 0.0000
14150 DATA 0.0000, 0.6100, 0.7350, 0.9190, 1.2190, 1.6730, 2.0310, 2.3350, 2.8260, 3.2010, 3.4900, 3.7090, 3.8650, 3.9620, 4.0000, 3.9780, 3.8960, 3.7400, 3.4590, 3.0620, 2.5740, 2.0270, 1.4470, 0.8640, 0.3380, 0.0000
14160 DATA 0.0000, 0.6870, 0.8240, 1.0300, 1.3680, 1.8800, 2.2830, 2.6260, 3.1780, 3.6010, 3.9270, 4.1730, 4.3480, 4.4570, 4.4990, 4.4750, 4.3810, 4.2040, 3.8820, 3.4280, 2.8770, 2.2630, 1.6110, 0.9610, 0.3740, 0.0000
14170 DATA 0.0000, 0.7590, 0.9130, 1.1410, 1.5160, 2.0870, 2.5360, 2.9170, 3.5300, 4.0010, 4.3630, 4.6360, 4.8320, 4.9530, 5.0000, 4.9710, 4.8650, 4.6650, 4.3020, 3.7870, 3.1760, 2.4940, 1.7730, 1.0540, 0.4080, 0.0000
14180 DATA 0.0000, 0.9060, 1.0870, 1.3580, 1.8080, 2.4960, 3.0370, 3.4960, 4.2340, 4.8010, 5.2380, 5.5680, 5.8030, 5.9470, 6.0000, 5.9650, 5.8360, 5.5880, 5.1390, 4.5150, 3.7670, 2.9440, 2.0830, 1.2340, 0.4740, 0.0000
14190 DATA 0.0000, 1.1220, 1.3430, 1.6750, 2.2350, 3.1000, 3.7810, 4.3580, 5.2860, 5.9950, 6.5430, 6.9560, 7.2500, 7.4300, 7.4950, 7.4500, 7.2830, 6.9590, 6.3720, 5.5760, 4.6320, 3.5980, 2.5300, 1.4890, 0.5660, 0.0000
14200 DATA 0.0000, 1.3230, 1.5710, 1.9520, 2.6460, 3.6900, 4.5130, 5.2100, 6.3330, 7.1880, 7.8480, 8.3460, 8.7010, 8.9180, 8.9980, 8.9420, 8.7330, 8.3230, 7.5800, 6.5970, 5.4510, 4.2060, 2.9340, 1.7140, 0.6460, 0.0000
14210 DATA 0.0000, 1.5250, 1.8040, 2.2400, 3.0450, 4.2690, 5.2330, 6.0520, 7.3690, 8.3760, 9.1530, 9.7380, 10.1540, 10.4070, 10.5000, 10.4340, 10.1860, 9.6920, 8.7930, 7.6100, 6.2510, 4.7960, 3.3240, 1.9240, 0.7170, 0.0000
14220 DATA 0.0000, 0.4879, 0.5847, 0.7351, 0.9888, 1.3236, 1.5808, 1.7909, 2.1262, 2.3856, 2.5886, 2.7464, 2.8649, 2.9451, 2.9902, 2.9985, 2.9686, 2.8954, 2.7713, 2.5854, 2.3063, 1.9056, 1.4274, 0.8994, 0.3585, 0.0000
14230 DATA 0.0000, 0.6462, 0.7740, 0.9739, 1.3118, 1.7595, 2.1036, 2.3844, 2.8325, 3.1791, 3.4503, 3.6611, 3.8196, 3.9267, 3.9869, 3.9980, 3.9579, 3.8592, 3.6917, 3.4395, 3.0581, 2.5134, 1.8738, 1.1706, 0.4637, 0.0000
14240 DATA 0.0000, 0.7240, 0.8669, 1.0915, 1.4715, 1.9759, 2.3637, 2.6800, 3.1848, 3.5752, 3.8807, 4.1182, 4.2967, 4.4174, 4.4853, 4.4977, 4.4525, 4.3410, 4.1514, 3.8652, 3.4308, 2.8123, 2.0917, 1.3013, 0.5139, 0.0000
14250 DATA 0.0000, 0.8008, 0.9586, 1.2078, 1.6297, 2.1911, 2.6229, 2.9748, 3.5365, 3.9709, 4.3108, 4.5750, 4.7737, 4.9081, 4.9837, 4.9975, 4.9471, 4.8227, 4.6109, 4.2901, 3.8013, 3.1081, 2.3061, 1.4288, 0.5628, 0.0000
14260 DATA 0.0000, 0.9507, 1.1374, 1.4354, 1.9412, 2.6173, 3.1376, 3.5615, 4.2377, 4.7605, 5.1696, 5.4876, 5.7269, 5.8889, 5.9802, 5.9971, 5.9365, 5.7860, 5.5290, 5.1373, 4.5356, 3.6902, 2.7246, 1.6744, 0.6565, 0.0000
14270 DATA 0.0000, 1.1651, 1.3925, 1.7625, 2.3940, 3.2443, 3.8994, 4.4325, 5.2826, 5.9396, 6.4537, 6.8536, 7.1547, 7.3588, 7.4747, 7.4966, 7.4209, 7.2307, 6.9048, 6.4020, 5.6210, 4.5399, 3.3270, 2.0209, 0.7880, 0.0000
14280 DATA 0.0000, 1.3646, 1.6289, 2.0689, 2.8258, 3.8530, 4.6458, 5.2904, 6.3174, 7.1106, 7.7315, 8.2148, 8.5791, 8.8268, 8.9683, 8.9963, 8.9060, 8.6761, 8.2797, 7.6591, 6.6858, 5.3628, 3.8991, 2.3435, 0.9097, 0.0000
14290 DATA 0.0000, 1.5470, 1.8438, 2.3506, 3.2327, 4.4397, 5.3736, 6.1323, 7.3397, 8.2720, 9.0017, 9.5703, 9.9994, 10.2922, 10.4609, 10.4966, 10.3924, 10.1232, 9.6546, 8.9093, 7.7296, 6.1596, 4.4414, 2.6443, 1.0229, 0.0000
14300 'NACA THICKNESS FORMS 6-21%, 63A-65A SERIES
14310 DATA 0.0000, 0.4950, 0.5950, 0.7540, 1.0450, 1.4470, 1.7470, 1.9890, 2.3620, 2.6310, 2.8200, 2.9420, 2.9960, 2.9850, 2.9140, 2.7880, 2.6130, 2.3960, 2.1430, 1.8590, 1.5560, 1.2480, 0.9390, 0.6300, 0.3220, 0.0130
14320 DATA 0.0000, 0.6580, 0.7910, 1.0030, 1.3910, 1.9300, 2.3320, 2.6560, 3.1550, 3.5150, 3.7660, 3.9260, 3.9950, 3.9780, 3.8780, 3.7050, 3.4680, 3.1760, 2.8370, 2.4570, 2.0550, 1.6470, 1.2400, 0.8330, 0.4250, 0.0180
14330 DATA 0.0000, 0.8160, 0.9830, 1.2500, 1.7370, 2.4120, 2.9170, 3.3240, 3.9500, 4.4000, 4.7140, 4.9130, 4.9950, 4.9680, 4.8370, 4.6130, 4.3110, 3.9430, 3.5170, 3.0440, 2.5450, 2.0400, 1.5350, 1.0300, 0.5250, 0.0210
14340 DATA 0.0000, 0.9730, 1.1730, 1.4920, 2.0780, 2.8950, 3.5040, 3.9940, 4.7470, 5.2870, 5.6640, 5.9010, 5.9950, 5.9570, 5.7920, 5.5170, 5.1480, 4.7000, 4.1860, 3.6210, 3.0260, 2.4260, 1.8260, 1.2250, 0.6250, 0.0250
14350 DATA 0.0000, 1.2030, 1.4480, 1.8440, 2.5790, 3.6180, 4.3820, 4.9970, 5.9420, 6.6190, 7.0910, 7.3840, 7.4960, 7.4350, 7.2150, 6.8580, 6.3870, 5.8200, 5.1730, 4.4680, 3.7310, 2.9910, 2.2520, 1.5120, 0.7720, 0.0320
14360 DATA 0.0000, 1.3510, 1.6410, 2.1220, 3.0270, 4.2910, 5.2280, 5.9790, 7.1290, 7.9510, 8.5200, 8.8710, 8.9980, 8.9200, 8.6470, 8.2100, 7.6360, 6.9470, 6.1650, 5.3160, 4.4340, 3.5510, 2.6710, 1.7850, 0.9200, 0.0402
14370 DATA 0.0000, 1.4970, 1.8260, 2.3840, 3.4570, 4.9590, 6.0690, 6.9580, 8.3150, 9.2810, 9.9500, 10.3570, 10.4990, 10.3960, 10.0650, 9.5430, 8.8610, 8.0480, 7.1310, 6.1400, 5.1190, 4.0980, 3.0820, 2.0560, 1.0670, 0.0496
14380 DATA 0.0000, 0.4850, 0.5850, 0.7390, 1.0160, 1.3990, 1.6840, 1.9190, 2.2830, 2.5570, 2.7570, 2.8960, 2.9770, 2.9990, 2.9450, 2.8250, 2.6530, 2.4380, 2.1880, 1.9070, 1.6020, 1.2850, 0.9670, 0.6490, 0.3310, 0.0130
14390 DATA 0.0000, 0.6460, 0.7780, 0.9830, 1.3530, 1.8630, 2.2450, 2.5590, 3.0470, 3.4140, 3.6810, 3.8660, 3.9720, 3.9980, 3.9210, 3.7570, 3.5240, 3.2340, 2.8970, 2.5210, 2.1170, 1.6980, 1.2780, 0.8580, 0.4380, 0.0180
14400 DATA 0.0000, 0.8040, 0.9690, 1.2250, 1.6880, 2.3270, 2.9050, 3.1990, 3.8130, 4.2720, 4.6060, 4.8370, 4.9680, 4.9950, 4.8940, 4.6840, 4.3880, 4.0210, 3.5970, 3.1270, 2.6230, 2.1030, 1.5820, 1.0620, 0.5410, 0.0210
14410 DATA 0.0000, 0.9610, 1.1580, 1.4640, 2.0180, 2.7880, 3.3640, 3.8390, 4.5800, 5.1320, 5.5340, 5.8090, 5.9650, 5.9930, 5.8630, 5.6050, 5.2440, 4.8010, 4.2890, 3.7210, 3.1180, 2.5000, 1.8820, 1.2630, 0.6440, 0.0250
14420 DATA 0.0000, 1.1930, 1.4360, 1.8150, 2.5080, 3.4770, 4.2020, 4.7990, 5.7320, 6.4230, 6.9260, 7.2700, 7.4630, 7.4870, 7.3130, 6.9780, 6.5170, 5.9560, 5.3110, 4.6000, 3.8470, 3.0840, 2.3210, 1.5580, 0.7950, 0.0320
14430 DATA 0.0000, 1.3300, 1.6160, 2.0740, 2.9240, 4.1140, 4.9990, 5.7280, 6.8610, 7.7030, 8.3130, 8.7280, 8.9570, 8.9780, 8.7530, 8.3390, 7.7760, 7.0940, 6.3150, 5.4600, 4.5640, 3.6530, 2.7480, 1.8370, 0.9460, 0.0402
14440 DATA 0.0000, 1.4710, 1.7950, 2.3260, 3.3300, 4.7430, 5.7920, 6.6540, 7.9920, 8.9850, 9.7030, 10.1900, 10.4550, 10.4670, 10.1890, 9.6920, 9.0240, 8.2200, 7.3030, 6.3060, 5.2660, 4.2130, 3.1690, 2.1140, 1.0950, 0.0496
14450 DATA 0.0000, 0.4640, 0.5630, 0.7180, 0.9810, 1.3130, 1.5910, 1.8240, 2.1940, 2.4740, 2.6870, 2.8420, 2.9450, 2.9960, 2.9920, 2.9250, 2.7930, 2.6020, 2.3640, 2.0870, 1.7750, 1.4370, 1.0830, 0.7270, 0.3700, 0.0130
14460 DATA 0.0000, 0.6150, 0.7460, 0.9510, 1.3030, 1.7490, 2.1200, 2.4320, 2.9260, 3.3010, 3.5850, 3.7910, 3.9280, 3.9950, 3.9880, 3.8950, 3.7140, 3.4560, 3.1350, 2.7630, 2.3480, 1.8980, 1.4300, 0.9600, 0.4890, 0.0180
14470 DATA 0.0000, 0.7650, 0.9280, 1.1830, 1.6230, 2.1820, 2.6500, 3.0400, 3.6580, 4.1270, 4.4830, 4.7420, 4.9120, 4.9950, 4.9830, 4.8630, 4.6320, 4.3040, 3.8990, 3.4320, 2.9120, 2.3520, 1.7710, 1.1880, 0.6040, 0.0210
14480 DATA 0.0000, 0.9130, 1.1060, 1.4140, 1.9420, 2.6140, 3.1760, 3.6470, 4.3920, 4.9560, 5.3830, 5.6930, 5.8970, 5.9950, 5.9770, 5.8280, 5.5440, 5.1430, 4.6540, 4.0910, 3.4670, 2.7980, 2.1060, 1.4130, 0.7190, 0.0250
14490 DATA 0.0000, 1.1310, 1.3710, 1.7500, 2.4120, 3.2550, 3.9620, 4.5530, 5.4880, 6.1980, 6.7340, 7.1220, 7.3760, 7.4960, 7.4670, 7.2690, 6.9030, 6.3930, 5.7720, 5.0630, 4.2820, 3.4510, 2.5980, 1.7430, 0.8870, 0.0320
14500 DATA 0.0000, 1.2550, 1.5400, 2.0080, 2.8180, 3.8460, 4.7080, 5.4290, 6.5650, 7.4230, 8.0720, 8.5420, 8.8490, 8.9910, 8.9500, 8.7030, 8.2480, 7.6230, 6.8730, 6.0180, 5.0790, 4.0820, 3.0660, 2.0490, 1.0500, 0.0402
14510 DATA 0.0000, 1.3840, 1.7080, 2.2560, 3.2150, 4.4280, 5.4470, 6.3000, 7.6400, 8.6510, 9.4150, 9.9670, 10.3270, 10.4910, 10.4360, 10.1330, 9.5870, 8.8460, 7.9620, 6.9580, 5.8620, 4.7040, 3.5310, 2.3540, 1.2120, 0.0496
14520 'NACA 6 SERIES CAMBER LINES AND DERIVATIVES
14530 DATA 0.00000, 0.46000, 0.64100, 0.96400, 1.64100, 2.69300, 3.50700, 4.16100, 5.12400, 5.74700, 6.11400, 6.27700, 6.27300, 6.13000, 5.87100, 5.51600, 5.08100, 4.58100, 4.03200, 3.44500, 2.83600, 2.21700, 1.60400, 1.01300, 0.46700, 0.00000
14540 DATA 0.00000, 0.75867, 0.69212, 0.60715, 0.48892, 0.36561, 0.29028, 0.23515, 0.15508, 0.09693, 0.05156, 0.01482, -.01554, -.04086, -.06201, -.07958, -.09395, -.10539, -.11406, -.12003, -.12329, -.12371, -.12099, -.11455, -.10301, -.07958
14550 DATA 0.00000, 0.44000, 0.61600, 0.93300, 1.60800, 2.68900, 3.55100, 4.25300, 5.26100, 5.90500, 6.28200, 6.44900, 6.44300, 6.29600, 6.02900, 5.66400, 5.21800, 4.70600, 4.14200, 3.54100, 2.91600, 2.28100, 1.65200, 1.04500, 0.48200, 0.00000
14560 DATA 0.00000, 0.73441, 0.67479, 0.59896, 0.49366, 0.38235, 0.31067, 0.25057, 0.16087, 0.09981, 0.05281, 0.01498, -.01617, -.04210, -.06373, -.08168, -.09637, -.10806, -.11694, -.12307, -.12644, -.12693, -.12425, -.11781, -.10620, -.08258
14570 DATA 0.00000, 0.41400, 0.58100, 0.88200, 1.53000, 2.58300, 3.44300, 4.16900, 5.31700, 6.11700, 6.57200, 6.77700, 6.78900, 6.64600, 6.37300, 5.99400, 5.52700, 4.98900, 4.39600, 3.76200, 3.10200, 2.43100, 1.76400, 1.11900, 0.51800, 0.00000
14580 DATA 0.00000, 0.69492, 0.64047, 0.57135, 0.47592, 0.37661, 0.31487, 0.26803, 0.19373, 0.12405, 0.06345, 0.02030, -.01418, -.04246, -.06588, -.08522, -.10101, -.11359, -.12317, -.12985, -.13363, -.13440, -.13186, -.12541, -.11361, -.08941
14590 DATA 0.00000, 0.38900, 0.54600, 0.83200, 1.44800, 2.45800, 3.29300, 4.00800, 5.17200, 6.05200, 6.68500, 7.07200, 7.17500, 7.07400, 6.81600, 6.43300, 5.94900, 5.38300, 4.75300, 4.07600, 3.36800, 2.64500, 1.92400, 1.22400, 0.57000, 0.00000
14600 DATA 0.00000, 0.65536, 0.60524, 0.54158, 0.45399, 0.36344, 0.30780, 0.26621, 0.20246, 0.15068, 0.10278, 0.04833, -.00205, -.03710, -.06492, -.08746, -.10567, -.12014, -.13119, -.13901, -.14365, -.14500, -.14279, -.13638, -.12430, -.09907
14610 DATA 0.00000, 0.36600, 0.51400, 0.78400, 1.36700, 2.33000, 3.13100, 3.82400, 4.96800, 5.86200, 6.54600, 7.03900, 7.34300, 7.43900, 7.27500, 6.92900, 6.44900, 5.86400, 5.19900, 4.47500, 3.70900, 2.92200, 2.13200, 1.36100, 0.63600, 0.00000
14620 DATA 0.00000, 0.61759, 0.57105, 0.51210, 0.43106, 0.34764, 0.29671, 0.25892, 0.20185, 0.15682, 0.11733, 0.07988, 0.04136, -.00721, -.05321, -.08380, -.10734, -.12567, -.13962, -.14963, -.15589, -.15837, -.15683, -.15062, -.13816, -.11138
14630 DATA 0.00000, 0.34500, 0.48500, 0.73500, 1.29500, 2.20500, 2.97000, 3.63000, 4.74000, 5.62000, 6.31000, 6.84000, 7.21500, 7.43000, 7.49000, 7.35000, 6.96500, 6.40500, 5.72500, 4.95500, 4.13000, 3.26500, 2.39500, 1.53500, 0.72000, 0.00000
14640 DATA 0.00000, 0.58195, 0.53855, 0.48360, 0.40815, 0.33070, 0.28365, 0.24890, 0.19690, 0.15650, 0.12180, 0.09000, 0.05930, 0.02800, -.00630, -.05305, -.09765, -.12550, -.14570, -.16015, -.16960, -.17435, -.17415, -.16850, -.15565, -.12660
14650 DATA 0.00000, 0.32500, 0.45500, 0.69500, 1.22000, 2.08000, 2.80500, 3.43500, 4.49500, 5.34500, 6.03500, 6.57000, 6.96500, 7.23500, 7.37000, 7.37000, 7.22000, 6.88000, 6.27500, 5.50500, 4.63000, 3.69500, 2.72000, 1.75500, 0.82500, 0.00000
14660 DATA 0.00000, 0.54825, 0.50760, 0.45615, 0.38555, 0.31325, 0.26950, 0.23730, 0.18935, 0.15210, 0.12125, 0.09310, 0.06660, 0.04060, 0.01405, -.01435, -.04700, -.09470, -.14015, -.16595, -.18270, -.19225, -.19515, -.19095, -.17790, -.14550
14670 DATA 0.00000, 0.30500, 0.42500, 0.65500, 1.16000, 1.95500, 2.64500, 3.24000, 4.24500, 5.06000, 5.71500, 6.24000, 6.63500, 6.92500, 7.09500, 7.15500, 7.09000, 6.90000, 6.56500, 6.03000, 5.20500, 4.21500, 3.14000, 2.03500, 0.96500, 0.00000
14680 DATA 0.00000, 0.51620, 0.47795, 0.42960, 0.36325, 0.29545, 0.25450, 0.22445, 0.17995, 0.14595, 0.11740, 0.09200, 0.06840, 0.04570, 0.02315, 0.00000, -.02455, -.05185, -.08475, -.13650, -.18510, -.20855, -.21955, -.21960, -.20725, -.16985
14690 DATA 0.00000, 0.28700, 0.40400, 0.61600, 1.07700, 1.84100, 2.48300, 3.04300, 3.98500, 4.74800, 5.36700, 5.86300, 6.24800, 6.52800, 6.70900, 6.79000, 6.77000, 6.64400, 6.40500, 6.03700, 5.51400, 4.77100, 3.68300, 2.43500, 1.16300, 0.00000
14700 DATA 0.00000, 0.48535, 0.44925, 0.40359, 0.34104, 0.27718, 0.23868, 0.21050, 0.16892, 0.13734, 0.11101, 0.08775, 0.06634, 0.04601, 0.02613, 0.00620, -.01433, -.03611, -.06010, -.08790, -.12311, -.18412, -.23921, -.25583, -.24904, -.20385
14710 DATA 0.00000, 0.26900, 0.37900, 0.57700, 1.00800, 1.72000, 2.31600, 2.83500, 3.70700, 4.41000, 4.98000, 5.43500, 5.78700, 6.04500, 6.21200, 6.29000, 6.27900, 6.17800, 5.98100, 5.68100, 5.26500, 4.71400, 3.98700, 2.98400, 1.50300, 0.00000
14720 DATA 0.00000, 0.45482, 0.42064, 0.37740, 0.31821, 0.25786, 0.22153, 0.19500, 0.15595, 0.12644, 0.10196, 0.08047, 0.06084, 0.04234, 0.02447, 0.00678, -.01111, -.02965, -.04938, -.07103, -.09583, -.12605, -.16727, -.25204, -.31463, -.26086
14730 DATA 0.00000, 0.25000, 0.35000, 0.53500, 0.93000, 1.58000, 2.12000, 2.58500, 3.36500, 3.98000, 4.47500, 4.86000, 5.15000, 5.35500, 5.47500, 5.51500, 5.47500, 5.35500, 5.15000, 4.86000, 4.47500, 3.98000, 3.36500, 2.58500, 1.58000, 0.00000
14740 DATA 0.00000, 0.42120, 0.38875, 0.34770, 0.29155, 0.23430, 0.19995, 0.17485, 0.13805, 0.11030, 0.08745, 0.06745, 0.04925, 0.03225, 0.01595, 0.00000, -.01595, -.03225, -.04925, -.06745, -.08745, -.11030, -.13805, -.17485, -.23430, 0.00000
14750 'NACA 6A SERIES CAMBER LINES AND DERIVATIVES
14760 DATA 0.00000, 0.28100, 0.39600, 0.60300, 1.05500, 1.80300, 2.43200, 2.98100, 3.90300, 4.65100, 5.25700, 5.74200, 6.12000, 6.39400, 6.57100, 6.65100, 6.63100, 6.50800, 6.27400, 5.91300, 5.40100, 4.67300, 3.60700, 2.45200, 1.22600, 0.00000
14770 DATA 0.00000, 0.47539, 0.44004, 0.39531, 0.33404, 0.27149, 0.23378, 0.20618, 0.16546, 0.13452, 0.10873, 0.08595, 0.06498, 0.04507, 0.02559, 0.00607, -.01404, -.03537, -.05887, -.08610, -.12058, -.18034, -.23430, -.24521, -.24521, 0.00000
14780 '
14790 '-----------------------------------------------------------------
14800 'MONOTONE SPLINE SUBROUTINE
14810 'HOST MUST DIMENSION ENDSLP(2), DYDX(2)
14820 'IF ONLY ONE POINT IS IN SET, RETURN THAT VALUE
14830 IF N = 1 THEN
14840 XD = XI(1)
14850 YD = YI(1)
14860 GOTO 15420
14870 END IF
14880 'FIND POINTS IN SET THAT BOUND XD VIA BINARY SEARCH
14890 LOWLIM = 1: UPPLIM = N
14900 WHILE UPPLIM - LOWLIM > 1
14910 TSTLCN = (UPPLIM + LOWLIM) \ 2
14920 IF XI(TSTLCN) > XD THEN
14930 UPPLIM = TSTLCN
14940 ELSE
14950 LOWLIM = TSTLCN
14960 END IF
14970 IF XI(LOWLIM) = XD THEN YD = YI(LOWLIM): GOTO 15420
14980 WEND
14990 IF LOWLIM = N THEN LOWLIM = N - 1
15000 UPPLIM = LOWLIM + 1
15010 'CALC LINEAR INTERPOLANT
15020 LNSLP = (YI(UPPLIM) - YI(LOWLIM)) / (XI(UPPLIM) - XI(LOWLIM))
15030 YLINR = LNSLP * (XD - XI(LOWLIM)) + YI(LOWLIM)
15040 'CALC END SLOPES
15050 PTBFR = LOWLIM
15060 WHCHEND = 1
15070 FOR SGMN = 1 TO 2
15080 IF PTBFR > 1 AND PTBFR < N - 1 THEN
15090 PNT1 = PTBFR - 1
15100 ELSEIF PTBFR > N - 2 THEN
15110 PNT1 = N - 2
15120 ELSE
15130 PNT1 = 1
15140 WHCHEND = 0
15150 END IF
15160 PNT2 = PNT1 + 1
15170 PNT3 = PNT1 + 2
15180 DELTX1 = XI(PNT1) - XI(PNT2)
15190 DELTX2 = XI(PNT3) - XI(PNT2)
15200 DELTY1 = YI(PNT1) - YI(PNT2)
15210 DELTY2 = YI(PNT3) - YI(PNT2)
15220 KNST = (DELTY1 * DELTX2 / DELTX1 - DELTY2 * DELTX1 / DELTX2) / (DELTX2 - DELTX1)
15230 CFCNT = (DELTY1 / DELTX1 - DELTY2 / DELTX2) / (DELTX1 - DELTX2)
15240 ENDSLP(SGMN) = KNST - 2 * CFCNT * XI(PNT2) + 2 * CFCNT * XI(PTBFR)
15250 PTBFR = PTBFR + 1
15260 IF WHCHEND > 0 THEN PNT1 = PNT1 + 1
15270 NEXT SGMN
15280 'FIND DIST END SLOPES PUT POINT ABOVE LINEAR
15290 FOR SGMN = 1 TO 2
15300 PTBFR = LOWLIM + SGMN - 1
15310 DYDX(SGMN) = ENDSLP(SGMN) * (XD - XI(PTBFR)) + YI(PTBFR) - YLINR
15320 NEXT SGMN
15330 'TEST FOR ABOVE, BELOW OR ON LINEAR AND PRODUCE YD
15340 POSN = DYDX(1) * DYDX(2)
15350 IF POSN = 0 THEN
15360 YD = YLINR
15370 ELSEIF POSN > 0 THEN
15380 YD = YLINR + POSN / (DYDX(1) + DYDX(2))
15390 ELSE
15400 YD = YLINR + (POSN * (2 * XD - XI(LOWLIM) - XI(UPPLIM))) / ((DYDX(1) - DYDX(2)) * (XI(UPPLIM) - XI(LOWLIM)))
15410 END IF
15420 RETURN
15430 '-----------------------------------------------------------------
15440 ' TRANSITION AND ROUGHNESS SUMMARY
15450 PRINT
15460 PRINT " Available Transition Options"
15470 PRINT " 1) Transition At Laminar Separation"
15480 PRINT " 2) Fixed Transition"
15490 PRINT " 3) Natural Transtion"
15500 PRINT " 4) Transition With Roughness Factor"
15510 PRINT
15520 PRINT " Available Roughness Levels Are 0 To 6"
15530 PRINT " 0 = Clean Surface"
15540 PRINT " 2 = Dirty Surface"
15550 PRINT " 4 = Excessively Dirty Surface"
15560 PRINT " 6 = Severely Wavy Surface"
15570 PRINT
15580 RETURN
15590 '-----------------------------------------------------------------
15600 'SET INPUT LIMITS SUBROUTINE
15610 PRINT
15620 PRINT " Input Point Limits Are "
15630 PRINT " 1) Number Of Computational Points ="; NP
15640 PRINT " 2) Number Of Points On The Airfoil ="; MPTS
15650 PRINT
15660 INPUT " Input Limit To Be Changed (0=None)[0]"; LCH
15670 ON LCH + 1 GOTO 15750, 15690, 15720
15680 GOTO 15660
15690 PRINT
15700 INPUT " Enter New Number Of Computational Points"; NP
15710 GOTO 15650
15720 PRINT
15730 INPUT " Enter New Limit On Number Of Points On The Airfoil ="; MPTS
15740 GOTO 15650
15750 CLS : PRINT
15760 RETURN