No BSD License
-
InitializeGUI(airfoildata)
Initializes the GUI and establishes callback functions
-
DeterminePanelGeometry(inputg...
find coordinates for horseshoe vortices and control points and plot
-
DetermineProfileDrag(airfoild...
Determine the wing profile drag from the airfoils' drag polars
-
FinalOutput(CL, CDi, CD0, y_c...
calculate score and other outputs, post to the GUI
-
GetGeometryfromGUI(root, tip,...
Get parameters from the GUI and create geometry structure "geo"
-
InducedDrag(gamma, geo, panel...
Calculate far field induced drag
-
LiftCoeff(gamma, panel, geo, ...
Determine the lift coefficient given the vortex strengths
-
PerformRegression(data)
Relate the coefficients of the drag polar to Re as parabolic functions.
-
SpanLoading(l_s, l_t, CL, geo...
Determine center of pressure and spanwise loading
-
StandardAtmosphere(alt)
Read in altitude and output viscosity, density, and speed of sound
-
ZeroOutput(output)
Null output to GUI when error checking is not satisfied
-
[C,T,A]=naca4_3d(airfoil,y,nc...
determine airfoil skin and camber coordinates from NACA designation
-
[gamma, Fu_bar, Fv_bar, Fw_ba...
Implement Vortex Lattice Method
-
parseNACAairfoildata
parse the text file NACAdata.txt into a structure
-
Contents.m
-
Main.m
-
View all files
from
Wing Designer
by John Rogers
Wing Designer computes aircraft performance measures from wing and engine parameters.
|
| DetermineProfileDrag(airfoildata,geo,panel)
|
function [CD0] = DetermineProfileDrag(airfoildata,geo,panel)
%Determine the wing profile drag from the airfoils' drag polars
airfoil_r = geo.rootindex;
airfoil_t = geo.tipindex;
%Root dimensions
chord_r = geo.c_r;
%Determine Reynolds number at root; using log10 because regression was
%done this way
Re_r = log10(geo.Re_r);
%Convert back to degrees because the polynomial regression of the XFOIL
%drag data is in terms of degrees
alpha_r = (geo.i_r + geo.alpha)*180/pi;
b = cell2mat(airfoildata{2}(airfoil_r)); %Load the coefficients
c = cell2mat(airfoildata{3}(airfoil_r));
d = cell2mat(airfoildata{4}(airfoil_r));
k = cell2mat(airfoildata{5}(airfoil_r));
cd0_r = b(1) + b(2)*Re_r + b(3)*Re_r^2;
cd1_r = c(1) + c(2)*Re_r + c(3)*Re_r^2;
cd2_r = d(1) + d(2)*Re_r + d(3)*Re_r^2;
alpha_stall_r = k(1) + k(2)*Re_r + k(3)*Re_r^2;
%Test to see if airfoil is past stall angle of attack
if alpha_r > alpha_stall_r
cd2_r = 2*cd2_r;
%Double the last coefficient to account for the large increase in drag
%past stall
end
%Tip dimensions
chord_t = geo.c_r*geo.taper;
%Determine Reynolds number at tip, use log10 because performed regression
%using log10
Re_t = log10(geo.Re_t);
%Convert back to degrees because the polynomial regression of the XFOIL
%drag data is in terms of degrees
alpha_t = (geo.i_r + geo.twist + geo.alpha)*180/pi;
b = cell2mat(airfoildata{2}(airfoil_t)); %Load the coefficients
c = cell2mat(airfoildata{3}(airfoil_t));
d = cell2mat(airfoildata{4}(airfoil_t));
k = cell2mat(airfoildata{5}(airfoil_t));
cd0_t = b(1) + b(2)*Re_t + b(3)*Re_t^2;
cd1_t = c(1) + c(2)*Re_t + c(3)*Re_t^2;
cd2_t = d(1) + d(2)*Re_t + d(3)*Re_t^2;
alpha_stall_t = k(1) + k(2)*Re_t + k(3)*Re_t^2;
%Test to see if airfoil is past stall angle of attack
if alpha_t > alpha_stall_t
cd2_t = 2*cd2_t;
%Double the last coefficient to account for the large increase in drag
%past stall
end
%eta represents the fraction from 0 to 1 at the center of the panel where 0
%corresponds to y = 0 and 1 corresponds to y = b
eta = (2*(1:geo.ns)-1)/(2*geo.ns);
chord = chord_r + eta*(chord_t-chord_r);
alpha = alpha_r + eta*(alpha_t-alpha_r);
cd0 = cd0_r + eta*(cd0_t-cd0_r);
cd1 = cd1_r + eta*(cd1_t-cd1_r);
cd2 = cd2_r + eta*(cd2_t-cd2_r);
Deltay = zeros(1,geo.ns);
for i = 1:geo.ns
Deltay(i) = panel(i,1).BV2(2) - panel(i,1).BV1(2);
end
D_q = (cd0 + cd1.*alpha + cd2.*alpha.^2).*chord.*Deltay;
CD0 = 2*sum(D_q,2)/geo.S;
|
|
Contact us at files@mathworks.com