10 REM [PROGRAM INTLIFT.BAS, EDITED FOR TANDY 1000 HX (JULY 1990)] 20 REM THIS PROGRAM IS A MODIFIED VERSION OF M. A. MORRIS' RARDLIFT 30 REM CODE, WITH CORRECTIONS FOR SMALL ARMS BULLETS AND MEDIUM 40 REM CALIBER CANNON PROJECTILES. 50 CLS 60 KEY OFF 70 COLOR 7, 1, 8: CLS 80 KEY ON 90 REM 95 DEFDBL A-H, J-Z 100 REM INTERIM ESTIMATES OF LIFT, OVERTURNING MOMENT 110 REM AND YAW DRAG COEFFICIENTS FOR SMALL ARMS 120 REM PROJECTILES. THE PROGRAM INPUT FOLLOWS THE 130 REM MCDRAG FORMAT, BUT REQUIRES A CORRECT 140 REM VALUE FOR CENTER OF GRAVITY LOCATION. 150 REM 160 REM STANDARD DEVIATIONS OF THE CLA AND CMA 170 REM ESTIMATES ARE 10 PERCENT, AT ALL SPEEDS. 180 REM THE STANDARD DEVIATION IN CDA2 IS 25 PERCENT. 190 REM LARGER ERRORS WILL RESULT FOR PROJECTILE 200 REM TOTAL LENGTHS EXCEEDING 7 CALIBERS, AND FOR 210 REM NOSE LENGTHS SHORTER THAN 1.5 CALIBERS. 220 REM 230 DIM M(20), Z(20), C3(20), C7(20), C8(20) 240 REM J=NUMBER OF DECIMAL PLACES IN OUTPUT. 250 J = 2 260 DATA .5,.6,.7,.8 270 DATA .9,.95,1.0,1.1 280 DATA 1.2,1.4,1.6,1.8 290 DATA 2.0,2.2,2.5,3.0 300 FOR I = 1 TO 16 310 READ M(I) 320 NEXT I 330 RESTORE 340 REM 350 REM INPUT PROJECTILE DIMENSIONS. 360 REM 370 MAXI = 0 380 PRINT 390 PRINT 400 E1 = 0 410 E2 = 0 420 PRINT "ENTER REFERENCE DIAMETER (MM) "; 430 INPUT D 440 PRINT 450 PRINT "ENTER TOTAL LENGTH (CALIBERS) "; 460 INPUT L3 470 IF L3 <= 7 THEN 490 480 E1 = 1 490 PRINT 500 PRINT "ENTER NOSE LENGTH (CALIBERS) "; 510 INPUT L1 520 IF L1 >= 1.5 THEN 540 530 E2 = 1 540 PRINT 550 PRINT "ENTER HEADSHAPE PARAMETER (RT/R) "; 560 INPUT S3 570 PRINT 580 PRINT "ENTER BOATTAIL LENGTH (CALIBERS) "; 590 INPUT L2 600 PRINT 610 PRINT "ENTER BASE DIAMETER (CALIBERS) "; 620 INPUT F1 630 PRINT 640 PRINT "ENTER MEPLAT DIAMETER (CALIBERS) "; 650 INPUT F2 660 PRINT 670 PRINT "ENTER CENTER OF GRAVITY (CALIBERS FROM NOSE) "; 680 INPUT G1 690 PRINT 700 PRINT "ENTER PROJECTILE IDENTIFICATION "; 710 INPUT K$ 720 PRINT 730 REM ECHO INPUT DATA 740 CLS 750 PRINT "* * * INTERIM PROGRAM FOR CLA, CMA, AND CDA2 * * *" 760 PRINT 770 PRINT "PROJECTILE IDENTIFICATION: "; K$ 780 PRINT 790 PRINT "DREF", "LT", "LN", "RT/R" 800 PRINT "(MM)", "(CAL)", "(CAL)" 810 PRINT D, L3, L1, S3 820 PRINT 830 PRINT "LBT", "DB", "DM", "CGN" 840 PRINT "(CAL)", "(CAL)", "(CAL)", "(CAL,NOSE)" 850 PRINT L2, F1, F2, G1 860 PRINT 870 PRINT "MACH", "CLA", "CMA", "CDA2" 880 PD = D 890 PL3 = L3 900 PL1 = L1 910 PS3 = S3 920 PL2 = L2 930 PF1 = F1 940 PF2 = F2 950 PG1 = G1 960 REM 970 REM CONVERT MCDRAG UNITS TO PROGRAM UNITS. 980 REM 990 D = D / 1000 1000 L3 = L3 - L1 1010 F1 = F1 * D 1020 F2 = F2 * D 1030 REM 1040 REM SET UP NOSE SHAPE PARAMETERS. 1050 REM 1060 IF S3 < .1 THEN 1120 1070 IF S3 > .8 THEN 1100 1080 N = 1 1090 GOTO 1130 1100 N = 2 1110 GOTO 1130 1120 N = 3 1130 L10 = L1 1140 T1 = (L10 ^ 2 + ((1 - F2 / D) / 2) ^ 2) / (1 - F2 / D) 1150 IF N = 3 THEN 1190 1160 L1 = SQR(T1 - .25) 1170 IF N = 1 THEN 1210 1180 GOTO 1230 1190 L1 = (D / (D - F2)) * L10 1200 GOTO 1230 1210 L11 = (D / (D - F2)) * L10 1220 L1 = (L1 + L11) / 2 1230 F3 = L1 - L10 1240 G1 = G1 + F3 1250 D1 = F1 / D 1260 REM 1270 REM CALCULATION OF BODY LIFT 1280 REM WITH NO BOATTAIL. 1290 REM 1300 FOR I = 1 TO 16 1310 IF M(I) < .951 THEN 1350 1320 B = (M(I) * M(I) - 1) ^ .5 1330 B1 = (M(I) * M(I) - .9025) ^ .5 1340 GOTO 1370 1350 B = (1 - M(I) * M(I)) ^ .5 1354 IF M(I) = .95 THEN B1 = 0 1356 GOTO 1370 1360 B1 = (.9025 - M(I) * M(I)) ^ .5 1370 IF M(I) > 1.19 THEN 1500 1380 A = M(I) * M(I) / L1 1390 IF A > .4 THEN 1480 1400 IF A > .35 THEN 1460 1410 IF A > .25 THEN 1440 1420 C1 = .856 * A - .044 * L3 + 1.963 1430 GOTO 1510 1440 C1 = (.43 * A - .1515) * L3 + 2.202 - .1 * A 1450 GOTO 1510 1460 C1 = (.104 - .3 * A) * L3 + .573 * A + 1.9665 1470 GOTO 1510 1480 C1 = (.12 * A - .064) * L3 - .227 * A + 2.2865 1490 GOTO 1510 1500 C1 = 1.974 + .921 * B / L1 1510 IF M(I) > .951 THEN 1620 1520 REM 1530 REM SUBSONIC LIFT LOSS DUE TO THE 1540 REM PRESENCE OF A BOATTAIL. 1550 REM 1560 IF L2 < .48 THEN 1610 1570 C2 = B1 * (3.115 + 15.083 * L2 * L2 - 21.106 * L2) 1580 C2 = C2 + 71.14601 * L2 - 47.3 * L2 * L2 - 18.303 1590 C2 = C2 * D1 ^ .75 * (1 - D1 ^ .75) 1600 GOTO 1750 1610 IF B1 = 0 THEN 1680 1620 IF L2 / B1 > 3 THEN 1680 1630 REM 1640 REM SUPERSONIC BOATTAIL LIFT LOSS. 1650 REM 1660 C2 = (1 - D1 ^ 2) * (2 - (3 - L2 / B1) ^ 3.2439 / 17.649) 1670 GOTO 1690 1680 C2 = (1 - D1 ^ 2) * 2 1690 IF M(I) < .951 THEN 1750 1700 IF M(I) > 2 THEN 1750 1710 IF M(I) > 1.4 THEN 1740 1720 C2 = C2 * (.5 * M(I) + .41) 1730 GOTO 1750 1740 C2 = C2 * (1.3662 - .1833 * M(I)) 1750 IF M(I) < 1.01 THEN 1820 1760 L4 = .34 + .25 / B 1770 IF L2 < L4 THEN 1820 1780 C2 = C2 * (1 - (1 - (1 - D1) * L4 / L2) ^ 2) / (1 - D1 ^ 2) 1790 REM 1800 REM TOTAL LIFT. 1810 REM 1820 C3(I) = C1 - C2 1830 REM 1840 REM CALCULATION OF PITCHING MOMENT 1850 REM ABOUT NOSE DUE TO BODY AND NOSE. 1860 REM 1870 IF M(I) < 1.01 THEN 1960 1880 IF B < .6 THEN 1940 1890 IF B < 1 THEN 1920 1900 C4 = (.82 - .15 * B) * L1 + 1.7 * B + .3 1910 GOTO 2070 1920 C4 = (2.045 - 1.375 * B) * L1 + 4.575 * B - 2.575 1930 GOTO 2070 1940 C4 = (.166 * B + 1.12) * L1 + .05 * B + .14 1950 GOTO 2070 1960 IF B > .65 THEN 2020 1970 IF B > .3 THEN 2000 1980 C4 = (1.12 - .233 * B) * L1 + 1.1 * B + .14 1990 GOTO 2070 2000 C4 = (1.304 - .846 * B) * L1 + 2.286 * B - .216 2010 GOTO 2070 2020 C4 = (1.304 - .846 * B) * L1 + .5 * B + .945 2030 REM 2040 REM CORRECTION TO PITCHING MOMENT 2050 REM FOR DIFFERENT NOSE SHAPES. 2060 REM 2070 IF N = 1 THEN 2150 2080 IF N = 2 THEN 2110 2090 C4 = .667 * C4 / .557 2100 GOTO 2150 2110 C4 = .456 * C4 / .557 2120 REM 2130 REM BOATTAIL LIFT CENTER FROM NOSE. 2140 REM 2150 IF M(I) = 1 THEN 2180 2160 X1 = (.66 - .041 * L2 / B) * L2 2170 GOTO 2190 2180 X1 = L2 / 2 2190 X1 = X1 + L1 + L3 - L2 2200 REM 2210 REM BOATTAIL MOMENT ABOUT NOSE. 2220 REM 2230 C5 = X1 * C2 2240 REM 2250 REM TOTAL MOMENT ABOUT NOSE. 2260 REM 2270 C6 = C4 - C5 2280 REM 2290 REM OVERALL LIFT CENTER AFT OF NOSE. 2300 REM 2310 X2 = C6 / C3(I) 2320 X3 = G1 - X2 2330 Z(I) = X2 2340 REM 2350 REM MOMENT ABOUT GENTER OF GRAVITY. 2360 REM 2370 C7(I) = C3(I) * X3 2380 REM 2390 REM CORRECTIONS TO CMA. 2400 IF M(I) <= .95 THEN 2440 2410 IF M(I) = 1! THEN 2460 2420 U7 = .82 2430 GOTO 2470 2440 U7 = .73 + .163 * M(I) 2450 GOTO 2470 2460 U7 = .84 2470 C7(I) = U7 * C7(I) 2480 REM 2490 REM BODY ASPECT RATIO. 2500 REM 2510 A1 = 1 / (L1 / 2 + L3 - L2 + L2 * (1 + D1) / 2) 2520 IF M(I) > 1.3 THEN 2640 2530 IF M(I) > 1 THEN 2620 2540 IF M(I) > .8 THEN 2600 2550 REM 2560 REM CALCULATION OF YAW DRAG. 2570 REM 2580 C8(I) = 1.476 + .467 * M(I) + 8.649999E-02 * C3(I) * C3(I) / A1 2590 GOTO 2650 2600 C8(I) = 1.85 + (.3825 * M(I) - .2195) * C3(I) * C3(I) / A1 2610 GOTO 2650 2620 C8(I) = 9.467 * M(I) - 7.617 + (.606 - .443 * M(I)) * C3(I) * C3(I) / A1 2630 GOTO 2650 2640 C8(I) = 9.825 - 3.95 * M(I) + (.1458 * M(I) - .1594) * C3(I) * C3(I) / A1 2650 IF M(I) > 2 THEN 2720 2660 IF M(I) > 1.25 THEN 2700 2670 IF M(I) < 1 THEN 2730 2680 C8(I) = C8(I) * (1.2 - .2 * M(I)) 2690 GOTO 2730 2700 C8(I) = C8(I) * (.133 * M(I) + .784) 2710 GOTO 2730 2720 C8(I) = C8(I) * (1.41 - .18 * M(I)) 2730 IF M(I) > .95 THEN 2830 2740 IF M(I) > .9 THEN 2780 2750 IF M(I) < .8 THEN 2830 2760 C8(I) = C8(I) * (1.8 - M(I)) 2770 GOTO 2830 2780 C8(I) = C8(I) * (2 * M(I) - .9) 2790 REM 2800 REM PRINT RESULTS. 2810 REM 2820 REM CORRECTIONS TO CDA2. 2830 U8 = 1.33 2840 C8(I) = U8 * C8(I) 2850 REM 2860 REM CORRECTIONS TO CLA. 2870 IF M(I) <= 1! THEN 2910 2880 IF M(I) = 1.1 THEN 2930 2890 U1 = 1.09 - .057 * M(I) 2900 GOTO 2940 2910 U1 = .96 + .038 * M(I) 2920 GOTO 2940 2930 U1 = 1! 2940 IF L3 >= 1.5 THEN 2960 2950 U1 = U1 - .12 * (1.5 - L3) ^ 2 2960 IF M(I) <= .95 THEN 2980 2970 IF M(I) >= 1 THEN 3000 2980 U2 = (.22 * M(I) ^ 2) / (SQR(1 - M(I) ^ 2)) 2990 GOTO 3010 3000 U2 = .431 / M(I) - .1 3010 U3 = U1 + U2 * (L2 / D1) ^ 2 3020 C3(I) = U3 * C3(I) 3030 REM 3040 C3(I) = INT((10 ^ J) * C3(I) + .5) / (10 ^ J) 3050 C7(I) = INT((10 ^ J) * C7(I) + .5) / (10 ^ J) 3060 C8(I) = INT((10 ^ J) * C8(I) + .5) / (10 ^ J) 3070 PRINT M(I), C3(I), C7(I), C8(I) 3080 MAXI = MAXI + 1 3090 NEXT I 3100 PRINT 3110 PRINT 3120 IF E1 <> 0 THEN PRINT "PROJECTILE TOO LONG FOR ACCURATE ESTIMATES." 3130 IF E2 <> 0 THEN PRINT "NOSE LENGTH TOO SHORT FOR ACCURATE ESTIMATES." 3140 PRINT 3150 PRINT "COPY THIS OUTPUT?" 3160 PRINT "ENTER Y FOR YES, N FOR NO:"; 3170 INPUT ANS$ 3180 IF ANS$ = "N" THEN 3460 3190 IF ANS$ = "Y" THEN 3240 3200 GOTO 3140 3210 REM 3220 REM PRINT HARD COPY 3230 REM 3240 LPRINT 3250 LPRINT "* * * INTERIM PROGRAM FOR CLA, CMA, AND CDA2 * * *" 3260 LPRINT 3270 LPRINT "PROJECTILE IDENTIFICATION: "; K$ 3280 LPRINT 3290 LPRINT "DREF", "LT", "LN", "RT/R" 3300 LPRINT "(MM)", "(CAL)", "(CAL)" 3310 LPRINT PD, PL3, PL1, PS3 3320 LPRINT 3330 LPRINT "LBT", "DB", "DM", "CGN" 3340 LPRINT "(CAL)", "(CAL)", "(CAL)", "(CAL,NOSE)" 3350 LPRINT PL2, PF1, PF2, PG1 3360 LPRINT 3370 LPRINT "MACH", "CLA", "CMA", "CDA2" 3380 FOR I = 1 TO MAXI 3390 LPRINT M(I), C3(I), C7(I), C8(I) 3400 NEXT I 3410 LPRINT 3420 LPRINT 3430 IF E1 <> 0 THEN LPRINT "PROJECTILE TOO LONG FOR ACCURATE ESTIMATES" 3440 IF E2 <> 0 THEN LPRINT "NOSE LENGTH TOO SHORT FOR ACCURATE ESTIMATES" 3450 LPRINT 3460 REM 3470 REM CHECK FOR ANOTHER CASE. 3480 REM 3490 PRINT 3500 PRINT 3510 PRINT "DO YOU WANT TO RUN ANOTHER CASE?" 3520 PRINT "ENTER Y FOR YES, N FOR NO:"; 3530 INPUT K1$ 3540 IF K1$ = "Y" THEN 370 3550 IF K1$ = "N" THEN 3570 3560 GOTO 3500 3570 END