hph final report matthew and john 1
TRANSCRIPT
-
7/24/2019 HPH FINAL Report Matthew and John 1
1/50
Final Report
Human PoweredHelicopter Rotor Design
and AnalysisAAE 415, Design ProjectFall 2001
Professor John Sullivan
Design Team
Matthew WyselJohn Castro
-
7/24/2019 HPH FINAL Report Matthew and John 1
2/50
2
Table of Contents
Introduction .....................................................................................................................3
Design Methodology........................................................................................................ 4
Momentum and Blade Element Theory ........................................................................... 4CMARC...........................................................................................................................6
Results and Discussion ...................................................................................................8
Conclusions and Improvements .................................................................................... 14
References....................................................................................................................15
Appendix A HPH Competition Regulations ................................................................ 16
Appendix B John Jamesons Blade Element Code .................................................... 19
Appendix C An Example of a CMARC .in File ............................................................ 38
Appendix D CMARC Post-Processing Code .............................................................. 45
-
7/24/2019 HPH FINAL Report Matthew and John 1
3/50
3
Introduction
The goal of this project was to design an improved rotor blade geometry for Big Bird -
Purdue Universitys Human Powered Helicopter. Big Bird was Purdue Universitys entry
into the Igor Sikorsky HPH competition.
The Igor Sikorsky Human Powered Helicopter Competition fosters the development of
human powered helicopters by providing an incentive of a cash prize of US$20 000 to
the team that can build a helicopter that can hover for at least 60 seconds, while
attaining a momentary altitude of 3 meters. Furthermore, the rules of the competition
specify that at least one crewmember must be non-rotating, and the entire operation of
the helicopter, from start-up to slowdown must be the sole actions of the flight crew.
The competition rules are included as Appendix A.
The design for Big Bird came primarily from California Polytechnical Institutes Da Vinci
III. In 1989, the Da Vinci III became the first human powered helicopter when it flew for
approximately 8 seconds. It utilized a 2 bladed, tip driven design that had a bladed
radius of 50 feet, a root chord of 5.1 feet and a tip chord of 2.3 feet (Ref. 1).
A few assumptions were made during the semester that affected the design
specifications of the Big Bird HPH. For simnplicity, and to simulate the Da Vinci IIIs
design, we assumed a single human power source. This differed from the original
design, which had two human power sources. In addition to an initial rotor diameter
estimate of about 102 ft, we also had estimates for the overall weight of the craft and
the power a human could generate. We assumed that with a 130 pound athlete (most
likely a cyclist) pedaling, we could construct a craft that would weigh approximately
another 100 pounds, thus equaling about 230 pounds. The power we assumed wasbased on the maximum power a human could generate cycling which was 1.2-1.4
horsepower for a two-minute duration. As this is the world record, we conservatively
guessed our pilot would be able to produce about 0.8 horsepower (1 kilowatt). We
decided to keep the rate of rotation the same as the original design at 5 revolutions per
minute. We also decided to keep the DAE11 airfoil section as was used by the original
-
7/24/2019 HPH FINAL Report Matthew and John 1
4/50
4
Big Bird design. This still leaves us multiple rotor blade parameters to manipulate to
achieve a greater amount of thrust while still meeting the horsepower constraint.
Design Methodology
Initially, we researched the subject of rotor analysis and previous HPH attempts. This
research introduced us to momentum theory and blade element analysis of as methods
of analyzing various rotor blade designs. Concurrently, we worked on getting a running
CMARC rotor blade file. For CMARC, we started with existing propeller files and
modified those to become familiar with the process of defining various airfoil shapes
using Digital Wind Tunnel. By trial and error, we generated a running rotor blade
geometry that gives correct wakes and pressure distributions for various rates of
rotation, angles of twist and varying amounts of taper. Along the way, we started
looking at other available methods of analysis. These included a blade element code
from Professor Crossley, a blade element code from Professor Lyrintzis and a propeller
analysis code based on Goldsteins method from Prof. Andrisani. We did not look
closely at the codes from Professor Crossley or Andrisani. Both blade element codes
were based on Proutys combined momentum and blade element theory with empirical
corrections. We utilized the blade element code from Prof. Lyrintzis that was written by
John Jameson in 1996. His code had an easily modifiable input file that ran the code.
We also made a Matlab script that would take a CMARC output file and integrate the
Cps to give values of lift and drag for a specific rotor geometry. Using these values,
power and thrust can be found.
Momentum and Blade Element Theory
Momentum theory utilizes the fact that a rotor in hover, an actuator disc, moves still airfar above the rotor to some finite velocity below the rotor. One of momentum theorys
important output parameters is ideal power. Ideal power is the minimum power required
to produce thrust by a rotor. Actual power is always greater than ideal power since
momentum theory does not take into account the drag of the actual blades. Momentum
theory studies the mass flow flowing thru the rotor and the associated induced
-
7/24/2019 HPH FINAL Report Matthew and John 1
5/50
5
velocities. Studying the energy dissipated by the rotor and the energy imparted to the
wake gives the relationship between the induced velocities at the rotor and far below the
rotor. This leads to:
12 2vv = (1)
Which then gives the equation of thrust only in terms of the induced velocity at the rotor:
AvT = 21
2 (2)
Solving for the induced velocity at the rotor gives:
A
Tv
=
21
(3)
Another equation for thrust in terms of a vertical drag component (Dv) and the gross
weight of the aircraft is:
....
1 WGWG
DT v
+= (4)
Equations 3 and 4 combined then give ideal power,
550
1vT
Pi
= (5)
where the 550 term converts sftbl to hp . Ideal power is an important parameter
since it is used as a way to measure the performance of actual rotors. This figure of
merit is the ratio between ideal power and actual power:
-
7/24/2019 HPH FINAL Report Matthew and John 1
6/50
6
rActualPowe
IdealPowerM = (6)
Blade element theory examines the way lift is developed on individual blade elements of
a rotor. Each blade element creates an incremental amount of lift and the total lift of all
the blade elements is the thrust of the rotor. This theory takes into account the local
properties of the airflow and airfoil at each blade element section. Thus, different
amounts of twist, chord, airfoil section, and rotational velocity at each element are
studied. A thorough explanation of the blade element theory used by John Jameson
and Prof. Crossley can be found in Proutys Helicopter Performance, Stability, and
Control (Ref. 2). John Jamesons code is attached as Appendix B.
CMARC
According to the advice we had been given, we initially imported the geometry for the
airfoils from AeroCADD. Given our inexperience with both Digital Wind Tunnel and
Postmarc it took longer than necessary for us to determine that we didnt have enough
spanwise panels. Eventually we abandoned AeroCADD and resorted to attempting to
import the coordinates of the airfoils from www.nasg.com. (Given our knowledge and
understanding of Postmarc at the completion of the assignment, and the wisdom that
comes from hindsight, it may have been easier to continue to modify the .IN files ie
the ones exported from AeroCADD nevertheless we learned a great deal about the
workings of Cmarc by changing our approach).
As importing airfoil coordinates requires a different approach from modifying an output
from AeroCADD, after acquiring the coordinates for the DAE11 and FX63-137 we
searched for an example file to speed up the process. Eventually, WingSC.in was
used, in conjunction with modifying the Cmarc.dim file so that nbpdim was set to 4000
(formally 2000). With these modifications, our rotor.IN file compiled (an example file can
be found in Appendix C).
-
7/24/2019 HPH FINAL Report Matthew and John 1
7/50
7
Using the behavior of the wake as the primary indicator of sensible parameters, we
modified the length of the time step and the number of chordwise panels until we
generated sensible outputs.
Cmarcs reliance on a finite free stream velocity to calculate the distribution of pressures
over a body, made calculating the thrust of a hovering rotor very difficult, especially
given our large radius and very low angular velocity. By rotating the rotor coordinate
system so that the rotors axis pointed upstream we modeled the scenario where the
HPH was in a relatively slow climb with an equal loading on both wings throughout the
rotation.
However, this still left an error in the analysis due to the Vinf which appeared as an
initially constant and uniform downwash across the rotor (when the case for a hovering
rotor was applied). In an effort to reduce this error the angular rotation of the rotor was
increased (with the intention of compensating for the error at the same time the Cps
were scaled).
Each chordwise set of Cps were scaled according to their spanwise position; scaling
was necessary because the pressure coefficients were originally calculated using the
local velocity a function of the rotational velocity and distance from the hub and they
needed to be calculated using Vreference the non-rotational velocity, which has been set
as the rotor tip velocity.
MATLAB was used to perform the necessary calculations (code can be found in
Appendix D); a modified output file was read into MATLAB and the Cp values scaled.
The Cp values were then integrated across the chord and then along the span1 to
obtain coefficients of thrust and drag. The option now exists to graph the scaled Cp
values in MATLAB or to export them to another program.
1At the completion of the project there was an error in the MATLAB code in the lines that performed the
final integration of the chordwise Cp distributions along the span of the wing. The code returned scaledvalues of lift. Regrettably, while the sectional lift values were correct, at the completion of this project, thecode still did not return the correct values for the integrated thrust.
-
7/24/2019 HPH FINAL Report Matthew and John 1
8/50
8
Results and Discussion
From analysis we determined the best design for the configuration of a rotor for Purdue
Universitys Human Powered Helicopter Big Bird, was an 18-meter blade with no taper,
a collective pitch of 10 degrees and 14 degrees twist. This is detailed below.
Blade Radius R 18 [m]
Revolutions per minute 2.5 [m]
Chord (root) Cr 2.5 [m]
Chord (tip) Ct 2.5 [m]
Distance from root to beginning
of non-tapered region as a ratio
of rotor radius
X0 0.001
Distance from root to beginning
of tapered region as a ratio of
rotor radius
X1 1
Collective Pitch 10 [deg]
Twist -14 [deg]
Thrust (produced) T 267.8 [lbs]Power (required) P 0.7363 [hp]
The CMARC files that we produced all have a rotor radius of 17 m and a root chord of
2.5 m. When we were using CMARC, we varied the tip taper ratio and the taper start
point. The following figures show a rotor geometry that has no taper. Figures 1 3
show the wake produced by our CMARC rotor geometry. It can be seen from these
figures that the wake does skew near the root of the rotor. However on the outside of
the wake, produced by the rotor tip, there is a tip vortex generated. This corresponds to
theory, where the flow from the bottom of the rotor rolls over to the top of the airfoil
creating a vortex. It is important to note the orientation of the rotor blade geometry.
Typically CMARC has Vinf originating from some negative X. To simulate a rotor in
-
7/24/2019 HPH FINAL Report Matthew and John 1
9/50
9
hover, the rotor rotates about the X axis in the Z-Y plane as can be seen below. This is
discussed further below.
Figure 1 Rotor, Side View, Negative X is Up, No Taper, = 5 rpm
Figure 2 Rotor, Bottom View, Negative X is Into Page, No Taper, = 5 rpm
-
7/24/2019 HPH FINAL Report Matthew and John 1
10/50
10
Figure 3 Rotor, End View, Negative X is Up, No Taper, = 5 rpm
Figures 4 and 5 show the CPdistribution on the upper and lower surfaces of the rotor
geometry. It can be seen that the CPdistribution does show increasing low pressures
on the top and closer to the tips of the rotor. This is valid since rotational velocityincreases as radius increases. On the bottom surface, there are predominately high
pressures, which is also valid.
Figure 4 Rotor, Top View of Pressure Distribution
-
7/24/2019 HPH FINAL Report Matthew and John 1
11/50
11
Figure 5 Rotor, Bottom View of Pressure Distribution
Figures 6 8 show chord wise CPdistributions near the root, half span, and the rotor tip.
At the root, Figure 6 shows that the rotor is producing little if any lift, or even creating
negative lift. Near the half span, Figure 7 shows that the rotor is producing large
amounts of lift, as would be expected. At the tip, Figure 8, shows a similar CP
distribution as the half span.
-
7/24/2019 HPH FINAL Report Matthew and John 1
12/50
12
Figure 6 Pressure Distribution at about 0.10 r/R
Figure 7 Pressure Distribution at about 0.60 r/R
-
7/24/2019 HPH FINAL Report Matthew and John 1
13/50
13
Figure 8 Pressure Distribution at about 0.98 r/R
The orientation of the rotor geometry greatly affected the output from Postmarc. Since
lift is typically taken as the force perpendicular to the flow velocity, the CLfrom the .out
file is not valid. However, since drag is typically measured parallel with the flow velocity,
the CDfrom the .out file would correspond in some way to the CLof the rotor. We were
not able to find the relationship between these two values. Since, we were not able to
use the force coefficients from the .out file, we used the individual CPvalues from each
panel to find valid force coefficients. At this time this code has not output valid results.
It has output the correct geometry of the rotor, Figure 9, so we know the error lies within
our calculations of the force coefficients.
-
7/24/2019 HPH FINAL Report Matthew and John 1
14/50
14
-16
-14
-12
-10
-8
-6
-4
-2
-1.5-1
-0.50
-0.4-0.2
00.2
Figure 9 Rotor Geometry Output from CMARC Post-Processing Code (Appendix D)
Conclusions and Improvements
Although the results of the scaled Cps were inconclusive, we were still able to
qualitatively compare designs as the constant use of blade dimensions meant the
scaling affected all designs equally. Of all the configurations analyzed, the design as
outlined in the preceding chapter provided the maximum thrust for the minimum
required power. This rotor met the design goal of providing enough thrust to allow the
helicopter to hover given that the human weighed 130lb and the machine 100lbs. It
was determined that the human was capable of outputting a constant level of 0.8
horsepower. Therefore, given these constraints, the rotor generated 0.7363 horsepower
and 267.8 lbs of thrust.
The MATLAB code that scales the pressures and integrates them to determine the
thrust and drag of each blade needs further work to fix the error that returns dubious
results. An analysis program that could model a stationary rotating airfoil, that is a rotorin hover, would also be useful. Cmarc simply wasnt built for this type of analysis.
-
7/24/2019 HPH FINAL Report Matthew and John 1
15/50
15
References
1. Cary, Andrew et. al. Systems Design Optimization of a Human Powered Helicopter.
Submitted to Journal of the AHS, January 25, 1994.
2. Prouty, Raymond W. Helicopter Performance, Stability, and Control. Krieger
Publishing Co. Florida, 1995.
-
7/24/2019 HPH FINAL Report Matthew and John 1
16/50
16
Appendix A HPH Competition RegulationsIgor I. Sikorsky Human Powered Helicopter CompetitionRegulations
Contents1. 1. General
2. 2. Prize
3. 3. Eligibility
4. 4. Conditions of Entry
5. 5. Application for Entry
6. 6. General Conditions
1. General1.1The prize will be awarded by the AHS to the entrant who first fulfills the conditions.1.2Additionally, an attempt will be registered with the Federation AeronautiqueInternationale (FAI) as a World Record for Human-Powered Helicopter Flight duration.
2. Prize2.1The AHS prize in U.S. $20,000.
3. Eligibility3.1The competition is international and is open to individuals or teams from any part ofthe world.3.2Any questions regarding the acceptance of entries, eligibility of entrant, pilot, crew oraircraft under these regulations, or any other matter relating to the AHS prize, thedecision of the AHS is final.3.3All questions regarding the world record attempt will be governed by the sportingcode of the FAI and rest exclusively with the NAC.
4. Conditions of Entry4.1 Aircraft4.1.1The machine shall be a heavier-than-air machine. The use of lighter-than- air
gases shall be prohibited.4.1.2The machine shall be a rotary wing configuration capable of vertical takeoff andlanding in still air, and at least one member of the crew shall be non-rotating.4.1.3The machine shall be powered and controlled by the crew during the entire flight,including accelerating the rotor up to takeoff speed.4.1.4No devices for storing energy either for takeoff or for use in flight shall bepermitted. Rotating aerodynamic components, such as rotor blades, used for lift and/orcontrol are exempt from consideration as energy storing devices.,
-
7/24/2019 HPH FINAL Report Matthew and John 1
17/50
17
4.1.5No part of the machine shall be jettisoned during the flight including the rotor spin-up and takeoff.
4.2 Crew
4.2.1The crew shall be those persons in the machine during takeoff and flight, andthere shall be no limit set to their number.4.2.2No member of the crew shall be permitted to leave or enter the aircraft t at anytime during takeoff or flight.4.2.3No drugs or stimulants shall be used by any member of the crew. An assurancemust be given to the official observers at the time of the attempt that this requirementhas been met.4.2.4Up to two handlers or ground crew shall be permitted to assist in stabilizing themachine during takeoff and landing, but in such a manner that they do not assist inaccelerating or decelerating any part of the machine.
4.3 Ground Conditions
4.3.1All attempts, which shall include the takeoff, shall be made over approximately
level ground (i.e., with a slope not exceeding I in 100 in amy direction).4.3.2All attempts shall be made in still air, which shall be defined as a wind notexceeding a mean speed of approximately one meter per second (3-1 kilometers perhour, 2.23T statute miles per hour, 1.5 nautical miles per hour) over the period of theflight.
4.4 Flight Requirements
4.4.1The flight requirements shall consist of hovering for one minute while maintainingflight within a 10-meter square. During this time the lowest part of the machine shallexceed momentarily 3 meters above the ground.4.4.2The machine shall be in continuous flight from takeoff to landing, and at no time
during the flight shall any part of the machine touch the ground.4.4.3A reference point on the non-rotating part of the machine will be established an ameans whereby the observers can judge that the machine stayed within the confines ofthe 10-meter square.4.4.4The one minute hovering time and the momentary achievement of 3 metersaltitude is required to win the AHS prize. (However, the FAI 1980 regulations specifythat only the duration of the flight and a momentary achievement of 3 meters altitude willbe recorded for the FAX world record attempt, making it possible to achieve a worldrecord without satisfying the AHS prize requirements.)
4.5 Observation
Every attempt shall be observed by the NAC or by any persons authorized by them toact as observers. It may take place in the competitors own country if it is affiliated to theFAI. In a country not so, it could be advantageous to conduct the flight in a neighboringcountry which is so affiliated.
5. Applications for Entry5.1Entry forms shall be obtained from and returned to the American Helicopter Society.217 N. Washington St., Alexandria, VA 22314, (703) 684-6777. email: [email protected]
-
7/24/2019 HPH FINAL Report Matthew and John 1
18/50
18
5.2The entry fee shall be US $15 (made payable to the American Helicopter Society).5.3Each entry form shall contain an application for official observation of thecompetitors attempt.5.4The entrant shall undertake to abide by the conditions for official observation as setout on the entry form and application for official observation and shall undertake to
defray all expenses incurred in connection with the official observation of the attempt.5.5The following fees and charges are made by the NAAfor record attempts in Class I,Human Powered Aircraft. All attempts shall be for national and international records.5.6Final notice of the proposed time and place of the attempt requiring officialobservation may, if so desired, be sent to the AHS later than the entry form. It must inall cases be received at least thirty days before the proposed date f or the attempt. Thistime is required by the NAC (the NAA in the U.S.A.) to arrange for official observation.Applications will be considered in order of receipt.5.7Membership in the appropriate NAC and an FAI Sporting License in required for allcrew members taking part in this competition. Application forms may be obtained fromthe NACor the AHS. For this competition, a pilot's license is not required.
6. General Conditions
6.1 Insurance
The entrant must take out on behalf of himself, his crew, representatives or employees,liability insurance in such form and mount to be specified by the AHS, to. indemnify theAmerican Helicopter Society, the NAC and the FAI against any claims. Evidence thatsuch insurance has been effected must be submitted with the application for officialobservation.
6.2 Revision of Regulations
6.2.1These regulations shall remain in force until such time as the AHS considers it
necessary to amend them, or the prize has been won.6.2.2The AHS reserves the right to add to, amend or omit any of these regulations andto issue supplementary regulations.
6.3 Interpretation of Regulations
The interpretation of these regulations or any of the regulations hereafter issued restentirely with the AHS. The entrant shall be solely responsible to the official observer f ordue observance of these regulations and shall be the person with whom the officialobservers will deal in respect thereof, or any other question arising out of thiscompetition.
-
7/24/2019 HPH FINAL Report Matthew and John 1
19/50
19
Appendix B John Jamesons Blade Element Code
%----------------------------------------------------------------------------
--------------------------------------%
% BEGIN BDRIVER.M
%------------------------------------------------------------------------------------------------------------------%
%
% BDRIVER.M IS THE DRIVER FILE THAT CALLS BLADE.M TO PERFORM THE BLADE
ELEMENT CALCULATIONS.
% BDRIVER.M CONTAINS THE PARAMETERS THAT DESCRIBE THE ROTOR BEING ANALYZED.
%
% INPUT: None
%
% OUPUT: None
%
%----------------------------------------------------------------------------
--------------------------------------%
clear all; close all;
N = 40; % Number of blade elements
b = 2; % Number of blades
Airfoil(1,:) = 'dae11.pol'; % Airfoil used from k(1) to k(2)
Airfoil(2,:) = 'dae11.pol'; % Airfoil used from k(2) to tip
k = [0.0001 0.25]; % Vector of r values where each airfoil begins [m]
t_c = [.12 .12]; % Thickness-to-chord ratios
Elev = 0.5; % Rotor elevation [m]
R = [16 17 18 19]; % Blade radius [m]
Cr = 2.5; % Chord at X0 [m]
Ct = 2.5; % Chord at tip [m]
X0 = 0.001; % Where non-tapered section begins (pure spare from root
to X1)
X1 = 0.9; %[0.7 0.6 0.5 0.4]; % Where tapered section beginsOmega = 5/60*2*pi; % Convert Omega to [rad/s]
Collective = 16*pi/180; % Collective pitch [rad][10:14]
Twist = -14/180*pi; % Washout from hub to tip [rad]
for i = 1:length(R),
[r(i,:), c(i,:), Pitch(i,:), Alpha(i,:), Re(i,:), dT_dr(i,:), dD_dr(i,:),
dM_dr(i,:), T(i), HP(i), DL(i), Sigma(i), CT(i), CQ(i), ERROR_FLAG(i)] =
blade...
(N, Collective, Twist, b, X0, X1, R(i), Ct, Cr, Omega, Airfoil, k, t_c,
Elev);
end
%%Induced Power Calculation (added by John Castro for AAE415, design project,
12/9/2001
projected_area=4; %[m^2] projected area of HPH
(excluding rotor)
GW=1023.09; %[N] gross weight of DaVinci
III HPH (230 lbf)
disc_area=pi*R.^2; %[m^2] rotor disc area
drag=0.3*projected_area*GW./disc_area; %[N] drag term from HPH body
thrust=GW+drag; %[N] thrust
disc_load=thrust./disc_area; %[N/m^2] disc loading
-
7/24/2019 HPH FINAL Report Matthew and John 1
20/50
20
rho=1.23; %[kg/m^3] density at SL
%induced_velocity=(disc_load/2/rho).^(1/2); %[m/s] at disc at S.L.
min_thrust=thrust/4.4482; %[lbf]
%power_ideal=thrust.*induced_velocity/1000*1.3405 %[hp] Ideal Power (1.2493
hp)
%power_ideal_2=thrust^(3/2)./(2*rho.*disc_area).^(1/2)/1000*1.3405
%induced_velocity_actual=(HP./disc_area/2/rho).^(1/2); %[m/s] at disc
at S.L.
HP'
Thrust=T*.2248;
Thrust'
%M=power_ideal./HP; %[ ] Figure of Merit
%M'
%%%%%%%%%%%%%%%%%%%%%%%
figure(1); grid on; hold on;
plot(r, dT_dr(1,:)*.2248);
title('Thrust Distribution');
xlabel('Radial Position'); ylabel('Thrust [lbf]');
figure(2); hold on; grid on;
plot(T*.2248, HP, '*r');
title('Power vs. Thrust');
xlabel('Thrust [lbf]'); ylabel('Power [hp]');
figure(3); hold on; grid on;
plot(r, Pitch/pi*180, '--');
plot(r, Alpha/pi*180, ':');
title('Geometric Pitch and AoA vs. r/R');
xlabel('r/R'); ylabel('Pitch & AoA [deg]');
legend('Pitch','AoA',2)
figure(4); hold on;
plot(r*R, c/2*R); plot(r*R, -c/2*R);
plot(r*R, c/2*R-0.001*R); plot(r*R, -c/2*R-0.001*R);
title('Rotor Geometry');
xlabel('[m]'); ylabel('[m]'); axis([0 18 -6 6]);
%----------------------------------------------------------------------------
--------------------------------------%
% END BDRIVER.M
%----------------------------------------------------------------------------
--------------------------------------%
%----------------------------------------------------------------------------
--------------------------------------%
% BEGIN BLADE.M
%----------------------------------------------------------------------------
--------------------------------------%
%
% BLADE.M PERFORMS BLADE ELEMENT CALCULATIONS.
%
% BLADE.M MAKES CALLS TO THE FOLLOWING M-FILES:
-
7/24/2019 HPH FINAL Report Matthew and John 1
21/50
21
% PHYSICAL.M (Contains atmospheric data)
% DYNSIM.M (Computes properties important for dynamic similarity)
% AIRFOIL.M (Retrieves and manipulates experimental airofil data)
% GEOMETRY.M (Produces data describing planform of rotor and elements)
%
% Written by John Jameson (June, 1996)
%
% Based in part on the blade element theory presented in
% "Helicopter Performance, Stability, and Control" by Raymond W. Prouty
(p.69-72)
%
%----------------------------------------------------------------------------
--------------------------------------%
%
% INPUT: N (Number of blade elements to use)
% Collective (Collective pitch of rotor) [rad]
% Twist (Twist of blade from hub to tip) [rad]
% b (Number of blades on rotor)
% X0 (Radial starting point of airfoil)
% X1 (Radial starting point of taper)
% R (Radius of rotor from hub to tip) [m]% Ct (Chord at tip of rotor) [m]
% Cr (Chord at X0) [m]
% Omega (Rotor rate of rotation) [rad/s]
% Airfoil (Name of file containing airfoil data) (string)
% k (Vector of r values where each airfoil begins) [m]
% t_c (Thickness-to-chord ratio of each airfoil)
% Elev (Rotor elevation) [m]
%
% OUPUT: r (Nondimensional radius r/R)
% c (Nondimensional chord c/R)
% Pitch (Pitch of blade at each position r) [rad]
% Alpha (Local AoA) [rad]
% Re (Local Reynolds number at each r)
% dT_dr (Running thrust) [N/m]
% dD_dr (Running drag) [N/m]
% dM_dr (Running pitching moment) [N*m/m]
% T (Thrust) [N]
% HP (Required power) [hp]
% DL (Disc loading) [N/m^2]
% Solidity (Solidity ratio)
% CT (Thrust coefficient)
% CQ (Torque coefficient)
% ERROR_FLAG (1 if error has occurred 0 otherwise)
%
% NOMENCLATURE:
% N (Numer of blade elements used)
% Collective (Collective pitch of rotor) [rad]% Twist (Twist of blade from hub to tip) [rad]
% b (Number of blades on rotor)
% X0 (Radial starting point of airfoil)
% X1 (Radial starting point of taper)
% R (Radius of rotor from hub to tip) [m]
% Ct (Chord at tip of rotor) [m]
% Cr (Chord at X0) [m]
% Omega (Rotor rate of rotation) [rad/s]
% Airfoil (Name of file containing airfoil data) (string)
-
7/24/2019 HPH FINAL Report Matthew and John 1
22/50
22
% t_c (Thickness-to-chord ratio)
% Rho (Air density) [kg/m^3]
% Mach (Speed of sound) [m/s]
% KinVisc (Kinematic viscosity) [m^2/s]
% AlphaZL (Zero lift AoA) [rad]
% a (Lift curve slope) [1/rad]
% c (Nondimensional chord c/R)
% r (Nondimensional radius r/R)
% Pitch (Pitch of blade at each position r) [rad]
% M (Local Mach number at each position r)
% V (Local velocity at each position r)
% Re (Local Reynolds number at each r)
% Phi (Local inflow angle) [rad]
% Alpha (Local AoA) [rad]
% cl (Local coefficient of lift)
% cd (Local coefficient of drag)
% dCT_dr (Running thrust loading wrt. nondim. r)
% CT_NoTipLoss (Thrust coefficient without tip loss)
% B (Tip loss factor)
% BIndex (Index into r locating B)
% CT (Thrust coefficient including tip loss)% dCQo_dr (Running profile torque loading wrt. nondim. r)
% CQo (Profile torque coefficient)
% dCQi_dr (Running induced torque loading wrt. nondim. r)
% CQi (Induced torque coefficient)
% DeltaCQiIndex (Index into r for PiRot_PiThrust integration)
% PiRot_PiThrust (Induced power due to wake rotation divided by induced
power due to thrust)
% DeltaCQi (Loss of CQi due to rotation of wake)
% DL (Disc loading) [N/m^2]
% Ablades (Total rotor planform area) [m^2]
% Adisc (Disc area) [m^2]
% Solidity (Solidity ratio)
% PowerCorrection (Empirical power correction due to wake contraction)
% CQ (Torque coefficient)
% T (Total thrust produced by rotor) [N]
% HP (Total power required to drive rotor) [hp]
% h (Ratio of rotor elevation to rotor diameter)
% CT_Solidity (Thrust coefficient divided by solidity ratio)
% CQ_Solidity (Torque coefficient divided by solidity ratio)
% ERROR_FLAG (Returns 1 if a fatal error occurred; 0 if everything was
cool)
%
% NOTES: ERROR_FLAG is set to 1 in the following situations:
%
% 1. AIRFOIL.M returns ERROR_FLAG == 1
% 2. GEOMETRY.M returns ERROR_FLAG == 1
% 3. Pitch is too negative for calculation of inflow angle (Step 5)% 4. An unknown problem occurs
%
%----------------------------------------------------------------------------
--------------------------------------%
function [r, c, Pitch, Alpha, Re, dT_dr, dD_dr, dM_dr, T, HP, DL, Solidity,
CT, CQ, ERROR_FLAG] = blade(N, Collective, Twist, b, X0, X1, R, Ct, Cr,
Omega, Airfoil, k, t_c, Elev)
-
7/24/2019 HPH FINAL Report Matthew and John 1
23/50
23
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 1, 2, 3, 4 (The steps roughly follow Prouty's steps)
%----------------------------------------------------------------------------
--------------------------------------%
[Rho, Mach, KinVisc] = physical;
for i=1:length(Airfoil(:,1)),
[AlphaZL(i), Temp_a(i), Nothing, ERROR_FLAG] = airfoil(N, 1, 0, 0, 0, 0,
Airfoil(i,:));
end
[c, r, Pitch, a, ERROR_FLAG] = geometry(N, Collective, Twist, X0, X1, R, Ct,
Cr, AlphaZL, k, Temp_a);
[M, V, Re] = dynsim(N, Omega, R, Mach, c, r, KinVisc);
% Add Prandtl-Glauert compressibility correction to lift curve slope
for i = 1:(N+1),
for j=1:length(k),
a(i) = a(i)/sqrt(1 - M(i)^2);
endend
%----------------------------------------------------------------------------
--------------------------------------%
% Step 5: Caculate inflow angle [rad]
% Note: Calculation of local inflow angle fails for values
% of pitch that are too negative.
%----------------------------------------------------------------------------
--------------------------------------%
for i = 1:(N+1),
num1 = ( 32*pi*Pitch(i)*r(i) ) / ( b*a(i)*c(i) );
if( num1 >= -1 ),
num2 = ( b*a(i)*c(i) ) / ( 16*pi*r(i) );
Phi(i) = num2 * ( -1 + sqrt(1 + num1) );
else
outstring = zeros(2,94);
outstring(1,1:94) = sprintf('ERROR BLADE.M: The pitch of element %3i is
%6.2f degrees. ', i, Pitch(i)/pi*180);
outstring(2,1:94) = sprintf('ERROR BLADE.M: This value is too negative
to use in the calculation of inflow angle (Step 5). ');
disp(outstring);
ERROR_FLAG = 1;
Phi = zeros(1,N+1); % Fill in Phi with garbage so that algorithm can
continue
end
end
%----------------------------------------------------------------------------
--------------------------------------%
% Step 6: Caculate local AoA
%----------------------------------------------------------------------------
--------------------------------------%
for i = 1:(N+1),
for j=1:(length(k)-1),
if( (r(i) >= k(j)) & (r(i) < k(j+1)) ),
-
7/24/2019 HPH FINAL Report Matthew and John 1
24/50
24
Alpha(i) = Pitch(i) - atan( Phi(i) );
elseif( (r(i) >= k(length(k))) & (r(i) = 0.9 ),
for j=1:(length(k)-1),
if( (r(i) >= k(j)) & (r(i) < k(j+1)) ),
Temp_t_c = t_c(j);
elseif( (r(i) >= k(length(k))) & (r(i) = k(i)) & (r(j) < k(i+1)) ),
cl(j) = Temp_cl(j);
cd(j) = Temp_cd(j);
cm(j) = Temp_cm(j);
end
end
elseif( i == length(Airfoil(:,1)) ),
for j=1:(N+1),
if( (r(j) >= k(length(k))) & (r(j)
-
7/24/2019 HPH FINAL Report Matthew and John 1
25/50
25
cl(j) = 0;
cd(j) = 0;
cm(j) = 0;
ERROR_FLAG = 1;
end
end
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 8, 9: Caculate running thrust loading (and thrust) and integrate
%----------------------------------------------------------------------------
--------------------------------------%
for i = 1:(N+1),
dCT_dr(i) = b*r(i)^2*c(i)*cl(i) / (2*pi);
end
CT_NoTipLoss = trapz( r, dCT_dr );
%----------------------------------------------------------------------------
--------------------------------------%
% Step 10: Calculate tip loss factor%
% Note: As reported by Donald M. Layton in "Helicopter Performance," Matrix
Publishers, Inc.,
% Beaverton, Oregon, the Prandtl-Betz tip loss factor should be replaced
by the Wald
% tip loss factor when dealing with linearly tapered blades. The Wald
tip loss factor
% adds another term depending on CT to the Prandtl-Betz tip loss factor.
%
%----------------------------------------------------------------------------
--------------------------------------%
if(X1 == 1),
B = 1 - sqrt(2*CT_NoTipLoss)/b; % Prandtl-Betz tip loss factor
for non-tapered blades (Prouty)
elseif(X1 < 0.5),
B = 1 - sqrt(2*CT_NoTipLoss)/b - 0.6*CT_NoTipLoss; % Wald tip loss factor
for linearly tapered blades
elseif(X1 >= 0.5),
B = 1 - sqrt(2*CT_NoTipLoss)/b - 0.3*CT_NoTipLoss; % Wald tip loss factor
for linearly tapered blades
else
sprintf('ERROR BLADE.M: Unknown problem calculating tip loss factor')
ERROR_FLAG = 1;
end
%----------------------------------------------------------------------------
--------------------------------------%% Step 11: Calculate corrected thrust coefficient
%----------------------------------------------------------------------------
--------------------------------------%
BIndex = 0;
for i = 1:(N+1),
if ( r(i)
-
7/24/2019 HPH FINAL Report Matthew and John 1
26/50
26
if( BIndex == 0 ), % Almost entire rotor affected by tip
loss... a stupid design!
CT = 0;
elseif( BIndex == N+1 ), % Tip loss extremely small
CT = CT_NoTipLoss;
elseif( BIndex < N+1 ),
ExtradCT_dr = dCT_dr(BIndex) + (B - r(BIndex))/(r(BIndex+1) -
r(BIndex))*(dCT_dr(BIndex+1) - dCT_dr(BIndex));
CT = CT_NoTipLoss - trapz( [B r((BIndex+1):length(r))], [ExtradCT_dr
dCT_dr((BIndex+1):length(dCT_dr))] );
else,
disp('ERROR BLADE.M: Unknown problem calculating corrected thrust
coefficient');
ERROR_FLAG = 1;
end
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 12, 13: Caculate running profile torque loading and integrate
%------------------------------------------------------------------------------------------------------------------%
for i = 1:(N+1),
dCQo_dr(i) = b*r(i)^3*c(i)*cd(i)/(2*pi);
end
CQo = trapz(r, dCQo_dr);
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 14, 15: Caculate running induced torque loading and integrate
%----------------------------------------------------------------------------
--------------------------------------%
for i = 1:(N+1),
dCQi_dr(i) = b*r(i)^3*c(i)*cl(i)*Phi(i)/(2*pi);
end
if( BIndex == 0 ), % If no thrust, then no induced torque
(see Step 11)
CQi = 0;
elseif( ~dCQi_dr ), % Get rid of cases where dCQi_dr is all
zeros, due to Phi being set to all zeros in Step 5
CQi = 0;
elseif( BIndex == N+1 ), % Tip loss extremely small
CQi = trapz(r, dCQi_dr);
elseif( BIndex < N+1 ),
ExtradCQi_dr = dCQi_dr(BIndex) + (B - r(BIndex))/(r(BIndex+1) -
r(BIndex))*(dCQi_dr(BIndex+1) - dCQi_dr(BIndex));
CQi = trapz( [r(1:(BIndex)) B], [dCQi_dr(1:(BIndex)) ExtradCQi_dr] );else,
disp('ERROR BLADE.M: Unknown problem integrating induced torque loading');
ERROR_FLAG = 1;
end
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 16: Calculate CQi due to rotation of wake
-
7/24/2019 HPH FINAL Report Matthew and John 1
27/50
27
%----------------------------------------------------------------------------
--------------------------------------%
MINE = 1;
if( MINE ==1),
DeltaCQiIndex = 0;
num1 = sqrt(2*CT);
for i = 1:(N+1),
if ( r(i)
-
7/24/2019 HPH FINAL Report Matthew and John 1
28/50
28
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 18: Calculate CT divided by solidity ratio
%----------------------------------------------------------------------------
--------------------------------------%
Ablades = b*R^2*trapz(r, c); % Total blade area
Adisc = pi*R^2; % Disc area
Solidity = Ablades/Adisc; % Solidity raio
CT_Solidity = CT/Solidity;
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 19: Find empirical power correction due to contraction of wake
%
% Note: The equation for PowerCorrection was taken from Figure 1.34 of
Prouty (p.58).
% It was generated in 1992 by Bill Crossley using a fifth-order numerical
curve
% fit in Cricket Graph for the PC. Within the range 0 < DL*CT_Solidity 2) ),
sprintf('BLADE.M: Empirical power correction is invalid for DL = %f and
Collective = %f!', DL, Collective/pi*180)
disp('BLADE.M: Setting power correction equal to 1');
PowerCorrection = 1;
else
PowerCorrection = 0.94316 + 0.31453*num - 0.32004*num^2 + 0.18671*num^3 -
0.05996*num^4 + 0.00836*num^5;
end
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 19j: Calculate induced power ratio for cases of ground effect
%
% Note: The equation for PiIGE_PiOGE is an empirical result based on the
findings of
% Zbrozek, J., "Ground Effect on the Lifting Rotor," British R&M 2347,
July 1947, as
% reported by Donald M. Layton in "Helicopter Performance," Matrix
Publishers, Inc.,% Beaverton, Oregon. It is valid only for rotors elevated 0.3 to 2.0
rotor
% diameters above ground.
% (Added 6-22-9 by John Jameson)
%
%----------------------------------------------------------------------------
--------------------------------------%
%h = Elev/(2*R);
%if( (h >= 0.3) & (h
-
7/24/2019 HPH FINAL Report Matthew and John 1
29/50
29
% PiIGE_PiOGE = -0.1276*h^4 + 0.7080*h^3 - 1.4569*h^2 + 1.3432*h + 0.5147;
%else
% PiIGE_PiOGE = 1;
% disp('BLADE.M: The given rotor elevation is not within the range of
validity for the empirical ground effect calulation');
% disp('BLADE.M: Ground effect will be ignored');
%end
%----------------------------------------------------------------------------
--------------------------------------%
% Step 19.1j: Calculate total running torque coefficient (does not include
tip effects)
%----------------------------------------------------------------------------
--------------------------------------%
%dCQ_dr = ( dCQo_dr + PiIGE_PiOGE*dCQi_dr*(1 + PiRot_PiThrust)
)*PowerCorrection; % With ground effect
dCQ_dr = ( dCQo_dr + dCQi_dr*(1 + PiRot_PiThrust) )*PowerCorrection; %
Without GE
%------------------------------------------------------------------------------------------------------------------%
% Steps 19.2j: Caculate running pitching moment, thrust, and drag and
integrate
%----------------------------------------------------------------------------
--------------------------------------%
for i=1:(N+1),
dCd_dr(i) = dCQ_dr(i)/r(i);
dD_dr(i) = dCd_dr(i)*Rho*Adisc*Omega^2*R^2;
dT_dr(i) = dCT_dr(i)*Rho*Adisc*Omega^2*R^2;
end
dM_dr(1) = 0;
for i = 2:(N+1),
dM_dr(i) = 0.5*Rho*V(i)^2*c(i)^2*(r(i) - r(i-1))*cm(i);
end
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 20: Calculate total torque coefficient
%----------------------------------------------------------------------------
--------------------------------------%
%CQ = (CQo + CQi*PiIGE_PiOGE + DeltaCQi)*PowerCorrection; % With ground
effect
CQ = (CQo + CQi + DeltaCQi)*PowerCorrection; % Without GE
CQ_Solidity = CQ/Solidity;
%----------------------------------------------------------------------------
--------------------------------------%
% Steps 21: Calculate rotor thrust and power
%----------------------------------------------------------------------------
--------------------------------------%
T = Rho*Adisc*Omega^2*R^2*CT; % Thrust in [N]
HP = (Rho*Adisc*Omega^3*R^3*CQ)/1000*1.3405; % Power in [hp]
Q = (Rho*Adisc*Omega^2*R^3*CQ) % Torque in [N*m]
-
7/24/2019 HPH FINAL Report Matthew and John 1
30/50
30
%----------------------------------------------------------------------------
--------------------------------------%
% END BLADE.M
%----------------------------------------------------------------------------
--------------------------------------%
%----------------------------------------------------------------------------
--------------------------------------%
% BEGIN AIRFOIL.M
%----------------------------------------------------------------------------
--------------------------------------%
%
% AIRFOIL.M IS RESPONSIBLE FOR HANDLING THE FILES OF EXPERIMENTAL AIRFOIL
DATA.
% THE INFORMATION IT RETURNS DEPENDS ON THE VALUE OF 'index'.
%
% INPUT: N (Number of blade elements to use)
% index (Controls behavior of AIRFOIL.M)%
% Alpha (Local AoA) [rad]
% X0 (Radial starting point of airfoil)
% r (Nondimensional radius r/R)
% Re (Local Reynolds number at each r)
% Airfoil (Name of file containing airfoil data) (string)
%
% OUPUT: (Index = 1):
% x = AlphaZL (Zero lift AoA) [rad]
% y = a (Lift curve slope) [1/rad]
% ERROR_FLAG (1 if error has occurredl 0 otherwise)
% (Index = 2):
% x = cl (Local coefficient of lift)
% y = cd (Local coefficient of drag)
% z = cm (Local coefficient of pitching moment)% ERROR_FLAG (1 if error has occurredl 0 otherwise)
%
% NOTES: ERROR_FLAG is set to 1 if any of the following happens:
%
% 1. Problem opening airfoil data file
% 2. A blade element (BE) is stalled
% 3. A BE is at an AoA above or below the data in the data file
% 4. An unknown error occurs
% 5. Airfoil.m is called with index set to an illegal value
%
% In cases 2 and 3, values for cl, cd, and cm are returned so that
blade.m does
% not crash. These values, however, are pretty bogus.
%
%--------------------------------- AIRFOIL DATA FILE FORMAT ("name.pol") ----
-------------------------------------%
% numRe
% Re
% numData
% AlphaStall [degrees]
% AlphaZL [degrees]
% a [1/rad]
-
7/24/2019 HPH FINAL Report Matthew and John 1
31/50
31
% AlphaData [degrees] ClData CdData CmData[other junk spit out by Xfoil]
% .
% .
% .
% .
% .
% AlphaData(numRe*numData) .......................................
%----------------------------------------------------------------------------
--------------------------------------%
function [x, y, z, ERROR_FLAG] = airfoil(N, index, Alpha, X0, r, Re, Airfoil)
ERROR_FLAG = 0;
ifp = fopen(Airfoil); % Open data file for chosen airfoil
if ( ifp ~= -1 ),
numRe = fscanf(ifp, '%f', 1); % Scan in number of Reynolds number
sets
ReData = fscanf(ifp, '%f', numRe); % Scan in the Reynolds numbers
represented in file
numData = fscanf(ifp, '%f', 1); % Scan in number of data points in(Alpha, Cl, Cd) for each Re
AlphaStall = fscanf(ifp, '%f', 1);
AlphaZL = fscanf(ifp, '%f', 1);
a = fscanf(ifp, '%f', 1);
for i=1:(numRe*numData),
TempData = fscanf(ifp, '%f', 7); % Xfoil spits out 7 types of data in
its polars
AlphaData(i) = TempData(1);
ClData(i) = TempData(2);
CdData(i) = TempData(3);
CmData(i) = TempData(5);
end
fclose(ifp);
Airfoil = '';
else
disp(sprintf('ERROR AIRFOIL.M: Error opening data file %s.pol!',
Airfoil));
Airfoil = '';
ERROR_FLAG = 1;
end
AlphaData = AlphaData/180*pi; % Convert experimental AoA data to
radians
AlphaStall = AlphaStall/180*pi; % Convert stall AoA to radiansAlphaZL = AlphaZL/180*pi; % Convert zero lift AoA to radians
TAB(:,1) = AlphaData'; % Form look-up table (1st column is AoA,
2nd is cl, 3rd is cd)
TAB(:,2) = ClData'; % Note that the data for the different Re
runs together
TAB(:,3) = CdData';
TAB(:,4) = CmData';
-
7/24/2019 HPH FINAL Report Matthew and John 1
32/50
32
clear AlphaData; % Free some memory
clear ClData;
clear CdData;
clear CmData;
if (index == 1), % Check to see what mode airfoil.m is operating
in
x = AlphaZL; % Return zero lift AoA [rad]
y = a; % Return lift curve slope [1/rad]
z = 0; % Nothing
elseif (index == 2), % Data look-up for cl and cd
for i = 1:(N+1), % Begin loop to find local cl and cd for the
(N+1) nodes
ReIndex = 1; % Compute ReIndex for moving around in data
table
for j = 2:numRe, % ReIndex will identify the first data Re less
that the local Re
if( Re(i) >= ReData(j) ),
ReIndex = ReIndex + 1;
endend
num1 = (ReIndex-1)*numData + 1; % Beginning of data for Re
immediately below the local Re
num2 = ReIndex*numData; % Ending of data for Re immediately below
the local Re
num3 = num2 + 1; % Beginning of data for Re immediately above
the local Re
num4 = (ReIndex+1)*numData; % Ending of data for Re immediately
above the local Re
if( Re(i)
-
7/24/2019 HPH FINAL Report Matthew and John 1
33/50
33
minAlpha = LominAlpha;
end
if( LomaxAlpha < HimaxAlpha ), % Take the smaller of the two
maximums to be the overall max
maxAlpha = LomaxAlpha;
else,
maxAlpha = HimaxAlpha;
end
if( Alpha(i) > AlphaStall ), % Check to see if element is stalled
sprintf('AIRFOIL.M: Element %i stalled at AoA = %f!', i, Alpha(i))
disp('AIRFOIL.M: Using cl=0, cd=1.0, and cm=0.')
ERROR_FLAG = 1;
x(i) = 0;
y(i) = 1.00;
z(i) = 0;
elseif( Alpha(i) < minAlpha ),
sprintf('AIRFOIL.M: Element %i at AoA = %f is below experimentaldata range!', i, Alpha(i))
sprintf('AIRFOIL.M: Using cl, cd, and cm at the minimum AoA, %f
degrees', minAlpha/pi*180)
if( minAlpha == LominAlpha ), % If local AoA is below minAlpha,
interpolation on Re is impossible, so just use values from the data set of
minAlpha
Data = table1( TAB(num1:num2, :), minAlpha );
else,
Data = table1( TAB(num3:num4, :), minAlpha );
end
ERROR_FLAG = 1;
x(i) = Data(1); % cl
y(i) = Data(2); % cd
z(i) = Data(3); % cm
elseif( Alpha(i) > maxAlpha ), % If local AoA is above maxAlpha
(but below AlphaStall), interpolation on Re is impossible, so just use values
from the data set of maxAlpha
sprintf('AIRFOIL.M: Element %i at AoA = %f is above experimental
data range!', i, Alpha(i))
sprintf('AIRFOIL.M: Using cl and cd at the maximum AoA, %f degrees',
max(AlphaData)/pi*180)
if( maxAlpha == LomaxAlpha ),
Data = table1( TAB(num1:num2, :), maxAlpha );else,
Data = table1( TAB(num3:num4, :), maxAlpha );
end
x(i) = Data(1); % cl
y(i) = Data(2); % cd
z(i) = Data(3); % cm
-
7/24/2019 HPH FINAL Report Matthew and John 1
34/50
34
elseif( (Alpha(i) = minAlpha) ), % If
local Alpha is within the data ranges, go ahead and interpolate on Re
LoData = table1(TAB( num1:num2, : ), Alpha(i));
HiData = table1(TAB( num3:num4, : ), Alpha(i));
if( (Re(i) = ReData(numRe)) ),
x(i) = LoData(1); % Note that in either of these
cases, LoData and HiData point to the same block of data (top or lowest Re
block)
y(i) = LoData(2);
z(i) = LoData(3);
else,
Factor = ( Re(i) - ReData(ReIndex) ) / ( ReData(ReIndex+1) -
ReData(ReIndex) ); % Interpolate between cl and cd values for the
Reynolds numbers above and below the local Re
x(i) = LoData(1) + Factor*( HiData(1) - LoData(1) ); % cl
y(i) = LoData(2) + Factor*( HiData(2) - LoData(2) ); % cd
z(i) = LoData(3) + Factor*( HiData(3) - LoData(3) ); % cm
end
else,
disp(sprintf('ERROR AIRFOIL.M: Unknown problem with element %i at
AoA = %f!', i, Alpha(i)));
ERROR_FLAG = 1;
end
end % End loop for the (N+1) nodes
%figure;plot(Alpha/pi*180, x);hold on;grid on;title('cl vs. Alpha');
%figure;plot(x, y);hold on;grid on;title('cd vs. cl');
%figure;plot(x, z);hold on;grid on;title('cm vs. cl');
else,
disp(sprintf('ERROR AIRFOIL.M: You called airfoil.m in mode %i. This is
poo-poo!', index));
ERROR_FLAG = 1;
end % End if statement for operational mode
of airfoil.m
%----------------------------------------------------------------------------
--------------------------------------%
% END AIRFOIL.M
%----------------------------------------------------------------------------
--------------------------------------%
%----------------------------------------------------------------------------
--------------------------------------%
% BEGIN GEOMETRY.M
%----------------------------------------------------------------------------
--------------------------------------%
%
% GEOMETRY.M
%
% INPUT: N (Numer of blade elements used)
-
7/24/2019 HPH FINAL Report Matthew and John 1
35/50
35
% Collective (Collective pitch of rotor) [rad]
% Twist (Twist of blade from hub to tip) [rad]
% X0 (Radial starting point of airfoil)
% X1 (Radial starting point of taper)
% R (Radius of rotor from hub to tip) [m]
% Ct (Chord at tip of rotor) [m]
% Cr (Chord at X0) [m]
% AlphaZL (Zero lift AoA) [rad]
% k (Vector of r values where each airfoil begins) [m]
% Temp_a (Vector of lift curve slopes for each airfoil) [1/rad]
%
% OUPUT: c (Nondimensional chord c/R)
% r (Nondimensional radius r/R)
% Pitch (Pitch of blade at each position r) [rad]
% a (Vector of lift curve slopes at each r) [1/rad]
% ERROR_FLAG (1 if error has occurredl 0 otherwise)
%
%----------------------------------------------------------------------------
--------------------------------------%
function [c, r, Pitch, a, ERROR_FLAG] = geometry(N, Collective, Twist, X0,
X1, R, Ct, Cr, AlphaZL, k, Temp_a)
ERROR_FLAG = 0;
for i=0:N,
r(i+1) = ( X0 + (1 - X0)*sin(i*pi/2/N) );
end
% Caculate the chord at each element boundary (nondimensionalized by rotor
radius)
if( X1 ~= 1 ),
Slope = (Cr - Ct) / (1 - X1); % "Slope" of the tapered section
else,
Slope = 0;
end
for i=1:(N+1),
if ( r(i) X1,
% Pitch(i) = Collective - AlphaZL(j);
% a(i) = Temp_a(j);
% elseif r(i) >= X1,
% Pitch(i) = Collective + ((r(i)-X1)/(1-X1))*Twist -
AlphaZL(length(k));
% a(i) = Temp_a(length(k));
% else,
-
7/24/2019 HPH FINAL Report Matthew and John 1
36/50
36
% disp('ERROR GEOMETRY.M: Problem processing range of each airfoil
section');
% ERROR_FLAG = 1;
% r(i)
% k
% end
% end
%end
%%%%%%%%%%%%%%%%%%%%% old
for i=1:(N+1),
for j=1:(length(k)-1),
if( (r(i) >= k(j)) & (r(i) < k(j+1)) ),
Pitch(i) = Collective + r(i)*Twist - AlphaZL(j);
a(i) = Temp_a(j);
elseif( (r(i) >= k(length(k))) & (r(i)
-
7/24/2019 HPH FINAL Report Matthew and John 1
37/50
37
%----------------------------------------------------------------------------
--------------------------------------%
function [M, V, Re] = dynsim(N, Omega, R, Mach, c, r, KinVisc)
i=1:(N+1);
V = Omega*r(i)*R;
M = V(i)/Mach;
Re = V(i).*c(i)*R/KinVisc;
%----------------------------------------------------------------------------
--------------------------------------%
% END DYNSIM.M
%----------------------------------------------------------------------------
--------------------------------------%
function PlotStyle = plotstyl
PlotColor = ['k' 'k' 'k' 'k' 'k' 'k' 'k'];
PlotSymbol = ['. '; 'o '; 'x '; '+ '; '- '; '* '; ': '; '-.'; '--'];
num1 = length(PlotColor);
num2 = length(PlotSymbol(:,1));
index = 1;
for i = 1:num1,
for j = 1:num2,
PlotStyle(num1*num2-index+1,:) = sprintf('%s%s', PlotColor(i),
PlotSymbol(j,:));
index = index + 1;
end
end
-
7/24/2019 HPH FINAL Report Matthew and John 1
38/50
38
Appendix C An Example of a CMARC .in File
DAE 11 Rotating about x; Radius=17 m; Chord=2.5m; Two Blades&BINP2 LSTINP=2, LSTOUT=0, LSTFRQ=0, LENRUN=0, LPLTYP=0, &END&BINP3 LSTGEO=0, LSTNAB=0, LSTWAK=0, LSTCPV=0, &END
&BINP4 MAXIT=200, SOLRES=0.0005, &END&BINP5 NTSTPS=50, DTSTEP=0.1, &END&BINP6 RSYM=1.0, RGPR=0.0, RFF=5.0, RCORES=0.050, RCOREW=0.050, &END&BINP7 VINF=1.0, VSOUND=1116.0, &END&BINP8 ALDEG=0.0, YAWDEG=0.0, PHIDOT=-30.0, THEDOT=0.0, PSIDOT=0.0, &END&BINP8A PHIMAX=0.0, THEMAX=0.0, PSIMAX=0.0,
WRX=0.0, WRY=0.0, WRZ=0.0, &END&BINP8B DXMAX=0.0, DYMAX=0.0, DZMAX=0.0, WTX=0.0, WTY=0.0, WTZ=0.000, &END&BINP9 CBAR=1.00, SREF=85.0, SSPAN=10.0,
RMPX=0.25, RMPY=0.00, RMPZ=0.00, &END&BINP10 NORSET=0, NBCHGE=0, NCZONE=0, NCZPCH=0, CZDUB=0.0, VREF=0.0, NNROT=0, &END
&BINP11 NORPCH=0, NORF=0, NORL=0, NOCF=0, NOCL=0, VNORM=0.0, &END&BINP11A NROTPCH=0, NROTRF=0, NROTRL=0, NROTCF=0 NROTCL=0, ANGLE=0.0, VX=0.0, VY=0.0, VZ=0.0, &END&BINP12 KPAN=0, KSIDE=0, NEWNAB=0, NEWSID=0, &END&BINP13 NBLIT = 0, &END
&ASEM1 ASEMX=0.00, ASEMY=0.00, ASEMZ=0.00, ASCAL=1.00, ATHET=0.00, NODEA=5, &END
&COMP1 COMPX=0.0000, COMPY=0.0000, COMPZ= 0.0000, CSCAL= 1.000, CTHET= 0.0, NODEC=5, &END
&PATCH1 IREV=-1, IDPAT=1, MAKE=0, KCOMP=1, KASS=1, &END WING Right [1]&SECT1 STX=0.000, STY=0.200, STZ=-0.500, SCALE=2.500,
ALF=-85.0, THETA=0.0, INMODE=4, TNODS=0, TNPS=0, TINTS=0, &END
1.00000 .00000 .00000 .96610 .00000 .00640 .94530 .00000 .01060 .92430 .00000 .01510 .90310 .00000 .01990 .88190 .00000 .02510 .86060 .00000 .03040 .83920 .00000 .03610 .81770 .00000 .04200 .79620 .00000 .04800 .77470 .00000 .05430
.75300 .00000 .06060 .73140 .00000 .06700 .70980 .00000 .07350 .68840 .00000 .07990 .66700 .00000 .08610 .64580 .00000 .09210 .62480 .00000 .09780 .60390 .00000 .10310 .58320 .00000 .10790
-
7/24/2019 HPH FINAL Report Matthew and John 1
39/50
39
.56250 .00000 .11220 .54180 .00000 .11600 .52100 .00000 .11920 .50020 .00000 .12200 .47930 .00000 .12430 .45840 .00000 .12610 .43750 .00000 .12750 .41650 .00000 .12840 .39560 .00000 .12880 .37470 .00000 .12880 .35380 .00000 .12830 .33300 .00000 .12730 .31230 .00000 .12590 .29180 .00000 .12410 .27150 .00000 .12180 .25150 .00000 .11910 .23190 .00000 .11590 .21270 .00000 .11240 .19430 .00000 .10840 .17650 .00000 .10420
.15970 .00000 .09970 .14390 .00000 .09500 .12920 .00000 .09030 .11580 .00000 .08550 .10350 .00000 .08080 .09240 .00000 .07610 .08240 .00000 .07160 .07340 .00000 .06730 .06530 .00000 .06310 .05800 .00000 .05910 .05140 .00000 .05520 .04550 .00000 .05150 .04020 .00000 .04800
.03530 .00000 .04460 .03090 .00000 .04130 .02690 .00000 .03810 .02320 .00000 .03500 .01990 .00000 .03200 .01690 .00000 .02910 .01410 .00000 .02620 .01160 .00000 .02340 .00930 .00000 .02070 .00730 .00000 .01800 .00550 .00000 .01540 .00400 .00000 .01270 .00260 .00000 .01010
.00150 .00000 .00760 .00070 .00000 .00500 .00020 .00000 .00250 .00010 .00000 .00130 .00000 .00000 .00000&BPNODE TNODE=1, TNPC=15, TINTC=0, &END .00020 .00000 -.00240 .00090 .00000 -.00460 .00220 .00000 -.00670 .00410 .00000 -.00850
-
7/24/2019 HPH FINAL Report Matthew and John 1
40/50
40
.00630 .00000 -.00990 .00890 .00000 -.01100 .01170 .00000 -.01180 .01470 .00000 -.01250 .01790 .00000 -.01300 .02120 .00000 -.01350 .02480 .00000 -.01390 .02860 .00000 -.01420 .03260 .00000 -.01450 .03690 .00000 -.01470 .04150 .00000 -.01490 .04650 .00000 -.01500 .05180 .00000 -.01510 .05750 .00000 -.01510 .06380 .00000 -.01510 .07060 .00000 -.01500 .07810 .00000 -.01490 .08630 .00000 -.01470 .09530 .00000 -.01440 .10530 .00000 -.01400
.11640 .00000 -.01360 .12870 .00000 -.01300 .14220 .00000 -.01230 .15700 .00000 -.01160 .17310 .00000 -.01070 .19040 .00000 -.00970 .20870 .00000 -.00860 .22800 .00000 -.00740 .24790 .00000 -.00620 .26830 .00000 -.00490 .28920 .00000 -.00360 .31020 .00000 -.00230 .33150 .00000 -.00100
.35280 .00000 .00020 .37420 .00000 .00150 .39560 .00000 .00270 .41700 .00000 .00380 .43850 .00000 .00490 .45990 .00000 .00600 .48130 .00000 .00700 .50270 .00000 .00790 .52410 .00000 .00880 .54540 .00000 .00950 .56680 .00000 .01020 .58810 .00000 .01070 .60940 .00000 .01120
.63070 .00000 .01150 .65200 .00000 .01180 .67330 .00000 .01190 .69460 .00000 .01190 .71590 .00000 .01190 .73710 .00000 .01170 .75840 .00000 .01140 .77960 .00000 .01110 .80080 .00000 .01060 .82200 .00000 .01000
-
7/24/2019 HPH FINAL Report Matthew and John 1
41/50
41
.84310 .00000 .00930 .86420 .00000 .00840 .88510 .00000 .00750 .90600 .00000 .00640 .92670 .00000 .00520 .94720 .00000 .00390 .96740 .00000 .00250 .98710 .00000 .00100 1.00000 .00000 .00000&BPNODE TNODE=3, TNPC=15, TINTC=0, &END&SECT1 STX=0.000, STY=17.000, STZ=-0.500, SCALE=2.500,
ALF=-80.0, THETA=0.0, INMODE=0, TNODS=3, TNPS=15, TINTS=2, &END
&PATCH1 IREV=-1, IDPAT=1, MAKE=1, KCOMP=1, KASS=1, &END WING TIP [2]
&PATCH2 ITYP= 1, TNODS=3, TNPS=3, TINTS=3, NPTTIP=0, &END
&PATCH1 IREV=-1, IDPAT=1, MAKE=0, KCOMP=1, KASS=1, &END WING Left [3]&SECT1 STX=0.000, STY=-0.200, STZ=0.500, SCALE=2.500,
ALF=85.0, THETA=0.0, INMODE=4, TNODS=0, TNPS=0, TINTS=0, &END
1.00000 .00000 .00000 .96610 .00000 -.00640 .94530 .00000 -.01060 .92430 .00000 -.01510 .90310 .00000 -.01990 .88190 .00000 -.02510 .86060 .00000 -.03040 .83920 .00000 -.03610 .81770 .00000 -.04200 .79620 .00000 -.04800 .77470 .00000 -.05430
.75300 .00000 -.06060 .73140 .00000 -.06700 .70980 .00000 -.07350 .68840 .00000 -.07990 .66700 .00000 -.08610 .64580 .00000 -.09210 .62480 .00000 -.09780 .60390 .00000 -.10310 .58320 .00000 -.10790 .56250 .00000 -.11220 .54180 .00000 -.11600 .52100 .00000 -.11920 .50020 .00000 -.12200
.47930 .00000 -.12430 .45840 .00000 -.12610 .43750 .00000 -.12750 .41650 .00000 -.12840 .39560 .00000 -.12880 .37470 .00000 -.12880 .35380 .00000 -.12830 .33300 .00000 -.12730 .31230 .00000 -.12590 .29180 .00000 -.12410
-
7/24/2019 HPH FINAL Report Matthew and John 1
42/50
42
.27150 .00000 -.12180 .25150 .00000 -.11910 .23190 .00000 -.11590 .21270 .00000 -.11240 .19430 .00000 -.10840 .17650 .00000 -.10420 .15970 .00000 -.09970 .14390 .00000 -.09500 .12920 .00000 -.09030 .11580 .00000 -.08550 .10350 .00000 -.08080 .09240 .00000 -.07610 .08240 .00000 -.07160 .07340 .00000 -.06730 .06530 .00000 -.06310 .05800 .00000 -.05910 .05140 .00000 -.05520 .04550 .00000 -.05150 .04020 .00000 -.04800 .03530 .00000 -.04460
.03090 .00000 -.04130 .02690 .00000 -.03810 .02320 .00000 -.03500 .01990 .00000 -.03200 .01690 .00000 -.02910 .01410 .00000 -.02620 .01160 .00000 -.02340 .00930 .00000 -.02070 .00730 .00000 -.01800 .00550 .00000 -.01540 .00400 .00000 -.01270 .00260 .00000 -.01010 .00150 .00000 -.00760
.00070 .00000 -.00500 .00020 .00000 -.00250 .00010 .00000 -.00130 .00000 .00000 .00000&BPNODE TNODE=1, TNPC=15, TINTC=0, &END .00020 .00000 .00240 .00090 .00000 .00460 .00220 .00000 .00670 .00410 .00000 .00850 .00630 .00000 .00990 .00890 .00000 .01100 .01170 .00000 .01180 .01470 .00000 .01250
.01790 .00000 .01300 .02120 .00000 .01350 .02480 .00000 .01390 .02860 .00000 .01420 .03260 .00000 .01450 .03690 .00000 .01470 .04150 .00000 .01490 .04650 .00000 .01500 .05180 .00000 .01510 .05750 .00000 .01510
-
7/24/2019 HPH FINAL Report Matthew and John 1
43/50
43
.06380 .00000 .01510 .07060 .00000 .01500 .07810 .00000 .01490 .08630 .00000 .01470 .09530 .00000 .01440 .10530 .00000 .01400 .11640 .00000 .01360 .12870 .00000 .01300 .14220 .00000 .01230 .15700 .00000 .01160 .17310 .00000 .01070 .19040 .00000 .00970 .20870 .00000 .00860 .22800 .00000 .00740 .24790 .00000 .00620 .26830 .00000 .00490 .28920 .00000 .00360 .31020 .00000 .00230 .33150 .00000 .00100 .35280 .00000 -.00020
.37420 .00000 -.00150 .39560 .00000 -.00270 .41700 .00000 -.00380 .43850 .00000 -.00490 .45990 .00000 -.00600 .48130 .00000 -.00700 .50270 .00000 -.00790 .52410 .00000 -.00880 .54540 .00000 -.00950 .56680 .00000 -.01020 .58810 .00000 -.01070 .60940 .00000 -.01120 .63070 .00000 -.01150
.65200 .00000 -.01180 .67330 .00000 -.01190 .69460 .00000 -.01190 .71590 .00000 -.01190 .73710 .00000 -.01170 .75840 .00000 -.01140 .77960 .00000 -.01110 .80080 .00000 -.01060 .82200 .00000 -.01000 .84310 .00000 -.00930 .86420 .00000 -.00840 .88510 .00000 -.00750 .90600 .00000 -.00640
.92670 .00000 -.00520 .94720 .00000 -.00390 .96740 .00000 -.00250 .98710 .00000 -.001001.00000 .00000 .00000&BPNODE TNODE=3, TNPC=15, TINTC=0, &END&SECT1 STX=0.000, STY=-17.000, STZ=0.500, SCALE=2.500,
ALF=80.0, THETA=0.0, INMODE=0, TNODS=3, TNPS=15, TINTS=2, &END
&PATCH1 IREV=-1, IDPAT=1, MAKE=3, KCOMP=1, KASS=1, &END
-
7/24/2019 HPH FINAL Report Matthew and John 1
44/50
44
WING TIP [4]&PATCH2 ITYP= 1, TNODS=5, TNPS=3, TINTS=3, NPTTIP=0, &END
&WAKE1 IDWAK=1, IFLXW=0, &ENDWING WAKE [1]
&WAKE2 KWPACH=1, KWSIDE=2, KWLINE=0, KWPAN1=0, KWPAN2=0, NODEW=3, INITIAL=0, &END
&SECT1 STX=10.000, STY=0.000, STZ=0.0000, SCALE=1.000, ALF=0.0, THETA=0.0, INMODE=0, TNODS=3, TNPS=10, TINTS=1, &END
&WAKE1 IDWAK=1, IFLXW=0, &ENDWING WAKE [3]
&WAKE2 KWPACH=3, KWSIDE=2, KWLINE=0, KWPAN1=0, KWPAN2=0, NODEW=5, INITIAL=0, &END
&SECT1 STX=10.000, STY=0.000, STZ=0.0000, SCALE=1.000, ALF=0.0, THETA=0.0, INMODE=0, TNODS=3, TNPS=10, TINTS=1, &END
&ONSTRM NONSL =0 KPSL = 0, &END
&VS1 NVOLR= 0, NVOLC= 0, &END&SLIN1 NSTLIN=0, &END
-
7/24/2019 HPH FINAL Report Matthew and John 1
45/50
45
Appendix D CMARC Post-Processing Code
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%
%run_data.m takes specific .out files from CMARC, reads in the Cp's for each
panel, integrates% over each panel to get lift and drag coefficients
%
%Written by Matthew Wysel and John Castro, Fall 2001
%
%This code only works for 19 spanwise panels and 15 chordwise panels
% (ie 15 on top and another 15 on btm)
%
%This code does not yet output correct answers. There is most likely an
error buried within
% one of the for or if loops used to read in and analyze the data.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%
clear all; close all;
DAE11 = DLMREAD('DAE11_rot_x_30_rpm_taper_0.8_sweep_0.dat','\t',2,0);
panel=DAE11(:,1);
x=DAE11(:,2); % [m] Thickness
y=DAE11(:,3); % [m] Span
z=DAE11(:,4); % [m] Chord
Cp=DAE11(:,5); % Cp
w=5/60*2*pi; % [rad/s] Omega
collective = 14*pi/180; % Collective pitch [rad][10:14]
twist = -10/180*pi; % Washout from hub to tip [rad]
rho=1.23; %[kg/m^3] density at SL
% throw down stuff about graphs
Vr = y*w; % [m/s] Local rotational velocity
Vt = y(length(y))*w; % [m/s] Tip Velocity
% Scaling the Cp
Cp_scl = Cp.*(Vr./Vt).^2;
%Cp_scl=Cp;
check=Cp-Cp_scl;
% Returns the spanwise panel positions
i=1;
panel_grp(1)=y(1);
for j=2:length(y);
if y(j)~=y(j-1)
i=i+1;
panel_grp(i)=y(j);
end
end
%%%%%%%%%
% Calclates the Cl for each spanwise panel (ie 1-19)
-
7/24/2019 HPH FINAL Report Matthew and John 1
46/50
46
for i = 1:length(panel_grp)-1
dCp=0;
inside=0;
for k = 1:15;
k = k+(i-1)*30;
blah = 31+(i-1)*30;
if k == 1+(i-1)*30 % ie the panels at the te
dz_u(k) = z(k)-z(k+1);
dz_l(k) = z(blah-k)-z(blah-k-1);
dx_u(k) = x(k)-x(k+1);
dx_l(k) = x(blah-k)-x(blah-k-1);
elseif (k>1+(i-1)*30) & (k
-
7/24/2019 HPH FINAL Report Matthew and John 1
47/50
47
Figure 2 FX63-137, Upper Surface CpDistribution of Rotor
Figure 3 FX63-137, Detail of Upper Surface CpDistribution
-
7/24/2019 HPH FINAL Report Matthew and John 1
48/50
-
7/24/2019 HPH FINAL Report Matthew and John 1
49/50
49
Figure 6 FX63-137, Upper Surface View of Wake Shed from Rotor
Figure 7 FX63-137, Side View of Wake Shed from Rotor
-
7/24/2019 HPH FINAL Report Matthew and John 1
50/50
Figure 8 DAE 11, Upper Surface View of Wake Shed from Rotor