1 REM AC-SIZE (Aircraft Sizing) Copyright C 1999 by Daniel P. Raymer 2 REM Feel free to distribute and modify this code, but ANY use for ANY 3 REM commercial purpose is strictly forbidden !!! 4 REM This simple aircraft sizing program is written in standard BASIC 5 REM 6 REM Based on the methods of chapters 3 and 6 in 7 REM `AIRCRAFT DESIGN: A CONCEPTUAL APPROACH' 8 REM by Daniel P. Raymer 9 REM Published by AIAA 800 682 2422 10 REM 20 REM AIRCRAFT SIZING PROGRAM 30 REM by 40 REM DANIEL P. RAYMER 60 REM 90 REM Disclaimer - The author assumes no responsibility in any form 91 REM for the use of this software, errors herein, or any imaginable 92 REM damages resulting from its usage. It is for fun and education. 93 REM Do not use it to design real airplanes! 94 REM 97 REM *** WMS ARE MISSION SEGMENT WEIGHT FRACTIONS OR WEIGHT DROPS 98 REM *** MT ARE MISSION TYPE NUMBERS 100 DIM WMS(50),MT(50) 110 DEFINT I,M,J 120 DEF FNLD(RHO,V,CD0,K,WS)=1/(.5*RHO*V^2*CD0/WS+K*WS/(.5*RHO*V^2)) 130 DEF FNLDN(R,V,CD0,K,WS,NG)=1/(.5*R*V^2*CD0/(NG*WS)+K*NG*WS/(.5*R*V^2)) 140 REM 150 COLOR 15,1,1 170 KEY OFF 220 GOTO 610 230 REM 240 REM ICAO STANDARD ATMOSPHERE SUBROUTINE 290 IF (HFT>= 36089!) GOTO 340 300 TMB=518.688 310 ALM=-3.56616E-03 320 PB=2116.21695# 330 GOTO 460 340 IF (HFT>=82021!) THEN PRINT "TOO HIGH" 350 TMB=389.998 360 ALM=0! 370 HB=36089! 380 PB=472.679 390 GOTO 460 460 TR=TMB+ALM*(HFT-HB) 470 QA=.018744 480 IF (ALM=0!) GOTO 510 490 P=PB*((TMB/TR)^(QA/ALM)) 500 GOTO 520 510 P=PB*EXP(-QA*(HFT-HB)/TMB) 520 RHO=5.8259E-04*P/TR 530 RHO=RHO 540 AFPS=49.021177#*SQR(TR) 550 RETURN 610 CLS 611 PRINT " AC-SIZE: An Aircraft Sizing Program" 612 PRINT 613 PRINT " Copyright C 1999 by Daniel P. Raymer All Rights Reserved" 614 PRINT " Based on the methods of chapters 3 and 6 in" 615 PRINT 616 PRINT " `AIRCRAFT DESIGN: A CONCEPTUAL APPROACH'" 617 PRINT " by Daniel P. Raymer" 618 PRINT " Published by AIAA (800 682 2422)" 630 PRINT 640 PRINT" MISSION SEGMENTS TYPES: 1=TAKEOFF" 650 PRINT" 2=CLIMB OR ACCELERATE" 660 PRINT" 3=CRUISE" 670 PRINT" 4=LOITER" 680 PRINT" 5=COMBAT (RUBBER ENGINE)" 690 PRINT" 6=KNOWN TIME FUEL BURN" 700 PRINT" 7=WEIGHT DROP " 710 PRINT" 8=LAND" 720 PRINT" 9=KNOWN MISSION SEGMENT WEIGHT FRACTION " 725 PRINT" ENTER X TO EXIT AC-SIZE" 730 PRINT 740 PRINT" TYPICAL INPUT STRING: 1,2,3,5,3,8 FOLLOWED BY ENTER" 750 PRINT 760 PRINT "INPUT YOUR MISSION SEGMENTS STRING : "; 762 PRINT 770 J=0 780 FOR I=1 TO 50 790 A$=INKEY$ 800 IF A$="" GOTO 790 810 PRINT ;A$; 820 IF A$=CHR$(13) GOTO 910 825 IF A$=CHR$(27) GOTO 610 827 IF (A$="X" OR A$="x") THEN END 830 IF (A$=CHR$(44)) GOTO 890 840 IF (A$=CHR$(32)) GOTO 890 860 J=J+1 870 MT(J)=VAL(A$) 890 NEXT I 900 REM MT(i) HOLDS MISSION TYPE ID 910 CLS:PRINT 920 PRINT " INPUT DATA TO CALCULATE MISSION SEGMENT WEIGHT FRACTIONS" 930 PRINT "UNITS FOR INPUTS: RANGE-nmile, SFC-1/hr, VELOCITY-Mach or knots, TIME-hours" 940 PRINT 950 PRINT " ENTER 99 FOR INPUT REQUEST TO BREAK OUT OF DATA INPUT" 960 PRINT 970 FOR I=1 TO 50 980 IF MT(I)=0 GOTO 2440 990 IF MT(I)=1 GOTO 1100 1000 IF MT(I)=2 GOTO 1200 1010 IF MT(I)=3 GOTO 1430 1020 IF MT(I)=4 GOTO 1620 1030 IF MT(I)=5 GOTO 1810 1040 IF MT(I)=6 GOTO 2080 1050 IF MT(I)=7 GOTO 2180 1060 IF MT(I)=8 GOTO 2240 1070 IF MT(I)=9 GOTO 2290 1100 REM ************TAKEOFF 1110 PRINT "SEGMENT ";I;" IS A TAKEOFF SEGMENT" 1120 INPUT "INPUT SFC,TIME,T/W ",C,E,TW 1125 IF C=99. GOTO 610 1130 C=C/3600 1140 E=E*3600 1150 WMS(I)=1-C*E*TW 1160 PRINT "MISSION SEGMENT FUEL FRACTION IS "WMS(I) 1170 PRINT 1190 GOTO 2300 1200 REM ************CLIMB/ACCELERATE 1210 PRINT "SEGMENT ";I;" IS A CLIMB/ACCELERATE SEGMENT" 1220 INPUT "INPUT START ALT,END ALT, START VEL, END VEL: ",SH,EH,SV,EV 1225 IF SH=99. GOTO 610 1230 INPUT "INPUT C,T/W,W/S,CD0,K: ",C,TW,WS,CD0,K 1235 IF C=99. GOTO 610 1240 C=C/3600 1250 HFT=(SH+EH)/2 1260 GOSUB 290 1270 SV=SV*1.689 1280 IF SV<10 THEN SV=SV*AFPS/1.689 1290 EV=EV*1.689 1300 IF EV<10 THEN EV=EV*AFPS/1.689 1310 V=(SV+EV)/2 1320 DLTPS=EH-SH+.01553*(EV^2-SV^2) 1330 IF (DLTPS>0) GOTO 1360 1340 PRINT "ZERO OR NEGATIVE Ps - REDO INPUTS" 1350 GOTO 1220 1360 LD=FNLD(RHO,V,CD0,K,WS) 1370 PRINT "L/D IS ",LD," DELTA Ps IS ",DLTPS 1380 WMS(I)=EXP((-1*C*DLTPS)/(V*(1-(1/(TW*LD))))) 1390 PRINT "MISSION SEGMENT FUEL FRACTION IS "WMS(I) 1400 PRINT 1420 GOTO 2300 1430 REM ************CRUISE 1440 PRINT "SEGMENT ";I;" IS A CRUISE SEGMENT" 1450 INPUT "INPUT ALT, VEL, RANGE: ",HFT,V,R 1455 IF HFT=99. GOTO 610 1460 INPUT "INPUT C,T/W,W/S,CD0,K: ",C,TW,WS,CD0,K 1465 IF C=99. GOTO 610 1470 GOSUB 290 1480 V=V*1.689 1490 IF V<10 THEN V=V*AFPS/1.689 1500 C=C/3600 1510 R=R*6076 1520 LD=FNLD(RHO,V,CD0,K,WS) 1530 PRINT "L/D IS ",LD 1540 IF ((1/LD)NMAX THEN NG=NMAX 1920 NMAXL=Q*CLMAX/WS 1930 IF NMAXL<1! THEN PRINT " - WING STALL !" 1940 IF NMAXL<1! THEN GOTO 1840 1950 IF NG>NMAXL THEN PRINT " **** MAX LIFT IS CRITICAL - CHECK CD0 AND K " 1960 IF NG>NMAXL THEN NG=NMAXL 1970 LD=FNLDN(RHO,V,CD0,K,WS,NG) 1980 PSIDOT=32.2*SQR(NG^2-1)/V 1990 E=NTURN*2*3.1416/PSIDOT 2000 PRINT "L/D IS ",LD," LOAD FACTOR IS ",NG 2010 PSIDOT=PSIDOT*57.29578 2020 PRINT "TURN RATE IS ";PSIDOT;" DEG/SEC TIME TO TURN IS ";E;" SEC" 2030 WMS(I)=1-C*E*TW 2040 PRINT "MISSION SEGMENT FUEL FRACTION IS "WMS(I) 2050 PRINT 2070 GOTO 2300 2080 REM ************KNOWN TIME FUEL BURN 2090 PRINT "SEGMENT ";I;" IS A KNOWN TIME FUEL BURN SEGMENT" 2100 INPUT "INPUT SFC,TIME,THRUST ",C,E,T 2105 IF C=99. GOTO 610 2110 C=C/3600 2120 E=E*3600 2130 WMS(I)=C*E*T 2140 PRINT "MISSION SEGMENT FUEL BURNED IS "WMS(I) 2150 PRINT 2170 GOTO 2300 2180 REM ************WEIGHT DROP 2190 PRINT "SEGMENT ";I;" IS A WEIGHT DROP SEGMENT" 2200 INPUT "INPUT WEIGHT DROPPED ",WMS(I) 2210 PRINT 2230 GOTO 2300 2240 REM ************LANDING 2250 PRINT "SEGMENT ";I;" IS A LANDING SEGMENT" 2260 WMS(I)=.9950001 2270 PRINT "MISSION SEGMENT FUEL FRACTION IS "WMS(I) 2280 PRINT 2285 GOTO 2300 2290 REM ************KNOWN MISSION SEGMENT WEIGHT FRACTION 2292 PRINT "SEGMENT ";I;" IS A KNOWN MISSION SEG. WEIGHT FRACTION" 2294 INPUT "INPUT MISSION SEGMENT WEIGHT FRACTION (<1) ",WMS(I) 2295 IF WMS(I)=99. GOTO 610 2296 IF WMS(I)<0 OR WMS(I)>1 THEN WMS(I)=1. 2298 PRINT 2300 IF ((I)/4-INT((I)/4)<>0!) GOTO 2340 2310 LOCATE 25,5 2320 INPUT " COPY SCREEN IF DESIRED THEN PRESS ENTER ",Z 2330 CLS 2340 NEXT I 2440 LOCATE 25,5 2450 INPUT " COPY SCREEN IF DESIRED THEN PRESS ENTER ",Z 2460 CLS 2470 REM ********************************************* 2480 REM ********* SIZING ITERATIONS 2490 REM ********************************************* 2500 REM *********** INPUT EMPTY WEIGHT EQUATION DATA 2540 INPUT "INPUT W0drawn, WEdrawn: ",W0DR,WEDR 2542 IF W0DR=99. GOTO 610 2544 REM C IS THE EXPONENT FOR EMPTY WEIGHT SIZING - SEE TABLE 3.1 IN BOOK 2545 INPUT "INPUT EMPTY WEIGHT FRACTION SIZING EXPONENT (DEFAULT C=-0.1) ",C 2546 IF C=99. GOTO 610 2547 IF C>-.01 OR C<-.5 THEN C=-0.1 2550 INPUT "INPUT CREW + PAYLOAD WEIGHT ",WPAY 2560 PRINT 2570 PRINT " MISSION SEGMENT TYPES "; 2580 FOR I=1 TO 50 2590 IF MT(I)=0 GOTO 2620 2600 PRINT MT(I);" "; 2610 NEXT I 2620 PRINT 2630 PRINT "MISSION SEGMENT WEIGHT FRACTIONS "; 2640 FOR I=1 TO 50 2650 IF WMS(I)=0 GOTO 2680 2660 PRINT WMS(I); 2670 NEXT I 2680 PRINT 2690 REM * BEGIN SIZING 2700 W0G=W0DR 2710 PRINT 2720 PRINT " SIZING ITERATIONS" 2730 PRINT " Wo-guess Wfuel Wempty W0-calculated" 2740 WE=WEDR*(W0G/W0DR)^(1+C) 2750 W=W0G 2760 WF=0! 2770 FOR I=1 TO 50 2780 IF MT(I)=0 GOTO 2890 2790 IF MT(I)><6 GOTO 2830 2800 WF=WF+WMS(I) 2810 W=W-WMS(I) 2820 GOTO 2880 2830 IF MT(I)><7 GOTO 2860 2840 W=W-WMS(I) 2850 GOTO 2880 2860 WF=WF+W*(1-WMS(I)) 2870 W=W*WMS(I) 2880 NEXT I 2890 WF=1.06*WF 2900 W0CALC=WPAY+WE+WF 2910 PRINT USING "##########.#";W0G, WF,WE,W0CALC 2920 IF CSRLIN<24 GOTO 2960 2930 LOCATE 25,5 2940 INPUT " COPY SCREEN IF DESIRED THEN PRESS ENTER ",Z 2950 CLS 2960 IF (ABS(W0G-W0CALC)<(.001*W0G)) GOTO 2990 2970 W0G=(W0G+4*W0CALC)/5 2980 GOTO 2740 2990 LOCATE 25,5 3000 INPUT " COPY SCREEN IF DESIRED THEN PRESS ENTER ",Z 3010 CLS 3440 rem ------------------ Program Exit ------------------------- 3441 LOCATE 10,1 3442 PRINT "....if you liked this, you'd LOVE the RDS program. Visit web site" 3443 PRINT " http://www.aircraftdesign.com/ for information on RDS, the textbook" 3444 PRINT " `AIRCRAFT DESIGN: A Conceptual Approach' and other aircraft topics." 3445 INPUT, Z$ 3450 CLS 3460 END