02sep Ozturk
02sep Ozturk
02sep Ozturk
DSpace Repository
2002-09
Ozturk, Dogan
Monterey, California. Naval Postgraduate School
http://hdl.handle.net/10945/4691
THESIS
DEVELOPMENT OF A MYKLESTADS ROTOR BLADE
DYNAMIC ANALYSIS CODE FOR APPLICATION TO
JANRAD
by
Dogan Ozturk
September 2002
11. SUPPLEMENTARY NOTES The views expressed in this thesis are those of the author and do not reflect the official
policy or position of the Department of Defense or the U.S. Government.
12a. DISTRIBUTION / AVAILABILITY STATEMENT 12b. DISTRIBUTION CODE
Approved for public release; distribution is unlimited.
13. ABSTRACT
Blade Dynamics Analysis is a major portion of a helicopter design. The success of the design is strictly related to
accuracy of the blade dynamic calculations. The natural frequencies and the mode shapes are not only difficult to calculate but
also can be a time consuming procedure. The Myklestad Extension Method gives the designer the opportunity of calculating
correct values of the natural frequencies and the mode shapes when centrifugal forces are present. This thesis provides a
transfer matrix Myklestad analysis programmed in MATLAB and a Graphical User Interface (GUI) tool built in the
MATLAB programming language version 6.1, to implement the Myklestad Extension Method. The generated code and the
GUI are designed to be a part of Blade Dynamics Module of Joint Army/Navy Rotorcraft Analysis Design (JANRAD). For
comparison, nonrotating and uniform beam data from Young and Felgar and the actual data of an H-3 (S-61) helicopter blade
are used. Results of the comparison show that the accuracy and robustness of the program are very good, which would make
this generated code a valuable part of the helicopter designers toolbox.
i
THIS PAGE INTENTIONALLY LEFT BLANK
ii
Approved for public release; distribution is unlimited
Dogan Ozturk
First Lieutenant, Turkish Army
B.S., Turkish Army Academy, 1995
from the
Mark A. Couch
Co-Advisor
Max F. Platzer
Chairman, Department of Aeronautics and Astronautics
iii
THIS PAGE INTENTIONALLY LEFT BLANK
iv
ABSTRACT
v
THIS PAGE INTENTIONALLY LEFT BLANK
vi
TABLE OF CONTENTS
I. INTRODUCTION........................................................................................................1
A. BACKGROUND ..............................................................................................1
B. INTRODUCTION TO ROTOR BLADE DYNAMICS ...............................2
1. Flapping Blade .....................................................................................6
2. Lagging Blade.......................................................................................7
II. MYKLESTAD ANALYSIS ......................................................................................11
A. THE DISCUSSION OF THE MYKLESTAD METHOD..........................11
B. MYKLESTAD METHOD APPLIED TO THE ROTOR BLADE ...........12
1. Myklestad Method Applied to Rotor Blade About Flatwise
Axis ......................................................................................................14
a. Centrifugal Force....................................................................16
b. Shear........................................................................................16
c. Moment....................................................................................16
d. Slope ........................................................................................17
e. Deflection ................................................................................17
2. Myklestad Method Applied to Rotor Blade About Edgewise
Axis ......................................................................................................20
a. Centrifugal Force....................................................................20
b. Shear........................................................................................21
c. Moment....................................................................................21
d. Slope ........................................................................................21
e. Deflection ................................................................................22
3. Myklestad Method Applied to Rotor Blade About Coupled
Axis ......................................................................................................23
a. Centrifugal Force....................................................................23
b. Shear........................................................................................23
c. Moment....................................................................................23
d. Slope ........................................................................................23
e. Deflection ................................................................................24
III. BUILDING THE MATLAB CODE AND VALIDATION OF THE CODE.....25
A. APPLYING THE MATLAB CODE TO MYKLESTAD ANALYSIS ..25
1. Matrix Form of the Hinged (Articulated) Blade.............................25
a. Flatwise....................................................................................25
b. Edgewise ..................................................................................27
c. Coupled....................................................................................29
2. Matrix Form of the Hingeless (Rigid) Blade ...................................33
a. Flatwise....................................................................................33
b. Edgewise ..................................................................................34
c. Coupled....................................................................................35
B. VALIDATION OF THE CODE ...................................................................36
vii
1. Comparison of the Uniform Nonrotating Hinged Blade
(Supported-Free Beam) with Young and Felgar.............................36
2. Comparison of the Uniform Nonrotating Hingeless Blade
(Clamped-Free Beam) with Young and Felgar ...............................38
3. Analysis of H-3 Helicopter with an Articulated Rotor Blade ........39
4. Analysis of H-3R Helicopter with a Hingeless Rotor Blade...........41
IV. CONCLUSIONS AND RECOMMENDATIONS...................................................45
APPENDIX A. MATLAB PROGRAMS ..........................................................................47
A. HINGED BLADE ABOUT FLATWISE AXIS...........................................47
B. HINGED BLADE ABOUT EDGEWISE AXIS ..........................................55
C. HINGELESS BLADE ABOUT FLATWISE AXIS....................................61
D. HINGELESS BLADE ABOUT EDGEWISE AXIS ...................................69
E. HINGED NONROTATING UNIFORM BLADE TEST ...........................77
F. HINGELESS NONROTATING UNIFORM BLADE TEST ....................87
G. GUI PROGRAMS..........................................................................................97
1. Call function file of the Gui page......................................................97
2. Operation Function..........................................................................111
3. Hinged Uniform Flatwise Function................................................115
4. Hinged Uniform Edgewise Function ..............................................122
5. Hingeless Uniform Flatwise Function ............................................128
6. Hingeless Uniform Edgewise Function ..........................................135
7. Hinged Nonuniform Flatwise Function .........................................142
8. Hinged Nonuniform Edgewise Function........................................148
9. Hingeless Nonuniform Flatwise Function......................................156
10. Hingeless Nonuniform Edgewise Function....................................163
APPENDIX B. TABLES OF CHARACTERISTIC FUNCTIONS REPRESENTING
NORMAL MODES OF VIBRATION OF A BEAM............................................171
A. DATA FOR THE SUPPORTED-FREE BEAM (HINGED BLADE) ....171
Clamped-Supported Beam (Second Derivative) .......................................171
a. First Mode .............................................................................171
b. Second Mode .........................................................................172
c. Third Mode............................................................................172
B DATA FOR THE CLAMPED-FREE BEAM (HINGELESS BLADE)..173
Clamped-Clamped Beam (Second Derivative)..........................................173
a. First Mode .............................................................................173
b. Second Mode .........................................................................173
c. Third Mode............................................................................174
APPENDIX C. VALIDATION OF THE RESULTS OF THE GENERATED
MATLAB CODE ..................................................................................................175
A. VALIDATION OF HINGED NONROTATING UNIFORM BLADE...175
1. 10 stations .........................................................................................175
2. 20 Stations.........................................................................................176
3. 30 Stations.........................................................................................177
4. 40 Stations.........................................................................................178
5. 50 Stations.........................................................................................179
viii
6. 100 Stations.......................................................................................180
7. 200 Stations.......................................................................................181
B. VALIDATION OF HINGELESS NONROTATING UNIFORM
BLADE..........................................................................................................182
1. 10 Staions ..........................................................................................182
2. 20 Stations.........................................................................................183
3. 30 Stations.........................................................................................184
4. 40 Stations.........................................................................................185
5. 50 Stations.........................................................................................186
6. 100 Stations.......................................................................................187
7. 200 Stations.......................................................................................188
C. RESULTS FOR H-3 HELICOPTER FOR ANALYSIS OF
ROTATING NONUNIFORM HINGED BLADES ..................................189
1. Flatwise Mode Shapes......................................................................189
2. Edgewise Mode Shapes....................................................................192
D. RESULTS FOR H-3R HELICOPTER FOR ANALYSIS OF
ROTATING NONUNIFORM HINGELESS BLADES ...........................195
1. Flatwise Mode Shapes......................................................................195
2. Edgewise Mode Shapes....................................................................198
APPENDIX D. BUILDING GUI AND INCORPORATING MATLAB CODE
INTO JANRAD........................................................................................................201
A. GENERATION OF THE GUI....................................................................201
B. THE RESULTS IN GUI..............................................................................202
APPENDIX E. USER GUIDE FOR GRAPHICAL USER INTERFACE (GUI) ..........205
A. ABOUT THE GUI .......................................................................................205
1. Input Boxes .......................................................................................205
a. Popupmenus ..........................................................................205
b. Edit Boxes..............................................................................207
c. Push Button...........................................................................208
2. Output Boxes ....................................................................................209
a. Static Boxes ...........................................................................209
b. Axis ........................................................................................209
B. RUNNING THE PROGRAM.....................................................................209
1. Using guidecommand....................................................................209
2. Running with the m-file...................................................................211
LIST OF REFERENCES ....................................................................................................213
INITIAL DISTRIBUTION LIST .......................................................................................215
ix
THIS PAGE INTENTIONALLY LEFT BLANK
x
LIST OF FIGURES
xi
THIS PAGE INTENTIONALLY LEFT BLANK
xii
LIST OF TABLES
xiii
THIS PAGE INTENTIONALLY LEFT BLANK
xiv
LIST OF SYMBOLS AND ABBREVIATIONS
-E Denotes Edgewise
-F Denotes Flatwise
-0 Denotes Root
-T Denotes Tip
xvi
ACKNOWLEDGMENTS
I would like to thank to my advisors, Professor Wood and Commander Couch for
their time, patience, and contributions. It was an honor for me to work with them.
I would also like to thank my family for their support from my country. With all
my love and respect, I dedicate this thesis to my parents, Fikri and Done Ozturk.
xvii
THIS PAGE INTENTIONALLY LEFT BLANK
xviii
I. INTRODUCTION
A. BACKGROUND
The Joint Army/Navy Rotorcraft Analysis and Design (JANRAD) computer code
was originally developed by students at the Naval Postgraduate School (NPS) for use in
the 1993 American Helicopter Society (AHS) Design Competition. JANRAD was
developed to include three primary modules. These modules are Performance, Stability
and Control, and Structural Dynamics.
The computer code for interactive rotorcraft preliminary design using a harmonic
balance method for rotor trim was developed by Nicholson [Ref. 1]. The linear modeling
of Stability Analysis and preliminary design was developed by Wirth [Ref. 2] in 1993.
Cuesta [Ref. 3] used a modified Myklestad-Prohl transfer matrix method for modeling
helicopter blade dynamics. Further improvements to the rotor dynamics portion were
developed by Hiatt [Ref. 4], followed by a validation of the JANRAD by comparing with
H-34 and UH-60A flight test data was made by Eccles [Ref. 5]. Klein [Ref. 6] developed
linear modeling of tilt rotor aircraft (in helicopter and airplane models) for stability
analysis and preliminary design. Lapacik [Ref. 7] developed the Graphical User Interface
(GUI) for JANRAD, and Hucke [Ref. 8] made the performance enhancements to
JANRAD and GUI. McEwen [Ref. 9] utilized JANRAD to determine the stability and
control derivatives used in the simulation model of a small rotary wing UAV. And most
recently Heathorn [Ref. 10] developed the stability and control module for JANRAD
software and GUI. These codes have been used efficiently in helicopter design courses at
the Naval Postgraduate School and for AHS Design Competitions.
The need of detailed and organized analysis on blade dynamics in JANRAD was
basic inspiration of this research. The MATLAB code generated in this thesis is going
to be one part of the improvement to the blade dynamics analysis module of JANRAD
and is focused on finding the mode shapes of the helicopter blades.
1
B. INTRODUCTION TO ROTOR BLADE DYNAMICS
Dynamics is the study of how things change with time, and of the forces that
bring these changes about. The forces that change with time and act upon the rotor blade
are aerodynamic forces. Application of these time-varying forces cause a dynamic
response to the blade with resultant forces at the blade root which result in an associated
dynamic response to the airframe and its components. In addition, the helicopter
incorporates an entire system of dynamic components consisting of the engines, engine
gearboxes, coupling drive shafts, the main transmission, tail rotor drive shaft,
intermediate and 90-degree tail rotor gearboxes which also cause dynamic response to the
airframe [Ref. 11]. The focus of this thesis will be on rotor blade dynamics.
The modern helicopter has reached the present state of design without waiting for
a complete definition of its aerodynamic and dynamic characteristics. Instead, it has been
designed by extrapolation of existing parameters, and then allowed to prove itself through
flight test and development programs [Ref. 12].
Throughout the history of helicopter design studies, all major areas of the
aeromechanics problem were not able to be solved at the same time. Design studies were
normally focused on one specific area or at most two of the areas. In recent years, the
increased capability of the computer has allowed the designer to look at all areas
simultaneously.
2
Figure 1. Air Mass Dynamics From [Ref. 12]
3
Figure 3. Rotor Blade Dynamics From [Ref. 12]
4
Figure 5. Fuselage Dynamics From [Ref. 12]
The rotating helicopter blades have both flapping and lagging movements. During
the flapping or lagging, the blades have an inertia force and a centrifugal force that act as
spring. The Flapping blade (see Figure 6) and lagging blade (see Figure 7) and the related
equations are listed below. flapping blade motion in Figure 6 is an out-of-plane motion
while the lagging blade in Figure 7 is in-plane motion.
5
1. Flapping Blade
Therefore;
R R
M = 0 = 2 A 2 dM 2 (e + A) AdM (1)
0
e e
Let
R
2
A dM = I Static flapping moment of blade,
e
R
AdM = S Mass flapping moment of inertia
e
Hence;
2I 2eS 2 I =0 (2)
6
And;
eS
= 1+ (3)
I
Then, = ;
2. Lagging Blade
Therefore;
R R R
2 2 2 2
M = 0 = dM A + dM (e + A) A dM (e + A)A = 0 (4)
0
e e e
7
A
dM 2 = dM 2 (5)
A+e
R R (e + A) A 2 R
2 2
A dM +
2 dM 2 (A + e)A dM = 0 (6)
e e (e + A ) e
R R
2 A 2 dM e 2 AdM = 0 (7)
e e
Let
R
2
A dM = I ;
e
R
AdM = S ;
e
Then;
eS
= (8)
I
For typical rotors; .
4 3
For the case of multiple degrees-of-freedom the same principles apply as in the
single degree-of-freedom case. The only difference is that there are additional natural
frequencies for each additional degree-of-freedom. At each natural frequency () the
system vibrates in a characteristic shape. These characteristic shapes are called mode
shapes. Every mode shape has maximum and minimum points. Starting from the second
modes, mode shapes will also have zero amplitude at some points (referred to as nodes).
The second mode shape has only one node. In general the nth node will have n-1 nodes
(see Figure 8). For the system in Figure 8 3 > 2 > 1 [Ref. 11]. The natural frequencies
are called eigenvalues and the mode shapes are eigenvectors. The statements in this
paragraph are valid for all vibrating systems.
8
Figure 8. String With 3 Masses; (3 Degree of Freedom or Three Mode Shapes)
After [Ref. 11]
9
THIS PAGE INTENTIONALLY LEFT BLANK
10
II. MYKLESTAD ANALYSIS
Rayleigh-Ritz Method
Stodola Method
Holzer
Myklestad
One method for determining the natural frequencies or critical speeds of shafts or
beams in bending is the iteration method of Stodola, either in its graphical form or its
numerical form [Ref. 14]. Also a useful and practical method of mode shape and
frequency analysis was that developed by Holzer and has been used by engineers for
years. The Holzer Method was developed primarily for application to torsional vibration
problems [Ref. 15]. An extension of Holzers method to the beam lateral vibration (or
bending) problem was made by Myklestad and has proven useful in analysis of airplane
wings, rotor blades and turbine blades. This method is referred to as Myklestad Extension
or Myklestad-Prohl Method. Both Holzers original method and Myklestads Extension
are effectively step-by-step solutions of the differential equation of a lumped parameter
system.
The beam in question is first divided into a convenient number of sections. The
mass of each section is calculated, divided into halves, and these halves concentrated at
the two ends of each section. Thus the beam is weightless between cuts and at each cut
there is a concentrated mass equal to half of the sum of the masses of the two adjacent
11
sections. As in the Holzer method, we assume a frequency and proceed from section to
section along the beam. In the torsional problem (governed by a second-order differential
equation) there are two quantities of importance at each cut: the angle and the twisting
moment. In the flexural problem (governed by a fourth-order differential equation) there
are four quantities of importance at each cut: the deflection, the slope, the bending
moment and the shear force. In order to solve either problem, it is necessary to find the
relations between these quantities from one cut to the next. [Ref. 14]
In the flexural problem, if the shear, bending moment, slope and deflection at one
station is known, it is possible to compute the corresponding values at the next station. To
solve the problem, a value for a frequency is assumed, and the shear, bending moment,
slope and deflection are calculated down the beam from mass to mass until the
corresponding quantities at the other end are obtained. If the frequency chosen is not the
correct one, boundary conditions at both ends of the beam will not be satisfied
simultaneously.
In the past, the difficulty of this method was obtaining an accurate solution with a
small number of stations. More stations mean the more iterations and the calculation of
these values by hand was difficult and time consuming. Recently computer technology
has made this method more attractive. The number of iterations can be increased to a
larger number so that the accuracy can be increased. Twenty-five to fifty stations gives a
close value to the exact solution.
In actuality, the blade is a twisted beam. Its proper analysis requires considering
the coupled flatwise-edgewise-torsional response of the blades. Slope and deflection
relationship of the blade and resultant twist coupling terms can be derived as shown in
the equations below. The blade has slope due to moment ( v ), slope due to load ( u ) and
deflection due to load ( g ) values about its flatwise (flapwise) principal axis. Also, slope
due to moment ( V ), slope due to load ( U ) and deflection due to load ( G ) are the values
12
about the blades edgewise (chordwise) principal axis. Allowing one discontinuity in a
station length l , we can obtain
n, n + 1
l
n, n + 1 n, n + 1 n , n + 1
v = + (9)
n, n + 1 ( EI ) ( EI )
y n +1 y n
2 l2 2
1
n, n + 1 n, n + 1 n, n + 1
u = + (10)
n, n + 1 2 ( EI ) ( EI )
y n + 1 y n
3 l3 3
1
n, n + 1 n, n + 1 n, n + 1
g = + (11)
n, n + 1 3 ( EI ) ( EI )
y n + 1 y n
n , n + 1 ln , n + 1 n , n + 1
V = + (12)
n, n + 1 ( EI ) ( EI )
x n +1 x n
2 l2 2
1
n, n + 1 n, n + 1 n, n + 1
U = + (13)
n, n + 1 2 ( EI ) ( EI )
x n + 1 x n
3 l3 3
1
n, n + 1 n, n + 1 n, n + 1
G = + (14)
n, n + 1 3 ( EI ) ( EI )
x n + 1 z n
Then if we take the blade element feathered at an angle, , to the reference plane
at right angles to the axis of rotation. Here it includes twist T and blade feathering .
13
u =U sin 2 + u cos 2 (18)
zz n, n + 1 n, n + 1
Illustration of an element of the blade with the dynamic forces and moments
acting on it along the flatwise and edgewise principal axes are given in Figures 9 and 11
respectively. Considering the forces acting on an element of the blade, related equations
for flatwise, edgewise or coupling can be derived using the coupling terms above.
The rotor blade, which can be considered as a twisted beam, is divided into n
sections. As described in the beginning of this chapter, the mass of each section is
assumed to be concentrated at the spanwise c.g of each section. Each section has the
same properties as shown in Figure 9. A frequency is assumed, and the deflection curve
is calculated. When the deflection curve satisfies the Boundary Conditions then the
assumed frequency is the uncoupled natural bending frequency of the blade (or beam),
and the deflection is the normal bending mode (mode shape) of the blade.
14
Figure 9. Blade Element Equilibrium; Flatwise System After [Ref. 12]
In this methodology, according to the Figure 9, we will describe from the tip to
the root with n+1 closer to the tip and n closer to the root of the blade. If we consider
the forces acting on the blade the Equations of Motion can be described as follows:
The assumptions for applying the method for an eigenvalue analysis are as
follows:
Flatwise Aerodynamic Damping constant is neglected;
C =0
n
Aerodynamic Lift Force acting on the blade elements for a particular
frequency component, FN sin t + f N cos t , is neglected;
F + jf = 0
n n
Aerodynamic Drag Force acting on the blade elements for a particular
frequency component, Dn sin t + d n cos t , is neglected;
D + jd = 0
n n
15
a. Centrifugal Force
F = 0 = T + T + m 2 r
x n n +1 n
T =T + m 2r (24)
n n +1 n n
b. Shear
F = 0 = S + S + m 2 Z jC Z + F + jf
z n n +1 n n n n n n
S F = S F + m 2 Z jC Z + F + jf (25)
n n +1 n n n n n n
C = 5.73(chord ) (l )( / 2)(r )
n n n, n + 1 n
S F = S F + m 2Z
n n +1 n n
c. Moment
Real and imaginary flatwise equations for moment are the same. Writing
the real equations, the corresponding equations are as follows:
M F =M F + SF l T (Z Z ) (26)
n n + 1 n + 1 n, n + 1 n + 1 n + 1 n
16
d. Slope
Real and imaginary flatwise equations for slope are the same. Writing the
real equations, the corresponding equations are as follows:
F = F (1 + T u )+T E u MF v ME v
n n +1 n + 1 zz n + 1 n + 1 zx n + 1 zz n + 1 zx
(27)
S F u S E u
n + 1 zz n + 1 zx
l2 l2 l2
n, n + 1 n, n + 1 n, n + 1
F = F (1 + T )MF SF
n n +1 n +1 2 EI n +1 EI n +1 2 EI
e. Deflection
Real and imaginary flatwise equations for deflection are the same. Writing
the real equations, the corresponding equations become:
Z = Z F l +T F g +T E g
n n +1 n n, n + 1 n + 1 n + 1 zz n + 1 n + 1 zx
(28)
M F u M E u S F g S E g
n + 1 zz n + 1 zx n + 1 zz n + 1 zx
17
l 2 n ,n +1
and u zx = ( u zx does not effect the equation because of being multiplied by zero
2 EI
value M E ). According to these assumptions the deflection equation becomes:
l3 l2 l3
n, n + 1 F n, n + 1 F n, n + 1
Z =Z l +T M S
n n + 1 n n, n + 1 n + 1 n + 1 3EI n + 1 2 EI n + 1 3EI
To find the natural frequency of the rotor blade, the frequency, , is assumed, and
shears, moments, slopes and deflections are calculated element by element from the tip of
the blade to the root. At the tip of the blade, shears and moments will be equal to zero and
slope and deflection of the blade will have some values:
SF =0
T
M F =0
T
F = F
T T
Z =Z
T T
Thus, there are two unknowns, ZT and TF . These are carried along as unknowns,
as we go element by element down the blade.
At the root of the blade we could write: (using subscript 0 as the root)
SF =a Z +b F
0 S T S T
M F =a Z +b F
0 M T M T
F =a Z +b F
0 T T
Z =a Z +b F
0 y y
T T
18
At the root of the blade (for Hinged Blade):
M F =0
0
Z =0
0
Or,
a +b F =0
Z
M M
T T
a Z +b F =0
z z
T T
In Matrix form:
aM b
M
ZT
=0
a z b
z T
=0
0
Z =0
0
Or,
a Z +b =0
T T
a Z +b =0
x T z T
In Matrix form:
a b Z
T =0
a z b
z T
Since the values of ZT, and T are non-zero, the solution to this equation is found
when the determinant goes to zero. At this point the assumed natural frequency is the
correct natural frequency. A graphical illustration of this procedure to find the natural
frequency of the rotor blade is shown in Figure 10.
19
Once the blade natural frequencies have been established for various rotor speeds
we can also construct a fanplot or Southwell Plot. Since the blade is stiffer in the
edgewise direction, the natural frequencies of the edgewise modes are higher than the
flatwise modes.
Using the same procedures that were applied to Flatwise Axis, the equations for
Edgewise Axis can also be found. The forces acting on the blade element can be seen in
Figure 11.
a. Centrifugal Force
20
b. Shear
E E 2 2
S =S + m ( + ) X + D + jd (29)
n n +1 n n n n
S E = S E + m ( 2 + 2 ) X
n n +1 n n
c. Moment
M E =M E + SE l T (X X ) (30)
n n +1 n + 1 n, n + 1 n + 1 n + 1 n
Figure 11. Blade Element Equilibrium; Edgewise System After [Ref. 12]
d. Slope
E = E (1 + T U )+T F U ME V MF V
n n +1 n + 1 xx n + 1 n + 1 xz n + 1 xx n + 1 zx
(31)
S E U S F U
n + 1 xx n + 1 xz
21
In the edgewise calculations the variables of flatwise principal axis ( F ,
M F and S F ) are equal to 0, and the coefficients of coupling in Equation (31) become:
l 2 n ,n +1
U xx = ( U xz does not effect the equation because of being multiplied by zero value
2 EI
ln ,n +1
F and S F ) and Vxx = ( Vxz is does not effect the equation because of being
EI
multiplied by zero value M F ). Accordingly, the slope equation becomes:
l2 l2 l2
n, n + 1 n, n + 1 n, n + 1
E = E (1 + T )ME SE
n n +1 n +1 2 EI n +1 EI n +1 2 EI
e. Deflection
XE = X E E l +T E G +T F G
n n + 1 n + 1 n, n + 1 n + 1 n + 1 xx n + 1 n + 1 xz
(32)
M E U M F U S E G S F G
n + 1 xx n + 1 xz n + 1 xx n + 1 xz
l 2 n ,n +1
and U xx = ( U xz does not effect the equation because of being multiplied by zero
2 EI
value M E ). Accordingly the deflection equation becomes:
l3 l2 l3
n, n + 1 n, n + 1 n, n + 1
X =X E l +T E M E S E
n n +1 n n, n + 1 n + 1 n + 1 3EI n + 1 2 EI n + 1 3EI
Using the equations above along with the boundary conditions, which depend on
the blade shape (hingeless or hinged), the same procedure can be followed as was in the
flatwise axis, and the corresponding natural frequencies and mode shapes can be found.
22
3. Myklestad Method Applied to Rotor Blade About Coupled Axis
In the calculations for the coupled natural frequencies, the equations for both
flatwise and edgewise principal axis are included. As a result of using both principal
axes; matrix dimension expands from 4X4 matrix to 8X8 matrix; and the boundary
condition matrix expands from 2X2 matrix to 4X4 matrix. Additionally, because of
having blade element feathered at an angle of , which includes twist T and blade
feathering ; the rotor blade twist coupling coefficients, should be included in all
equations. Using the same procedure applied to both flatwise and edgewise axes, the
following equations can be found.
a. Centrifugal Force
T =T + m 2r
n n +1 n n
b. Shear
S F = S F + m 2 Z jC Z + F + jf
n n +1 n n n n n n
S E = S E + m ( 2 + 2 ) X + D + jd
n n +1 n n n n
c. Moment
M F =M F + SF l T (Z Z )
n n +1 n + 1 n, n + 1 n + 1 n + 1 n
M E =M E + SE l T (X X )
n n +1 n + 1 n, n + 1 n + 1 n + 1 n
d. Slope
Now all the coefficients for twist coupling will be used as described in
both flatwise and edgewise axes applications.
23
F = F (1 + T u )+T E u MF v ME v
n n +1 n + 1 zz n + 1 n + 1 zx n + 1 zz n + 1 zx
S F u S E u
n + 1 zz n + 1 zx
E = E (1 + T U )+T F U ME V MF V
n n +1 n + 1 xx n + 1 n + 1 xz n + 1 xx n + 1 zx
S E U S F U
n + 1 xx n + 1 xz
e. Deflection
Z = Z F l +T F g +T E g MF u ME u
n n +1 n n, n + 1 n + 1 n + 1 zz n + 1 n + 1 zx n + 1 zz n + 1 zx
S F g S E g
n + 1 zz n + 1 zx
XE = X E E l +T E G +T F G
n n + 1 n + 1 n, n + 1 n + 1 n + 1 xx n + 1 n + 1 xz
M E U M F U S E G S F G
n + 1 xx n + 1 xz n + 1 xx n + 1 xz
By using the equations stated above and the boundary conditions, the natural
frequencies of the blade can be determined. The natural frequencies are found in the same
manner as in the previous sections. The only difference is that the dimension of the
boundary conditions matrix is 4X4 instead of being 2X2.
24
III. BUILDING THE MATLAB CODE AND VALIDATION OF
THE CODE
Centrifugal Force for all the calculations is the same as in Equation (24):
T =T + m 2r
n n +1 n n
SF =0 0
T
0
M F =0
T or X = F ,
tip
F = F T
T T Z
Z =Z T
T T
and the boundary conditions at the root for a hinged blade are
SF =SF
0 0 S
0
M F =0 0
0 or X =
root
F = F 0
0 0 0
Z =0
0
25
If the equations proceed from tip to root for the flatwise axis, the equations
can be written in the following matrix form:
S F 1 0 0 0 S F
1 0 0 m 2 n n + 1
n l l 0 T
0 T M F n, n + 1
n +1 M
F
1 0
n +1 n = n + 1
2 l 2 ) 2 EI
0 0 1 0 F l 2 EI l EI (1 + T
n +1
0 F
n +1
n
0 0 l 1 3 l 2 2 EI l 3 3EI
0 Z
n, n + 1 Z l 3EI T
n +1 n + 1
n
[G ] * X n = [ A] * X n + 1
by [G ] yields
1
X = [G ]1 * [ A] * X
n n + 1
X =[ F ]* X
n n + 1
Moving along from tip to the root by saving the new values of the [ F ]
matrix through all stations, the relationship between the root and the tip of the blade can
be written as:
X = F F * X
root Tip
After applying the boundary conditions at the root, new form of the
equation becomes
26
S F a b c d 0
0 S S S S
0
0 a b c d
= M M M M
* F
F a b c d T
0
0 a z b c d ZT
z z z
0 cM d F
M T
0 = c *
d Y
Z Z T
When the determinant of the 2X2 matrix above goes to zero we get the
natural frequency value.
at that natural frequency. All the steps above are programmed in MATLAB version
6.1[Ref. 16]. In the MATLAB program, H-3 (S-61) helicopter data is used [Ref. 17].
To see the complete text of generated MATLAB code, refer to APPENDIX A.
b. Edgewise
SE =0 0
T
0
M E =0
T or X = E
E tip
= E T
T T X
X =X T
T T
27
SE =SE S E
0 0
0
M E =0 0
0 or X =
E E root E
=
0 0 0
0
X =0
0
If the equations proceed from tip to root for the edgewise (chordwise) axis
the equations can be written in the following matrix form:
S E 1 0 0 0 S E
1 0 0 m ( 2 + 2 ) n n + 1
n l l 0 T
0 T M E n, n + 1 n + 1 M E
n + 1
1 0
n +1 n =
l 2 2 EI l EI (1 + T l 2 ) 2 EI 0 E
0 E n + 1
0 1 0 n +1
n
0 0 l 1 3 l 2 2 EI l 3 3EI 0 X
n, n + 1 X l 3EI T
n +1 n + 1
n
[G ] * X n = [ A] * X n + 1
by [G ] yields
1
X = [G ]1 * [ A] * X
n n + 1
X =[ F ]* X
n n + 1
Moving along from tip to the root by saving the new values of the [ F ]
matrix through all stations, the relationship between the root and the tip of the blade can
be written as:
28
X = F E * X
root Tip
After applying the boundary conditions at the root, new form of the
equation becomes:
E bE cE dE
S E a S S S S 0
0 E
0 a bE cE d E 0
= M M M M *
E
E a E
bE cE dE T
0
0 E X
a
X bE cE dE T
X X X
E d E E
0 c * T
0 = E
c d E XT
X X
When the determinant of the 2X2 matrix above goes to zero, we get the
natural frequency values for the edgewise modes.
c. Coupled
29
The boundary conditions at the tip are
SF =0
T
0
M F =0 0
T
F = E F
T T T
Z =Z Z
T T T
or X =
tip 0
SE =0
T
0
M E =0 E
T
T
E = E X T
T T
X =X
T T
SF =SF
0 0
S F
M F =0 0
0 0
F = F
0 0 F
0
Z F =0 0
0
or X =
E E root E
S =S S
0 0 0
0
M E =0
0
E
E = E 0
0 0 0
Z E =0
0
30
If the equations proceed from tip to root for coupling mode, the equations
can be written in matrix form:
S F
1 n
0 0 m 2 0 0 0 0
n F
0 1 0 T 0 0 0 0 M n
n +1
0 F
0 1 0 0 0 0 0 n
0 0 l
n, n + 1
1 0 0 0 0 Z
n =
0
0 0 0 1 0 0 m ( 2 + 2 ) S E
n n
0 0 0 0 0 1 0 T E
n +1 M n
0 0 0 0 0 0 1 0
E
0 0 0 0 0 0 l 1 n
n, n + 1
X n
S F
n +1
1 0 0 0 0 0 0 0
l F
n, n + 1 1 0 T 0 0 0 0 M n + 1
n +1
u zz v (1 + T u ) 0 u v T u 0 F
zz n + 1 zz zx zx n + 1 zx n +1
g zz u T 1 g u T g 0 Z
zz n +1 zx zx n + 1 zx n +1
0 0 0 0 1 0 0 0 S E
n +1
0 0 0 0 l 1 0 T
n, n + 1 n + 1 E
M
U V T U 0 U V (1 + T U ) 0 n +1
xz xz n + 1 xx xx xx n + 1 xx E
G
U T G 0 G U T G 1 n + 1
xz xz n + 1 xz xx xx n + 1 xx
X
n + 1
[G ] * X n = [ A] * X n + 1
X = [G ]1 * [ A] * X
n n + 1
31
Again letting [ F ] = [G ] * [ A] , simplified form of the equations becomes:
1
X =[ F ]* X
n n + 1
Moving along from tip to the root by saving the new values of the [ F ]
matrix through all stations, the relationship between the root and the tip of the blade can
be written as:
X =[ F ]* X
root Total
Tip
After applying the boundary conditions at the root, new form of the
equation becomes
S F S
a b c d e f g h
S S S S S S S 0
0 a b c d e f g h 0
0 M M M M M M M M
a b c d e f g h
F F
T
0 a b c d e f g h
0 Z Z Z Z Z Z Z Z Z
T
= a b c d e f g h * 0
S E S E SE SE SE SE SE SE E
S
0 0
0 a E b c d e f g h
M ME ME ME ME ME ME M E E
E a b c d e f g h
0 E T
E E E E E E E X
0 a
b c d e f g h T
X X X X X X X x
c d g h F
0 M M M M T
0 cZ d g h Z
= Z Z Z T
*
0 c E d g h E
M ME ME M E T
0 c d g h X
X X X X T
When the determinant of the 4X4 matrix above goes to zero we get the
natural frequency values.
32
2. Matrix Form of the Hingeless (Rigid) Blade
The only difference from the Hinged (Articulated) Blade is to change to boundary
conditions at the tip. Other equations are as listed in the Hinged (Articulated) Blade
section. For that reason the same equations are not repeated in this section.
a. Flatwise
SF =SF S F
0 0
0
MF =M F F
0 0 or X = M 0
root
F =0 0
0
0
Z =0
0
After applying the boundary conditions at the root, new form of the
equation becomes
S F a b c d 0
0 S S S S
0
F a b c d
M 0 = M M M M
* F
a b c d T
0
0 aZ b c d ZT
Z Z Z
0 c d F
* T
0 = c d Z
Z Z T
33
b. Edgewise
SE =S S E
0 0
0
M E =M E E
0 0 or X = M 0
root
E =0 0
0
0
X =0
0
After applying the boundary conditions at the root, new form of the
equation becomes
a b c d
S E S E SE SE S E 0
0
E a E b c d
0
M 0 = M ME ME M E
* E
a b c d T
0 E E E E X
0 T
a b c d
X X X X
c d
0 M E M E * T
0 = X
c d
X X T
34
c. Coupled
SF =SF
0 0
S F
MF =M F 0
0 0 F
F =0 M 0
0
0
ZF =0 0
0
or X =
root E
SE =S E S
0 0 0
E
ME =M E M 0
0 0
E =0 0
0 0
Z E =0
0
After applying the boundary conditions at the root new form of the
equation becomes
S F S
a b c d e f g h
S S S S S S S 0
0 a b c d e f g h 0
F M M M M M M M M
M 0 a b c d e f g h
F
0 a T
b c d e f g h
0 Z Z Z Z Z Z Z Z Z
T
= a b c d e f g h * 0
S E S E SE SE SE SE SE SE E
S
0 0
E a E b c d e f g h
M 0 M ME ME ME ME ME ME M E E
a b c d e f g h
E T
0 E E E E E E E X
0 a
b c d e f g h T
X X X X X X X X
35
c F
T
d g h
0
0 cz d g h Z
z z z
= * T
0 c E d g h E
E E E T
0 c d g h X
x x x x T
When the determinant of the 4X4 matrix above goes to zero we get the
natural frequency value, and using the same procedures above mode shapes can be found.
Figure 12 shows the results of one of these comparisons. The dashed lines with
green, red and magenta colors represent each mode shape of the corresponding Young
and Felgar data, while the blue lines represent the mode shapes of the generated
MATLAB code. Tables 1 and 2 contain a summary of the comparisons.
36
Hinged Nonrotating Uniform Blade Comparison (100 Stations)
2
1st
2nd
1.5 3rd
Young 3rd
Young 2nd
1 Young 1st
Relative Deflection
0.5
-0.5
-1
-1.5
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Figure 12. Comparison to Young and Felgar Table (Hinged Blade 100 Stations)
If we look through the results of all stations in Table 1 and Table 2 we can see
that by increasing the number of stations the accuracy of the program increases as well.
Young
10 20 30 40 50 100 200
and
Stations Stations Stations Stations Stations Stations Stations
Felgar
a1 0 0 0 0 0 0 0 0
37
10 20 30 40 50 100 200
Stations Stations Stations Stations Stations Stations Stations
a 0 0 0 0 0 0 0
Using a similar analysis as described in the previous section, Figure 13 shows the
results of one of the comparisons for a uniform, nonrotating, hingeless blade.
1.5
1
Relative Deflection
0.5
-0.5
1st
-1
2nd
3rd
-1.5 Young 3rd
Young 2nd
Young 1st
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station (inc)
Figure 13. Comparison to Young and Felgar Table (Hingeless Blade 100 Stations)
38
If we look through the results of all stations in Table 3 and Table 4 it can be seen
that increasing the number of stations improves the accuracy of the program as well.
10 20 30 40 50 100 200
Stations Stations Stations Stations Stations Stations Stations
a -6.63674 -2.48727 -2.48726 2.048210 2.048210 2.048210 2.048210
The first three mode shapes for H-3 (S-61) helicopter for both flatwise and
edgewise axes are shown in Figures 14 and 15, respectively. Numerical values for the
centrifugal force, natural frequencies, and the ratio of natural frequency to rotational
speed are listed below each figure. Additional plots for the fourth and fifth mode shapes
are attached in APPENDIX C.
39
Flatwise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
40
Edgewise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
The first three mode shapes for H-3R helicopter for both flatwise and edgewise
axes are shown in Figures 16 and 17, respectively. Numerical values for the centrifugal
force, natural frequencies, and the ratio of the natural frequency to rotational speed are
41
listed below each figure. Additional plots for the fourth and fifth mode shapes are
attached in APPENDIX C.
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inc)
42
Edgewise Mode Shapes at Operational Rotational Velocity
2
1.5
1
Relative Deflection
0.5
-0.5
-1
-1.5
0 50 100 150 200 250 300 350 400
Blade Station (inc)
43
THIS PAGE INTENTIONALLY LEFT BLANK
44
IV. CONCLUSIONS AND RECOMMENDATIONS
In this thesis the theory and application of the theory to MATLAB program is
explained in detail. The full text of the MATLAB codes is attached to APPENDIX A in
order to have availability of further research on Myklestad Analysis and its application to
JANRAD.
This thesis provides both uncoupled flatwise and edgewise analysis of the
helicopter rotor blade. Although the theory of the coupled flatwise-edgewise case axis is
presented in Chapter III, corresponding coupled MATLAB codes have not been
generated because of time. Assumptions for the analysis are given in Chapter II.
45
THIS PAGE INTENTIONALLY LEFT BLANK
46
APPENDIX A. MATLAB PROGRAMS
47
%
W_n = [2.56, 12.57, 9.51, 9.19, 9.18, 9.29, 9.03, 9.14, 9.45, 9.37, 9.91, 9.94,...
10.01, 9.73, 8.78 , 9.06, 8.53, 10.51, 55.21, 84.17, 20.46 ];
%
m_n = W_n/(32.174*12);
%
% Aliminum
E_n = 1e7;
%
n = length(R_n);
%
% n represents the number of the stations(segments);
%
%=======================================================================================
%
omega = 0;
det_Bc = 0;
%
modeshp = input('How many mode shapes would you like? ');
%
R_V = 203; % RPM (R_V)
R_V1 = R_V * pi/30; % radians (R_V1)
%
%======================================================================================
% Calculation of "Centrifugal Force" at the root:
%--------------------------------------------------------------------------------------
T_n(1) = m_n(1) * R_n(1) * R_V1^2; % (T_n) and radians (R_V1)
%
% T_n(1) is the "Centrifugal Force at the TIP"
%
for i = 1 : n-1,
T_n(i+1)=T_n(i) + m_n(i+1) * R_n(i+1) * R_V1^2;
end; % end of loop for i--> { T_n(i) }
%
disp( ' Centrifugal Force is : ' )
disp(T_n(n))
% Displays "Centrifugal Force at r = 12.63"
%
%======================================================================================
k = 1;
48
i = 1;
%
for omega_1 = 0 : modeshp^2*R_V/500 : 2.1*modeshp^2*R_V,
% RPM (omega_1)
omega(k) = omega_1*2*pi/60; % radians (omega(k))
F = eye(4);
%-----------------------------------------------------------------------------------
for j = 1:n-1,
% determine length of the segments;
l_sn = R_n(j) - R_n(j+1);
%
% detemine the stiffness
EI = E_n * I_xx(j);
%
G_n = [ 1, 0, 0, -m_n(j+1)*omega(k)^2;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
A_n = [ 1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loop for j --> { A_n, G_n, F_n )
%
%-------------------------------------------------------------------------------------
B_c = [ F(2,3),F(2,4) ; F(4,3),F(4,4)];
det_bc(k) = det(B_c);
%
%-------------------------------------------------------------------------------------
%determination of the points and the natural frequencies where det crosses the "0 line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
49
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1
%
%==========================================================================================
%
% Sorting the "Natural Frequencies"
%
% Sort and convert the unit of natural frequency to 'cpm'
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end; % end of loop for (m)
%
%===========================================================================================
%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % radians (omega_0) ,RPM (omega_n)
%
omega_new = 100; % omega_new i in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
%---------------------------------------------------------------------------------------
% Determination of odd or even mode shapes
%
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
50
%
%---------------------------------------------------------------------------------------
% Initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
%--------------------------------------------------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0; % if natural frequency is negative, make it zero
end % end of if loop omega
%
for j = 1:n-1,
%
l_sn = R_n(j) - R_n(j+1);
%
EI = E_n * I_xx(j);
%
G_n=[1, 0, 0, -m_n(j+1)*omega_0^2 ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(2,3), F(2,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%------------------------------------------------------------------------------------
%
51
if (abs(det_bc)<1000 | abs(omega_old-omega_new)<1e-10),
% if loop 1
omega_n(count) = omega_0*30/pi; % radians (omega_0), RPM (omega_n)
%
if abs(omega_old-omega_new)<1e-10, % if loop 1.a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1.a'
%
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
else % else for if loop 1
%
if flag_1 == 1, % if loop 1.b
if det_bc > 0, % if loop 1.b.i
omega_new = omega_0 - (200*pi/30)*slope; % radians(omega_new)
else % else for if loop 1.b.i
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'loop if 1.b.i'
%
% Rearrange the values
%
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
%
elseif flag_1 == 2, % elseif for if loop 1.b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0, % if loop 1.b.ii
if det_bc > 0, % if loop 1.b.ii.a
omega_new = omega_0 - (200*pi/30)*slope;
else % else for if loop 1.b.ii.a
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'if loop 1.b.ii.a
%
% Rearrange the values
omega_old = omega_0;
52
omega_0 = omega_new;
det_bcold = det_bc;
53
%
EI = E_n * I_xx(j);
%
G_n =[ 1, 0, 0, -m_n(j+1)*(omega_n(m)*pi/30)^2 ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n =[ 1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
%
X_n(:,j+1) = F * X_tip;
%
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% Get the total deflection at each radial station
%
deflection(m,:)=X_n(4,:);
plot ( R_n/R_n(1), 2*X_n(4,:), '-')
grid on;
title ( ' Flapwise Mode Shapes at Operational Rotational Velocity ' );
xlabel ( ' Blade Station (inches)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
hold off
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency to Rotational Speed is: ')
disp(omega_n/R_V)
%
% End of program for " HINGED-FLATWISE "
54
B. HINGED BLADE ABOUT EDGEWISE AXIS
clear
clc
format long
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MYKELSTAD ANALYSIS %
% BASIC PROGRAM %
% FOR EDGEWISE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TABLE B-1 %
% %
% BASIC BLADE DATA %
% %
% H-1 HELICOPTER %
% %
% 1-1 Planform, Articulated Blade %
% Gross Weight 12000lb. , 150Knot Design %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Radius of the stations from tip to root are(inch) : [372.00, 353.40, 334.80, 316.20,
% 297.60, 279.00, 260.40, 241.80, 223.20, 204.60, 186.00, 167.40, 148.80, 130.20,
% 111.60, 93.00, 74.40, 55.80, 37.20, 18.60, 12.63 ];
%
R_n = [372.00, 353.40, 334.80, 316.20, 297.60, 279.00, 260.40, 241.80, 223.20,...
204.60, 186.00, 167.40, 148.80, 130.20, 111.60, 93.00 , 74.40 , 55.80 ,...
37.20 , 18.60 , 12.63 ];
% hinge(e) = 12.625 inches for H-1 Helicopter
%
%
%Edgewise Ixx(inch.^4) :
%
I_yy = [10.10, 20.30, 20.50, 20.60, 20.80, 20.90, 23.70, 24.00, 24.30, 24.80,...
27.00, 27.30, 28.00, 28.50, 29.30, 29.80, 30.50, 35.00, 70.00, 75.00,...
75.00
];
%
%Segment Weight(lb) : [2.56, 12.57, 9.51, 9.19, 9.18, 9.29, 9.03, 9.14, 9.45, 9.37,
% 9.91, 9.94, 1.01, 9.73, 8.78, 9.06, 8.53, 10.51, 55.21, 84.17,
% 20.46 ];
%
W_n = [2.56, 12.57, 9.51, 9.19, 9.18, 9.29, 9.03, 9.14, 9.45, 9.37, 9.91, 9.94,...
10.01, 9.73, 8.78 , 9.06, 8.53, 10.51, 55.21, 84.17, 20.46 ];
%
m_n = W_n/(32.174*12);
%
% Aliminum
E_n = 1e7;
%
n = length(R_n);
%
% n represents the number of the stations(segments);
%
%=====================================================================================
==
%
omega = 0;
det_Bc = 0;
%
modeshp = input('How many mode shapes would you like? ');
%
R_V = 203; % RPM (R_V)
R_V1 = R_V * pi/30; % radians (R_V1)
55
%
%=====================================================================================
=
% Calculation of "Centrifugal Force" at the root:
%-------------------------------------------------------------------------------------
-
T_n(1) = m_n(1) * R_n(1) * R_V1^2; % (T_n) and radians (R_V1)
%
% T_n(1) is is the "Centrifugal Force at the TIP"
%
for i = 1 : n-1,
T_n(i+1)=T_n(i) + m_n(i+1) * R_n(i+1) * R_V1^2;
end; % end of loop for i--> { T_n(i) }
%
disp( ' Centrifugal Force : ' )
disp(T_n(n))
% Displays "Centrifugal Force at r = 12.625 "
%
%=====================================================================================
=
k = 1;
i = 1;
%
for omega_1 = 0 : modeshp^2*R_V/500 : 2.1*modeshp^2*R_V,
% RPM (omega_1)
omega(k) = omega_1*2*pi/60; % radians (omega(k))
F = eye(4);
%---------------------------------------------------------------------------------
--
for j = 1:n-1,
% determine length of the segments;
l_sn = R_n(j) - R_n(j+1);
%
% detemine the stiffness
EI = E_n * I_yy(j);
%
G_n = [ 1, 0, 0, -m_n(j+1)*(omega(k)^2 + R_V1^2);
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
A_n = [ 1, 0, 0, 0
;
l_sn, 1, 0, -T_n(j)
;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0
;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1
];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loop for j --> { A_n, G_n,
F_n )
%
%---------------------------------------------------------------------------------
----
B_c = [ F(2,3),F(2,4) ; F(4,3),F(4,4)];
det_bc(k) = det(B_c);
%
%---------------------------------------------------------------------------------
----
56
%determination of the points and the natural frequencies where det crosses the "0
line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1
%
%=====================================================================================
=====
%
% Sorting the "Natural Frequencies"
%
% Sort and convert the unit of natural frequency to 'cpm'
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end; % end of loop for (m)
%
%=====================================================================================
======
%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % radians (omega_0) ,RPM (omega_n)
%
omega_new = 100; % omega_new i in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
%---------------------------------------------------------------------------------
------
% Determination of odd or even mode shapes
%
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%
%---------------------------------------------------------------------------------
------
% Initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
%---------------------------------------------------------------------------------
-----
57
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0; % if natural frequency is negative, make it
zero
end % end of if loop omega
%
for j = 1:n-1,
%
l_sn = R_n(j) - R_n(j+1);
%
EI = E_n * I_yy(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_0^2 + R_V1^2) ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0
;
l_sn, 1, 0, -
T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0
;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1
];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n,
G_n, F_n)
%
B_c = [ F(2,3), F(2,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%-----------------------------------------------------------------------------
-------
%
if (abs(det_bc)<1000 | abs(omega_old-omega_new)<1e-10),
% if loop 1
omega_n(count) = omega_0*30/pi; % radians (omega_0), RPM (omega_n)
%
if abs(omega_old-omega_new)<1e-10, % if loop
1.a
disp('Warning!! This value of omega may be in error.')
end % end of 'if
loop 1.a'
%
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
else % else for if
loop 1
%
if flag_1 == 1, % if loop
1.b
if det_bc > 0, % if loop
1.b.i
omega_new = omega_0 - (200*pi/30)*slope; %
radians(omega_new)
58
else % else for if
loop 1.b.i
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'loop if
1.b.i'
%
% Rearrange the values
%
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
%
elseif flag_1 == 2, % elseif for if
loop 1.b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0, % if loop
1.b.ii
if det_bc > 0, % if loop
1.b.ii.a
omega_new = omega_0 - (200*pi/30)*slope;
else % else for if loop
1.b.ii.a
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'if loop
1.b.ii.a
%
% Rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
59
end; % end of 'while loop'
%
theta_n(count) = -B_c(1,2) / B_c(1,1);
% According to the equation we can also use as : theta_n(count)= -B_c(2,2)/B_c(2,1)
%
end % end of loop for 'count'
%
%============================================================================================
%
for m= 1 : count % for loop 'm'
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
F = eye(4);
for j = 1:n-1, % for loop 'j'
%
l_sn = R_n(j) - R_n(j+1);
%
EI = E_n * I_yy(j);
%
G_n =[ 1, 0, 0, -m_n(j+1)*((omega_n(m)*pi/30)^2 + R_V1^2);
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n =[ 1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1
];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
%
X_n(:,j+1) = F * X_tip;
%
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% Get the total deflection at each radial station
%
deflection(m,:)=X_n(4,:);
60
plot ( R_n/R_n(1), 2*X_n(4,:), '-')
grid on;
title ( ' Chordwise Mode Shapes at Operational Rotational Velocity ' );
xlabel ( ' Blade Station (inches)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
hold off
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency to Rotational Speed is: ')
disp(omega_n/R_V)
%
% End of Program " Hinged-Edgewise "
63
end;
end;
%
k = k+1;
end; % end of loop for omega1
%
%---------------------------------------------------------------------
%
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end;
%
%---------------------------------------------------------------------
%***************************************************************************************
%
for count = 1 : modeshp
omega_0 = omega_n(count)*pi/30; % omega_0 is in radians , omega_n is in RPM
omega_new = 100; % omega_new is in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
%-----------------------------------------------------------------
% determination of odd or even mode shapes
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%
%------------------------------------------------------------------
%
% initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
64
%------------------------------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0; % if real part of natural frequency is negative
value make it zero
end % end of if loop omega
%
%---------------------------------------------------------------
for j = 1:n-1,
%
l_sn = R_n(j) - R_n(j+1);
%
EI = E_n * I_xx(j);
%
G_n=[1, 0, 0, -m_n(j+1)*omega_0^2 ; % omega_0
is in radians
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI) 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(3,3), F(3,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%
%-------------------------------------------------------------
if (abs(det_bc)<10000 | abs(omega_old-omega_new)<1e-10), % if loop 1
omega_n(count) = omega_0*30/pi; % omega_0 is in radians, omega_n is in RPM
%
%--------------------------------------------------------
%
if abs(omega_old-omega_new)<1e-10, % if loop 1-a
65
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1-a'
%
%---------------------------------------------------------
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
else % else for if loop 1
%--------------------------------------------------------
if flag_1 == 1, % if loop 1-b
if det_bc > 0, % if loop 1-b-i
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in radians
else % else for if loop 1-b-i
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in radians
end; % end of 'loop if 1-b-i'
%----------------------------------------------------
% rearrange the values
%
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
%
elseif flag_1 == 2, % elseif for if loop 1-b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0,
% if loop 1-b-ii
if det_bc > 0, % if loop 1-b-ii-a
omega_new = omega_0 - (200*pi/30)*slope;%omega_new is in radians
else % else for if loop 1-b-ii-a
omega_new = omega_0 + (200*pi/30)*slope;%omega_new is in radians
end; % end of 'if loop 1-b-ii-a
%
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
else % else for if loop 1-b-ii
66
omega_0 = (omega_new + omega_old)/2;
%omega_old,new.and 0 are in radians
det_bcnew = det_bc;
flag_1 = 0;
end % end of 'if loop 1-b-ii'
else % else for if loop 1-b
if ((det_bc>0 & det_bcnew > 0) | (det_bc<0 & det_bcnew < 0)),
% if loop 1-b-iii
omega_new = omega_0;
det_bcnew = det_bc;
elseif ((det_bc < 0 & det_bcnew > 0) | (det_bc > 0 & det_bcnew < 0)),
% elseif for if loop 1-b-ii
omega_old = omega_0;
det_bcold = det_bc;
end; % end of 'if loop 1-b-ii'
omega_0 = (omega_new + omega_old)/2;
end; % end of 'if loop 1-b'
%
%--------------------------------------------------------------------------
end; % end of 'if loop 1'
%------------------------------------------------------------------------------
end; % end of 'while loop'
%
theta_n(count) = -B_c(2,2) / B_c(2,1);
%
end % end of loop for count
%
***************************************************************************************
%
for m= 1 : count % for loop count
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
F = eye(4);
for j = 1:n-1, % for loop j
%
l_sn = R_n(j) - R_n(j+1);
%
EI = E_n * I_xx(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_n(m)*pi/30)^2;
67
0, 1, 0, -T_n(j);
0, 0, 1, 0;
0, 0, l_sn, 1];
%
%
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
X_n(:,j+1) = F * X_tip;
end; % end of loop for j -->
{ l_sn, EI, A_n, G_n, F_n)
%
% get the total deflection at each radial station
deflection(m,:)=X_n(4,:);
figure(2)
plot ( R_n, deflection(m,:), '-');
grid on;
title ( ' Flapwise Mode Shapes at Operational Rotational Velocity ' );
xlabel ( ' Blade Station (inc)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
%
%***************************************************************************************
hold off
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency/Rotational Speed is: ')
disp(omega_n/R_V)
%
% End of the Program " Hingeless-Flatwise "
68
D. HINGELESS BLADE ABOUT EDGEWISE AXIS
clear
clc
format long
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MYKELSTAD ANALYSIS %
% BASIC PROGRAM %
% FOR EDGEWISE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TABLE B-1 %
% %
% BASIC BLADE DATA %
% %
% H-1 HELICOPTER %
% %
% 1-1 Planform, Articulated Blade %
% Gross Weight 12000lb. , 150Knot Design %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Radius of the stations from tip to root are(inch) : [372.00, 353.40, 334.80, 316.20,
% 297.60, 279.00, 260.40, 241.80, 223.20, 204.60, 186.00, 167.40, 148.80, 130.20,
% 111.60, 93.00, 74.40, 55.80, 37.20, 18.60, 12.63 ];
%
R_n = [372.00, 353.40, 334.80, 316.20, 297.60, 279.00, 260.40, 241.80, 223.20,...
204.60, 186.00, 167.40, 148.80, 130.20, 111.60, 93.00 , 74.40 , 55.80 ,...
37.20 , 18.60 , 12.63 ,0 ];
% hinge(e) = 12.625 inches for H-1 Helicopter
%
%
%Edgewise Ixx(inch.^4) :
%
I_yy = [10.10, 20.30, 20.50, 20.60, 20.80, 20.90, 23.70, 24.00, 24.30, 24.80,...
27.00, 27.30, 28.00, 28.50, 29.30, 29.80, 30.50, 35.00, 26.00, 26.00,...
26.00 ];
%
%Segment Weight(lb) : [2.56, 12.57, 9.51, 9.19, 9.18, 9.29, 9.03, 9.14, 9.45, 9.37,
% 9.91, 9.94, 1.01, 9.73, 8.78, 9.06, 8.53, 10.51, 55.21, 84.17,
% 20.46 ];
%
69
W_n = [2.56, 12.57, 9.51, 9.19, 9.18, 9.29, 9.03, 9.14, 9.45, 9.37, 9.91, 9.94,...
10.01, 9.73, 8.78 , 9.06, 8.53, 10.51, 55.21, 84.17, 20.46 ,0 ];
%
m_n = W_n/(32.174*12);
%
% Aliminum
E_n = 1e7;
%
n = length(R_n);
%
% n represents the number of the stations(segments);
%
%=======================================================================================
%
omega = 0;
det_Bc = 0;
%
modeshp = input('How many mode shapes would you like? ');
%
R_V = 203; % RPM (R_V)
R_V1 = R_V * pi/30; % radians (R_V1)
%
%======================================================================================
% Calculation of "Centrifugal Force" at the root:
%--------------------------------------------------------------------------------------
T_n(1) = m_n(1) * R_n(1) * R_V1^2; % ....... (T_n) and radians (R_V1)
%
% T_n(1) is is the "Centrifugal Force at the TIP"
%
for i = 1 : n-1,
T_n(i+1)=T_n(i) + m_n(i+1) * R_n(i+1) * R_V1^2;
end; % end of loop for i--> { T_n(i) }
%
disp( ' Centrifugal Force : ' )
disp(T_n(n))
% Displays "Centrifugal Force at r = 12.63"
%
%======================================================================================
k = 1;
i = 1;
70
%
for omega_1 = 0 : modeshp^2*R_V/500 : 2.1*modeshp^2*R_V,
% RPM (omega_1)
omega(k) = omega_1*2*pi/60; % radians (omega(k))
F = eye(4);
%-----------------------------------------------------------------------------------
for j = 1:n-1,
% determine length of the segments;
l_sn = R_n(j) - R_n(j+1);
%
% detemine the stiffness
EI = E_n * I_yy(j);
%
G_n = [ 1, 0, 0, -m_n(j+1)*(omega(k)^2 + R_V1^2);
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
A_n = [ 1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loop for j --> { A_n, G_n, F_n
)
%
%----------------------------------------------------------------------------------
B_c = [ F(3,3),F(3,4) ; F(4,3),F(4,4)];
det_bc(k) = det(B_c);
%
%----------------------------------------------------------------------------------
%determination of the points and the natural frequencies where det crosses the "0 line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
71
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1
%
%======================================================================================
%
% Sorting and Displaying the "Natural Frequencies"
%
% Sort and convert the unit of natural frequency to 'cpm'
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end; % end of loop for (m)
%
%=======================================================================================
%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % % radians (omega_0) ,RPM (omega_n)
%
omega_new = 100; % omega_new i in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
%-----------------------------------------------------------------------------------
% Determination of odd or even mode shapes
%
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
72
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%
%-----------------------------------------------------------------------------------
% Initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
%----------------------------------------------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0; % if natural frequency is negative, make it zero
end % end of if loop omega
%
for j = 1:n-1,
%
l_sn = R_n(j) - R_n(j+1);
%
EI = E_n * I_yy(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_0^2 + R_V1^2) ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(3,3),F(3,4) ; F(4,3),F(4,4)];
det_bc = det(B_c);
73
%-------------------------------------------------------------------------------
%
if (abs(det_bc)<10000 | abs(omega_old-omega_new)<1e-10),
% if loop 1
omega_n(count) = omega_0*30/pi; % radians (omega_0), RPM (omega_n)
%
if abs(omega_old-omega_new)<1e-10, % if loop 1.a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1.a'
%
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
else % else for if loop 1
%
if flag_1 == 1, % if loop 1.b
if det_bc > 0, % if loop
1.b.i
omega_new = omega_0 - (200*pi/30)*slope; % radians(omega_new)
else % else for if loop 1.b.i
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'loop if 1.b.i'
%
% Rearrange the values
%
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
%
elseif flag_1 == 2, % elseif for if loop 1.b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0,
% if loop 1.b.ii
if det_bc > 0, % if loop 1.b.ii.a
74
omega_new = omega_0 - (200*pi/30)*slope;
else % else for if loop 1.b.ii.a
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'if loop 1.b.ii.a
%
% Rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
76
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency/Rotational Speed is: ')
disp(omega_n/R_V)
%
% end of program HINGELESS-EDGEWISE
EI = E_n * I_xx(j);
G_n=[1, 0, 0, -m_n(j+1)*omega(k)^2;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
78
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%----------------------------------------------------------------------------------
%determination of the points and the natural frequencies where det crosses the "0
%line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1
%
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % omega_0 is in radians , omega_n is in RPM
omega_new = 100; % omega_new is in RPM
omega_old = -100; % omega_old is in RPM
79
flg_slope = 1;
%
% determination of odd or even mode shapes
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%----------------------------------------------
% initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%-----------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0;% if real part of natural frequency is negative value make it
%zero
end % end of if loop omega
%-------------------------------------------
for j = 1:n-1,
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_xx(j);
%
G_n=[1, 0, 0, -m_n(j+1)*omega_0^2 ; % omega_0
is in radians
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
80
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(2,3), F(2,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%---------------------------------------------------------
if (abs(det_bc)<100 | abs(omega_old-omega_new)<1e-10), % if loop 1
omega_n(count) = omega_0*30/pi; % omega_0 is in radians, omega_n
is in RPM
%
%--------------------------------
if abs(omega_old-omega_new)<1e-10, % if loop 1-a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1-a'
%-------------------------------
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
else % else for if loop 1
%-------------------------------
if flag_1 == 1, % if loop 1-b
if det_bc > 0, % if loop 1-b-i
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in radians
else % else for if loop 1-b-i
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in radians
end; % end of 'loop if 1-b-i'
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
elseif flag_1 == 2, % elseif for if loop 1-b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0, % if loop
1-b-ii
if det_bc > 0, % if loop 1-b-ii-a
omega_new = omega_0 - (200*pi/30)*slope;
81
% omega_new is in radians
else % else for if loop 1-b-ii-a
omega_new = omega_0 + (200*pi/30)*slope;
% omega_new is in radians
end; % end of 'if loop 1-b-ii-a
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
else % else for if loop 1-b-ii
omega_0 = (omega_new + omega_old)/2; % omega_old,new and 0 are in
radians
det_bcnew = det_bc;
flag_1 = 0;
end % end of 'if loop 1-b-ii'
else % else for if loop 1-b
if ((det_bc>0 & det_bcnew > 0) | (det_bc<0 & det_bcnew < 0)), % if
loop 1-b-iii
omega_new = omega_0;
det_bcnew = det_bc;
elseif ((det_bc < 0 & det_bcnew > 0) | (det_bc > 0 & det_bcnew < 0)), %
elseif for if loop 1-b-ii
omega_old = omega_0;
det_bcold = det_bc;
end; % end of 'if loop 1-b-ii'
omega_0 = (omega_new + omega_old)/2;
end; % end of 'if loop 1-b'
%---------------------------------------
end; % end of 'if loop 1'
%-----------------------------------------------------------------------------
end; % end of 'while loop'
%
theta_n(count) = -B_c(2,2) / B_c(2,1);
end % end of loop for count
% **************************************************************************************
%
for m= 2 : count % for loop count
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
F = eye(4);
for j = 1:n-1, % for loop j
82
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_xx(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_n(m)*pi/30)^2;
0, 1, 0, -T_n(j);
0, 0, 1, 0;
0, 0, l_sn, 1];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
X_n(:,j+1) = F * X_tip;
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% get the total deflection at each radial station
deflection(m,:)=X_n(4,:);
%
plot ( r_n/r_n(1), 2*deflection(m,:), '-');
grid on;
axis([0 1 -2 2])
title ( ' Hinged Nonrotating Uniform Blade Comparison (50 stations) ' );
xlabel ( ' Blade Station (inc)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
hold on
% Clamped-Free Beams
%=====================================================================================
Deflection_tx_mod3 = [ 2.00000, 1.6861, 1.37287, 1.06189, 0.75558,...
0.45702, 0.16974, -0.10243, -0.35563, -0.58594,...
83
-0.78975,-0.96375, -1.10515, -1.21175, -1.28189,...
-1.31485, -1.31055, -1.26974, -1.19398, -1.08559,...
-0.94753, -0.78359, -0.59802, -0.39555, -0.18130,...
0.03937, 0.26103, 0.47822, 0.68568, 0.87841, ...
1.05185, 1.20196, 1.32534, 1.41931, 1.48203, ...
1.51248, 1.51046, 1.47707, 1.41376, 1.32324, ...
1.20901, 1.07535, 0.92728, 0.77049, 0.61120, ...
0.45614, 0.31238, 0.18727, 0.08829, 0.02339, ...
0];
%==============================================================================
% Clamped-Supported Beam
%==============================================================================
Deflection_tex_mod1 = [2.00000, 1.84282, 1.68568, 1.52869, 1.37202,...
84
1.21590, 1.06060, 0.90647, 0.75386, 0.60318,...
0.45486, 0.30935, 0.16712, 0.02866,-0.10554,...
-0.23500,-0.35923,-0.47775,-0.59009,-0.69582,...
-0.79450,-0.88574,-0.96918,-1.04447,-1.11133,...
-1.16950,-1.21875,-1.25894,-1.28992,-1.31162,...
-1.32402,-1.32714,-1.32106,-1.30588,-1.28180,...
-1.24904,-1.20786,-1.15858,-1.10157,-1.03725,...
-0.96606,-0.88849,-0.80507,-0.71636,-0.62295,...
-0.52547,-0.42455,-0.32086,-0.21507,-0.10789,...
0];
x_over_l(51) = 0;
w = 51;
for q = 50:-1:1,
x_over_l(q)= x_over_l(w) + 0.02;
w = w-1;
85
end;
plot (x_over_l, Deflection_tex_mod3, 'r--')
hold on
plot (x_over_l, Deflection_tex_mod2, 'g--')
hold on
plot ( x_over_l, Deflection_tex_mod1, 'm--')
hold off
86
disp( compare)
%
for j = 1:(com-1)
if betal_young_compare(j) == 0;
accuracy(j) = compare(j) * 100;
else
accuracy (j) = (compare(j) / betal_young_compare(j) - 1) *100;
end
end
disp ( 'The Error of the Natural Frequencies(%) ' )
disp ( accuracy)
%
% end of program "HINGED-TEST"
EI = E_n * I_xx(j);
88
G_n=[1, 0, 0, -m_n(j+1)*omega(k)^2;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%-----------------------------------------------------------------------------------
if k >1,
s = k-1;
if det_bc(k) * det_bc(:,s) < 0
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end;
end;
k = k+1;
end; % end of loop for omega1
%
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % omega_0 is in radians , omega_n is in RPM
omega_new = 100; % omega_new is in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
89
%
% determination of odd or even mode shapes
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%----------------------------------------------
% initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%-----------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0;
% if real part of natural frequency is negative value make it zero
end % end of if loop omega
%-------------------------------------------
for j = 1:n-1,
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_xx(j);
%
G_n=[1, 0, 0, -m_n(j+1)*omega_0^2 ;% omega_0 is in radians
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
90
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(3,3), F(3,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%---------------------------------------------------------
if (abs(det_bc)<100 | abs(omega_old-omega_new)<1e-10), % if loop 1
omega_n(count) = omega_0*30/pi; omega_0 is in radians, omega_n is in RPM
%
%--------------------------------
if abs(omega_old-omega_new)<1e-10, % if loop 1-a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1-a'
%-------------------------------
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
else % else for if loop 1
%-------------------------------
if flag_1 == 1, % if loop 1-b
if det_bc > 0, % if loop 1-b-i
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in radians
else % else for if loop 1-b-i
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in radians
end; % end of 'loop if 1-b-i'
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
elseif flag_1 == 2, % elseif for if loop 1-b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0,
% if loop 1-b-ii
if det_bc > 0, % if loop 1-b-ii-a
omega_new = omega_0 - (200*pi/30)*slope;
% omega_new is in radians
91
else % else for if loop 1-b-ii-a
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in
radians
end; % end of 'if loop 1-b-ii-a
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
else % else for if loop 1-b-ii
omega_0 = (omega_new + omega_old)/2; % omega_old,new and 0 are in
radians
det_bcnew = det_bc;
flag_1 = 0;
end % end of 'if loop 1-b-ii'
else % else for if loop 1-b
if ((det_bc>0 & det_bcnew > 0) | (det_bc<0 & det_bcnew < 0)),
% if loop 1-b-iii
omega_new = omega_0;
det_bcnew = det_bc;
elseif ((det_bc < 0 & det_bcnew > 0) | (det_bc > 0 & det_bcnew < 0)),
% elseif for if loop 1-b-ii
omega_old = omega_0;
det_bcold = det_bc;
end; % end of 'if loop 1-b-ii'
omega_0 = (omega_new + omega_old)/2;
end; % end of 'if loop 1-b'
%---------------------------------------
end; % end of 'if loop 1'
%-----------------------------------------------------------------------------
end; % end of 'while loop'
%
theta_n(count) = -B_c(2,2) / B_c(2,1);
end % end of loop for count
% *************************************************************************************
%
for m= 1 : count % for loop count
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
F = eye(4);
for j = 1:n-1, % for loop j
%
92
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_xx(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_n(m)*pi/30)^2;
0, 1, 0, -T_n(j);
0, 0, 1, 0;
0, 0, l_sn, 1];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
X_n(:,j+1) = F * X_tip;
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% get the total deflection at each radial station
deflection(m,:)=X_n(4,:);
plot ( r_n/r_n(1), 2*deflection(m,:), '-');
grid on;
axis([0 1 -2 2])
title ( ' Hingeless Nonrotating Uniform Blade Comparison (50 stations) ' );
xlabel ( ' Blade Station (inc)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
hold on
% Clamped-Free Beams
%=====================================================================================
Deflection_tx_mod3 = [ 2.00000, 1.6861, 1.37287, 1.06189, 0.75558,...
0.45702, 0.16974, -0.10243, -0.35563, -0.58594,...
-0.78975,-0.96375, -1.10515, -1.21175, -1.28189,...
-1.31485, -1.31055, -1.26974, -1.19398, -1.08559,...
93
-0.94753, -0.78359, -0.59802, -0.39555, -0.18130,...
0.03937, 0.26103, 0.47822, 0.68568, 0.87841, ...
1.05185, 1.20196, 1.32534, 1.41931, 1.48203, ...
1.51248, 1.51046, 1.47707, 1.41376, 1.32324, ...
1.20901, 1.07535, 0.92728, 0.77049, 0.61120, ...
0.45614, 0.31238, 0.18727, 0.08829, 0.02339, ...
0];
%==============================================================================
% Clamped-Supported Beam
%==============================================================================
Deflection_tex_mod1 = [2.00000, 1.84282, 1.68568, 1.52869, 1.37202,...
1.21590, 1.06060, 0.90647, 0.75386, 0.60318,...
0.45486, 0.30935, 0.16712, 0.02866,-0.10554,...
94
-0.23500,-0.35923,-0.47775,-0.59009,-0.69582,...
-0.79450,-0.88574,-0.96918,-1.04447,-1.11133,...
-1.16950,-1.21875,-1.25894,-1.28992,-1.31162,...
-1.32402,-1.32714,-1.32106,-1.30588,-1.28180,...
-1.24904,-1.20786,-1.15858,-1.10157,-1.03725,...
-0.96606,-0.88849,-0.80507,-0.71636,-0.62295,...
-0.52547,-0.42455,-0.32086,-0.21507,-0.10789,...
0];
x_over_l(51) = 0;
w = 51;
for q = 50:-1:1,
x_over_l(q)= x_over_l(w) + 0.02;
w = w-1;
end;
plot (x_over_l, Deflection_tx_mod3, 'r--')
95
hold on
plot (x_over_l, Deflection_tx_mod2, 'g--')
hold on
plot ( x_over_l, Deflection_tx_mod1, 'm--')
hold off
%
%==================================================================================
%
% Comparison of the Natural Frequencies:
%
% HARTOG( Mechanical Vibrations - page:432):
% "Hinged-free" beam or wing of autogyro may be considered as half a "free-free" beam
%for even a-numbers
a_hartog = [3.52, 22.0, 61.7, 121.0, 200];
%
% Dana Young:
% Second derivative of Clamped-Supported is Free-Supported(hinged),
betal_young= [3.5150154, 22.034492, 61.697214, 120.901916, 199.859530];
% Our Program:
if modeshp > 5
com = 5;
else
com = modeshp;
end
%
for i = 1:(com-1);
compare (i) = omega_n(i)/omega_n(i+1);
a_hartog_compare(i) = a_hartog(i) / a_hartog(i+1);
betal_young_compare(i) = betal_young(i) / betal_young(i+1);
end
display ( ' According to Hartog the coefficients are: ')
disp( a_hartog_compare)
display ( ' According to Dana Youn the coefficients are: ')
disp( betal_young_compare)
display ( ' According to Our Program the coefficients are: ')
disp( compare)
%
%
for j = 1:(com-1)
96
if betal_young_compare(j) == 0;
accuracy(j) = compare(j) * 100;
else
accuracy (j) = (compare(j) / betal_young_compare(j) - 1) *100;
end
end
disp ( 'The Accuracy of the Natural Frequencies(%) ' )
disp ( accuracy)
%
% end of program "HINGELESS-TEST"
G. GUI PROGRAMS
1. Call function file of the Gui page
function varargout = finalthesis(varargin)
% FINALTHESIS Application M-file for finalthesis.fig
% FIG = FINALTHESIS launch finalthesis GUI.
% FINALTHESIS('callback_name', ...) invoke the named callback.
fig = openfig(mfilename,'reuse');
%========================================================================
% Call the popup menu callback to initialize the handles.data
% Field with the current value of the popup
%
% (1) Popup Menu "en"
en_popupmenu_Callback(handles.en_popupmenu,[],handles)
97
%
% (2) Popup Menu "mode shape"
mode shape_popupmenu_Callback(handles.mode shape_popupmenu,[],handles)
%
% (3) Popup Menu "hinge"
hinge_popupmenu_Callback(handles.hinge_popupmenu,[],handles)
%
% (4) Popup Menu "axis"
axis_popupmenu_Callback(handles.axis_popupmenu,[],handles)
%
% (5) Popup Menu "form"
form_popupmenu_Callback(handles.form_popupmenu,[],handles)
%
% ========================================================================
if nargout > 0
varargout{1} = fig;
end
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
98
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.
% --------------------------------------------------------------------
function varargout = en_popupmenu_Callback(h, eventdata, handles, varargin)
%
val = get(h,'Value');
%
switch val
99
case 1 % user selected 'aliminum'
E_n = 1e7;
handles.en = E_n;
end
%
guidata(h,handles) % Save the handles structure after adding data
%
% --------------------------------------------------------------------
function varargout = mode shape_popupmenu_Callback(h, eventdata, handles, varargin)
%
val = get(h,'Value');
switch val
100
handles.mode shape = modeshp;
end
%
guidata(h,handles) % Save the handles structure after adding data
%
% --------------------------------------------------------------------
function varargout = hinge_popupmenu_Callback(h, eventdata, handles, varargin)
%
val = get(h,'Value');
%
switch val
end
%
guidata(h,handles) % save the handles structure after adding data
%
% --------------------------------------------------------------------
function varargout = axis_popupmenu_Callback(h, eventdata, handles, varargin)
%
val = get(h,'Value');
%
101
switch val
end
%
guidata(h,handles) % save the handles structure after adding data
%
% --------------------------------------------------------------------
function varargout = form_popupmenu_Callback(h, eventdata, handles, varargin)
%
val = get(h,'Value');
%
switch val
end
%
guidata(h,handles) % save the handles structure after adding data
%
% --------------------------------------------------------------------
102
function varargout = rpm_edit_Callback(h, eventdata, handles, varargin)
%
R_V = str2num(get(h,'String'));
handles.rpm = R_V;
%
guidata(h,handles); % save the handles structure after adding data
%
% --------------------------------------------------------------------
function varargout = e_edit_Callback(h, eventdata, handles, varargin)
%
e = str2num(get(h,'String'));
handles.e = e;
%
guidata(h,handles);
%
% --------------------------------------------------------------------
function varargout = radius_edit_Callback(h, eventdata, handles, varargin)
%
R = str2num(get(h,'String'));
handles.radius = R;
%
guidata(h,handles);
%
% --------------------------------------------------------------------
function varargout = weight_edit_Callback(h, eventdata, handles, varargin)
%
weight = str2num(get(h,'String'));
handles.weight = weight;
%
guidata(h,handles);
%
% --------------------------------------------------------------------
function varargout = inertia_edit_Callback(h, eventdata, handles, varargin)
%
I_xx = str2num(get(h,'String'));
handles.inertia = I_xx;
%
guidata(h,handles);
%
103
% --------------------------------------------------------------------
function varargout = cancel_pushbutton_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = ok_pushbutton_Callback(h, eventdata, handles, varargin)
%
E_n = handles.en;
%
modeshp = handles.mode shape;
%
hinge_option = handles.hinge;
%
axis_option = handles.axis;
%
form_option = handles.form;
%
%
%
R_V = handles.rpm;
%
e = handles.e;
%
R = handles.radius;
%
weight = handles.weight;
%
I_xx = handles.inertia;
%
%
%=======================================================================================
if hinge_option == 2 & e ~= 0
errordlg('Hingeless Blade Should Have 0 Hinge-Offset!', ' Offset Error
Dialog Box','modal')
else
%
%=======================================================================================
if hinge_option == 1 & e == 0
errordlg('Hinged Blade Should Have Hinge-Offset Value!',' Offset Error
Dialog Box2','modal')
else
%
104
%=======================================================================================
if length(R) ~= length(weight) | length(R) ~= length(I_xx) | length(weight) ~=
length(I_xx)
errordlg('The Number of Stations Should Match!','Input Error Dialog
Box','modal')
else
%
%=======================================================================================
if form_option == 1 & length(R) >1
warndlg('Use More Than 1 Stations for Only Nonuniform Blades!','Blade Form
Input Warning Dialog Box','modal')
else
%
%=======================================================================================
if R_V < 0 | e < 0 | R < 0 | weight < 0 | I_xx < 0
errordlg('Invalid Input Value', 'Invalid Input Error Dialog Box','modal')
else
%
%=======================================================================================
reset(gca)
%
[cpm,ratio,tn] = operate( E_n, modeshp, hinge_option, axis_option, form_option, R_V, e,
R, weight, I_xx );
%
%
%
if length(cpm) == 1;
value1 = cpm(1);
str1 = sprintf('%.2f',value1);
set (handles.cpm1_text,'String',str1);
%
value2 = 0;
str2 = sprintf('%.2f',value2);
set (handles.cpm2_text,'String',str2);
%
value3 = 0;
str3 = sprintf('%.2f',value3);
set (handles.cpm3_text,'String',str3);
%
value4 = 0;
105
str4 = sprintf('%.2f',value4);
set (handles.cmp4_text,'String',str4);
%
value5 = 0;
str5 = sprintf('%.2f',value5);
set (handles.cpm5_text,'String',str5);
end
%-----------------------------------------
if length(cpm) == 2;
value1 = cpm(1);
str1 = sprintf('%.2f',value1);
set (handles.cpm1_text,'String',str1);
%
value2 = cpm(2);
str2 = sprintf('%.2f',value2);
set (handles.cpm2_text,'String',str2);
%
value3 = 0;
str3 = sprintf('%.2f',value3);
set (handles.cpm3_text,'String',str3);
%
value4 = 0;
str4 = sprintf('%.2f',value4);
set (handles.cmp4_text,'String',str4);
%
value5 = 0;
str5 = sprintf('%.2f',value5);
set (handles.cpm5_text,'String',str5);
end
%-----------------------------------------
if length(cpm) == 3
value1 = cpm(1);
str1 = sprintf('%.2f',value1);
set (handles.cpm1_text,'String',str1);
%
value2 = cpm(2);
str2 = sprintf('%.2f',value2);
set (handles.cpm2_text,'String',str2);
%
value3 = cpm(3);
106
str3 = sprintf('%.2f',value3);
set (handles.cpm3_text,'String',str3);
%
value4 = 0;
str4 = sprintf('%.2f',value4);
set (handles.cmp4_text,'String',str4);
%
value5 = 0;
str5 = sprintf('%.2f',value5);
set (handles.cpm5_text,'String',str5);
end
%------------------------------------------
if length(cpm) == 4
value1 = cpm(1);
str1 = sprintf('%.2f',value1);
set (handles.cpm1_text,'String',str1);
%
value2 = cpm(2);
str2 = sprintf('%.2f',value2);
set (handles.cpm2_text,'String',str2);
%
value3 = cpm(3);
str3 = sprintf('%.2f',value3);
set (handles.cpm3_text,'String',str3);
%
value4 = cpm(4);
str4 = sprintf('%.2f',value4);
set (handles.cmp4_text,'String',str4);
%
value5 = 0;
str5 = sprintf('%.2f',value5);
set (handles.cpm5_text,'String',str5);
end
%------------------------------------------
if length(cpm) == 5
value1 = cpm(1);
str1 = sprintf('%.2f',value1);
set (handles.cpm1_text,'String',str1);
%
value2 = cpm(2);
107
str2 = sprintf('%.2f',value2);
set (handles.cpm2_text,'String',str2);
%
value3 = cpm(3);
str3 = sprintf('%.2f',value3);
set (handles.cpm3_text,'String',str3);
%
value4 = cpm(4);
str4 = sprintf('%.2f',value4);
set (handles.cmp4_text,'String',str4);
%
value5 = cpm(5);
str5 = sprintf('%.2f',value5);
set (handles.cpm5_text,'String',str5);
end
%
%==============================================================
if length(ratio) == 1
%
val1 = ratio(1);
strg1 = sprintf('%.2f',val1);
set (handles.ratio1_text,'String',strg1);
%
val2 = 0;
strg2 = sprintf('%.2f',val2);
set (handles.ratio2_text,'String',strg2);
%
val3 = 0;
strg3 = sprintf('%.2f',val3);
set (handles.ratio3_text,'String',strg3);
%
val4 = 0;
strg4 = sprintf('%.2f',val4);
set (handles.ratio4_text,'String',strg4);
%
val5 = 0;
strg5 = sprintf('%.2f',val5);
set (handles.ratio5_text,'String',strg5);
end
%-------------------------------------------
108
if length(ratio) == 2
%
val1 = ratio(1);
strg1 = sprintf('%.2f',val1);
set (handles.ratio1_text,'String',strg1);
%
val2 = ratio(2);
strg2 = sprintf('%.2f',val2);
set (handles.ratio2_text,'String',strg2);
%
val3 = 0;
strg3 = sprintf('%.2f',val3);
set (handles.ratio3_text,'String',strg3);
%
val4 = 0;
strg4 = sprintf('%.2f',val4);
set (handles.ratio4_text,'String',strg4);
%
val5 = 0;
strg5 = sprintf('%.2f',val5);
set (handles.ratio5_text,'String',strg5);
end
%---------------------------------------------
if length(ratio) == 3
%
val1 = ratio(1);
strg1 = sprintf('%.2f',val1);
set (handles.ratio1_text,'String',strg1);
%
val2 = ratio(2);
strg2 = sprintf('%.2f',val2);
set (handles.ratio2_text,'String',strg2);
%
val3 = ratio(3);
strg3 = sprintf('%.2f',val3);
set (handles.ratio3_text,'String',strg3);
%
val4 = 0;
strg4 = sprintf('%.2f',val4);
set (handles.ratio4_text,'String',strg4);
109
%
val5 = 0;
strg5 = sprintf('%.2f',val5);
set (handles.ratio5_text,'String',strg5);
end
%
%---------------------------------------------
if length(ratio) == 4
%
val1 = ratio(1);
strg1 = sprintf('%.2f',val1);
set (handles.ratio1_text,'String',strg1);
%
val2 = ratio(2);
strg2 = sprintf('%.2f',val2);
set (handles.ratio2_text,'String',strg2);
%
val3 = ratio(3);
strg3 = sprintf('%.2f',val3);
set (handles.ratio3_text,'String',strg3);
%
val4 = ratio(4);
strg4 = sprintf('%.2f',val4);
set (handles.ratio4_text,'String',strg4);
%
val5 = 0;
strg5 = sprintf('%.2f',val5);
set (handles.ratio5_text,'String',strg5);
end
%
%------------------------------------------
if length(ratio) == 5%
%
val1 = ratio(1);
strg1 = sprintf('%.2f',val1);
set (handles.ratio1_text,'String',strg1);
%
val2 = ratio(2);
strg2 = sprintf('%.2f',val2);
set (handles.ratio2_text,'String',strg2);
110
%
val3 = ratio(3);
strg3 = sprintf('%.2f',val3);
set (handles.ratio3_text,'String',strg3);
%
val4 = ratio(4);
strg4 = sprintf('%.2f',val4);
set (handles.ratio4_text,'String',strg4);
%
val5 = ratio(5);
strg5 = sprintf('%.2f',val5);
set (handles.ratio5_text,'String',strg5);
end
%
%===================================================================
value_tn = tn;
strin = sprintf('%.2f',value_tn);
set(handles.tn_text,'String',strin);
%===================================================================
end % ifelse for 'hingeless'
end % ifelse for 'hinged'
end % ifelse for 'inputs'
end % ifelse for 'form inputs'
end % ifelse for 'invalid inputs'
%
% end of program "FINALTHESIS"
2. Operation Function
function [cpm,ratio,tn,varargout] = operate( E_n, modeshp, hinge_option,
axis_option, form_option, R_V, e, R, weight, I_xx)
%
%================================================================================
=======
% This function is the main operating function of the gui program of the
'Mykelstad Blade Dynamics Analysis'
%
%================================================================================
======
111
%
%--------------------------------------------------------------
% Assigning the default values of the program:
% (All the default values are given for the H-3 Helicopter values with no hinge)
%
%*
%global cpm
%global ratio
%global tn
%
if isempty(R_V)
R_V = 372;
end
%
%**
if isempty(e)
e = 0;
end
%
%***
if isempty(R)
R = 372;
end
%
%****
if isempty(weight)
weight = 316.6;
end
%
%*****
if isempty(I_xx)
I_xx = 2.5;
end
%
%-----------------------------------------------------------
%
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
112
switch form_option; % switch(1)
case 1 % 'uniform'
case 1 % 'flatwise'
case 2; % 'edgewise'
switch hinge_option % switch(3)
case 1 % 'hinged'
[cpm,ratio,tn] = hinged_uniform_edgewise(E_n, modeshp, R_V, e, R,
weight, I_xx);
case 2 % 'hingeless'
[cpm,ratio,tn] = hingeless_uniform_edgewise(E_n, modeshp, R_V, e, R,
weight, I_xx);
end % end switch(3)
%----------------------
case 3; % 'coupled'
switch hinge_option % switch(3)
case 1 % 'hinged'
[cpm,ratio,tn] = hinged_uniform_coupled(E_n, modeshp, R_V, e, R,
weight, I_xx);
case 2 % 'hingeless'
113
[cpm,ratio,tn] = hingeless_uniform_coupled(E_n, modeshp, R_V, e, R,
weight, I_xx);
end % end switch(3)
case 1 % 'flatwise'
switch hinge_option % switch(3)
case 1 % 'hinged'
[cpm,ratio,tn] = hinged_nonuniform_flatwise(E_n, modeshp, R_V, e,
R, weight, I_xx);
case 2 % 'hingeless'
[cpm,ratio,tn] = hingeless_nonuniform_flatwise(E_n, modeshp, R_V,
e, R, weight, I_xx);
end % end switch(3)
%-----------------------
case 2; % 'edgewise'
switch hinge_option % switch(3)
case 1 % 'hinged'
[cpm,ratio,tn] = hinged_nonuniform_edgewise(E_n, modeshp, R_V, e,
R, weight, I_xx);
case 2 % 'hingeless'
[cpm,ratio,tn] = hingeless_nonuniform_edgewise(E_n, modeshp, R_V,
e, R, weight, I_xx);
end % end switch(3)
%------------------------
case 3; % 'coupled'
switch hinge_option % switch(3)
case 1 % 'hinged'
114
[cpm,ratio,tn] = hinged_nonuniform_coupled(E_n, modeshp, R_V, e,
R, weight, I_xx);
case 2 % 'hingeless'
[cpm,ratio,tn] = hingeless_nonuniform_coupled(E_n, modeshp, R_V,
e, R, weight, I_xx);
end % end switch(3)
%------------------------
115
I_x(seg) = I_xx;
Weight_n(seg) = segment_W;
z = z+1;
end;
%
n = length(r_n);
%
m_n = Weight_n/(32.174*12);
%
R_V1= R_V * pi/30; % R_V1 is in radians
T_n(1) = 0; % the unit is radians
%
for i = 1 : n-1,
T_n(i+1)=T_n(i) + m_n(i+1) * r_n(i+1) * R_V1^2;
EI = E_n * I_x(j);
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
116
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%---------------------------------------------------------------------------------
%determination of the points and the natural frequencies where det crosses the "0
%line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1 %
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % omega_0 is in radians , omega_n is in RPM
omega_new = 100; % omega_new is in RPM
117
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
% determination of odd or even mode shapes
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%----------------------------------------------
% initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%-----------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0;
% if real part of natural frequency is negative value make it zero
end % end of if loop omega
%-------------------------------------------
for j = 1:n-1,
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*omega_0^2 ; % omega_0
is in radians
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
118
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(2,3), F(2,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%---------------------------------------------------------
if (abs(det_bc)<100 | abs(omega_old-omega_new)<1e-10), % if loop 1
omega_n(count) = omega_0*30/pi; omega_0 is in radians, omega_n is in RPM
%
%--------------------------------
if abs(omega_old-omega_new)<1e-10, % if loop 1-a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1-a'
%-------------------------------
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
else % else for if loop 1
%-------------------------------
if flag_1 == 1, % if loop 1-b
if det_bc > 0, % if loop 1-b-i
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in radians
else % else for if loop 1-b-i
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in radians
end; % end of 'loop if 1-b-i'
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
elseif flag_1 == 2, % elseif for if loop 1-b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0, % if loop
1-b-ii
119
if det_bc > 0, % if loop 1-b-ii-a
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in
radians
else % else for if loop 1-b-ii-a
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in
radians
end; % end of 'if loop 1-b-ii-a
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
else % else for if loop 1-b-ii
omega_0 = (omega_new + omega_old)/2;
% omega_old,new and 0 are in radians
det_bcnew = det_bc;
flag_1 = 0;
end % end of 'if loop 1-b-ii'
else % else for if loop 1-b
if ((det_bc>0 & det_bcnew > 0) | (det_bc<0 & det_bcnew < 0)),
% if loop 1-b-iii
omega_new = omega_0;
det_bcnew = det_bc;
elseif ((det_bc < 0 & det_bcnew > 0) | (det_bc > 0 & det_bcnew < 0)), %
elseif for if loop 1-b-ii
omega_old = omega_0;
det_bcold = det_bc;
end; % end of 'if loop 1-b-ii'
omega_0 = (omega_new + omega_old)/2;
end; % end of 'if loop 1-b'
%---------------------------------------
end; % end of 'if loop 1'
%-------------------------------------------------------------------------------
end; % end of 'while loop'
%
theta_n(count) = -B_c(2,2) / B_c(2,1);
end % end of loop for count
% ***********************************************************************************
%
for m= 1 : count % for loop count
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
120
F = eye(4);
for j = 1:n-1, % for loop j
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_n(m)*pi/30)^2;
0, 1, 0, -T_n(j);
0, 0, 1, 0;
0, 0, l_sn, 1];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
X_n(:,j+1) = F * X_tip;
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% get the total deflection at each radial station
deflection(m,:)=X_n(4,:);
plot ( r_n, 2*deflection(m,:), '-');
grid on;
title ( ' Flatwise Mode Shapes at Operational Rotational Velocity for Uniform
Blade' );
xlabel ( ' Blade Station (inc)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
hold off
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency to Rotational Speed is: ')
disp(omega_n/R_V)
omega_rate = omega_n/R_V;
%
121
% end of program "HINGED_UNIFORM_FLATWISE"
122
end; % end of loop for i--> { T_n(i) }
cent_force = T_n(n);
disp( ' Centrifugal Force : ' )
disp(T_n(n))
%
%**********************************************************************************
k = 1;
i = 1;
for omega1 = 0 :modeshp^2:2.1*modeshp^2*200, % omega1 is in RPM
omega(k) = omega1*2*pi/60; % omega(k) is in radians
F = eye(4);
%-------------------------------------------------------------------------
for j = 1:n-1,
l_sn = r_n(j) - r_n(j+1);
EI = E_n * I_x(j);
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%--------------------------------------------------------------------------
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
123
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1
%
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % omega_0 is in radians , omega_n is in RPM
omega_new = 100; % omega_new is in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
% determination of odd or even mode shapes
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%----------------------------------------------
% initial values
flag = 1;
124
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%-----------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0; % if real part of natural frequency is negative value
make it zero
end % end of if loop omega
%-------------------------------------------
for j = 1:n-1,
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_0^2 + R_V1^2) ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(2,3), F(2,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%---------------------------------------------------------
if (abs(det_bc)<100 | abs(omega_old-omega_new)<1e-10), % if loop 1
omega_n(count) = omega_0*30/pi; % omega_0 is in radians, omega_n is in RPM
%
%--------------------------------
if abs(omega_old-omega_new)<1e-10, % if loop 1-a
125
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1-a'
%-------------------------------
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
else % else for if loop 1
%-------------------------------
if flag_1 == 1, % if loop 1-b
if det_bc > 0, % if loop 1-b-i
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in radians
else % else for if loop 1-b-i
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in radians
end; % end of 'loop if 1-b-i'
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
elseif flag_1 == 2, % elseif for if loop 1-b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0,
% if loop 1-b-ii
if det_bc > 0, % if loop 1-b-ii-a
omega_new = omega_0 - (200*pi/30)*slope;%omega_new is in radians
else % else for if loop 1-b-ii-a
omega_new = omega_0 + (200*pi/30)*slope;%omega_new is in radians
end; % end of 'if loop 1-b-ii-a
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
else % else for if loop 1-b-ii
omega_0 = (omega_new + omega_old)/2; % omega_old,new and 0 are in
radians
det_bcnew = det_bc;
flag_1 = 0;
end % end of 'if loop 1-b-ii'
else % else for if loop 1-b
126
if ((det_bc>0 & det_bcnew > 0) | (det_bc<0 & det_bcnew < 0)),
% if loop 1-b-iii
omega_new = omega_0;
det_bcnew = det_bc;
elseif ((det_bc < 0 & det_bcnew > 0) | (det_bc > 0 & det_bcnew < 0)),
% elseif for if loop 1-b-ii
omega_old = omega_0;
det_bcold = det_bc;
end; % end of 'if loop 1-b-ii'
omega_0 = (omega_new + omega_old)/2;
end; % end of 'if loop 1-b'
%---------------------------------------
end; % end of 'if loop 1'
%-------------------------------------------------------------------------------
end; % end of 'while loop'
%
theta_n(count) = -B_c(2,2) / B_c(2,1);
end % end of loop for count
% **********************************************************************************
%
for m= 1 : count % for loop count
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
F = eye(4);
for j = 1:n-1, % for loop j
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*((omega_n(m)*pi/30)^2 + R_V1^2);
0, 1, 0, -T_n(j);
0, 0, 1, 0;
0, 0, l_sn, 1];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
127
F_n = inv(G_n)*A_n;
F = F_n * F;
X_n(:,j+1) = F * X_tip;
end; %end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% get the total deflection at each radial station
deflection(m,:)=X_n(4,:);
plot ( r_n, 2*deflection(m,:), '-');
grid on;
title ( ' Chordwise Mode Shapes at Operational Rotational Velocity for Uniform
Blade' );
xlabel ( ' Blade Station (inc)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
%
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency to Rotational Speed is: ')
disp(omega_n/R_V)
omega_rate = omega_n/R_V;
%
% end of function "HINGED_UNIFORM_EDGEWISE"
128
e = 0;
EI = E_n * I_x(j);
129
G_n=[1, 0, 0, -m_n(j+1)*omega(k)^2; % omega(k) is in radians
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%---------------------------------------------------------------------------------
%determination of the points and the natural frequencies where det crosses the "0
%line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1 %
130
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % omega_0 is in radians , omega_n is in RPM
omega_new = 100; % omega_new is in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
% determination of odd or even mode shapes
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%----------------------------------------------
% initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%-----------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0;
% if real part of natural frequency is negative value make it zero
end % end of if loop omega
%-------------------------------------------
for j = 1:n-1,
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
131
%
G_n=[1, 0, 0, -m_n(j+1)*omega_0^2 ;
% omega_0 is in radians
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(3,3), F(3,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%---------------------------------------------------------
if (abs(det_bc)<100 | abs(omega_old-omega_new)<1e-10), % if loop 1
omega_n(count) = omega_0*30/pi; % omega_0 is in radians, omega_n is in RPM
%
%--------------------------------
if abs(omega_old-omega_new)<1e-10, % if loop 1-a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1-a'
%-------------------------------
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
else % else for if loop 1
%-------------------------------
if flag_1 == 1, % if loop 1-b
if det_bc > 0, % if loop 1-b-i
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in radians
else % else for if loop 1-b-i
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in radians
end; % end of 'loop if 1-b-i'
132
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
elseif flag_1 == 2, % elseif for if loop 1-b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0,
% if loop 1-b-ii
if det_bc > 0, % if loop 1-b-ii-a
omega_new = omega_0 - (200*pi/30)*slope;
% omega_new is in radians
else % else for if loop 1-b-ii-a
omega_new = omega_0 + (200*pi/30)*slope;
% omega_new is in radians
end; % end of 'if loop 1-b-ii-a
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
else % else for if loop 1-b-ii
omega_0 = (omega_new + omega_old)/2;
% omega_old,new and 0 are in radians
det_bcnew = det_bc;
flag_1 = 0;
end % end of 'if loop 1-b-ii'
else % else for if loop 1-b
if ((det_bc>0 & det_bcnew > 0) | (det_bc<0 & det_bcnew < 0)),
% if loop 1-b-iii
omega_new = omega_0;
det_bcnew = det_bc;
elseif ((det_bc < 0 & det_bcnew > 0) | (det_bc > 0 & det_bcnew < 0)),
% elseif for if loop 1-b-ii
omega_old = omega_0;
det_bcold = det_bc;
end; % end of 'if loop 1-b-ii'
omega_0 = (omega_new + omega_old)/2;
end; % end of 'if loop 1-b'
%---------------------------------------
end; % end of 'if loop 1'
%-------------------------------------------------------------------------------
133
end; % end of 'while loop'
%
theta_n(count) = -B_c(2,2) / B_c(2,1);
end % end of loop for count
% ***********************************************************************************
%
for m= 1 : count % for loop count
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
F = eye(4);
for j = 1:n-1, % for loop j
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_n(m)*pi/30)^2;
0, 1, 0, -T_n(j);
0, 0, 1, 0;
0, 0, l_sn, 1];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
X_n(:,j+1) = F * X_tip;
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% get the total deflection at each radial station
deflection(m,:)=X_n(4,:);
plot ( r_n, 2*deflection(m,:), '-');
grid on
title ( ' Flatwise Mode Shapes at Operational Rotational Velocity for Uniform
Blade' );
xlabel ( ' Blade Station (inc)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
134
end % end of for loop count
hold off
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency to Rotational Speed is: ')
disp(omega_n/R_V)
%
omega_rate = omega_n/R_V;
%
% end of program Hingeless Uniform Flatwise
135
n = length(r_n);
%
m_n = Weight_n/(32.174*12);
%
R_V1= R_V * pi/30; % R_V1 is in radians
T_n(1) = 0; % the unit is radians
%
for i = 1 : n-1,
T_n(i+1)=T_n(i) + m_n(i+1) * r_n(i+1) * R_V1^2;
EI = E_n * I_x(j);
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
136
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%--------------------------------------------------------------------------
%determination of the points and the natural frequencies where det crosses the "0
%line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1
%
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % omega_0 is in radians , omega_n is in RPM
137
omega_new = 100; % omega_new is in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
% determination of odd or even mode shapes
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%----------------------------------------------
% initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%-----------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0;
% if real part of natural frequency is negative value make it zero
end % end of if loop omega
%-------------------------------------------
for j = 1:n-1,
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_0^2 + R_V1^2) ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
138
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(3,3), F(3,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%---------------------------------------------------------
if (abs(det_bc)<100 | abs(omega_old-omega_new)<1e-10), % if loop 1
omega_n(count) = omega_0*30/pi; omega_0 is in radians, omega_n is in RPM %
%--------------------------------
if abs(omega_old-omega_new)<1e-10, % if loop 1-a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1-a'
%-------------------------------
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
else % else for if loop 1
%-------------------------------
if flag_1 == 1, % if loop 1-b
if det_bc > 0, % if loop 1-b-i
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in radians
else % else for if loop 1-b-i
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in radians
end; % end of 'loop if 1-b-i'
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
elseif flag_1 == 2, % elseif for if loop 1-b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0,
% if loop 1-b-ii
if det_bc > 0, % if loop 1-b-ii-a
139
omega_new = omega_0 - (200*pi/30)*slope;
% omega_new is in radians
else % else for if loop 1-b-ii-a
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in
radians
end; % end of 'if loop 1-b-ii-a
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
else % else for if loop 1-b-ii
omega_0 = (omega_new + omega_old)/2; % omega_old,new and 0 are in
radians
det_bcnew = det_bc;
flag_1 = 0;
end % end of 'if loop 1-b-ii'
else % else for if loop 1-b
if ((det_bc>0 & det_bcnew > 0) | (det_bc<0 & det_bcnew < 0)), % if
loop 1-b-iii
omega_new = omega_0;
det_bcnew = det_bc;
elseif ((det_bc < 0 & det_bcnew > 0) | (det_bc > 0 & det_bcnew < 0)), %
elseif for if loop 1-b-ii
omega_old = omega_0;
det_bcold = det_bc;
end; % end of 'if loop 1-b-ii'
omega_0 = (omega_new + omega_old)/2;
end; % end of 'if loop 1-b'
%---------------------------------------
end; % end of 'if loop 1'
%--------------------------------------------------------------------
end; % end of 'while loop'
%
theta_n(count) = -B_c(2,2) / B_c(2,1);
end % end of loop for count
% *******************************************************************************
%
for m= 1 : count % for loop count
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
F = eye(4);
140
for j = 1:n-1, % for loop j
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*((omega_n(m)*pi/30)^2 + R_V1^2);
0, 1, 0, -T_n(j);
0, 0, 1, 0;
0, 0, l_sn, 1];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
X_n(:,j+1) = F * X_tip;
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% get the total deflection at each radial station
deflection(m,:)=X_n(4,:);
plot ( r_n, 2*deflection(m,:), '-');
grid on;
title ( ' Chordwise Mode Shapes at Operational Rotational Velocity for Uniform
Blade' );
xlabel ( ' Blade Station (inc)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
%
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency to Rotational Speed is: ')
disp(omega_n/R_V)
omega_rate = omega_n/R_V;
%
% end of function "HINGELESS_UNIFORM_EDGEWISE"
141
7. Hinged Nonuniform Flatwise Function
function [omega_n,omega_rate,cent_force,varargout] = hingeless_uniform_edgewise(E_n,
modeshp, R_V, e, R, weight,I_xx)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This function if for the uniform hingeless blades %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
segment = R/50;
segment_W = weight/50;
z = 1;
r_n(1) = R;
r_n(51) = 0;
I_x(51) = 0.0001;
Weight_n(51)= 0.0001;
I_x(1) = I_xx;
Weight_n(1) = segment_W;
%
n = length(r_n);
%
m_n = Weight_n/(32.174*12);
%
R_V1= R_V * pi/30; % R_V1 is in radians
T_n(1) = 0; % the unit is radians
%
for i = 1 : n-1,
T_n(i+1)=T_n(i) + m_n(i+1) * r_n(i+1) * R_V1^2;
142
%
cent_force = T_n(n);
disp( ' Centrifugal Force : ' )
disp(T_n(n))
%
%*******************************************************************************
k = 1;
i = 1;
for omega1 = 0 :modeshp^2:2.1*modeshp^2*200, % omega1 is in RPM
omega(k) = omega1*2*pi/60; % omega(k) is in radians
F = eye(4);
%--------------------------------------------------------------------
for j = 1:n-1,
l_sn = r_n(j) - r_n(j+1);
EI = E_n * I_x(j);
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%--------------------------------------------------------------------------
143
%determination of the points and the natural frequencies where det crosses the "0
%line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1
%
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % omega_0 is in radians , omega_n is in RPM
omega_new = 100; % omega_new is in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
% determination of odd or even mode shapes
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
144
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%----------------------------------------------
% initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%-----------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0;
% if real part of natural frequency is negative value make it zero
end % end of if loop omega
%-------------------------------------------
for j = 1:n-1,
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_0^2 + R_V1^2) ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(3,3), F(3,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%---------------------------------------------------------
145
if (abs(det_bc)<100 | abs(omega_old-omega_new)<1e-10), % if loop 1
omega_n(count) = omega_0*30/pi; omega_0 is in radians, omega_n is in RPM %
%--------------------------------
if abs(omega_old-omega_new)<1e-10, % if loop 1-a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1-a'
%-------------------------------
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
else % else for if loop 1
%-------------------------------
if flag_1 == 1, % if loop 1-b
if det_bc > 0, % if loop 1-b-i
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in radians
else % else for if loop 1-b-i
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in radians
end; % end of 'loop if 1-b-i'
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
elseif flag_1 == 2, % elseif for if loop 1-b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0,
% if loop 1-b-ii
if det_bc > 0, % if loop 1-b-ii-a
omega_new = omega_0 - (200*pi/30)*slope;
% omega_new is in radians
else % else for if loop 1-b-ii-a
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in
radians
end; % end of 'if loop 1-b-ii-a
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
else % else for if loop 1-b-ii
146
omega_0 = (omega_new + omega_old)/2; % omega_old,new and 0 are in
radians
det_bcnew = det_bc;
flag_1 = 0;
end % end of 'if loop 1-b-ii'
else % else for if loop 1-b
if ((det_bc>0 & det_bcnew > 0) | (det_bc<0 & det_bcnew < 0)), % if
loop 1-b-iii
omega_new = omega_0;
det_bcnew = det_bc;
elseif ((det_bc < 0 & det_bcnew > 0) | (det_bc > 0 & det_bcnew < 0)), %
elseif for if loop 1-b-ii
omega_old = omega_0;
det_bcold = det_bc;
end; % end of 'if loop 1-b-ii'
omega_0 = (omega_new + omega_old)/2;
end; % end of 'if loop 1-b'
%---------------------------------------
end; % end of 'if loop 1'
%--------------------------------------------------------------------
end; % end of 'while loop'
%
theta_n(count) = -B_c(2,2) / B_c(2,1);
end % end of loop for count
% *******************************************************************************
%
for m= 1 : count % for loop count
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
F = eye(4);
for j = 1:n-1, % for loop j
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*((omega_n(m)*pi/30)^2 + R_V1^2);
0, 1, 0, -T_n(j);
0, 0, 1, 0;
0, 0, l_sn, 1];
147
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
X_n(:,j+1) = F * X_tip;
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% get the total deflection at each radial station
deflection(m,:)=X_n(4,:);
plot ( r_n, 2*deflection(m,:), '-');
grid on;
title ( ' Chordwise Mode Shapes at Operational Rotational Velocity for Uniform
Blade' );
xlabel ( ' Blade Station (inc)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
%
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency to Rotational Speed is: ')
disp(omega_n/R_V)
omega_rate = omega_n/R_V;
%
% end of function "HINGELESS_UNIFORM_EDGEWISE"
148
%
W_n = weight;
%
m_n = W_n/(32.174*12);
%
n = length(R_n);
%
I_yy = I_xx;
%
if R_n(n) < e
R_n(n) = e;
end
R_n(n) = e;
%
%=======================================================================================
%
omega = 0;
det_Bc = 0;
%
R_V1 = R_V * pi/30; % radians (R_V1)
%
%======================================================================================
% Calculation of "Centrifugal Force" at the root:
%--------------------------------------------------------------------------------------
T_n(1) = m_n(1) * R_n(1) * R_V1^2; % (T_n) and radians (R_V1)
%
% T_n(1) is is the "Centrifugal Force at the TIP"
%
for i = 1 : n-1,
T_n(i+1)=T_n(i) + m_n(i+1) * R_n(i+1) * R_V1^2;
end; % end of loop for i--> { T_n(i) }
%
cent_force = T_n(n);
disp( ' Centrifugal Force : ' )
disp(T_n(n))
% Displays "Centrifugal Force at r "
%
%======================================================================================
k = 1;
i = 1;
149
%
for omega_1 = 0 : modeshp^2*R_V/500 : 2.1*modeshp^2*R_V,
% RPM (omega_1)
omega(k) = omega_1*2*pi/60; % radians (omega(k))
F = eye(4);
%-----------------------------------------------------------------------------------
for j = 1:n-1,
% determine length of the segments;
l_sn = R_n(j) - R_n(j+1);
%
% detemine the stiffness
EI = E_n * I_yy(j);
%
G_n = [ 1, 0, 0, -m_n(j+1)*(omega(k)^2 + R_V1^2);
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
A_n = [ 1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loop for j --> { A_n, G_n, F_n )
%
%--------------------------------------------------------------------------
B_c = [ F(2,3),F(2,4) ; F(4,3),F(4,4)];
det_bc(k) = det(B_c);
%
%-----------------------------------------------------------------------
%determination of the points and the natural frequencies where det crosses the "0
%line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
150
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1
%
%=============================================================================
%
% Sorting and Displaying the "Natural Frequencies"
%
% Sort and convert the unit of natural frequency to 'cpm'
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end; % end of loop for (m)
%
%============================================================================
%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % radians (omega_0) ,RPM (omega_n)
%
omega_new = 100; % omega_new i in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
%----------------------------------------------------------------------
% Determination of odd or even mode shapes
%
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
151
end % end of 'if loop R'
%
%---------------------------------------------------------------------------
% Initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
%------------------------------------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0; % if natural frequency is negative, make it
zero
end % end of if loop omega
%
for j = 1:n-1,
%
l_sn = R_n(j) - R_n(j+1);
%
EI = E_n * I_yy(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_0^2 + R_V1^2) ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(2,3), F(2,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
152
%------------------------------------------------------------------------------
%
if (abs(det_bc)<1000 | abs(omega_old-omega_new)<1e-10),
% if loop 1
omega_n(count) = omega_0*30/pi; % radians (omega_0), RPM (omega_n)
%
if abs(omega_old-omega_new)<1e-10, % if loop 1.a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1.a'
%
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
else % else for if loop 1
%
if flag_1 == 1, % if loop 1.b
if det_bc > 0, % if loop 1.b.i
omega_new = omega_0 - (200*pi/30)*slope; % radians(omega_new)
else % else for if loop 1.b.i
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'loop if 1.b.i'
%
% Rearrange the values
%
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
%
elseif flag_1 == 2, % elseif for if loop 1.b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0,
% if loop 1.b.ii
if det_bc > 0, % if loop 1.b.ii.a
omega_new = omega_0 - (200*pi/30)*slope;
else % else for if loop 1.b.ii.a
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'if loop 1.b.ii.a
153
%
% Rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
154
for j = 1:n-1, % for loop 'j'
%
l_sn = R_n(j) - R_n(j+1);
%
EI = E_n * I_yy(j);
%
G_n =[ 1, 0, 0, -m_n(j+1)*((omega_n(m)*pi/30)^2 + R_V1^2);
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n =[ 1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j) ;
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
%
X_n(:,j+1) = F * X_tip;
%
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% Get the total deflection at each radial station
%
deflection(m,:)=X_n(4,:);
plot ( R_n, X_n(4,:), '-')
155
disp('The ratio of the Natural Frequency/Rotational Speed is: ')
disp(omega_n/R_V)
omega_rate = omega_n/R_V;
%
% end of program HINGED_NONUNIFORM_EDGEWISE
156
% Calculation of "Centrifugal Force" at the root:
%--------------------------------------------------------------------------------------
T_n(1) = m_n(1) * R_n(1) * R_V1^2; % ....... (T_n) and radians (R_V1)
%
% T_n(1) is is the "Centrifugal Force at the TIP"
%
for i = 1 : n-1,
T_n(i+1)=T_n(i) + m_n(i+1) * R_n(i+1) * R_V1^2;
end; % end of loop for i--> { T_n(i) }
%
cent_force = T_n(n);
disp( ' Centrifugal Force : ' )
disp(T_n(n))
% Displays "Centrifugal Force at the root"
%
%======================================================================================
k = 1;
i = 1;
%
for omega_1 = 0 : modeshp^2*R_V/200 : 2.1*modeshp^2*R_V,
% RPM (omega_1)
omega(k) = omega_1*2*pi/60; % radians (omega(k))
F = eye(4);
%-----------------------------------------------------------------------------------
for j = 1:n-1,
% determine the length of the segments
l_sn = R_n(j) - R_n(j+1);
%
% determine the stiffness
EI = E_n * I_xx(j);
%
G_n=[1, 0, 0, -m_n(j+1)*omega(k)^2; % omega(k) is in radians
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
157
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%-------------------------------------------------------------------------
B_c = [ F(3,3),F(3,4) ; F(4,3),F(4,4)];
det_bc(k) = det(B_c);
%
%---------------------------------------------------------------------------
% determination of the points and the natural frequencies where det. crosses the "0
%line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else % elseif loop (1)
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
%
k = k+1;
end; % end of loop for omega_1
%
%==========================================================================
%
% Sorting and Displaying the "Natural Frequencies"
%
% Sort and convert the unit of Natural Frequency to 'cpm'
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end; % end of loop for (m)
%
%============================================================================
%
158
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % radians (omega_0) ,RPM (omega_n)
%
omega_new = 100; % omega_new i in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
%-------------------------------------------------------------------------
% Determination of odd or even mode shapes
%
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%
%--------------------------------------------------------------------------
% Initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
%-----------------------------------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0; % if natural frequency is negative, make it
zero
end % end of if loop omega
%
%---------------------------------------------------------------------
for j = 1:n-1,
%
l_sn = R_n(j) - R_n(j+1);
%
159
EI = E_n * I_xx(j);
%
G_n=[1, 0, 0, -m_n(j+1)*omega_0^2 ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(3,3), F(3,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%---------------------------------------------------------------------------
%------------------------------------------------------------------------------------
%
if (abs(det_bc)<10000 | abs(omega_old-omega_new)<1e-10),
% if loop 1
omega_n(count) = omega_0*30/pi; % radians (omega_0), RPM (omega_n)
%
if abs(omega_old-omega_new)<1e-10, % if loop 1.a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1.a'
%
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%
else % else for if loop 1
%
if flag_1 == 1, % if loop 1.b
if det_bc > 0, % if loop 1.b.i
omega_new = omega_0 - (200*pi/30)*slope; % radians(omega_new)
160
else % else for if loop 1.b.i
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'loop if 1.b.i'
%
% Rearrange the values
%
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
%
elseif flag_1 == 2, % elseif for if loop 1.b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0, % if loop
1.b.ii
if det_bc > 0, % if loop 1.b.ii.a
omega_new = omega_0 - (200*pi/30)*slope;
else % else for if loop 1.b.ii.a
omega_new = omega_0 + (200*pi/30)*slope;
end; % end of 'if loop 1.b.ii.a
%
% Rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
162
%
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% Get the total deflection at each radial station
%
deflection(m,:)=X_n(4,:);
plot ( R_n , 2*X_n(4,:), '-')
grid on;
title ( ' Flatwise Mode Shapes Of Hingeless(Rigid) Rotor Blade for Nonuniform
Blade' );
xlabel ( ' Blade Station ' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
hold off
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency/Rotational Speed is: ')
disp(omega_n/R_V)
%
omega_rate = omega_n/R_V;
%
% end of function "HINGELESS_NONUNIFORM_FLATWISE"
163
Weight_n(1) = segment_W;
%
n = length(r_n);
%
m_n = Weight_n/(32.174*12);
%
R_V1= R_V * pi/30; % R_V1 is in radians
T_n(1) = 0; % the unit is radians
%
for i = 1 : n-1,
T_n(i+1)=T_n(i) + m_n(i+1) * r_n(i+1) * R_V1^2;
164
EI = E_n * I_x(j);
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%-------------------------------------------------------------------------
%determination of the points and the natural frequencies where det crosses the "0
%line"
%
if det_bc(k) < 0.0001 & det_bc(k) > -0.0001 % elseif loop (1)
omega_natural(i) = omega(k);
i = i+1;
else
if k >1, % if loop (1.a)
s = k-1;
if det_bc(k) * det_bc(:,s) < 0 % if loop (1.b)
omega_natural(i) = (omega(k) + omega(:,s))/2;
i = i +1;
end; % end of if (1.b)
end; % end of if (1.a)
end; % end of elseif (1)
165
%
k = k+1;
end; % end of loop for omega_1
%
for m = 1:modeshp,
omega_n(m) = omega_natural(m)*30/pi;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for count = 1 : modeshp
omega_0 = real(omega_n(count)*pi/30); % omega_0 is in radians , omega_n is in RPM
omega_new = 100; % omega_new is in RPM
omega_old = -100; % omega_old is in RPM
flg_slope = 1;
%
% determination of odd or even mode shapes
R = rem(count,2);
if R ==1
slope = 1;
elseif R == 0;
slope = -1;
else
display('This is an incorrect mode shape input!')
end % end of 'if loop R'
%----------------------------------------------
% initial values
flag = 1;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
%-----------------------------------------------
%
while flag == 1,
F = eye(4);
if omega_0 < 0,
omega_0 = 0;
% if real part of natural frequency is negative value make it zero
end % end of if loop omega
166
%-------------------------------------------
for j = 1:n-1,
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*(omega_0^2 + R_V1^2) ;
0, 1, 0, -T_n(j) ;
0, 0, 1, 0 ;
0, 0, l_sn, 1 ];
%
A_n=[1, 0, 0, 0 ;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0 ;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1 ];
%
F_n = inv(G_n)*A_n;
F = F_n * F;
end; % end of loo for j --> { l_sn, EI, A_n, G_n, F_n)
%
B_c = [ F(3,3), F(3,4) ; F(4,3), F(4,4) ];
det_bc = det(B_c);
%---------------------------------------------------------
if (abs(det_bc)<100 | abs(omega_old-omega_new)<1e-10), % if loop 1
omega_n(count) = omega_0*30/pi; % omega_0 is in radians, omega_n is in RPM
%
%--------------------------------
if abs(omega_old-omega_new)<1e-10, % if loop 1-a
disp('Warning!! This value of omega may be in error.')
end % end of 'if loop 1-a'
%-------------------------------
% change the initial values
flag = 0;
flag_1 = 1;
det_bcold = 0;
det_bcnew = 0;
else % else for if loop 1
%-------------------------------
if flag_1 == 1, % if loop 1-b
167
if det_bc > 0, % if loop 1-b-i
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in radians
else % else for if loop 1-b-i
omega_new = omega_0 + (200*pi/30)*slope; % omega_new is in radians
end; % end of 'loop if 1-b-i'
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
flag_1 = 2;
elseif flag_1 == 2, % elseif for if loop 1-b
if abs(det_bcold + det_bc) > abs(det_bc) & det_bcnew == 0,
% if loop 1-b-ii
if det_bc > 0, % if loop 1-b-ii-a
omega_new = omega_0 - (200*pi/30)*slope; % omega_new is in
radians
else % else for if loop 1-b-ii-a
omega_new = omega_0 + (200*pi/30)*slope;
% omega_new is in radians
end; % end of 'if loop 1-b-ii-a
% rearrange the values
omega_old = omega_0;
omega_0 = omega_new;
det_bcold = det_bc;
else % else for if loop 1-b-ii
omega_0 = (omega_new + omega_old)/2; % omega_old,new and 0 are in
radians
det_bcnew = det_bc;
flag_1 = 0;
end % end of 'if loop 1-b-ii'
else % else for if loop 1-b
if ((det_bc>0 & det_bcnew > 0) | (det_bc<0 & det_bcnew < 0)),
% if loop 1-b-iii
omega_new = omega_0;
det_bcnew = det_bc;
elseif ((det_bc < 0 & det_bcnew > 0) | (det_bc > 0 & det_bcnew < 0)), %
elseif for if loop 1-b-ii
omega_old = omega_0;
det_bcold = det_bc;
end; % end of 'if loop 1-b-ii'
omega_0 = (omega_new + omega_old)/2;
168
end; % end of 'if loop 1-b'
%---------------------------------------
end; % end of 'if loop 1'
%-------------------------------------------------------------------------------
end; % end of 'while loop'
%
theta_n(count) = -B_c(2,2) / B_c(2,1);
end % end of loop for count
% **********************************************************************************
%
for m= 1 : count % for loop count
X_tip = [0 ; 0 ; theta_n(m) ; 1 ];
X_n(:,1) = X_tip;
F = eye(4);
for j = 1:n-1, % for loop j
%
l_sn = r_n(j) - r_n(j+1);
%
EI = E_n * I_x(j);
%
G_n=[1, 0, 0, -m_n(j+1)*((omega_n(m)*pi/30)^2 + R_V1^2);
0, 1, 0, -T_n(j);
0, 0, 1, 0;
0, 0, l_sn, 1];
A_n=[1, 0, 0, 0;
l_sn, 1, 0, -T_n(j);
-(l_sn^2)/(2*EI), -l_sn/EI, 1+(T_n(j)*l_sn^2)/(2*EI), 0;
-(l_sn^3)/(3*EI), -(l_sn^2)/(2*EI), (T_n(j)*l_sn^3)/(3*EI), 1];
F_n = inv(G_n)*A_n;
F = F_n * F;
X_n(:,j+1) = F * X_tip;
end; % end of loop for j --> { l_sn, EI, A_n, G_n, F_n)
%
% get the total deflection at each radial station
deflection(m,:)=X_n(4,:);
plot ( r_n, 2*deflection(m,:), '-');
grid on;
169
title ( ' Chordwise Mode Shapes at Operational Rotational Velocity for Uniform
Blade' );
xlabel ( ' Blade Station (inc)' ) ;
ylabel ( ' Relative Deflection ' ) ;
hold on
end % end of for loop count
%
disp('The Natural Frequencies are(cpm): ')
disp(omega_n)
%
disp('The ratio of the Natural Frequency to Rotational Speed is: ')
disp(omega_n/R_V)
omega_rate = omega_n/R_V;
%
% end of function "HINGELESS_NONUNIFORM_EDGEWISE"
170
APPENDIX B. TABLES OF CHARACTERISTIC FUNCTIONS
REPRESENTING NORMAL MODES OF VIBRATION OF A BEAM
The tables in [Ref. 18] give the values of the characteristic function and its first
three derivatives for each of the first five modes (n = 1, 2, 3, 4,5), of three different types
of beams. We use only two types of them:
1. Clamped-free Beam
2. Clamped-supported Beam
The functions are tabulated to five decimal places at intervals of the argument
corresponding to 1/50 of the beam length, that is, 0.02 l.
It may be shown that the characteristic function for a free-supported beam is the
same as the second derivative of the characteristic function for a clamped-supported
beam. Also the characteristic function for a clamped-free beam is the same as second
derivative of the characteristic function for a clamped-clamped beam.[Ref. 18]
-0.23500,-0.35923,-0.47775,-0.59009,-0.69582,
-0.79450,-0.88574,-0.96918,-1.04447,-1.11133,
-1.16950,-1.21875,-1.25894,-1.28992,-1.31162,
-1.32402,-1.32714,-1.32106,-1.30588,-1.28180,
-1.24904,-1.20786,-1.15858,-1.10157,-1.03725,
171
-0.96606,-0.88849,-0.80507,-0.71636,-0.62295,
-0.52547,-0.42455,-0.32086,-0.21507,-0.10789,0
b. Second Mode
-0.58802,-0.77300,-0.93412,-1.06927,-1.17673,
-1.25518,-1.30380,-1.32224,-1.31068,-1.26983,
-1.20092,-1.10569,-0.98634,-0.84553,-0.68631,
c. Third Mode
0.03009,-0.30845,-0.60968,-0.86560,-1.06927,
-1.21523,-1.29988,-1.32158,-1.28137,-1.18195,
-1.02863,-0.82967,-0.59110,-0.32637,-0.04596,
-0.11017,-0.39391,-0.66123,-0.90103,-1.10335,
-1.25980,-1.36386,-1.41124,-1.39996,-1.33049,
172
-1.20573,-1.03085,-0.81313,-0.56162,-0.28677,0
173
-0.60211, -0.51002, -0.42070, -0.33573, -0.25670,
174
APPENDIX C. VALIDATION OF THE RESULTS OF THE
GENERATED MATLAB CODE
0.5
-0.5
-1
-1.5
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0 0.30800000000000 0.48076923076923
0 0.30858097836836 0.48043136538462
0 0.30683909929673 0.47692866436996
0 -0.55644803775140 -0.72907417521673
175
2. 20 Stations
0.5
-0.5
-1
-1.5
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0 0.30800000000000 0.48076923076923
0 0.30858097836836 0.48043136538462
0 0.30815824117762 0.47864743924780
0 -0.13699392392129 -0.37131758360296
176
3. 30 Stations
0.5
-0.5
-1
-1.5
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0 0.30800000000000 0.48076923076923
0 0.30858097836836 0.48043136538462
0 0.30839579357132 0.47900464866249
0 -0.06001173436615 -0.29696577386870
177
4. 40 Stations
0.5
-0.5
-1
-1.5
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0 0.30800000000000 0.48076923076923
0 0.30858097836836 0.48043136538462
0 0.30847776443562 0.47912997196652
0 -0.03344792452286 -0.27088019472901
178
5. 50 Stations
0.5
-0.5
-1
-1.5
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0 0.30800000000000 0.48076923076923
0 0.30858097836836 0.48043136538462
0 0.30851518704613 0.47918781348356
0 -0.02132060199573 -0.25884069830882
179
6. 100 Stations
0.5
-0.5
-1
-1.5
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0 0.30800000000000 0.48076923076923
0 0.30858097836836 0.48043136538462
0 0.30856485104816 0.47926451848594
0 -0.00522628461558 -0.24287483764511
180
7. 200 Stations
0.5
-0.5
-1
-1.5
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0 0.30800000000000 0.48076923076923
0 0.30858097836836 0.48043136538462
0 0.30857690987193 0.47928353213819
0 -0.00131845340836 -0.23891721671936
181
B. VALIDATION OF HINGELESS NONROTATING UNIFORM BLADE
1. 10 Staions
1.5
1
Relative Deflection
0.5
-0.5
-1 1st
2nd
3rd
-1.5 Young 3rd
Young 2nd
Young 1st
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0.16000000000000 0.35656401944895
0.15952332370540 0.35713917325343
0.14893617021277 0.35338345864662
-6.63674329666294 -1.05161093715956
182
2. 20 Stations
1.5
1
Relative Deflection
0.5
-0.5
1st
-1
2nd
3rd
-1.5 Young 3rd
Young 2nd
Young 1st
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0.16000000000000 0.35656401944895
0.15952332370540 0.35713917325343
0.15555555555556 0.36600000000000
-2.48726522095906 2.45007975167658
183
3. 30 Stations
1.5
1
Relative Deflection
0.5
-0.5
-1 1st
2nd
3rd
-1.5 Young 3rd
Young 2nd
Young 1st
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0.16000000000000 0.35656401944895
0.15952332370540 0.35713917325343
0.15555555555556 0.36585365853659
-2.48726522095906 2.44008104845181
184
4. 40 Stations
1.5
1
Relative Deflection
0.5
-0.5
-1 1st
2nd
3rd
-1.5 Young 3rd
Young 2nd
Young 1st
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0.16000000000000 0.35656401944895
0.15952332370540 0.35713917325343
0.16279069767442 0.34959349593496
2.04821081527540 -2.11281144259047
185
5. 50 Stations
1.5
1
Relative Deflection
0.5
-0.5
-1 1st
2nd
3rd
-1.5 Young 3rd
Young 2nd
Young 1st
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0.16000000000000 0.35656401944895
0.15952332370540 0.35713917325343
0.16279069767442 0.35537190082645
2.04821081527540 -0.49484138379032
186
6. 100 Stations
1.5
1
Relative Deflection
0.5
-0.5
-1 1st
2nd
3rd
-1.5 Young 3rd
Young 2nd
Young 1st
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0.16000000000000 0.35656401944895
0.15952332370540 0.35713917325343
0.16279069767442 0.35537190082645
2.04821081527540 -0.49484138379032
187
7. 200 Stations
1.5
1
Relative Deflection
0.5
-0.5
1st
-1
2nd
3rd
-1.5 Young 3rd
Young 2nd
Young 1st
-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Blade Station
Centrifugal Force : 0
0.16000000000000 0.35656401944895
0.15952332370540 0.35713917325343
0.16279069767442 0.36134453781513
2.04821081527540 1.17751422320480
188
C. RESULTS FOR H-3 HELICOPTER FOR ANALYSIS OF ROTATING
NONUNIFORM HINGED BLADES
1. Flatwise Mode Shapes
0.9
0.8
0.7
Relative Deflection
0.6
0.5
0.4
0.3
0.2
0.1
0
0 50 100 150 200 250 300 350 400
Blade Station (inches)
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
189
Flatwise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
190
Flatwise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
Centrifugal Force is :
4.515809216498805e+004
191
2. Edgewise Mode Shapes
0.9
0.8
0.7
Relative Deflection
0.6
0.5
0.4
0.3
0.2
0.1
0
0 50 100 150 200 250 300 350 400
Blade Station (inches)
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
192
Edgewise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
193
Edgewise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inches)
Centrifugal Force :
4.515809216498805e+004
64.46092529297
713.63865966797
1828.18133850098
3443.59081058502
5693.24688033461
0.31754150390625
3.51546137767472
9.00581940148264
16.96350152997548
28.04555113465327
194
D. RESULTS FOR H-3R HELICOPTER FOR ANALYSIS OF ROTATING
NONUNIFORM HINGELESS BLADES
1. Flatwise Mode Shapes
0.9
0.8
0.7
Relative Deflection
0.6
0.5
0.4
0.3
0.2
0.1
0
0 50 100 150 200 250 300 350 400
Blade Station (inc)
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inc)
195
Flatwise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inc)
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inc)
196
Flatwise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
Relative Deflection
0.4
0.2
-0.2
-0.4
-0.6
0 50 100 150 200 250 300 350 400
Blade Station (inc)
Centrifugal Force :
4.515809216498805e+004
228.37500000000
583.62500000000
1070.82500000000
1629.07500000000
2298.97500000000
1.12500000000000
2.87500000000000
5.27500000000000
8.02500000000000
11.32500000000000
197
2. Edgewise Mode Shapes
0.9
0.8
0.7
Relative Deflection
0.6
0.5
0.4
0.3
0.2
0.1
0
0 50 100 150 200 250 300 350 400
Blade Station (inc)
0.8
0.6
0.4
Relative Deflection
0.2
-0.2
-0.4
-0.6
-0.8
0 50 100 150 200 250 300 350 400
Blade Station (inc)
198
Edgewise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
0.4
Relative Deflection
0.2
-0.2
-0.4
-0.6
-0.8
0 50 100 150 200 250 300 350 400
Blade Station (inc)
0.8
0.6
0.4
Relative Deflection
0.2
-0.2
-0.4
-0.6
-0.8
0 50 100 150 200 250 300 350 400
Blade Station (inc)
199
Edgewise Mode Shapes at Operational Rotational Velocity
1
0.8
0.6
0.4
Relative Deflection
0.2
-0.2
-0.4
-0.6
-0.8
0 50 100 150 200 250 300 350 400
Blade Station (inc)
Centrifugal Force :
4.515809216498805e+004
147.17500000000
847.52500000000
2055.37500000000
3598.17500000000
5506.37500000000
0.72500000000000
4.17500000000000
10.12500000000000
17.72500000000000
27.12500000000000
200
APPENDIX D. BUILDING GUI AND INCORPORATING MATLAB
CODE INTO JANRAD
In this thesis GUI page is designed in a different approach that the input icons and
axis of the output plot and the results of natural frequencies and the centrifugal force are
displayed in one end page. The main reason of such a different approach is to give the
opportunity of seeing both the inputs and the results and the plots of the blade dynamics
in one window. The user window of the GUI is shown in figure below.
201
Graphical User Interface (GUI) of the Program
The Users Guide attached in APPENDIX.E gives details and features of the
generated program. For further detailed GUI developments in MATLAB refer to [Ref.
19] and [Ref. 20].
B. THE RESULTS IN GUI
To show the results in the GUI page, same data for H-3 (S-61) helicopter data is
utilized. The results of the application are depicted in figure below. As it can be
concluded from the figure the results and the plots of the GUI matches with original
generated program in Chapter III. This shows that the developed GUI program is working
properly.
202
Graphical User Interface (GUI) Plot for H-3 (S-61) Helicopter 'Flat wise
203
THIS PAGE INTENTIONALLY LEFT BLANK
204
APPENDIX E. USER GUIDE FOR GRAPHICAL USER INTERFACE
(GUI)
Input Parts
Output Parts
For better understanding refer to the figure above and go through the input and
output explanations.
1. Input Boxes
1. Aluminum
2. Composite
3. Titanium
4. Steel
1. 1.Mode shape
2. 2.Mode shape
3. 3.Mode shape
4. 4.Mode shape
5. 5 Mode shape
206
(For current version of the generated GUI program coupled is not
available.)
1. Flatwise
2. Edgewise
3. Coupled
v. Blade Form
You can select one of the 2 options.
Note that once you select Uniform blade you should use
corresponding values for uniform otherwise the program will not run and give error or
warning dialog boxes. It is the same for the nonuniform blade.
1. Uniform
2. Nonuniform
b. Edit Boxes
Write numerical data in the input edit boxes. Do not use any non-
numerical inputs; this will avoid the GUI to run, and you will see error statements in
MATLAB Command Window. If the design is about a Nonuniform Blade, then the
number of the stations should match in the input boxes for Radius, Weight and
Inertia.
i. Rotor RPM
Rotational Speed of the design helicopter in units of rpm.
Do not use 0 for rotational speed this will cause problems in
GUI.
ii. Hinge Offset
Hinge Offset (e) of the rotor blade in units of inches.
You can enter a non-zero value as long as you have picked
Hinged (Articulated) in the Blade Root popupmenu box. Otherwise you should enter 0
for Hingeless (Rigid).
207
iii. Radius (stations)
Radius input changes depending on the selection made in Blade
Form popupmenu box.
If you have selected Uniform: You should enter only one
numerical value, which should be the length of the blade in units of inches.
Use commas (,) in between the stations.
Example:
If the radius values of the blade are: {250, 240, 235, 230,,10}
Then enter the radius in the edit box as:
250,240,235,230, ..,10
v. I_xx (stations)
Inertia input procedure is the same as the radius procedure. Use the
unit of inch4
Example:
If the inertia values of each station are: { 1.2, 2, 2,5 ,4, ,1,5}
Then enter the inertia in the edit box as:
1.2, 2, 2.5, 5, 4, ,1.5
c. Push Button
i. OK
This pushbutton is used to run the program. Once you entered all
the inputs push on this button. After pushing this button GUI will automatically run all
the necessary programs, and give the plots and the results on the Main GUI Window.
208
ii. CANCEL
If you push on this it will cancel to run the program.
2. Output Boxes
a. Static Boxes
Note that the inputs entered, still stays in the GUI window after running
the program. Hence, you can see the input and output values at the same time.
i. Centrifugal Force
The box under this title gives the Centrifugal Force value of inputs
entered
ii. Omega_1.Omega_5 for side label cpm
The Natural Frequency values are depicted in these boxes on the
right side of the cpm label. Natural frequency values correspond the boxes under each
omega box.
iii. Omega_1..Omega_5 for the side label ratio
Ratio of Natural Frequencies to the Operational Speed is depicted
in these boxes on the right side of the ratio' label. Each ratio corresponds the boxes under
each omega box.
b. Axis
Mode shape plot is depicted in this box. You can see which plot is
depicted from both the inputs you have chosen and the title of the plot located in the axis
box.
From this window you can go to open files icon and open the finalthesis.fig
file where it is saved in your computer.
210
Once you open the finalthesis.fig file you will see the similar window as Main
GUI Window. But it is not exactly the same window. The window that you have opened
is gui layout editor window. Do not make any additions or changes on this window. It
may cause problems when you want to run the GUI.
Go to the on top of the window and click on it. This will open you the Main
GUI Window. Then enter the input values as described in previous section and run the
program.
2. Running with the m-file
Go to the open files part and open the finalthesis.mfile. This will bring you
another window, which has the main running m-file of the GUI. Do not make any
changes in this program page. This may cause problems while you are running the GUI
finalthesis.m file
Go to debug and run the program. This will open you the main GUI window.
Then enter the input values as described above and run the program
211
THIS PAGE INTENTIONALLY LEFT BLANK
212
LIST OF REFERENCES
6. Klein, G.D., Linear Modeling of Tiltrotor Aircraft (In Helicopter and Airplane
Modes) for Stability Analysis and Preliminary Design, Masters Thesis,
Monterey, California, June 1996.
213
9. Mcewen, M.D., Dynamic System Identification and Modeling of a Rotary Wing
UAV for Stability and Control Analysis, Masters Thesis, Monterey, California,
June 1998.
10. Heathorn, D.A., Stability and Control Module for Joint Army/Navy Rotorcraft
Analysis and Design (JANRAD) Software and Graphical User Interface (GUI),
Masters Thesis, Monterey, California, March 1999.
13. Scanlan, R. H. and Rosenbaum R., Introduction to the Study of Aircraft Vibration
and Flutter, p. 149, The Macmillan Company, 1951
14. Hartog, J.P.D., Mechanical Vibrations, pp. 185-433, Dover Publication, Inc.,
1985.
15. Bisplinghoff, R.L., Ashley, H., and Halfman, R.L., Aerolasticity, pp. 159-188,
Dover Publications, Inc., 1996.
18. Young, D., and Felgar, Jr.R.P., Tables of Characteristic Functions Representing
Normal Modes of Vibration of a Beam, The University of Texas Publication, v.
44, no. 4913, pp. 1-33, 1 July 1949.
19. Marchand, P., Graphics and GUIs with MATLAB, 2d ed., CRC Press, 1999.
214
INITIAL DISTRIBUTION LIST
215
14. 1 LT. Hakki Erdem Akin
Turkish Army
Ankara, Turkiye
216