Files
senior-design/archive/MASTER441.bak2m
2010-04-17 12:00:00 -05:00

358 lines
9.8 KiB
Plaintext
Executable File

%Master 441 Code
%all alfas in DEGREES!
%by ascorrea
function MASTER441(paramfile, pranformfile, pranformConstraint)
diary
% datafile=input('Input data file: \nNote: You must delete the header
% before using \n:','s');
%DIRECTORY
%LOCATIONS--------------------------------------------------------------]
% rootLOCATION='\\ad.uiuc.edu\ae\correa2\Desktop\AE441\Matlab code\';
% airfoilLOCATION='\\ad.uiuc.edu\ae\correa2\Desktop\AE441\Airfoils';
% pranformLOCATION='\\ad.uiuc.edu\ae\correa2\Desktop\AE441\Planforms';
% pranformConstraintLOCATION='\\ad.uiuc.edu\engr\ews\homes\desktop\AE441\Pl
% anform Constraints';
rootLOCATION='/Users/anthonyscorrea/Documents/MATLAB/AE441 - Home Edition/Matlab code';
airfoilLOCATION='/Users/anthonyscorrea/Documents/MATLAB/AE441 - Home Edition/Airfoils';
pranformLOCATION='/Users/anthonyscorrea/Documents/MATLAB/AE441 - Home Edition/Planforms';
pranformConstraintLOCATION='/Users/anthonyscorrea/Documents/MATLAB/AE441 - Home Edition/Planform Constraints';
paramLOCATION='/Users/anthonyscorrea/Documents/MATLAB/AE441 - Home Edition/Parameter Files';
%-----------------------------------------------------------------------]
n=50;
cd(paramLOCATION);
[variablenames, variablevalues]=textread(paramfile, '%s %f');
cd(pranformLOCATION)
[spans, chords, offsets, airfoil]=textread(pranformfile, '%f %f %f %s');
cd(pranformConstraintLOCATION)
[spansCONST, chordsCONST, offsetsCONST, heightCONST]=textread(pranformConstraint, '%f %f %f %f');
cd(rootLOCATION)
for k = 1:length(variablenames)
eval([variablenames{k} '= variablevalues(k);']);
end
cd(airfoilLOCATION)
h1=13.33;
h2=10.5;
h3=9.5;
[sref swet]=WhettedArea(spans, chords, offsets, airfoil,n);
[planformLE planformTE]=plotpranform(spans, chords, offsets, airfoil, h1, n);
[constraintLE constraintTE]=plotconstraint(spansCONST, chordsCONST, offsetsCONST, n);
plotheight=plotThick(spans, chords, offsets, airfoil, h1, n);
plotheight2=plotThick(spans, chords, offsets, airfoil, h2, n);
plotheight3=plotThick(spans, chords, offsets, airfoil, h3, n);
cd(rootLOCATION)
wingspan=2*spans(end);
AR=wingspan^2/sref;
%CRUISE------------------------------------------------------------------]
cd0_cruise=findcd0(c_f, M_cruise, sref, swet);
% finddragpolar(cd0_cruise, cLalpha_cruise, cL0, efficiency, AR, cd_correction, 'cruise')
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;
hold on
plot(planformLE (:,1), planformLE(:,2))
plot(planformTE (:,1), planformTE(:,2))
plot(constraintLE (:,1), constraintLE(:,2))
plot(constraintTE (:,1), constraintTE(:,2))
plot(plotheight(:,1),plotheight(:,2),'r')
plot(plotheight2(:,1),plotheight2(:,2),'r')
plot(plotheight3(:,1),plotheight3(:,2),'r')
hold off
fprintf('\n----------Cruise----------\n')
fprintf('alfa: %f, Cd0: %f, CL: %f, CD: %f, CM: %f, L/D: %f \n', alphareq_cruise, cd0_cruise, cLreq_cruise, cD_cruise, cM_cruise, eloverdee_cruise)
cd(rootLOCATION)
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, e, 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;
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
function [pranformArea WetArea]=WhettedArea(spans, chords, offsets, airfoil, n)
% fileName = 'AirData.mat';
wingSpan = 1;
% n = 50;
engineArea=600;
Area = 0;
pranformArea = 0;
Chords = findChords(n, chords, spans);
for i = 1:(size(chords)-1)
for j = 1:n
Chords(i,j);
dist = wingSpan*(spans(i+1)-spans(i))./n;
Area = Area+findPerim( airfoil{i}, Chords(i,j), wingSpan).*dist;
end
end
for i = 1:(size(chords)-1)
for j = 1:n
dist = wingSpan*(spans(i+1)-spans(i))./n;
pranformArea = pranformArea+Chords(i,j).*dist;
% fprintf('Chord: %f pranformArea: %f \n', Chords(i,j), pranformArea)
end
end
Area = Area *2+engineArea;
WetArea = Area;
pranformArea = pranformArea*2;
fprintf('Planform Area: %f, Wetted Area: %f \n', pranformArea, WetArea)
end
function Chords = findChords( n, Chord, X )
for( i = 1:(length(Chord)-1) )
Xtemp = linspace(X(i),X(i+1),n);
Chords(i,:) = (Chord(i+1)-Chord(i))./(X(i+1)-X(i)).*(Xtemp-X(i))+Chord(i);
end
end
function peri = findPerim(airFile, chord, span)
peri = 0;
Airfoil = load(airFile);
Airfoil = Airfoil*chord*span;
for i = 1:(size(Airfoil,1)-1)
peri = peri + sqrt((Airfoil(i+1,1)-Airfoil(i,1))^2+(Airfoil(i+1,2)-Airfoil(i,2))^2);
end
end
function [plotLE plotTE]=plotpranform(spans, chords, offsets, airfoil, h, n)
Chords = findChords(n, chords, spans);
%plot planform
for i = 1:(size(chords)-1)
dist=0;
for j = 1:n
Chords(i,j);
dist = (spans(i+1)-spans(i))./n;
if i==1
xplotLE(i,j+1)=spans(1)+dist*(j);
else
xplotLE(i,1)=xplotLE(i-1,end);
xplotLE(i,j+1)=xplotLE(i-1,end)+dist*(j);
end
fitX(1)=spans(i);
fitX(2)=spans(i+1);
fitY(1)=offsets(i);
fitY(2)=offsets(i+1);
a = polyfit(fitX, fitY,1);
yplotLE(i,j) = a(1)*xplotLE(i,j)+a(2);
end
end
for i = 1:(size(chords)-1)
dist=0;
for j = 1:n
Chords(i,j);
dist = (spans(i+1)-spans(i))./n;
if i==1
xplotLE(i,j+1)=spans(1)+dist*(j);
else
xplotLE(i,1)=xplotLE(i-1,end);
xplotLE(i,j+1)=xplotLE(i-1,end)+dist*(j);
end
fitX(1)=spans(i);
fitX(2)=spans(i+1);
fitY(1)=offsets(i);
fitY(2)=offsets(i+1);
a = polyfit(fitX, fitY,1);
yplotLE(i,j) = a(1)*xplotLE(i,j)+a(2);
end
end
plotLE=zeros(1,2);
plotTE=zeros(1,2);
for i=1:(size(chords)-1)
for j=1:n
plotLE=[plotLE; xplotLE(i,j) -yplotLE(i,j)];
plotTE=[plotTE; xplotLE(i,j) -(yplotLE(i,j)+Chords(i,j))];
end
end
plotTE(1,:)=[];
plotLE(1,:)=[];
end
function [plotLE plotTE]=plotconstraint(spans, chords, offsets, n)
%plot constraint
for i = 1:(size(chords)-1)
dist=0;
for j = 1:n
dist = (spans(i+1)-spans(i))./n;
if i==1
xplotLE(i,j+1)=spans(1)+dist*(j);
else
xplotLE(i,1)=xplotLE(i-1,end);
xplotLE(i,j+1)=xplotLE(i-1,end)+dist*(j);
end
yplotLE(i,j) = offsets(i+1);
end
end
plotLE=zeros(1,2);
plotTE=zeros(1,2);
for i=1:(size(chords)-1)
for j=1:n
plotLE=[plotLE; xplotLE(i,j) -yplotLE(i,j)];
plotTE=[plotTE; xplotLE(i,j) (-yplotLE(i,j)-chords(i+1))];
end
end
plotTE(1,:)=[];
plotLE(1,:)=[];
end
function plotThick=plotThick(spans, chords, offsets, airfoil, h, n)
Chords = findChords(n, chords, spans);
plotThickLE=zeros(1,2);
plotThickTE=zeros(1,2);
for i=1:size(chords)-1
for j=size(spans)
chordloc=linspace(0, chords(i));
for k=1:length(chordloc)
thickness(k)=findthickness(airfoil{i}, chords(i), chordloc(k));
if thickness(k)>=h
plotThickLE=[plotThickLE; spans(i) -(chordloc(k)+offsets(i))];
break
end
end
for k=1:length(chordloc)-1
thicknessLE(k)=findthickness(airfoil{i}, chords(i), chordloc(length(chordloc)-k));
if thickness(k)>=h
plotThickTE=[plotThickTE; spans(i) -(chordloc(length(chordloc)-k)+offsets(i))];
break
end
end
end
end
plotThickLE(1,:)=[];
plotThickTE(1,:)=[];
plotThick=[plotThickLE; flipud(plotThickTE)];
end
function thickness=findthickness(airfoil, Chord, xLoc)
Airfoil = load(airfoil);
Airfoil = Airfoil*Chord;
% blah....goodnight
AirfoilX=Airfoil(:,1);
[min_diff, k]=min(abs(AirfoilX));
for j=1:k
AirfoilYupper(j)=Airfoil(j,2);
AirfoilXupper(j)=Airfoil(j,1);
end
for j=1:length(Airfoil)-k
AirfoilYlower(j)=Airfoil(length(Airfoil)-(j-1), 2);
AirfoilXlower(j)=Airfoil(length(Airfoil)-(j-1), 1);
end
[min_diff, k]=min(abs(AirfoilX));
[min_diff, xLoc_indu]=min(abs(AirfoilXupper-xLoc));
[min_diff, xLoc_indl]=min(abs(AirfoilXlower-xLoc));
thickness = AirfoilYupper(xLoc_indu)-AirfoilYlower(xLoc_indl);
end