10 REM MCDRAG, BY R. L. MCCOY. 20 REM DEC. 1974 DRAG COEFFICIENT ESTIMATE FOR AN AXISYMMETRIC PROJECTILE. 30 REM INPUT QUANTITIES ARE REFERENCE DIAMETER (MM), TOTAL LENGTH (CAL), 40 REM NOSE LENGTH (CAL), RATIO OF TANGENT RADIUS TO ACTUAL NOSE RADIUS (RT/R), 50 REM BOATTAIL LENGTH (CAL), BASE DIAMTER (CAL), MEPLAT DIAMTER (CAL), 60 REM ROTATING BAND DIAMTER (CAL), OPTIONAL CENTER OF GRAVITY (CAL, NOSE), 70 REM AND BOUNDARY LAYER CODE (L/L, L/T, OR T/T), FOLLOWED BY PROJECTILE 80 REM IDENTIFICATION INFORMATION. 90 REM 100 CLS 110 KEY OFF 120 COLOR 7, 1, 8: CLS 130 KEY ON 140 DIM M(26), C1(26), C2(26), C3(26), C4(26), C5(26), C6(26), P1(26) 150 CLS 160 PRINT "ENTER THE MCDRAG INPUTS, ONE QUANTITY AT A TIME." 170 PRINT 180 DATA .5,.6,.7,.8,.85,.9,.925,.95,.975,1.,1.1,1.2,1.3 190 DATA 1.4,1.5,1.6,1.7,1.8,2.,2.2,2.5,3.,3.5,4.,4.5,5. 200 PRINT "ENTER PROJECTILE REFERENCE DIAMTER (MM):"; 210 INPUT D1 220 PRINT 230 PRINT "ENTER TOTAL PROJECTILE LENGTH (CALIBERS):"; 240 INPUT L1 250 PRINT 260 PRINT "ENTER NOSE LENGTH (CALIBERS):"; 270 INPUT L2 280 PRINT 290 PRINT "ENTER RT/R (HEADSHAPE PARAMETER):"; 300 INPUT R1 310 PRINT 320 PRINT "ENTER BOATTAIL LENGTH (CALIBERS):"; 330 INPUT L3 340 PRINT 350 PRINT "ENTER BASE DIAMTER (CALIBERS):"; 360 INPUT D2 370 PRINT 380 PRINT "ENTER MEPLAT DIAMETER (CALIBERS):"; 390 INPUT D3 400 PRINT 410 PRINT "ENTER ROTATING BAND DIAMTER (CALIBERS):"; 420 INPUT D4 430 PRINT 440 PRINT "[NOTE: CENTER OF GRAVITY LOCATION IS OPTIONAL; IF UNKNOWN, ENTER 0]" 450 PRINT 460 PRINT "ENTER CENTER OF GRAVITY LOCATION (CALIBERS FROM NOSE):"; 470 INPUT X1 480 PRINT 490 PRINT "FOR ALL LAMINAR BOUNDARY LAYER, CODE = L/L" 500 PRINT "FOR LAMINAR NOSE, TURBULENT AFTERBODY, CODE = L/T" 510 PRINT "FOR ALL TURBULENT BOUNDARY LAYER, CODE = T/T" 520 PRINT 530 PRINT "ENTER THE BOUNDARY LAYER CODE (L/L, L/T, OR T/T):"; 540 INPUT K$ 550 IF K$ = "L/L" THEN 600 560 IF K$ = "L/T" THEN 600 570 IF K$ = "T/T" THEN 600 580 PRINT "INCORRECT BOUNDARY LAYER CODE. PLEASE TRY AGAIN." 590 GOTO 520 600 PRINT 610 PRINT "ENTER PROJECTILE IDENTIFICATION:"; 620 INPUT K1$ 630 CLS 640 PRINT "MCDRAG, DECEMBER 1974, R. L. MCCOY" 650 PRINT 660 PRINT "PROJECTILE IDENTIFICATION: "; K1$ 670 PRINT 680 PRINT TAB(2); "REF."; TAB(9); "TOTAL"; TAB(18); "NOSE"; TAB(25); "RT/R"; TAB(30); "BOATTAIL"; TAB(39); "BASE"; TAB(45); "MEPLAT"; TAB(52); "BAND"; TAB(59); "XCG"; TAB(64); "BOUND." 690 PRINT TAB(2); "DIA."; TAB(9); "LENGTH"; TAB(17); "LENGTH"; TAB(31); "LENGTH"; TAB(39); "DIA."; TAB(46); "DIA."; TAB(52); "DIA."; TAB(59); "NOSE"; TAB(64); "LAYER" 700 PRINT TAB(2); "(MM)"; TAB(9); "(CAL)"; TAB(17); "(CAL)"; TAB(31); "(CAL)"; TAB(39); "(CAL)"; TAB(46); "(CAL)"; TAB(52); "(CAL)"; TAB(58); "(CAL)"; TAB(65); "CODE" 710 PRINT 720 FOR I = 1 TO 26 730 READ M(I) 740 T1 = (1 - D3) / L2 750 M2 = M(I) ^ 2 760 R2 = 23296.3 * M(I) * L1 * D1 770 R3 = .4343 * (LOG(R2)) 780 C7 = (1.328 / (SQR(R2))) * ((1 + .12 * M2) ^ (-.12)) 790 C8 = (.455 / (R3 ^ 2.58)) * ((1 + .21 * M2) ^ (-.32)) 800 D5 = 1 + ((.333 + (.02 / (L2 ^ 2))) * R1) 810 S1 = 1.5708 * L2 * D5 * (1 + (1 / (8 * L2 ^ 2))) 820 S2 = 3.1416 * (L1 - L2) 830 S3 = S1 + S2 840 IF K$ = "L/L" THEN 870 850 IF K$ = "L/T" THEN 900 860 IF K$ = "T/T" THEN 930 870 C9 = 1.2732 * S3 * C7 880 C10 = C9 890 GOTO 950 900 C9 = 1.2732 * S3 * C7 910 C10 = 1.2732 * S3 * C8 920 GOTO 950 930 C9 = 1.2732 * S3 * C8 940 C10 = C9 950 C3(I) = (C9 * S1 + C10 * S2) / S3 960 C15 = (M2 - 1) / (2.4 * M2) 970 IF M(I) <= 1 THEN 990 980 IF M(I) > 1 THEN 1010 990 P5 = (1 + .2 * M2) ^ 3.5 1000 GOTO 1020 1010 P5 = ((1.2 * M2) ^ 3.5) * ((6 / (7 * M2 - 1)) ^ 2.5) 1020 C16 = (1.122 * (P5 - 1) * D3 ^ 2) / M2 1030 IF M(I) <= .91 THEN 1070 1040 IF M(I) >= 1.41 THEN 1090 1050 C18 = (.254 + 2.88 * C15) * C16 1060 GOTO 1100 1070 C18 = 0 1080 GOTO 1100 1090 C18 = .85 * C16 1100 IF M(I) < 1 THEN 1120 1110 IF M(I) >= 1 THEN 1140 1120 P2 = 1 / (1 + .1875 * M2 + .0531 * M2 ^ 2) 1130 GOTO 1150 1140 P2 = 1 / (1 + .2477 * M2 + .0345 * M2 ^ 2) 1150 P4 = (1 + 9.000001E-02 * M2 * (1 - EXP(L2 - L1))) * (1 + .25 * M2 * (1 - D2)) 1160 P1(I) = P2 * P4 1170 IF P1(I) >= 0 THEN 1190 1180 P1(I) = 0 1190 C6(I) = (1.4286 * (1 - P1(I)) * (D2 ^ 2)) / M2 1200 IF M(I) < .95 THEN 1220 1210 IF M(I) >= .95 THEN 1240 1220 C4(I) = (M(I) ^ 12.5) * (D4 - 1) 1230 GOTO 1260 1240 C4(I) = (.21 + .28 / M2) * (D4 - 1) 1250 REM SUBSONIC AND TRANSONIC SPEEDS 1260 IF M(I) > 1 THEN 1460 1270 IF L3 <= 0 THEN 1290 1280 IF L3 > 0 THEN 1310 1290 C5(I) = 0 1300 GOTO 1370 1310 IF M(I) <= .85 THEN 1290 1320 T2 = (1 - D2) / (2 * L3) 1330 T3 = 2 * T2 ^ 2 + T2 ^ 3 1340 E1 = EXP((-2) * L3) 1350 B4 = 1 - E1 + 2 * T2 * ((E1 * (L3 + .5)) - .5) 1360 C5(I) = 2 * T3 * B4 * (1 / (.564 + 1250 * C15 ^ 2)) 1370 X2 = (1 + .552 * (T1 ^ .8)) ^ (-.5) 1380 IF M(I) <= X2 THEN 1400 1390 IF M(I) > X2 THEN 1420 1400 C17 = 0 1410 GOTO 1430 1420 C17 = .368 * (T1 ^ 1.8) + 1.6 * T1 * C15 1430 C2(I) = C17 + C18 1440 GOTO 1810 1450 REM SUPERSONIC SPEEDS 1460 B2 = M2 - 1 1470 B = SQR(B2) 1480 Z = B 1490 S4 = 1 + .368 * (T1 ^ 1.85) 1500 IF M(I) >= S4 THEN 1520 1510 Z = SQR(S4 ^ 2 - 1) 1520 C11 = .7156 - .5313 * R1 + .595 * R1 ^ 2 1530 C12 = .0796 + .0779 * R1 1540 C13 = 1.587 + .049 * R1 1550 C14 = .1122 + .1658 * R1 1560 R4 = 1 / (Z ^ 2) 1570 C17 = (C11 - C12 * (T1 ^ 2)) * R4 * ((T1 * Z) ^ (C13 + C14 * T1)) 1580 C2(I) = C17 + C18 1590 IF L3 <= 0 THEN 1610 1600 IF L3 > 0 THEN 1630 1610 C5(I) = 0 1620 GOTO 1810 1630 T2 = (1 - D2) / (2 * L3) 1640 IF M(I) <= 1.1 THEN 1660 1650 IF M(I) > 1.1 THEN 1710 1660 T3 = 2 * T2 ^ 2 + T2 ^ 3 1670 E1 = EXP((-2) * L3) 1680 B4 = 1 - E1 + 2 * T2 * ((E1 * (L3 + .5)) - .5) 1690 C5(I) = 2 * T3 * B4 * (1.774 - 9.3 * C15) 1700 GOTO 1810 1710 B3 = .85 / B 1720 A12 = (5 * T1) / (6 * B) + (.5 * T1) ^ 2 - (.7435 / M2) * ((T1 * M(I)) ^ 1.6) 1730 A11 = (1 - ((.6 * R1) / M(I))) * A12 1740 E2 = EXP(((-1.1952) / M(I)) * (L1 - L2 - L3)) 1750 X3 = ((2.4 * M2 ^ 2 - 4 * B2) * (T2 ^ 2)) / (2 * B2 ^ 2) 1760 A1 = A11 * E2 - X3 + ((2 * T2) / B) 1770 R5 = 1 / B3 1780 E3 = EXP((-B3) * L3) 1790 A2 = 1 - E3 + (2 * T2 * (E3 * (L3 + R5) - R5)) 1800 C5(I) = 4 * A1 * T2 * A2 * R5 1810 C1(I) = C2(I) + C3(I) + C4(I) + C5(I) + C6(I) 1820 NEXT I 1830 RESTORE 1840 U1$ = "###.## ###.## ##.### #.### #.### #.### .### #.### ##.## \ \" 1850 PRINT USING U1$; D1; L1; L2; R1; L3; D2; D3; D4; X1; K$ 1860 PRINT 1870 PRINT 1880 PRINT TAB(3); "M"; TAB(9); "CD0"; TAB(16); "CDH"; TAB(23); "CDSF"; TAB(29); "CDBND"; TAB(37); "CDBT"; TAB(44); "CDB"; TAB(50); "PB/PINF" 1890 PRINT 1900 U$ = "#.### #.### #.### #.### #.### #.### #.### #.###" 1910 FOR I = 1 TO 26 1920 PRINT USING U$; M(I); C1(I); C2(I); C3(I); C4(I); C5(I); C6(I); P1(I) 1930 NEXT I 1940 REM PRINT DIAGNOSTIC MESSAGES, IF ANY. 1950 PRINT 1960 PRINT 1970 IF L2 >= 1 THEN 1990 1980 PRINT "NOSE TOO SHORT. CDH IS TOO HIGH AT TRANSONIC AND SUPERSONIC SPEEDS." 1990 IF D3 <= .5 THEN 2010 2000 PRINT "NOSE TOO BLUNT. CDH IS TOO HIGH AT TRANSONIC AND SUPERSONIC SPEEDS." 2010 IF L3 < 1.5 THEN 2030 2020 PRINT "BOATTAIL TOO LONG. CDBT AND CDB MAY BE INCORRECT." 2030 IF D2 >= .65 THEN 2060 2040 PRINT "BOATTAIL TOO STEEP. CDBT AND CDB MAY BE INCORRECT." 2050 GOTO 2080 2060 IF D2 <= 1.35 THEN 2080 2070 PRINT "CONICAL FLARE TAIL TOO STEEP. CDBT AND CDB MAY BE INCORRECT." 2080 PRINT 2090 REM CHECK FOR HARD COPY AND NEXT CASE. 2100 PRINT 2110 PRINT "COPY THIS? (ENTER Y FOR YES, N FOR NO):"; 2120 INPUT K2$ 2130 IF K2$ = "N" THEN 2510 2140 IF K2$ = "Y" THEN 2170 2150 PRINT "INCORRECT RESPONSE. PLEASE TRY AGAIN." 2160 GOTO 2100 2170 REM PRINT HARDCOPY OF MCDRAG OUTPUT. 2180 LPRINT 2190 LPRINT "MCDRAG, DECEMBER 1974, R. L. MCCOY" 2200 LPRINT 2210 LPRINT "PROJECTILE IDENTIFICATION: "; K1$ 2220 LPRINT 2230 LPRINT TAB(2); "REF."; TAB(9); "TOTAL"; TAB(18); "NOSE"; TAB(25); "RT/R"; TAB(30); "BOATTAIL"; TAB(39); "BASE"; TAB(45); "MEPLAT"; TAB(52); "BAND"; TAB(59); "XCG"; TAB(64); "BOUND." 2240 LPRINT TAB(2); "DIA."; TAB(9); "LENGTH"; TAB(17); "LENGTH"; TAB(31); "LENGTH"; TAB(39); "DIA."; TAB(46); "DIA."; TAB(52); "DIA."; TAB(59); "NOSE"; TAB(64); "LAYER" 2250 LPRINT TAB(2); "(MM)"; TAB(9); "(CAL)"; TAB(17); "(CAL)"; TAB(31); "(CAL)"; TAB(39); "(CAL)"; TAB(46); "(CAL)"; TAB(52); "(CAL)"; TAB(58); "(CAL)"; TAB(65); "CODE" 2260 LPRINT 2270 LPRINT USING U1$; D1; L1; L2; R1; L3; D2; D3; D4; X1; K$ 2280 LPRINT 2290 LPRINT 2300 LPRINT TAB(3); "M"; TAB(9); "CD0"; TAB(16); "CDH"; TAB(23); "CDSF"; TAB(29); "CDBND"; TAB(37); "CDBT"; TAB(44); "CDB"; TAB(50); "PB/PINF" 2310 LPRINT 2320 FOR I = 1 TO 26 2330 LPRINT USING U$; M(I); C1(I); C2(I); C3(I); C4(I); C5(I); C6(I); P1(I) 2340 NEXT I 2350 LPRINT 2360 REM HARDCOPY ANY DIAGNOSTIC MESSAGES 2370 LPRINT 2380 IF L2 >= 1 THEN 2400 2390 LPRINT "NOSE TOO SHORT. CDH IS TOO HIGH AT TRANSONIC AND SUPERSONIC SPEEDS." 2400 IF D3 <= .5 THEN 2420 2410 LPRINT "NOSE TOO BLUNT. CDH IS TOO HIGH AT TRANSONIC AND SUPERSONIC SPEEDS." 2420 IF L3 < 1.5 THEN 2440 2430 LPRINT "BOATTAIL TOO LONG. CDBT AND CDB MAY BE INCORRECT." 2440 IF D2 >= .65 THEN 2470 2450 LPRINT "BOATTAIL TOO STEEP. CDBT AND CDB MAY BE INCORRECT." 2460 GOTO 2490 2470 IF D2 <= 1.35 THEN 2490 2480 LPRINT "CONICAL FLARE TAIL TOO STEEP. CDBT AND CDB MAY BE INCORRECT." 2490 LPRINT 2500 REM CHECK FOR ANOTHER CASE 2510 PRINT 2520 PRINT "RUN ANOTHER CASE?" 2530 PRINT "ENTER Y FOR YES, N FOR NO:"; 2540 INPUT K3$ 2550 IF K3$ = "N" THEN 2590 2560 IF K3$ = "Y" THEN 150 2570 PRINT "INCORRECT RESPONSE. PLEASE TRY AGAIN" 2580 GOTO 2510 2590 END