Press "Enter" to skip to content

Generate coordinates for a simple turbine blade

The Matlab function listed below returns the coordinates of an airfoil with a specified maximum thickness and turning angles. The thickness distribution used is from the NACA 4-series airfoils. The camber line is computed as a cubic polynomial before it is rotated to match the input turning angles.

This function takes 5 input arguments. \(t\) is the approximate maximum thickness as a percentage of chord, \(x_{\text{turn}}\) is the approximate location of the turning point as a percentage of chord, \(\theta_1\) and \(\theta_2\) are turning angles defined next, and \(N\) is the number of chord-wise points to return. The definition of the angles \(\theta_1\) and \(\theta_2\) is demonstrated in this sketch:

Diagram demonstrating the definition of the angle inputs.

function [ return_struct ] = ...
    airfoil_gen( t, x_turn, theta1, theta2, N )
% Generates an coordinates of turbine airfoil
% blades with specified thickness and turning
% angles

phi = (theta1 + theta2)/2;

b = [tan(phi);

A = [0 1 0 0;
     0 1 2 3;
     1 0 0 0;
     0 1 2*x_turn 3*x_turn^2];

a = A\b;

ii = linspace(0, 1, N);
xc = (cos(pi - ii*pi) + 1)/2;

yc = a(1) + a(2)*xc + a(3)*xc.^2 + a(4)*xc.^3;
dyc = a(2) + 2*a(3)*xc + 3*a(4)*xc.^2;

% Use NACA 4-series thickness distribution
yt = 5*t*(0.2969*sqrt(xc) - 0.126*xc ...
     - 0.3516*xc.^2 + 0.2843*xc.^3 - 0.1015*xc.^4);

xu = xc - yt.*sin(dyc);
yu = yc + yt.*cos(dyc);

xl = xc + yt.*sin(dyc);
yl = yc - yt.*cos(dyc);

rotation_angle = phi - theta1;

% Rotate to match input angles:
C = [cos(rotation_angle) sin(rotation_angle);
     -sin(rotation_angle) cos(rotation_angle)];
for ii = 1:N
    coords = [xc(ii); yc(ii)];
    coords = C*coords;
    xc(ii) = coords(1);
    yc(ii) = coords(2);
    coords = [xu(ii); yu(ii)];
    coords = C*coords;
    xu(ii) = coords(1);
    yu(ii) = coords(2);
    coords = [xl(ii); yl(ii)];
    coords = C*coords;
    xl(ii) = coords(1);
    yl(ii) = coords(2);

return_struct.xl = xl;
return_struct.yl = yl;
return_struct.xu = xu;
return_struct.yu = yu;
return_struct.xc = xc;
return_struct.yc = yc;


These airfoils are definitely not optimal but they may be good to use as initial guesses in aerodynamic shape optimization. Below are several plots of airfoil shapes using the script above. The baseline parameters are \(t = 0.12\), \(\theta_1 = 15^\circ\), \(\theta_2 = 30^\circ\), and \(x_{\text{turn}} = 0.35\). Each of the plots vary these parameters one at a time.

Maximum thickness variation:
Varying the maximum airfoil thickness.

\(\theta_1\) variation:
Varying the theta1 angle.

\(\theta_2\) variation:
Varying the theta2 angle.

\(x_{\text{turn}}\) variation:
Varying the x_turn parameter.

If you have any comments or suggestions, let me know if the comments below.

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *