123 lines
2.8 KiB
Matlab
Executable File
123 lines
2.8 KiB
Matlab
Executable File
%Master 441 Code
|
|
%all alfas in DEGREES!
|
|
%by ascorrea
|
|
|
|
function master441()
|
|
diary
|
|
datafile=input('Input data file: \nNote: You must delete the header before using \n:','s');
|
|
[variablenames, variablevalues]=textread(datafile, '%s %f');
|
|
|
|
|
|
for k = 1:length(variablenames)
|
|
eval([variablenames{k} '= variablevalues(k);']);
|
|
end
|
|
i=1;
|
|
for AR=1:.1:10
|
|
|
|
%CRUISE------------------------------------------------------------------]
|
|
cd0_cruise=findcd0(c_f, M_cruise, sref, swet);
|
|
cLreq_cruise=findcLrequired(alt_cruise, sref, M_cruise, weight_cruise);
|
|
alphareq_cruise=findalpharequired(cLalpha_cruise, cL0, cLreq_cruise);
|
|
cD_cruise=findcD(AR, efficiency, cd0_cruise, cLreq_cruise, cd_correction);
|
|
eloverdee_cruise=cLreq_cruise/cD_cruise;
|
|
cM_cruise=cMalpha_cruise*alphareq_cruise+cM0;
|
|
|
|
|
|
plotAR(i)=AR;
|
|
plotLD(i)=eloverdee_cruise;
|
|
i=i+1;
|
|
end
|
|
|
|
|
|
plot(plotAR, plotLD)
|
|
|
|
fprintf('Max L/D: %f at AR: %f\n',max(plotLD), plotAR(max(plotLD)==plotLD));
|
|
|
|
end
|
|
|
|
function q=findcd0(c_f, M, sref, swet)
|
|
if M>.7
|
|
c_f=c_f*(1-.09*M^2);
|
|
end
|
|
q=c_f*(swet/sref);
|
|
end
|
|
function q=findcLalpha(AR, M, clalpha, sweep, sex, sref, doverb)
|
|
%ascorrea
|
|
|
|
betasquared=1-M^2;
|
|
beta=sqrt(betasquared);
|
|
eta=clalpha/(2*pi/beta);
|
|
numer=2*pi*AR;
|
|
denom1=(AR^2*beta^2)/eta^2;
|
|
denom2=(tand(sweep)^2/betasquared);
|
|
denom=2+sqrt(4+denom1*(1+denom2));
|
|
F=1.07*(1+doverb)^2;
|
|
|
|
cLalpha=(numer/denom)*(sex/sref)*F;
|
|
|
|
q=cLalpha;
|
|
|
|
end
|
|
function finddragpolar(cd0, cl_alfa, cL0, sweep_LE, ar, cd_correction, filename)
|
|
alphadeg=[-12:2];
|
|
% alpha=(pi/180)*(alphadeg);
|
|
alpha=alphadeg;
|
|
cL_alfa=cl_alfa*(ar/(ar+(2*(ar+4)/(ar+2))));
|
|
|
|
for i=1:length(alpha)
|
|
C_L(i)=cL_alfa*(alpha(i))+cL0;
|
|
e=4.61*(1-.045*ar^.68)*cosd(sweep_LE)^.15-3.1;
|
|
cd_i(i)=C_L(i)^2/(pi*ar*e);
|
|
C_d(i)=cd0+cd_i(i)+cd_correction;
|
|
end
|
|
|
|
graphname='Drag Polar';
|
|
|
|
hold on
|
|
axisX0=linspace(0,max(cd));
|
|
axisY0=zeros(1,length(axisX0));
|
|
plot(axisX0, axisY0,'k--');
|
|
plot(C_d, C_L);
|
|
plot(C_d, C_L, '.');
|
|
title(graphname);
|
|
xlabel('C_d');
|
|
ylabel('C_L');
|
|
axis([0, .04, -1, 1.5]);
|
|
% for i=1:length(alphadeg)
|
|
% alphalabel=num2str(alphadeg(i));
|
|
% label=[' \alpha =' alphalabel];
|
|
% text(C_d(i), C_L(i), label)
|
|
% end
|
|
print ('-dtiff', filename)
|
|
close(1)
|
|
end
|
|
function q=findcLrequired(alt, s, v_mach, lift)
|
|
if alt < 36152
|
|
temp=59-.00356*alt;
|
|
press=2116*((temp+459.7)/518.6)^5.256;
|
|
|
|
elseif alt < 82345
|
|
temp=-70;
|
|
press=473.1*exp(1.73-.000048*alt);
|
|
|
|
else
|
|
print('Program Not Valid for given altitude')
|
|
end
|
|
|
|
density=press/(1718*(temp+459.7));
|
|
v_fps=v_mach*sqrt(1.4*1718*(temp+459.7));
|
|
q=.5*density*v_fps^2;
|
|
|
|
q=lift/(q*s);
|
|
|
|
end
|
|
function q=findalpharequired(cLalpha, cL0, cLrequired)
|
|
q=(cLrequired-cL0)/cLalpha;
|
|
end
|
|
function q=findcD(ar, e, cd0, C_L, cd_correction)
|
|
|
|
% e=4.61*(1-.045*ar^.68)*cosd(sweep_LE)^.15-3.1;
|
|
cd_i=C_L^2/(pi*ar*e);
|
|
cd_i=C_L^2/(pi*ar*e);
|
|
q=cd0+cd_i+cd_correction;
|
|
end |