You are on page 1of 3

function []=thinairfoil()

%Thin Airfoil Theory

%Initialize variables
A=zeros(1,3);
x=zeros(1,0);
y=zeros(1,0);
p=0;
coeffor=ones(1,4);
coefback=ones(1,4);

%Choose the format to enter data.


method=input('What way would you like to enter the airfoil data?\n 1) 4 digit
airfoil number\n 2) two cubic equations\n 3) data points\n?');

switch method
case 1
%Four digit airfoil method
FourDigit=input('\nType in NACA 4 digit airfoil number.\n?');
alpha=input('\nType in an angle of attack in degrees.\n?');
alpha=alpha*pi/180;
m=floor(FourDigit/1000)*1000;
p=floor(FourDigit/100)*100-m;
m=m/100000;
p=p/1000;

[TempA0,TempA1,TempA2,Tempx,Tempy]=FindA(0,-m/p^2,2*m/p,0,0,p);
A=A+[TempA0,TempA1,TempA2];
x=[x,Tempx];
y=[y,Tempy];

[TempA0,TempA1,TempA2,Tempx,Tempy]=FindA(0,-m/(1-p)^2,2*m*p/(1-
p)^2,(m-2*m*p)/(1-p)^2,p,1);
A=A+[TempA0,TempA1,TempA2];
x=[x,Tempx];
y=[y,Tempy];
case 2
%Two cubic equations of an airfoil
while
(coeffor(1)*p^3+coeffor(2)*p^2+coeffor(3)*p)~=(coefback(1)*p^3+coefback(2)*p^2+coef
back(3)*p+coefback(4)) | dot(coefback,ones(1,4))~=0
coeffor=input('\nType in coefficients for the forward
camber of the airfoil.\n ax^3 + bx^2 + cx\n ex.[0 1 2] = x^2 + 2x\n?');
p=input('\nEnter the point fraction of the chord where the
forward camber ends and the back camber begins.\nIf only one equation is used type
1.\n?');
if p~=1
coefback=input('\nType in coefficients for the back
camber of the airfoil.\n ax^3 + bx^2 + cx + d\n ex.[0 1 2 3] = x^2 + 2x + 3\n?');
end
if
(coeffor(1)*p^3+coeffor(2)*p^2+coeffor(3)*p)~=(coefback(1)*p^3+coefback(2)*p^2+coef
back(3)*p+coefback(4)) | dot(coefback,ones(1,4))~=0
disp('');
disp('Equations must connect and the y coordinate is
0 at x/c=1.');
end
end
[TempA0,TempA1,TempA2,Tempx,Tempy]=FindA(coeffor(1),coeffor(2),coeffor(3),0,0,p);
A=A+[TempA0,TempA1,TempA2];
x=[x,Tempx];
y=[y,Tempy];

[TempA0,TempA1,TempA2,Tempx,Tempy]=FindA(coefback(1),coefback(2),coefback(3),coefba
ck(4),p,1);
A=A+[TempA0,TempA1,TempA2];
x=[x,Tempx];
y=[y,Tempy];
case 3
x=[0 0];
y=[0 0];
while x(1)~=0 | y(1)~=0 | x(length(x))~=1 | y(length(y))~=0
x=input('\nPlease enter the x coordinates of the camber
line.\n ex.[0 .25 .5 .75 1]\n?');
y=input('\nPlease enter the y coordinates of the camber
line.\n ex.[0 .05 .1 .05 0]\n?');
if x(1)~=0 | y(1)~=0 | x(length(x))~=1 | y(length(y))~=0
disp('');
disp('Coordinates must begin at (0,0) and end at
(1,0) for this theory.');
end
end
for i=1:length(x)-1
m=(y(i+1)-y(i))/(x(i+1)-x(i));
b=-x(i)*m+y(i);
[TempA0,TempA1,TempA2]=FindA(0,0,m,b,x(i),x(i+1));
A=A+[TempA0,TempA1,TempA2];
end
end

%Optional printing information to a file.


if input('\nWould you like to print the information to a file?(y,n)\
n?','s')=='y'
filename=input('Enter a file name.\n?','s');
filename=strcat(filename,'.dat');
fid=fopen(filename,'w');
fprintf(fid,'\n\nName Symbol Value\n');
fprintf(fid,'-------------------------- ------ -------\n');
fprintf(fid,'Lift Coefficient Cl %9.5f\n',Cl);
fprintf(fid,'Zero Lift Angle Name a0l %9.5f(%9.5f degrees)\
n',a0l,a0l*180/pi);
fprintf(fid,'Moment Coefficient (x=0 ) Cm0 %9.5f\n',Cm0);
fprintf(fid,'Moment Coefficient (x=c/4) Cmac %9.5f\n',Cmac);
fprintf(fid,'Center of Pressure xcp %9.5f\n',xcp);
fclose(fid);
disp(['Created filename',blanks(1),filename]);
end

%Plot camber line and arrow to show free stream angle of attack
plot(x,y);
hold on;
axis([-.5,1.5,-.1,.1]);
e=pi/18;
plot([-0.1,-0.1-0.3*cos(alpha)],[0,-0.15*sin(alpha)],'k')
plot([-0.1,-0.1-0.05*cos(e-alpha)],[0,0.025*sin(e-alpha)],'k')
plot([-0.1,-0.1-0.05*cos(e+alpha)],[0,-0.025*sin(e+alpha)],'k')
hold off;

%Calculate aerodynamic effects


a0l=-(A(1,1)+A(1,2)/2); %Zero angle of attack(rad)
A(1,1)=A(1,1)+alpha;
Cl=2*pi*(A(1,1)+A(1,2)/2); %Lift Coefficient
Cm0=-pi/2*(A(1,1)+A(1,2)-A(1,3)/2); %Moment Coefficient at tip
Cmac=pi*(A(1,3)-A(1,2))/4; %Moment Coefficient around aerodynamic
center.
xcp=((2*A(1,1)+2*A(1,2)-A(1,3))/(2*A(1,1)+A(1,2)))/4; %Center of
pressure

%Print Information of Thin Airfoil


disp(sprintf('\n\nName Symbol Value'));
disp(sprintf('-------------------------- ------ -------'));
disp(sprintf('Lift Coefficient Cl %9.5f',Cl));
disp(sprintf('Zero Lift Angle Name a0l %9.5f(%9.5f
degrees)',a0l,a0l*180/pi));
disp(sprintf('Moment Coefficient (x=0 ) Cm0 %9.5f',Cm0));
disp(sprintf('Moment Coefficient (x=c/4) Cmac %9.5f',Cmac));
disp(sprintf('Center of Pressure xcp %9.5f',xcp));

%**********************************************************
function [A0,A1,A2,x,y]=FindA(a,b,c,d,x1,x2)

x=x1:(x2-x1)/20:x2;
y=a*x.*x.*x+b*x.*x+c*x+d;
%Conversion to theta coordinates
theta1=acos(1-2*x1);
theta2=acos(1-2*x2);

A01=1.125*a*theta1 + b*theta1 + c*theta1 - 1.5*a*sin(theta1) - b*sin(theta1)


+ 0.1875*a*sin(2*theta1);
A02=1.125*a*theta2 + b*theta2 + c*theta2 - 1.5*a*sin(theta2) - b*sin(theta2)
+ 0.1875*a*sin(2*theta2);
A0=(A01-A02)/pi;

A11=-0.75*a*theta1 - 0.5*b*theta1 + 1.3125*a*sin(theta1) +


b*sin(theta1)+c*sin(theta1) - 0.375*a*sin(2*theta1) - 0.25*b*sin(2*theta1) +
0.0625*a*sin(3*theta1);
A12=-0.75*a*theta2 - 0.5*b*theta2 + 1.3125*a*sin(theta2) +
b*sin(theta2)+c*sin(theta2) - 0.375*a*sin(2*theta2) - 0.25*b*sin(2*theta2) +
0.0625*a*sin(3*theta2);
A1=2*(A12-A11)/pi;

A21=0.1875*a*theta1 - 0.75*a*sin(theta1) - 0.5*b*sin(theta1) +


0.5625*a*sin(2*theta1) + 0.5*b*sin(2*theta1) + 0.5*c*sin(2*theta1) -
0.25*a*sin(3*theta1) - b*sin(3*theta1)/6+0.046875*a*sin(4*theta1);
A22=0.1875*a*theta2 - 0.75*a*sin(theta2) - 0.5*b*sin(theta2) +
0.5625*a*sin(2*theta2) + 0.5*b*sin(2*theta2) + 0.5*c*sin(2*theta2) -
0.25*a*sin(3*theta2) - b*sin(3*theta2)/6+0.046875*a*sin(4*theta2);
A2=2*(A22-A21)/pi;

You might also like