Free Web Hosting by Netfirms
Web Hosting by Netfirms | Free Domain Names by Netfirms

Wind turbine-analysis.com logo


A website for discussions on wind turbine basic theory, mathematical analysis, wind tunnel testing, and test model building with emphasize on Darrieus rotor.

Home Intro Analyse Testing Building About

Analyse : Multiple streamtube model, [pg2], [code] | single streamtube | Glauert empirical formula | about Naca airfoils data | finite aspect ratio on airfoil, [code] | dimensionless analysis on Darrieus rotor efficiency

Viterna-Corrigan model: Code, sample run, & output

Matlab code file “makefinitedata.m”

%Function to convert airfoil data from infinite to finite aspect ratio
%>for symmetry airfoil from 0 to 90 degree angle of attack
%>Lanchester-Prandtl model was used before stalling angle
%>while Viterna-Corrigan model predict post stall coefficients
%
%INPUT
%infinitefile = filename of infinite 2D airfoil data 
%>data in form of [degree Cl Cd] starting from 0 degree
%>to at least a point after maximum lift (stall) are needed
%A = airfoil aspect ratio
%
%OUTPUT
%finitedata = table of modified airfoil data with same format as input
%>data after stall are 'generated' at 1 degree increment till 90degree

function finitedata = makefinitedata(infinitefile, A);

infdata = load(infinitefile);

%Find effective angle of attack and Cd while Cl remain constant
%until stall occurs using Lanchester-Prandtl Eq. 
i = 1;
dropping = 0;

%%Process first data then check if lift start dropping
while not(dropping) % need do while :(
   
   %%Cl remain constant
   finitedata(i, 2) = infdata(i, 2);
   
   %%Cd increase or the lift slope decrease
   finitedata(i, 3) = infdata(i, 3)...
      + (infdata(i, 2)) ^ 2 / pi / A;
   
   %%Angle of attack increase or lift slope decrease
   finitedata(i, 1) = (infdata(i, 1) / 180 * pi...
      + infdata(i, 2) / pi / A) / pi * 180;
   
   dropping = (infdata(i + 1, 2) < infdata(i, 2));
   i = i + 1;
end
%% i = first point after peak point

%Find finite lift and drag coefficient in post stall region
%using Viterna-Corrigon equation until 90 degree at 1 degree interval
alpha_S = finitedata(i - 1, 1); %all eq. refer to MODIFIED finite data!
C_LS    = finitedata(i - 1, 2);
C_DS    = finitedata(i - 1, 3);
if A > 50
   C_Dmax = 2.01;
else
   C_Dmax = 1.11 + 0.018 * A;
end

K_L = (C_LS - C_Dmax * sin(alpha_S/180*pi) * cos(alpha_S/180*pi))...
   * sin(alpha_S/180*pi) / (cos(alpha_S/180*pi)) ^ 2;
K_D = (C_DS - C_Dmax...
   * (sin(alpha_S/180*pi)) ^ 2) / cos(alpha_S/180*pi);

for alpha = (floor(alpha_S) + 1) : 1 : 90
   finitedata(i, 1) = alpha;
   
   finitedata(i, 2) = C_Dmax / 2 * sin(2 * alpha/180*pi)...
      + K_L * (cos(alpha/180*pi)) ^ 2 / sin(alpha/180*pi);
   
   finitedata(i, 3) = C_Dmax * (sin(alpha/180*pi)) ^ 2 ...
      + K_D * cos(alpha/180*pi);
   
   i = i + 1;
end

A sample run of “makefinitedata.m” in Matlab

» fin = makefinitedata('NACA12Re0300.data', 10)

fin =

         0         0    0.0085
    2.3644    0.1998    0.0107
    5.9115    0.4998    0.0208
    8.9029    0.7692    0.0369
   12.4617    0.8563    0.0716
   12.5648    0.8580    0.1163
   13.0000    0.8457    0.1205
   14.0000    0.8219    0.1305
   15.0000    0.8033    0.1411
   16.0000    0.7889    0.1525
   17.0000    0.7779    0.1644
   18.0000    0.7695    0.1771
   19.0000    0.7634    0.1903
   20.0000    0.7589    0.2041
   21.0000    0.7560    0.2185
   22.0000    0.7541    0.2335
   23.0000    0.7532    0.2491
   24.0000    0.7530    0.2652
   25.0000    0.7533    0.2817
   26.0000    0.7541    0.2988
   27.0000    0.7551    0.3163
   28.0000    0.7562    0.3343
   29.0000    0.7574    0.3527
   30.0000    0.7587    0.3716
   31.0000    0.7598    0.3907
   32.0000    0.7607    0.4103
   33.0000    0.7615    0.4302
   34.0000    0.7620    0.4503
   35.0000    0.7621    0.4708
   36.0000    0.7619    0.4915
   37.0000    0.7614    0.5124
   38.0000    0.7604    0.5336
   39.0000    0.7589    0.5549
   40.0000    0.7570    0.5764
   41.0000    0.7545    0.5980
   42.0000    0.7515    0.6197
   43.0000    0.7480    0.6414
   44.0000    0.7440    0.6632
   45.0000    0.7393    0.6851
   46.0000    0.7341    0.7069
   47.0000    0.7283    0.7286
   48.0000    0.7218    0.7503
   49.0000    0.7148    0.7719
   50.0000    0.7071    0.7934
   51.0000    0.6989    0.8147
   52.0000    0.6900    0.8359
   53.0000    0.6805    0.8569
   54.0000    0.6704    0.8776
   55.0000    0.6597    0.8981
   56.0000    0.6483    0.9183
   57.0000    0.6364    0.9382
   58.0000    0.6239    0.9578
   59.0000    0.6108    0.9770
   60.0000    0.5971    0.9958
   61.0000    0.5828    1.0143
   62.0000    0.5680    1.0323
   63.0000    0.5527    1.0498
   64.0000    0.5368    1.0669
   65.0000    0.5204    1.0835
   66.0000    0.5035    1.0996
   67.0000    0.4861    1.1152
   68.0000    0.4682    1.1302
   69.0000    0.4499    1.1446
   70.0000    0.4312    1.1585
   71.0000    0.4121    1.1717
   72.0000    0.3925    1.1843
   73.0000    0.3726    1.1963
   74.0000    0.3523    1.2076
   75.0000    0.3317    1.2182
   76.0000    0.3109    1.2282
   77.0000    0.2897    1.2375
   78.0000    0.2682    1.2460
   79.0000    0.2466    1.2538
   80.0000    0.2247    1.2609
   81.0000    0.2026    1.2673
   82.0000    0.1804    1.2729
   83.0000    0.1580    1.2777
   84.0000    0.1356    1.2818
   85.0000    0.1130    1.2851
   86.0000    0.0904    1.2877
   87.0000    0.0678    1.2894
   88.0000    0.0452    1.2904
   89.0000    0.0226    1.2906
   90.0000    0.0000    1.2900

» save('A10.NACA12Re0300.data', 'fin', '-ascii')
» plot(fin(:,1), fin(:,2), fin(:,1), fin(:,3))

Plotted graph of the finite airfoil data output

Home About

Last updated at November 6, 2002
Comments are welcomed