Professional Documents
Culture Documents
Master Thesis
(MEK-FM-EP-2009-14)
OCTOBER 2009
Author:
Jos Miguel Simn Donaire
Master Student in Wind Energy, Mechanical
Advisors:
Martin O.L Hansen
Dep. Fluids Mechanics
Technical University of Denmark
ACKNOWLEDGMENTS
Many have contributed to the success of this Master Thesis. Firstly, I would like to thank Siemens Wind
Power A/S for giving me the opportunity to obtain the data for this thesis. Specially my supervisor at
Siemens WP, Anders Riis Srensen from the Loads, Aerodynamics and Control Department whose
guidance, support, and patience have helped me during the whole process.
Furthermore, I am very grateful to my supervisors at the Technical University of Denmark (DTU), Martin
O.L. Hansen from the department of Fluid Mechanics, and Jrgen J. Jensen from the department of
Coastal Engineering, for their useful guidance.
Finally, huge thanks to my friends and family; thanks for showing me your patience during the stressful
moments that you have suffered for me. Especially to my parents that have always been there for me
with their support.
Mange tak til alle!!
EXECUTIVE SUMMARY
The transport and installation (T&I) of offshore wind turbines (OWTs) play a crucial role in making
offshore wind farms (OWFs) economically more attractive; since there is two important factors that
highly influence the efficiency of OWF projects, i.e. weather conditions, and the required equipment for
T&I.
Nowadays, OWF projects are restrained to a few months per year where the weather conditions are more
appropriate; the current methods of T&I of OWTs require expensive specialized vessels that operate
under limited weather conditions.
The design of new ways of transport and installing WTs less sensitive to the weather conditions and that
require simple vessels has a profound interest from the companies.
Transporting WT completely assembled to the offshore site has been successfully done for the Beatrice
Wind Farm. This has aroused interest for other companies to further study this new way of T&I WTs.
Thus, a program is presented to perform sea transport analyses for the system barge-WTs. The waveinduced motions are calculated based on a series of closed-form expressions that simplified the problem
to a handful series of inputs. The aeroelastic response of the WT is also analyzed during a particular
sailing where the combination of waves and wind speed are considered. Longitudinal accelerations at the
nacelle or tower top are selected as limit for transport. Good results are found that enables further
investigations of the problem.
The barge stability is also checked for the cases of no submersion/immersion of the barge edges.
Furthermore, the program has been validated with different references; even though, some limitations in
the program are found, general reliable results are given.
ii
TABLE OF CONTENTS
Acknowledgments ........................................................................................................................ i
Executive Summary .................................................................................................................... ii
List of figures and tables............................................................................................................. v
Nomenclature............................................................................................................................ viii
1
Introduction ......................................................................................................................... 1
1.1
1.2
1.3
Objective ...................................................................................................................... 9
1.4
Background ........................................................................................................................ 12
2.1
2.2
Modeling............................................................................................................................. 24
3.1
3.2
3.3
3.4
3.4.1
3.4.2
3.4.3
3.4.4
iii
Table of Contents
5.2
6.2
Conclusions ................................................................................................................................ 62
Future Development.................................................................................................................. 63
References .................................................................................................................................. 64
A.
B.
C.
D.
E.
F.
iv
vi
TABLES
Table 5.1 Fore-aft tower top deflection mean values at the steady state. .................................... 49
vii
Nomenclature
NOMENCLATURE
Acronyms
AP
Aft Perpendicular
AR4
BEM
BWEA
CL
Center Line
COG
Center of Gravity
DOF
Degree of Freedom
EWEA
FRF
GHG
Greenhouse Gasses
IPCC
MPL
OWF
OWT
PSD
PVW
SB-PS
T&I
WT
Wind Turbine
viii
Displacement Volume
Weight
Heading angle
Phase angle
Roll
Pitch
Frequency of encounter
Wave Frequency
AL, AT, AV
B44
Hydrodynamic damping
BMt
B0
Breadth
C44
Cb
Block Coefficient
CWP
Nomenclature
CRS
Ship Height
Forcing function
Forcing function
GMt
Metacentric Height
GZ
Righting lever
Hs
KB
KG
Ship Length
Lpp
Excitation Moment
Number of points
Spectrum
Draft
Tn
Roll Period
Tz
UL, UT, UV
Forward Speed
VL, VT, VV
Wave amplitude
dt
time increment
Wave number
Heave
Weight
Angle of attack
Blade twist
Flow angle
Local Pitch
Blade Pitch
Air density
Standard deviation
Frequency
Damping Matrix
Cd
Drag coefficient
Cl
Lift coefficient
Cn
Normal coefficient
Ct
Tangential coefficient
xi
Nomenclature
Drag force
Fg
Force vector
Fn
Normal Force
Ft
Tangential Force
Height
Gravity
GC
GFg
GK
GM
& , and GX
&&
GX, GX
Stiffness matrix
Mass matrix
Number of points
Spectrum
SB
Stiff Body
Thrust
V(t)
Wind Fluctuations
V0
Vrel
Relative Velocity
Vr, V
VST
Structural Velocities
xii
Vy, Vz
& , and X
&&
X, X
Tower radius
Transformation matrices
aL, aT, aV
Chord length
dt
Time increment
Frequency
Gravity
Dimensionless frequency
u*
Friction velocity
u, u& ,
Blade mode shapes: first flap, first edge, and second flap.
ut1, ut2
x,y,z
Cartesian coordinates
xiii
Chapter 1 Introduction.
Chapter 1.
1 INTRODUCTION
In 2007, The Fourth Assessment Report (AR4) of the United Nations Intergovernmental Panel
on Climate Change (IPCC) assessed scientific, technical, and socio-economic information
concerning climate change. The report states that "changes in atmospheric concentrations of
greenhouse gases and aerosols, land cover and solar radiation alter the energy balance of the
climate system", and concluded that "increases in anthropogenic greenhouse gas concentrations
is very likely to have caused most of the increases in global average temperatures since the mid20th century (Ref. [14]).
The continuous increasing of the global energy demand is a reality. It is well-known that
conventional sources of energy are running out rapidly and they cannot cover this tremendous
demand. Renewable energies such as hydro, wind, solar, biomass, and biofuels have been under
an intensive development since 1970s; and nowadays, they have become efficient, reliable and
competitive sources of energy, supplemental to conventional sources. Renewable energies are
seen as one of the solutions that will help meeting, on the one hand, the increasing global energy
demand; and on the other hand, reducing the greenhouse gases emissions.
Offshore wind energy is an emerging industry, with enormous possibilities. This technology is
very recent. The first projects are dated in 1990s developed in Denmark, Sweden and the
Netherlands (Ref. [2]). Offshore wind energy is still under drastic development, and numerous
challenges related to different areas must be overcome. This Thesis is globally focused on the
improvement and development of one of these areas: the transport and installation of offshore
wind turbines.
Council agreed to fix a global target for EU, and this to be backed up with precise national
targets by the Member States. The deploying of renewable energy varies from one Member
State to another. Serving as examples, Denmark has proposed 30% target for share of energy
from renewable sources in gross final consumption of energy by 2020; Spain, 20% target; UK,
15% target; Germany, 18% target; and Sweden is leading with 49% target by 2020, among
others (Ref. [6]).
In Denmark, due to the average growth of 71% per year, Danish offshore wind capacity remains
the highest per capita in Europe with 400 MW installed in 2006 (European Commission, 2008.
Ref [7]). Offshore wind energy plays also a major role in the renewable energy plans for UK,
although not without discussion (House of Lords, 2008 Ref. [12]). The European Wind Energy
Association (EWEA) estimates scenarios between 20 GW and 40 GW of offshore wind energy
capacity in the European Union by 2020 (EWEA, 2007 Ref. [5]). EWEA affirms that
developing less than 5% of the North Sea surface area would enable offshore wind to supply
roughly one-quarter of the EUs current electricity needs (Ref. [5]).
A general idea concerning the status of offshore wind energy is given. The potential market for
offshore wind energy generation is patent. Appendix A describes the offshore wind farms
(OWFs) in operation, those under construction, and the proposed projects to provide a general
idea about the offshore wind market (Ref. [19] and [35]). Different discussions may arise when
approaching more numbers and facts, but it is considered out of the scope of this Thesis.
Offshore wind energy presents multiples advantages compared with onshore wind energy.
BWEA describes the main advantages related to offshore wind energy, giving comparisons with
onshore wind energy in a detailed report (Ref [2]). They state that offshore wind speeds are
generally higher than coastal wind speeds. Larger areas of the North and Baltic Sea with
average wind speeds above 8 m/s at 50 m height are found. Turbulence intensity is reduced in
offshore applications, and thus the fatigue damage due to aerodynamic loads is reduced. The
environmental impact is reduced compared to onshore wind energy: visual impact, noise,
electromagnetic interference and shadow flicker. This does not mean that offshore wind energy
is exempt from any environmental impact: bird strike, marine life, or microwave interference
need still to be considered. Underwater noise and vibration problems are unique to offshore
wind energy, but they are less known requiring more studies to confirm their influence.
Other advantages are found when offshore wind energy is approached as a project of European
interest. EWEA highlights those in its report of 2007 (Ref. [5]). Offshore wind energy can help
the EU with its commitment to GHG reduction. Offshore wind energy will play a crucial role in
securing energy supply and thereby Europe will be less dependent on energy imports. If the
Member States focus their effort to build a European framework for offshore wind energy, a
2
Chapter 1 Introduction.
European electricity infrastructure will become a reality towards renewable energy; and
offshore wind energy will be a catalyst for the realization of the internal electricity market in
Europe. Lastly but not the least, offshore wind energy has the potential to impulse job creation
and regional development. As EWEA concludes, the offshore wind sector is in the rare
position of being able to provide all of these benefits. The figure below shows an example of
an OWF.
Despite the promising long-term prospects for offshore wind energy, this technology still needs
to face and overcome multiple challenges found both in political and technologic arenas. Any
effort in developing offshore wind energy technology is futile without a politic framework that
underpins this technology.
The technological barriers are mixed but by no means insuperable. In spite of the fact that
offshore wind resource is vast, offshore wind farms must compete for the space with other
marine users, shipping lanes, military activity, dredging concessions, and all avoiding
environmentally sensitive areas. Offshore wind is higher but less characterized than onshore
wind; therefore, wind maps and remote sitting techniques must be further developed in order to
better predict generation revenue. The design of offshore wind turbines must account for
aggressive marine environment wherein marine corrosion and marine growth play important
roles. The access for maintenance still has room for improvement. If it is true that the turbulence
reduction yields less fatigue load, the combination of wind and waves provides new load
situations.
3
Scour process around offshore foundations is one of the most dramatic problems that arises with
offshore wind energy. Different types of soil and marine conditions (currents, waves, and
combined waves and currents) need to be analyzed thoroughly; developments of scour processes
are an important issue that without control might put the wind turbine (WT) stability in
jeopardy.
Another factor of crucial importance is the electrical grid integration or grid connection
capacity. The trend towards greater and greater offshore wind farms provokes the necessity for
infrastructure investment. EWEA remarks that offshore wind farms must be treated as power
plants to be integrated in the same way as conventional power stations; and besides, EWEA
justifies the necessary redesigns of the grid infrastructure, system management, grid regulation
and grid codes accordingly not only for the growing of offshore wind energy but all kind of
renewable energies and other power sources; and by this means, meeting the rapidly growing
European electricity demand (Ref. [5]).
Lastly, the transport and installation of offshore wind turbines (OWTs) is also a central issue; of
radical importance when larger and larger machines need to be transported and erected further
and further from the coast. Each offshore project must be analyzed from the cost effectiveness
point of view. But all manufactures agree in MW sized machines as the proper size in offshore
applications. The next section describes in detail this problem where this work is focused on.
Chapter 1 Introduction.
5MW WTs. The project was very sensitive to weather conditions starting in 2006 and finishing
in July 2007 (Ref. [1]). Therefore, only two of 728 currently installed OWTs has been
transported fully assembled and erected on a barge. Despite this overwhelming fact, the need of
re-consideration or improvement of the current method of T&I of OWTs is an issue under
strong discussion, as it was explained and agreed in the session of Transportation and
installation technologies in the recent European Offshore Wind 2009 in Stockholm this
September (Ref. [8]).
There are two main ways of T&I WTs: (i) in one cycle, or (ii) in two cycles, i.e. the substructure
or foundation first, and then the topside structure. To date, all the OWFs are located in the
second group (see Appendix A). Both ways require a pre-assembly yard in the port before the
transport; the option on-site on-demand or JIT has not been used due to the risk of possible
delays in the deliveries.
Depending on the seabed conditions, a pre-preparation of the soil is needed for preventing
scour. In this case, the rip-rap scour prevention method (Ref. [32]) is often selected, and either
side stone dumping barges or flexible fall pipe vessel are required (see further in Ref. [30]).
When the seabed is ready, the foundations and transition piece are transported on specialized
vessels. In the meantime, the WTs are pre-assembled in components in the yard at the port as
shown in the figure below
Generally, the tower is divided in two sections (lower and upper part), nacelles, hubs, and
blades. The figure below shows an example of 6 unassembled WTs on the commercial Viking
Barge vessel.
Once the substructures are placed, the unassembled WTs are loaded and transported to the
offshore site. The WTs can be transported stowed on feeder barges that require an external
barge crane (the case of the previous figure), or on T&I jack-up vessels as shown in the figure
below. The jack-up vessel is equipped with its own crane to assemble the WT at the offshore
site.
There are three main ways to assemble the WTs depending on the configuration of the nacellerotor: (i) the bunny-ear configuration, where the nacelle combined with two blades is directly
installed; (ii) the nacelle first, and then the complete rotor (hub + blades); or (iii) the nacelle-hub
first and then blade by blade. The figure below shows an example of the bunny-ear
configuration.
Chapter 1 Introduction.
However, serious attempts to design integral installations are found. The Dutch company
Ulstein Sea of Solutions and SPARCS has developed a new Wind Energy Concept, called F2F
(floating to fixed) developed with the aim to lower the high operational costs related to
offshore installations (Ref. [28]). This concept has been granted an approval principle by Det
Norske Veritas (DNV). The F2F Wind Energy Concept is constructed, pre-assembled and
commissioned onshore, then floated to a stable working draft and towed to the offshore location.
When arriving to the location, it is lowered to the sea bed by ballasting and fixed to the seabed
by suction anchors. In case of maintenance and repair, it can be refloated again and towed
onshore.
Boskalis attempted to develop a semisubmersible installation vessel for the installation of
complete OWTs called The Sub. The complete structure is placed in/on a floating U-shaped
semi-submersible vessel that transports and installs the WT. When the offshore site is reached,
the system is lowered to the sea bed, providing a working stable platform. When the installation
is finished the vessel is refloated again and return to the port for the next installation (Ref. [18]).
In accordance with above, Saipem SA presented the Castoro Vento vessel in the European
Offshore Wind 2009 (Ref. [27]). The figure below shows a sketch of the vessel.
The Castoro Vento is based on the float-over technology. The vessel is basically a U-shaped
barge equipped with several ballasts water compartments to allow ballasting deballasting
operations. It is designed to transport WTs up to 6 MW, for water depths between 25 35 m;
maximum siginificant wave heights of 6.5 and 2.5 meters, for the transit and installation,
respectively; 50 m/s maximum wind speed and normal transit speed of 6 knots. The design has
been made according to DNV standards. It can transport a complete WT, i.e. foundation or
substructure and topside in one sequence. Gravity or steel tripods/jacket structure are selected as
foundations. The assembly must be carried out fully in the harbour. First the foundation by
using a conventional onshore crane through controlled ballasting deballasting of the water
compartmens. Then, the Vertically Adjusting Device (VAD) which eliminates the risk of
turbine deviations; and finally the WT. Further information is found in Ref. [27].
BMT Nigel Gee Ltd and Gifford proposed the Transport and Installation Barge (TIB) in the
European Offshore Wind 2009 (Ref. [4]). The figure below shows a sketch of the TIB
connected over the foundation.
Chapter 1 Introduction.
The TIB is configured to transport the foundation safely to the windfarm location; then the TIB
is able to ballast down to lower the foundation onto the pre prepared seabed site, this avoids the
use of an expensive crane barge and the requirement to extend the operational weather window
for installation works by reducing the number of marine operations (see Ref. [4] for further
information).
Lastly, the Aquilo concept was presented by the Norwegian University of Life Sciences in the
European Offshore Wind 2009 (Ref. [23]). The Aquilo is a semisubmersible platform operating
onsite in offshore locations by using the common technology of pivot rotation by the means of
ballast transfer. The figure below shows a sketch of the idea.
1.3 Objective
The purpose of this project is to design a program that enables the user to carry out sea transport
analyses of WTs stowed upright on a transport vessel. Different configurations of upright WTs
can be selected; the wave-induced motions of the vessel are included accordingly; and finally
the aeroelastic responses of the WTs during sailings are calculated.
coordinate systems are illustrated. Lastly some considerations in the aeroelastic response of the
WT explained.
Chapter 4 studies the barge stability to provide some insight in the hydrostatic calculations of
the selected barge. When the barge stability is checked, both the barge model and the WT model
are successfully validated comparing with reliable sources in Chapter 5. Sea transport analyses
can now be carried out. The case of one upright WT is presented and the results are described in
Chapter 6.
Finally, the conclusions of the project are explained with a summary of the main findings, and
future considerations on developing the technology is presented. Furthermore, a series of
appendixes are enclosed to the main document to provide detail information if needed.
In Figure 1.9, the block diagram below illustrates the outline of this report. References to the
chapters and appendices are also included.
Through this report, two main parts are identified clearly: the barge on the one hand, and the
WT/s on the other hand. Thus, the theory or background is divided into these two parts. The
modeling describes a system consisting of a barge and a WT configuration.
The program is thereby the combination of these two parts. The program is divided into two
modules; (i) the barge program that calculates the wave-induced motions of a transport barge for
a particular WT configuration; (ii) then, the sea transport program that calculates the aeroelastic
response of the WT/s during sailing and under prescribed wave-induced motions. These
modules are also depicted in Figure 1.9 below.
10
Chapter 1 Introduction.
Background
(The theory is presented
for the ship and WT)
Modeling
(The model consisting of
the barge and WT is
described)
Barge Stability
(The stability of the barge
loaded with one upright
WT is analyzed)
Model Validation
(The barge and the WT
program-modules are
validated)
In Chapter 2
Further in: Appendix B and C
In Chapter 3
Further in: Appendix D and E
In Chapter 4
Further in: Appendix F
In Chapter 5
Further in: Appendix G
In Chapter 6
Further in: Appendix H
Barge Program
Barge Inputs:
(WT config., ship dimensions, etc.)
WT inputs:
(WT struct and aero data, WT
angles, wind, etc..)
Wind State
(Mean wind speed, wind direction,
and wind shear)
In Conclusions
In Future Development
11
Chapter 2
2 BACKGROUND
This section describes the theory applied in the present report. There are two main areas of
study: (i) the barge or ship, and (ii) the wind turbine. Each area is described in separated
subsections. The theory presented here is a brief summary; more details are described in
Appendix B and C.
Yaw
Aft
Fore
Pitch
Sway
Roll
Surge
Figure 2.1 Ship Motion Definitions
From the different methods available, the work of Jensen et al. (2004 Ref. [17]) is adopted due
to its suitability for this project and its simplicity, the method requires a few inputs. A detailed
description of the inputs is described in Chapter 3 section 3.1.
Jensen et al.[17] derive a series of closed-form semi-analytical expressions of monohull ships for
the frequency response functions of the heave, pitch, and roll. These DOFs are used to calculate
the longitudinal, transverse, and vertical motions of the cargo with an acceptable degree of
accuracy.
12
Chapter 2 Background.
The authors
[17]
propose the following simplified governing equations for the complete ship-
kT
2
&& +
w
A2
kB 3
w& + w = aF cos( t )
kT &&
A2 &
+
+ = aG sin( t )
2
kB 3
(2.1)
Roll :
TN
where k is the wave number, the wave frequency; B and T are the breadth and draught of the
box, respectively; is the frequency of encounter; TN is the natural period for roll, C44 the
restoring moment coefficient, B44 the hydrodynamic damping, F and G are the forcing
functions, and M is the excitation moment.
The encounter frequency is found as a function of the wave frequency, forward speed of the
ship V, and heading angle :
= kV cos
(2.2)
The heave, pitch and roll responses are defined in terms of the response amplitudes and
phase lags for particular wave amplitude a:
Pitch : (t ) = a ( ) cos t
w
Total
+
( )
Jensen et al. [17] proposed a series of expressions to calculate the response amplitudes:
13
(2.3)
Heave : w = F
Pitch : = G
Roll :
TN
2
+ 1 C 2 + 2 B 2
44
44
1/ 2
[m m]
[rad m]
[rad m]
(2.4)
For further information1 is referred to either Jensen et al. [17] or Appendix B in this report.
Mansour et al. (2004 Ref. [22]) introduced the expressions to calculate the phase angles or
phase lags between the motion components. Note that the expressions consider the heave and
pitch 90 out of phase; and the roll motion decoupled from the other transverse motions (sway
and yaw). The expressions are illustrated in Appendix B.
Once the heave, pitch and roll, and their phase angles are obtained; the longitudinal, transverse
and vertical displacements can be derived by simple trigonometric equations.
Longitudinal Disp. : u L = z 0 = z 0 a ( ) cos t + Total ( )
uV = w x0 + y 0 = a w ( ) cos t + Total ( )
w
x0 a ( ) cos t + Total ( )
+ y 0 a ( ) cos t + Total ( )
(2.5)
Vertical Disp. :
The previous expressions are established assuming small angles for pitch and roll. The
expression for the vertical displacement was introduced by Jensen et al.
[17]
This expression has been modified to consider also the roll motion; and thereby, the response at
any position can be calculated. Simple derivations yield the expression for the frequency
response functions for the displacements:
Note that the expression for the Smith correction factor is already modified from the expression
depicted in the original paper by Jensen et al. [17] according to the latest update of the formula.
14
Chapter 2 Background.
Longitudinal Disp. :
[m m]
U L = z 0 ( )
Transverse Disp. :
[m m]
UT = z 0 ( )
Vertical Disp. :
w ( )2 + x 2 ( )2 + y 2 ( )2
0
(2.6)
UV =
Total
Total
( ) ( )
2 x0 w ( ) ( ) cos
w
[m m]
The expressions for the response amplitudes for the velocities and accelerations are straight
forward:
Longitudinal Vel. : VL = U L ( )
Transverse Vel. :
VT = UT ( )
Vertical Vel. :
VV = UV ( )
Longitudinal Acc. : AL = 2 U L ( )
Transverse Acc. :
AT = 2 UT ( )
Vertical Acc. :
AV = 2 UV ( )
[m ms]
[m ms]
[m ms]
m
ms 2
m
ms 2
m
ms 2
(2.7)
(2.8)
The weakest point of the method is found in the selection of the additional damping. There is
not any available procedure to estimate this additional damping. A manual selection is currently
done. Other limitations are found depending on the heading angle. Jensen et al.
[17]
already
mentioned in their article that the heave response undergoes higher dynamic amplifications in
beam sea conditions. Thus, these limitations must be taken into account when analyzing the
results.
The ocean waves and the derived loads are described as random variables, which mean that
under apparently identical initial conditions, they are always changing in time and from sample
to another. This process can be analyzed by ensemble all the samples as a stochastic or random
process. The ocean waves are considered a stochastic process due to the fact that they are
generated by local variation in wind speed and atmospheric pressure, and both phenomenons are
known to be stochastic processes. The magnitude of the waves is the result of an energy transfer
between the wind and the ocean, which occurs in a narrow boundary layer on the surface of the
sea. The description of the short-terms predictions are illustrated in Appendix B, where the
15
wave spectrum S ( ) is introduced, as well as the calculations for the most probable largest
values (MPL) for the ship responses.
The ship motions in the frequency domain (equations (2.4), (2.6), (2.7) and (2.8)) must be
transformed to the time domain. This is necessary because the WT model presents nonlinearities, and thus the time domain is more convenient. In the following, R represents any
response, i.e. heave, pitch or roll; or longitudinal, transverse or vertical displacements, velocities
or accelerations; which means 12 different responses to be selected.
The response spectral density is calculated as:
S R ( ) = R2 ( )S ( )
(2.9)
It is noted that the previous expression is valid for a given heading angle and wave period Tz
to ease the expressions in the section, so note that there is a different spectrum response per
heading angle and wave period.
The time series are generated based on this spectrum. First, a time step equal to the time step in
the WT model is selected; then the sample frequency and Nyquist frequency are calculated. The
Nyquist frequency is defined as half of the sample frequency to fulfill the Nyquist-Shannon
sampling theorem, and thus, aliasing is avoided. Secondly, the length of the time series must be
selected appropriately, i.e. by doubling the length of the spectrum. Thus, the time series will be
able to reproduce the complete spectrum response S R ( ) .
The time series of a particular response R ( xR ) can be generated from the inverse discrete
Fourier transform by using MATLAB function ifft:
xR ( j ) =
1 N
2 ( j + 1)(l 1)
X (l ) exp i
N l =1
N
( )
(2.10)
( )
where X (l ) is defined as the discrete Fourier transform. MATLAB defines the spectrum of
any signal S as:
S( ) = 1
( )2
(2.11)
( )
Thus, the discrete Fourier transform X (l ) is generated as a complex Gaussian with zero
mean and variance equal to:
16
Chapter 2 Background.
2X = S R ( ) N
(2.12)
( )
Hence, X (l ) is calculated by means of random variables a, and b; with mean zero and
standard deviation equal to:
X = a + ib
2
X 2
= a + b = 2 a a =
a =
2
2
(S R ( ) N )2
2
(2.13)
= b
( )
X (l ) must be made up of real and imaginary numbers where the second half of values must
be the conjugate of the first half; furthermore, it must contain a real number at N/2+1 as well as
the first value, N = 1. This can be done by setting zero value in the parameter b at these points.
Thereby, the time series are created for all the responses, i.e.:
Longitudinal,
transverse,
and
vertical
displacements
( u L , uT , uV ),
velocities
( u& L , u&T , u&V ), and accelerations ( u&&L , u&&T , u&&V ) of the cargo.
It is important to note that by using this method, all the responses are statistically independent, it
is convenient to recall that in the simplified closed-form expressions, the heave and pitch
responses are assumed to be 90 out of phase, while the roll is decoupled from the other
transverse motions (sway and yaw). Only for the vertical response, the three previous responses
are involved with their corresponding phase angles; however and as it will be explained in
Chapter 3, only the longitudinal accelerations are studied here; therefore, the previous method is
still valid.
17
In addition, inertia loads from the structure mass distribution are also acting on the WT. These
inertial loads can be: (i) steady, i.e. gravitational forces or ice loads; and (ii) unsteady from the
vibration of the structure, i.e. structural accelerations caused by external unsteady loads such as
the aforementioned aerodynamic loads, but also wave loads, or seismic loads.
A WT is a structure highly influenced by its structural dynamic characteristics. Thus, the model
must enable the calculation of the aeroelastic WT response, where elastic and mass properties
are considered under prescribed time dependent external loading and aerodynamic loads are
included.
The aerodynamic model of a WT is explained by 2-D aerodynamics theory; this implies that the
flow at a given radial position is two dimensional, i.e. the spanwise velocity component of the
flow (x-component, see Figure 2.2 below) is much lower than the streamwise component.
The reacting force from the flow or simply, the aerodynamic force is decomposed into a
direction perpendicular to the relative velocity called lift force L, and to a direction parallel to
the relative velocity called drag force D. By definition, the lift and drag forces are equal to:
1
2
Vrel c C l
2
1
2
D = Vrel c C d
2
L=
(2.14)
where Vrel is the relative velocity, which is explained in Appendix C; Cl and Cd are defined as
the lift and drag coefficients, respectively (these coefficients are given with the aerodynamic
data of the WT); is the air density and c is the chord or airfoil length.
Note that the aerodynamic loads acting on a conical tower, as those for the current WTs, are
reduced mainly to drag forces, where the drag coefficient takes a unit value.
18
Chapter 2 Background.
In the case of a WT blade, lift and drag forces are present. The aerodynamic shape of a WTs
blade is specially designed to maximize the lift force and minimize the drag force. Often, the
aerodynamic forces (lift L and drag D forces) are decomposed into a fixed coordinate system at
the blade hub (see x-y-z coordinate system in Figure 2.2 above). These components are known
as the tangential aerodynamic force Ft or Fy, and the normal aerodynamic force Fn or Fz. From
simple trigonometry:
Ft = L sin() D cos()
(2.15)
Fn = L cos( ) + D sin()
Or also:
2
Ft = 1 Vrel cCt
2
2
Fn = 1 Vrel cC n
2
(2.16)
where
C t = C l sin() C d cos()
(2.17)
C n = C l cos() + C d sin()
The wind turbine studied here is parked and clamped to the ship; therefore, the aerodynamic
model is very simplified since the induced velocities W as well as the rotational velocities Vrot
are zero. Formally, the known blade element momentum (BEM) method is thus no longer
applicable (see Appendix C).
In order to realistically estimate the aeroelastic behavior of the wind turbine, the following must
be taken into account: (i) the unsteadiness of the wind seen by the WT caused by atmospheric
turbulence, (ii) wind shear, and (iii) the presence of the tower (tower shadow effects). Thus, the
incoming wind is no longer a uniform flow seen by the WT. Besides, tilt, cone and yaw angles
are taken into account. Changes in pitch angle can also be considered as well as different blade
positions.
The undisturbed wind speed must consider the distribution of wind shear specifically to the site,
it is modeled as
x y
V y ( x ) = V y (H )
H
x
V z ( x ) = V z (H )
H
(2.18)
where H is the hub height, x is the distance from the tower bottom, and is the parameter that
measures the amount of shear, generally given in the former expression in the y and z
components, in case the site has different wind shear depending on the wind direction. It is
19
noted that in offshore applications, this parameter is rather small since the sea surface is
considered almost frictionless. Figure 2.3 below shows the time averaged atmospheric boundary
layer.
The wind seen by the blades is also influenced by the tower. Hansen (2008, 101 Ref. [11])
utilizes a simple model for the influence of the model assuming potential flow. Figure 2.4 shows
the undisturbed wind speed V0 aligned with the z-axis considering potential flow.
In a polar coordinate system as shown in Figure 2.4, the radial and tangential velocity
components around the tower can be calculated assuming potential flow. Considering now a
more general case when the undisturbed wind speed is not aligned with the z-axis, but forms
some angle; the wind speed must be decomposed in its two y and z components to calculate the
radial Vr and tangential V velocity components:
20
Chapter 2 Background.
a( x ) 2
a( x ) 2
Vr ( x ) = V z ( x ) 1
cos + V y (x ) 1
sin
r
r
a( x ) 2
a( x ) 2
V ( x ) = V z (x ) 1 +
sin V y ( x ) 1 +
cos
r
r
(2.19)
where a(x) is the radius of the tower, x is the distance from the tower bottom, normally the
current towers employed in the wind turbine industry are conical, so the radius will vary with
the distance x. The radial and tangential velocity components can be transformed to a Cartesian
coordinate system as:
Vz ( x ) = Vr (x ) cos V ( x ) sin
(2.20)
Vy ( x ) = Vr ( x ) sin V ( x ) cos
z
y
; sin = ; r = z 2 + y 2
r
r
(2.21)
When the relative velocity Vrel is calculated, the flow angle can be calculated by using:
Vrel z
Vrel y
= tan 1
(2.22)
(2.23)
where is the local pitch defined as the angle between the local chord and the plane of rotation.
Finally, the aerodynamic forces Ft (or Fy) and Fn (or Fz) are found by using previous equations
(2.15) or (2.16).
It is noted that the previous aerodynamic loads have unit per length, i.e. each i-segment or
section at a particular distance xi contains the tangential and normal forces Fti and Fni,
respectively. A linear variation is assumed between xi and xi+1, and the integration of these loads
must be taken carefully to obtain, the root bending moments or the thrust.
During the sea transport of the WTs, the loads are varying in time. A structural dynamic
response of the WT must be calculated by using the complete equation of motion. According to
Newtons second law, the equation of motion is given below:
M X&& + C X& + K X = Fg
(2.24)
where M is the mass matrix, C is the damping matrix, K is the stiffness matrix, Fg is the
external force vector; while X , X& , and X&& are denoted as the deflection, velocity, and
21
With the structural model it is possible to describe the instantaneous geometry of the structure
(by knowing the deflections) as well as velocities and accelerations at particular selected points
in the structure.
To build up this model, the WT is broken down into different components, i.e. tower, nacelle,
hub and blades, and a particular number of DOFs is selected to describe these components. In
order to make dynamic calculations of the deflection or deformation of these components, it is
required to specify in advance a set of shape functions for each DOF. The desired deflections
are described as linear combination of a series of shape functions scaled by particular factors
(generalized coordinates):
M
u (x ) = GX j u j ( x )
(2.25)
j =1
where u ( x ) is the deflection (with both y and z components at the point x), the factors GX j are
called generalized coordinates and indicate the amount of deflection according to each shape
function u j ( x ) (with both y and z components).
It is noted that depending on how the components are connected together, the deformations of
one component can produce deflections (rigid body motions) of the components attached to it,
which is the case when a WT tower deflects seen by the blades.
The success of the structural model depends on the selection of a proper number of DOFs and
their shape functions, since this choice will influence the accuracy of determining the deflected
shape and the inertial forces from the dynamic response. It is obvious that the higher number of
DOFs, the more accurate dynamic calculations can be done, but the more computational time is
required as well. For the purpose of this project, the WT is not rotating and is discretized by 11
DOFs. A detailed description of the WT model is given in Chapter 3.
The set of shape functions can be selected in multiple ways, as long as they fulfill the condition
of being smooth, i.e. with continuous distribution of slopes and angles. There have been used
four types of shape functions associated to the DOFs, the first two describe the rigid body
DOFs, i.e. translation and rotation; the third type described elastic bending of a beam, while the
fourth type correspond to combination of the previous ones, i.e. beam bending plus rigid body
motion.
For the deflection of the tower and the blades, an efficient choice of shape functions is to select
a series of eigenmodes or mode shapes (natural vibration modes) with their associated natural
frequencies. It is known that the blade deflection can be describe with high levels of accuracy
by the linear combination of the first 3-4 mode shapes (2 flapwise and 1-2 edgewise) associated
22
Chapter 2 Background.
with the lowest frequencies, the error of omitting the higher modes will be in the high frequency
range where the amplitudes are expected to be small and unimportant (Ref. [36]). The method to
calculate the mode shapes is described in detail in Appendix C.
Once the DOFs are selected and their associated generalized coordinates and shape functions,
the mass, stiffness, and damping matrices are ready to be assembled. The equation of motion
will take now the form
GM GX&& + GC GX& + GK GX = GFg
(2.26)
where GM is the generalized mass matrix, GC is the generalized damping matrix, GK is the
generalized
stiffness
matrix, GFg is
the
generalized
external
force
vector;
while
GX , GX& , and GX&& are denoted as the deflection, velocity, and acceleration generalized
coordinate vectors for a set of DOFs. Appendix C illustrates how to build these generalized
matrices and vectors.
When GX is specified, the position of all relevant points in the structure can be calculated (by
equation (2.25)). However the relation between the generalized coordinates and the positions of
the points is highly non-linear as soon as rotations are taken place in the DOFs (Ref. [36]).
The velocity of every relevant point in the structure can be also calculated by knowing
GX and GX& , the relation between the velocities and GX& is linear, but the actual relation will
23
Chapter 3
The theory has been introduced in the previous chapter. In this chapter, the modeling is
presented. The model consists of two parts: (i) the barge, and (ii) the WT/s. Once the model is
described, the inputs that the program uses to solve each part are listed. Furthermore, this
chapter finishes with a description of the coordinate systems and some considerations regarding
the aeroelastic response of the WT. Further information is found in previous Figure 1.9 in
Chapter 1.
3 MODELING
One upright WT is selected as the loading configuration on the barge. The system barge/WT is
thus modeled as one WT clamped to the deck of the barge. The WT is located at the center line
(CL), where the center of the tower is aligned with the barges COG. The blades are in the
bunny-ear position, i.e. one blade is downwards aligned with the tower. The WT has a
prescribed tilt angle of 6 deg., and the blades are coned 2 deg., these angles were given by
Siemens Wind Power A/S. Ballasts are used to provide a draft around 2.5 m. A simple sketch is
depicted below.
X1
FORE
Z1
AFT
Y1
COG
As a first approximation to the sea transport problem, the configuration of WTs facing forward
may be more appropriate, since the longitudinal bending of the WT (i.e. z direction) is better
withstood by the pitch motion from the barges stability-point of view. Besides, this
configuration would allow allocating more WTs on the deck. Further studies should be carried
out to investigate different configurations in order to find the optimum; variations in the draft
24
Chapter 3 Modeling.
and their influence on the loads might also be interesting to investigate. However and due to the
time frame of this project, this simple configuration of one upright WT is only analyzed here.
The model attempts to answer the question of whether or not this configuration barge/WT can
be used as a way of transportation. One of the possible limitations during the transport are the
nacelle accelerations2; here the most vulnerable components of the WT are found (e.g. the
bearings for the main shaft). Guidance values for limiting acceleration levels have been
provided by Siemens Wind Power (Ref. [18]):
a Lmax < 1g = 9.8 m / s 2
aTmax
aVmax
SB - PS Direction
(3.1)
Vertical Direction
The longitudinal acceleration a Lmax of the nacelle is selected as the limit for transportation; even
though, further studies should be performed for the other acceleration, the longitudinal
acceleration is chosen as starting point.
The weather window plays an important role during offshore installations. Significant wave
heights, wave periods, and wind speeds influence the transport; and ultimately, the longitudinal
accelerations. Hence, variations of these parameters are investigated to predict whether or not
the WT can be transported. Wave-scatter diagrams and correlations between annual wind speed
and wave height for the North Atlantic are used (Lloyd 1995, 63-65, Ref. [20]).
Once the time series for the longitudinal acceleration at the nacelle or tower top are calculated,
the MPL value for the longitudinal acceleration are solved. Similar procedures as those applied
to the MPL calculations for the wave-induced motion are applied (see further information in
Appendix B).
t
MPLmax
= aL 2 ln
aL
T
Z
(3.2)
where aL is the standard deviation, t is the simulation time (i.e. 1800 sec), and Tz is the mean
period, and it can be assumed to be equal to the upcrossing wave period, i.e. Tz = 7.5 sec.
It is unknown for this author if there are any other criteria or limits for transport.
25
The barge used for the transportation is a commercial barge named Viking barge, data provided
by Siemens Wind Power A/S (Ref [15] and [34]). This barge is currently used to transport
unassembled WTs.
The WT is the Siemens 2.3 MW wind turbine, structural and aerodynamic data are provided by
Siemens Wind Power A/S (Ref. [29] and separate data sheets). This WT has 45 m. blade length
and 63.84 m. tower height.
Firstly, the barge is modeled. The wave-induced motions of the system barge/WT are calculated
based on the closed-form semi-analytical expressions by Jensen et al.
[17]
in the frequency
domain, then these motions are transformed to the time domain to be suitable with the WT
model. The displacements, velocities and accelerations from the barge are seen as stiff body
motions by the WT. Therefore, these motions are prescribed and given as inputs in the WT
model.
Then, the aeroelastic response of the WT is ready to be predicted. The WT is discretized by 11
DOFs:
Two DOFs for the tower, 1 mode in the lateral direction, i.e. SB-PS, and 1 mode in the
normal direction of the rotor, i.e. fore-aft
Three DOFs for each blade: 1st flapwise, 1st edgewise, and 2nd flapwise.
For the blades, it is noted that the torsion has been neglected since it is considered that they are
very stiff in torsion, and the torsional deflection can be disregarded (Hansen 2008, 111 Ref.
[11]; and Ref. [36]). For the tower, the torsion has been also neglected since it is not of interest
for this project. The shafts are not modeled; they are included in the nacelle which is modeled as
a simple point mass on top of the tower.
The stochastic part of the wind is modeled by using the expressions derived in Nielsen (2008
Ref. [24]). It is stated that the stochastic part of the wind is modeled as normal distributed and
statistically independent of the wave loads. The spectral density is given by the Kaimal
spectrum Sxx(f) (further see Kaimal et al. (1972)):
S xx ( f ) =
u*2
52.5 z
(1 + 33 n )
(3.3)
3
where u* is the friction velocity, a value of 1 m/s is generally adopted. U is the mean wind
speed, z is the height (i.e. the tower height), n is the dimensionless frequency, defined as:
26
Chapter 3 Modeling.
n=
f z
U
(3.4)
The stochastic fluctuation V(t) around the mean wind speed U is then based on the previous
spectrum.
Note that the spectrum generated here uses the frequencies in Hertz, so this must be taken into
account in the following expressions. A convenient time step is used; i.e. the same as this for the
time series of the wave-induced motions (0.03 sec.). The sample and Nyquist frequency are thus
derived. The number of points for the wind fluctuation time series is calculated simply by:
t
N = max
dt
(3.5)
where t max is the simulation time. The spectrum frequencies to calculate the Kaimal spectrum
are calculated only for half of the points due to the aliasing theorem as
f =
l
;
dt N
l = 1: N / 2
(3.6)
equal to:
X l ,T = a + ib
2X
= a2
+ b2
= 2 a2
a2
2
2X
= X a =
=
2
2
S xx ( ) t max
= b
2
(3.7)
The Xl,T must be made up of real and imaginary numbers where the second half of values must
be the conjugate of the first half; furthermore, it must contain a real number at N/2 as well as the
first value, N = 1. This can be done by setting zero value in the parameter b at these points.
The wind fluctuations are thus obtained by
1 N 1
2lt
X (l ,T ) exp i
N l =0
N 1 N 1
2lt
V (t ) =
=
fS
X (l ,T ) exp i
t
N l =0
N
(3.8)
The previous expression is just the formal definition of the inverse Fourier transform. It is used
the Matlab function ifft, but is modified adding the sample frequency.
The incoming wind takes the final expression
27
V HUB (t ) = U + V (t )
(3.9)
The following sections describe in detail the required inputs for each part of the sea transport
program, i.e. barge, and WT. The coordinate systems are also presented. And lastly, some
considerations regarding the aeroelastic response of the WT and its combination with the barge
motions are included.
Configuration of the cargo: an upright WT aligned with the barges COG is selected.
Ballasts and fuel: a series of ballasts are used to provide drafts around 2.5 m. The fuel
used for a normal departure is also considered.
COG of the system: it is calculated based on the previous parameters, i.e. WT, ballasts
and fuel, together with the barge.
Displacement volume.
Ship main dimensions: maximum length (Lmax), height (D), maximum waterline breadth
(B0), block coefficient (Cb) and water plane coefficient (CWP).
Draft (T) and length (L): those are calculated based on the particular loading condition.
Metacentric height (GMT): it is solved based on the height of the center of buoyancy
above the keel (KB), the transverse metacentric height of buoyancy (BMt), and the
height of the COG above the keel (KG).
Roll Period (Tn): it is solved based on the moment of inertia of the WT/barge system
and GMT. The moments of inertia of the barge and the WT are given, and the radii of
gyration are derived (see further in Appendix E).
Forward Speed (V): the barge is pulled by tugboats; it is normally considered a forward
speed of zero, since it is very small (Ref. [34]).
Heading angle (): the longitudinal acceleration is more excited when the pitch motion
is maximum, which occurs with head sea conditions, i.e. = 180.
Simulation time: The time for the simulations is set to 30 min. This time is high enough
to provide stable values. The time step is set to 0.03 sec. to match with the time step for
the WT model.
28
Chapter 3 Modeling.
Sea state: significant wave height (Hs) and mean zero upcrossing periods (Tz) are
selected from wave-scatter diagrams for the North Atlantic.
Structural data of the Siemens 2.3MW wind turbine: the tower is discretized in 23
sections and the blades in 24 sections. The nacelle is simply modeled as a point mass on
top of the tower. This mass includes the machine (nacelle, shafts, etc) plus the hub,
leaving out the blades. Young modulus of elasticity for the tower and the blades are
given. Geometrical dimensions are specified such as tower radii, blade radius, and shaft
length. Data of mass per length and second moment of area are given for both the tower
and the blades at each section. Chord length, structural pitch angles and twist are also
provided.
Aeroelastic data of the Siemens 2.3MW wind turbine: as before, the tower and the
blades are discretized in 23 and 24 sections, respectively. The relative thickness is given
for each section; depending on the relative thickness and the particular angle of attack,
the lift and drag coefficients are calculated by a look-up table at each section.
Logarithmic decrements for the tower modes and the blade modes are also provided.
WT operating angles: prescribed yaw, tilt, cone, and rotation angles are given. There is
no yaw angle; it is assumed that the wind is coming perpendicular to the rotor. The
Siemens 2.3MW WT is tilted 6 degrees and the blades are coned 2 degrees. The
azimuth rotation angle is set to 180 for blade 1, which means that this blade is pointing
downwards aligned with the tower, and the other blades at 120 and 240 relative
angles, i.e. bunny-ear configuration.
Pitch Angle: the blades are pitched 82 degrees, corresponding to the parked position
described by Siemens Wind Power A/S. The pitch is constant during the simulations.
Simulation time: The time for the simulations is set to 30 min. This time is high enough
to provide stable values. The time step is set to 0.03 sec. to provide accurate results by
the time integration scheme (see Appendix B).
Wind speed: it is considered a wind shear factor of 0.11. The mean wind speed is
given depending on the significant wave height for the North Atlantic (Lloyd 1995, 6365, Ref. [20]). The stochastic part of the wind is modeled by using the expression
derived in Nielsen [24], see previous equation (3.8). It is assumed that the wind is aligned
with the waves. Note that the barge is considered in head sea, therefore the wind is
coming from the fore-aft direction or z direction (see Figure 3.1).
29
Stiff body motions from the barge: displacements, velocities, and accelerations from the
barge at each section of the WT are given.
Mode Shapes: the blade mode shapes are calculated based on the distribution of bending
stiffness ( EI 1 and EI 2 ), twist , structural twist (referred to first principal axis), and
mass along the blade. The mode shapes for the first flap and egdewise, and second
flapwise are solved. For the tower, the distribution of bending stiffness and mass are
only required to solve the mode shapes. Note that due to symmetry of the tower, the
mode shapes of the two directions of bending, i.e. SB-PS and fore-aft, are identical (see
further in Appendix B).
use a different coordinate system, and hence convenient transformations must be done
between the coordinate systems. The X-axis is the vertical axis of the barge, positive upward;
the Y-axis is the transverse axis of the barge, positive to port side; and the Z-axis is the
longitudinal axis, positive to the stern. The rotations are defined following the right-hand rule.
The roll is defined about X-axis, and pitch is defined about Y-axis.
30
Chapter 3 Modeling.
c on
X4
Z4
X3
X2
Z3
Y4
Z2
Y2
tilt
Y3
FORE
BOW
X1
Z1
AFT
STERN
Y1
X0
Z0
Y0
COG
XG
ZG
YG
The WT model utilizes four coordinate systems. Coordinate system 1 is an inertial system
placed at the tower bottom. Coordinate system 2 is a non-rotating system located at the nacelle
(precisely at the tower top, since the nacelle is modeled as a point mass). Coordinate system 3 is
fixed to the rotating shaft. Note that in this model the WT is not rotating, this system provides
information about where the blades are allocated; therefore, the blades are maintained constant
during the simulations. Coordinate system 4 is aligned with the blade. With regards the rotations
following the right-hand rule; the yaw angle is defined positive to port side, the tilt angle is
defined positive when the shaft is to be nose down (i.e. this angle is negative in Figure 3.2
above), whilst the cone angle is defined positive when the blade are inclined away from the
tower as shown in Figure 3.2.
Different transformation matrices are required to carry out transformations between coordinate
systems. Thus, the matrix a12 is used to transform any vector from system 1 to system 2. This
matrix takes into account any yaw angle (rotation about the X-axis), as well as any tilt angle
(rotation about the Y-axis)
a12 = a 3 a 2 a1
(3.10)
where
31
1
0
a1 = 0 cos yaw
0 - sin yaw
cos tilt
a 2 = 0
sin tilt
sin yaw ;
cos yaw
0 - sin tilt
;
1
0
0 cos tilt
0
(3.11)
1 0 0
a 3 = 0 1 0
0 0 1
The matrix a23 transforms any vector from system 2 to system 3. This matrix considers the
position (rotation angle, wing) of the blades
cos wing
a 23 = - sin wing
sin wing
cos wing
0
0
1
(3.12)
Lastly, the matrix a34 yields transformations from system 3 to system 4. This matrix accounts
for coning angles of the blades.
cos cone
a 34 =
0
sin cone
0 - sin cone
0
1
0 cos cone
(3.13)
(3.14)
To find the coordinates of any point on the WT the transformation matrices are used. For
example, the coordinates of the point P on the blade in system 1 are described by a series of
vectors and their corresponding transformation matrices (see Figure 3.3 below).
32
Chapter 3 Modeling.
(3.15)
where
xtower top
rt =
0
{In system 1}
0
{From system 2 to system 1}
shaft _ length
r
p
T
rb = a14 0
{From system 4 to system 1}
0
T
rs = a12
This principle can be applied to any kind of vector, i.e. positions, loads, velocities, etc.
33
(3.16)
x
{ Tower first mode in the longitudinal direction (fore - aft)}
t2
bl 1
bl 1
bl 1
bl 3
x1 f { Blade 3, first flapwise}
(3.17)
The desired deflections at relevant points (x) in the structure are described as a linear
combination of a series of shape functions (mode shapes) scaled by the generalized coordinates.
Thus,
Tower Deflection :
u tower (t , x ) = xt1 (t ) u t1 ( x ) + xt2 (t ) u t2 (x )
Tower Velocity :
u& tower (t , x ) = x& t1 (t ) u t1 ( x ) + x& t2 (t ) u t2 (x )
(3.18)
Tower Acceleration :
u&&tower (t , x ) = &x&t1 (t ) u t1 ( x ) + &x&t2 (t ) u t2 (x )
where
0
utz
(3.19)
For the blades the deflections, velocities, and accelerations are calculated similarly, the
equations below show the case for the blade 1 (the expressions for the other blades are the same
just changing the generalized coordinates)
34
Chapter 3 Modeling.
Blade Deflection :
u blade (t , x ) = x1blf1 (t ) u 1 f ( x ) + x1ble1 (t ) u1e (x ) + x 2blf1 (t ) u 2 f ( x )
Blade Velocity :
u& blade (t , x ) = x&1blf1 (t ) u 1 f ( x ) + x&1ble1 (t ) u1e (x ) + x& 2blf1 (t ) u 2 f ( x )
(3.20)
Blade Acceleration :
u&&blade (t , x ) = &x&1blf1 (t ) u 1 f ( x ) + &x&1ble1 (t ) u1e (x ) + &x&2blf1 (t ) u 2 f ( x )
where
0
u1 f
z
1e
u1e ( x ) Blade 1st. Edge. mode shape u 1e ( x ) = u y
1e
u y
0
(3.21)
It is noted that the previous expression for the deflections, velocities and accelerations from the
structural response are given for different coordinate system, i.e. for the coordinate system 1,
and coordinate system 4, respectively (see previous section 3.3)
35
Xt1
0
= 0
z
xp
r
r = yp
X1
Y1
Z1
The shape function for the blade is then the summation of a translation and a rotation from the
tower top N
*
0
y p z
u blade = xt1 u t y ( N ) + x p *z =
0
0
144244
3 14243
traslation
rotation
0 y p z
xt1 + x p *z
0 0
1
23
traslation 14243
(3.22)
rotation
where *z is the angular deformation at the tower top. Note that the mode shape
u t1 = 0 , u t y ,0 T is normalized to one at the tower top, and xp& yp refer to coordinate system 2.
36
Chapter 3 Modeling.
xp
r= 0
Xt2
zp
0
= y
0
( y = z )
X1
Z1
Y1
The shape function for the blade is again the summation of a translation and a rotation from the
tower top N
*
0
z p y
=
+ 0
u blade = 0
*
(
)
x
u
N
t
t
x
242z44
14
p
y
3 142
43
traslation
rotation
*
0 z p y
0 + 0
*
x
t
x
1223
p
y
14243
traslation
(3.23)
rotation
where *y is the angular deformation at the tower top. Note that the mode shape
u t2 = 0 ,0 , u t z T is normalized to one at the tower top, and xp& zp refer to coordinate system 2.
37
tower
tower
Vrel
= V tower V ST
0
tower V tower
STy
Vrel y V y
z
STz
(3.24)
where the undisturbed wind speed V tower seen by the tower must consider the distribution of
0
tower
wind shear specifically to the site (see equation (2.18)), and the V ST
is the structural velocity.
tower
takes into account the elastic velocity u& tower from the structural
The structural velocity V ST
response (from equation (3.18)) and the stiff body velocities from the barge (transverse and
longitudinal components from equation (2.7) transformed to the time domain), thus
tower
tower
= u& tower + V SB
V ST
V tower
V tower
STy u& tower
y
+ T
=
V tower u& tower V Ltower
ST z
(3.25)
Knowing the relative velocity the aerodynamic forces can be calculated, for a conical tower,
these aerodynamic forces are purely drag forces (with y and z components in coordinate system
1). The stiff body accelerations from the barge (vertical, transverse and longitudinal components
from equation (2.8) transformed to the time domain) are seen as unsteady inertia load and must
be also taken into account, and lastly, the gravity loads are included as well. Therefore, the force
acting on the tower takes the following expression
Ftower = FDtower
FGtower
tower
FSB
Fxtower 0
mtower AVtower
mtower g
F tower = F tower + 0
tower
+ mtower AT
y
Dy
tower
tower
0
mtower AL
Fz
FDtower
(3.26)
1
Vrel y2 d C d
y
2
1
FDtower = Vrel z2 d C d
z
2
FDtower =
(3.27)
being d the tower diameter. The drag coefficient Cd for a conical tower is equal to one. Note that
the tower force Ftower is a force per length given in the coordinate system 1.
38
Chapter 3 Modeling.
Blades
The relative velocity seen by the blade (system 4, see previous section 3.3) must take into
account the structural velocity from the blade vibration and tower vibration
blade
blade
Vrel
= V blade V ST
0
blade V blade
ST y
Vrel y V y
Vrel
z V blade V blade
z
STz
(3.28)
where the undisturbed wind speed V blade seen by the blades must account for the distribution of
0
wind shear specifically to the site and the presence of the tower (see equation (2.20)), and the
blade
V ST
is the structural velocity.
blade
The structural velocity V ST
takes into account the elastic velocity u& blade from the structural
response (from equation (3.20)), the elastic velocity u& bl tow seen by the blade from the
structural response of the tower; and the stiff body velocities from the barge for the blades
blade
V SB
(equation (2.7)). Thus the structural velocity of the blade takes the form
blade
blade
V ST
= u& blade + u& bl tow + V SB
V blade
tow blade
u& bl
STy u& blade
y
+ y
+ VT
blade
blade
blade
bl
tow
V
ST u& z
u& z
V L
z
(3.29)
When the tower deflects, the blade at each section p experiences a translation and a rotation
from the tower top defined by the shape functions from the equations (3.22) and (3.23) that
combined yield
*
*
0
y p z (t ) + z p y (t )
u bl tow (t , p ) = xt1 (t ) + x p *z (t )
xt (t ) x * (t )
2
1
p
y
424
3 14444244443
traslation
(3.30)
rotation
The angular deformations *z and *y are functions of the tower top deflection as
*z (t ) = const z xt1 (t )
*y
(3.31)
(t ) = const y xt2 (t )
39
where the constants const z and const y are found from the mode shapes, as the angular
deformations of the tower top when the tower top deflection is equal to one.
The velocity u& bl tow is found by differentiating equations (3.30) and (3.31) yielding
0
y p const z x& t (t ) + z p const y x& t (t )
1
2
24
1
42
3 14444444242444444443
traslation
(3.32)
rotation
Knowing the relative velocity and the corresponding angle of attack, the aerodynamic forces Ft
and Fn can be calculated from equation (2.16). The accelerations from the barge are seen as
unsteady inertia loads and must be also taken into account, and lastly, the gravity loads are
included as well. Therefore, the load acting on the blade takes the following expression
blade
Fblade = Faero
+
FGblade
blade
FSB
Fxblade
mblade AVblade
mblade g
F blade = F + a 0
blade
+ a14 mblade AT
14
y
t
blade
blade Fn
m
0
blade
L
Fz
(3.33)
where a14 is the transformation matrix from system 1 to system 4. Note that the force Fblade is
a force per length given in the system 4.
40
Chapter 4
The background and modeling were presented in previous Chapter 2 and 3. Before going into
the validation of the model, it is interesting to analyze whether the barge is stable under the new
WT loading. This chapter describes briefly the barge stability of the Viking Barge vessel under
the case of one upright WT. Further information is found in previous Figure 1.9 in Chapter 1.
4 BARGE STABILITY
The term barge stability refers to the tendency of the barge to return to its original state after
being exposed to a disturbance, i.e. buffets by wave or wind. It is important to know if the new
loading of upright wind turbines can be withstood by the barge. The stability analysis presented
here is focus on the transverse stability since the longitudinal stability is normally not critical
due to the small angles of trim. It is not the purpose here to carry out a thorough analysis of the
barge stability, but merely providing an idea of whether or not the barge is stable under normal
operation with the new loading. It is thus assumed that the deck of the barge will not be either
submerged or out of the water.
In the equilibrium state, the buoyancy force and weight must be equal and the two forces must
act along the same straight vertical line (Rawson and Tupper (1994, 90 Ref. [26])). If the barge
is subjected to a rotational disturbance as shown in Figure 4.1 below, the buoyancy force is
XG
XG
Mt
G
Buoyance
Force
B
ZG
Mt
B
Weight
YG
ZG
B1
Buoyancy
Force
Weight
GZ
YG
Equilibrium state
41
now displaced to some new position B1. The barge is subjected to a moment equal to the
buoyancy force times the arm GZ. If the barge is stable, this moment tends to restore it to its
original position and it is called the righting moment and GZ is termed the righting lever. The
righting lever GZ is used to build the curves of statistical stability. These curves present stability
in form of righting levers about the centre of gravity as the ship is heeled at constant
displacement. These curves are also named GZ curves.
For small values of rotation or heel, the buoyancy force is aligned with the metacentre Mt
which can be considered a fixed point, and GZ is approximately
GZ GMt sin GMt
(4.1)
(4.2)
The previous distances are defined in the following figure where K is known as the keel.
XG
GMt
B
K
KG
KB
BM t
Mt
B1
ZG
YG
It is said that the barge is stable when Mt lies above G, or in other words when GMt > KG.
For large angles of inclination, the metacentre Mt is not longer a fixed point, and GZ cannot be
calculated by using equation (4.1).
X
Courtesy of Ref.[25]
42
This means that at larger heeling angles it is necessary to determine the ships trim and
displacement, and then determine the position of the center of buoyancy B1 before it is possible
to determine GZ (see previous Figure 4.3). In Ref. [25], it is presented that for a single
condition, being fixed the displacement and GMt, GZ is calculated as
GZ = M T S + GMt sin
(4.3)
The stability-form MTS may also be expressed by means of a non-dimensional number, the
remaining stability coefficient CRS:
C RS =
MT S
BMt
(4.4)
In the simple case of a barge, MTS adopts the following expression (Ref. [25]) as long as the
edges are not either in or out of the water
M T S = 1 BMt tan 2 sin
2
(4.5)
where BMt is the transverse metacentric height of buoyancy (see Figure 4.2). BMt is defined as
the ratio between the moment of inertia Ixx and the displacement volume
BMt =
Ixx
(4.6)
The GZ curves can thereby be calculated for a series of inclinations. For current hydrostatic
calculations of any ship, the GZ curves are calculate for a wide range of inclinations fulfilling a
series of restrictions, which are not covered in this analysis; barring the restriction about GMt,
i.e. GMt > 0.15 m.
The new loading condition of upright WTs and its influence on the stability of Viking Barge
must be analyzed. Only the case with one upright WT is performed. The following section
presents this study.
(4.7)
where D is the ship height, T is the draft, and Bo is the maximum waterline breadth.
In Ref. [15], the stability book of the Viking Barge vessel is provided for a series of loading
cases under different operations varying ballasts, cargos and their configurations. GZ curves are
given for a wide range of inclinations. The information in Ref. [15] is used to validate the
43
calculation procedure described previously. Fairly good results are found when comparing the
GZ curves with those given by Ref. [15] for small inclinations. Further information is found in
Appendix F.
Once the procedure is validated, the case of one upright WT aligned with the COG of the ship is
studied. To provide a draft T around 2.5 m a series of ballast are used as depicted in the figure
below (shading ballasts). Besides, the fuel for departure is also added.
The COG of the system is calculated by considering the barge, the WT, ballasts and fuel (see
further in Appendix E)
COG = [ 47.166 ,
0,
(4.8)
5.604 ]
The COG is designed to be at the center line. The volume of displacement is solved considering
a seawater density of 1.025 Tn/m3. The draft is calculated as well as the length based on the
displacement volume and the geometry of the barge. GMt is then estimated by using equation
(4.2):
GMt =
2.498
+ 26.182 5.604
2
(4.9)
It is assumed that KB is half of the draft, and the moment of inertia corresponds to a perfect box
(see previous Figure 4.2). The metacentric height is then:
GMt = 21.83 m > 0.15 m
(4.10)
Figure 4.5 shows the GZ curve. The maximum inclination is found at an angle close to 15
degrees.
44
Rightling lever, GZ
5
4
3
2
1
0
Angle (deg)
10
15
It can be observed that for small angles the GZ curve follows a straight line proportional to GMt
as expected (i.e. dashed line in the figure). The restrictions in the GZ curve given by the
passenger ship regulations start within the angles greater than 30 degrees; it is then not possible
to check them in the previous GZ curve. Nevertheless, the last requirement about the GMt, i.e.
equation (4.10), is fulfilled. Therefore it is concluded that the Viking Barge vessel is able to
withstand the new loading condition of one upright WT aligned with the COG of the barge.
45
Chapter 5
Following the presentation of the theory and the modeling, as well as checked the barge
stability; the model barge/WT is validated by a series of comparisons with different references.
5 MODEL VALIDATION
The validation is the most striking aspects of any model, i.e. to design a model that represents
the reality with reasonable level of accuracy. Each part of the program is validated separately,
i.e. the barge program and the sea transport (WT). Further information is found in previous
Figure 1.9 in Chapter 1. A description of the model validation is only presented in this chapter;
Appendix G describes thoroughly the different comparisons for each model.
[17]
WT behaves as it should when applying tower deflections; i.e. the rotor should experience a
translation and a rotation (rigid body motions from the tower top).
Finally, the aerodynamic model and structural model are validated by comparisons with the
results from Siemens BHawC software. In this last comparison, three main cases are studied
and compared with the results given by Siemenss BHawC code. The cases are: (i) only wind
speed, (ii) only harmonic excitation at the tower top, and (iii) combination of wind speed and
harmonic excitation.
For all the cases, the WT does not rotate during the simulations. It is thereby in parked
condition. The blades are in the bunny-ear position. The simulation time is set to 240 sec.
Besides, three different cases of pitch angle are studied: 0, 45 and 82 in each loading case.
This last value of pitch angle corresponds to the parked condition, according to Siemens Wind
Power A/S.
BHawC code is an aeroelastic code developed by Siemens Wind Power A/S. BHawC has been
reviewed by the independent verification company DNV. BHawC enables both modal analysis
in the frequency domain and dynamic simulations in the time domain.
The WT structural model in BHawC is modeled by use of the fully geometrical non-linear corotational finite element technique as described in Siemens Wind Power technical documents.
Timoshenko beam elements are used to discretize the WT. Wind shear is included. The
aerodynamic loads on the WT are calculated by use of BEM, tower shadow effects are taken
into account as well. The aerodynamic loads accounts for the structural response in order to the
correct aeroelastic coupling.
As example, the comparison of tower top deflection in the fore and aft direction with this
provided by Siemens BHawC are shown in Figure 5.2. It is convenient since the limit during
the transport adopted for this project is the longitudinal acceleration at the tower top or nacelle,
meaning the second derivative of the deflections presented in the mentioned figure.
Here the results correspond only to the first case of the comparisons with BHawC, i.e. when the
WT is only subjected to wind loads; gravitational or any other external loads are set to zero. 15
m/s wind speed coming perpendicular to the WT is seleced. The wind is aligned with the
longitudinal or z axis (i.e. fore-aft direction). The sketch below shows the WT and the incoming
wind speed.
Note that a further, more detailed investigation of all three reference cases is carried out in
Appendix G.
47
100
80
60
15 m/s
40
20
0
SB - PS
fore - aft
Figure 5.1 Wind Shear, case of only wind speed
The figure below shows the comparison for three different cases of pitch angles: 0, 45 and 82.
0.14
0.12
0.1
0.08
0 Pitch
0.06
0.04
45 Pitch
0.02
82 Pitch
0
-0.02
50
100
150
Time (sec)
200
240
Figure 5.2 Comparison of the tower top deflections in the fore aft direction under 15 m/s
From the figure above, good results are found in the tower top deflections when a steady state is
reached after 150 sec. The next table depicts the mean values at the steady state. From the table,
it is checked that roughly 11% maximum relative difference is found for the cases of 45 and
82 pitch. As it was explained before, the deflection decreases when pitching the blades; thus,
the tower deflection in the case of 82 pitch is reduced 80% from the case of 0 pitch.
48
0 Pitch
0.0670 m.
0.0671 m.
45 Pitch
0.0417 m.
0.0374 m.
82 Pitch
0.0139 m.
0.0123 m.
Table 5.1 Fore-aft tower top deflection mean values at the steady state.
The model validation has been introduced in this section. Fairly good results are found in both
the barge part and the WT part. Even though some differences are found, a perfect match
between the program and the references are not sought; in Appendix G, it is described the
limitations of the program, and those must be taken into consideration in the sea transport
analyses. The next chapter presents the actual sea transport analyses.
49
Chapter 6
Following the process depicted in previous Figure 1.9 in Chapter 1, the sea transport analyses
are ready to be carried out. This chapter describes the results and discussion of a series of sea
transport analyses.
50
With regard to the sea state, wave scatter diagrams for the North Atlantic are used (Ref. [20]). A
series of significant wave heights Hs are selected with the criteria of having probabilities higher
than 30 parts per thousand; a range between 1 m and 5 m is thereby chosen. Wave periods are
selected in a range from 4 sec until 13 sec.
The wave-induced motions of the barge are analyzed. The heave, pitch and roll; as well as the
displacements, velocities and accelerations at each section of the WT are solved in the
frequency domain, and transformed to the time domain a posteriori. These motions are seen as
stiff body motions by the WT, and they are taken as prescribed motions at each time step.
Note that time series are generated for each motion (barge and WT section), but also for each
significant wave height, heading angle, and wave period. Therefore, in order to approach the
problem in an appropriate manner, it is required to cut down the variables.
Initial cases were performed, it was checked that due to the high roll period (i.e. 60.56 sec) the
transverse accelerations at the nacelle are expected to be less critical than the longitudinal
accelerations.
As regards to the vertical accelerations, further studies must be carried out to determine whether
or not they are important. They are not covered here due to the time frame of this project.
The longitudinal accelerations at the nacelle are presently selected as the limit for transportation.
The longitudinal acceleration calculated by the barge program only depends on the pitch motion
and the relative position (x coordinate) to the center of gravity of the system. Therefore, the
heading angles are reduced only to the case of head sea, since this is the case where higher pitch
angles are expected.
To reduce the time series to an affordable number, the wave periods must be reduced.
Calculations of the most probable largest values (MPL) of the pitch response are carried out for
a time frame of 3 hours (see Appendix B to further information about the MPL calculations).
The wave period that yields the highest pitch response is selected to calculate the corresponding
time series.
In order to obtain stable values, the simulation time must be higher than 20 min. Thus, a
simulation time of 30 min is selected for the sea transport analyses.
The results are presented in the following sections. First, the seakeeping analyses are introduced
and the most probable largest value for pitch is also calculated. Then, the sea transport analyses
of the WT are described.
51
Ballast and
considered.
5.60 m
General Dimensions
Lpp
(m)
91.44
Displacement
(ton)
5597
(m)
85.19
(m)
2.49
B0
(m)
27.43
KB
(m)
1.25
Depth
(m)
6.096
BMt
(m)
26.18
Cb
0.96
KG
(m)
5.60
CWP
GMt
(m)
21.83
0.9
Tn
(sec)
60.56
General data
Additional damping (%critical damping)
= 3.3
Energy Spreading
cos4
Series of Headings
FRFs
MPLs
Tz
(sec)
1m
2m
3m
4m
5m
The results of the frequency response functions for the heave pitch and roll response are
calculated. Note that the forward speed is set to zero.
52
In Appendix G section G.1., the barge program was validated, the seakeeping analysis of the
Viking barge vessel for the case of unassembled WTs was compared with this given by Vuyk
E.R. The frequency response functions for the heave, pitch and roll was checked as well as MPL
calculations were analyzed. It was discovered that the heave and pitch response presented some
limitations that must be taken carefully.
It has been found that the heave and pitch responses are also overestimated in the case of one
upright WT in the same regions as in the unassembled case (further information is found i
Appendix G section G.1). Thus, the heave response is overestimated for headings close to beam
sea.
Figure 6.1 shows the regions where the heave response is not well predicted.
Head Sea
= 180
Stardboard Bow
Quartering Sea
90 < < 180
= 99
= 261
Port Side
Beam Sea
= 270
Beam Sea
= 90
= 81
= 279
Stardboard Stern
Quartering Sea
0 < < 90
Following Sea
= 0
On the other hand, the pitch response is overestimated for angles roughly between quartering
sea to beam sea. Figure 6.2 shows the regions where the pitch response in overestimated.
53
Head Sea
= 180
Port Side Bow
Quartering Sea
180 < < 270
Stardboard Bow
Quartering Sea
90 < < 180
= 126
= 234
Port Side
Beam Sea
= 270
Beam Sea
= 90
= 306
= 54
Stardboard Stern
Quartering Sea
0 < < 90
Following Sea
= 0
Therefore, these regions are avoided in the calculations for the heave and pitch. In Figure 6.3,
the frequency response function for the heave is presented for a range of headings in the first
quadrant. Note that due to the symmetry conditions of the barge (i.e. starboard/port and foreaft), identical responses are found in the other quadrants.
1
0.9
0.8
0.7
w (m/m)
0.6
0.5
0.4
0.3
0.2
0.1
0
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
(rad/s)
= 0
= 18
= 54
= 72
It is noted that all the heave responses take a unit value for small wave frequencies, this happens
because small wave frequencies correspond large wave periods, and at these conditions the
54
vessel presents the same vertical displacement (heave) at the wave amplitude. By definition the
FRFs are prescribed to unit wave amplitudes (see Chapter 2 section 2.1 or Appendix B).
Figure 6.4 presents the frequency response functions for the roll motion for a range of headings
within the first quadrant. The roll period is rather high (i.e. 60.56 sec), this implies low roll
responses as shown in the figure.
Due to this barge approximation, there is a starboard/port symmetry that yields zero roll in head
seas. As expected, the highest response is found in beam sea conditions. It is seen that the peaks
are decreasing with decreasing heading angles; and the peaks are also found at lower wave
frequencies. Thus, the peak of 0.011 deg/m for beam sea is found at 0.94 rad/s, while the peak
of 0.0027 deg/m for 36 heading is found at 0.71 rad/s.
0.012
X: 0.94
Y: 0.01139
0.01
(deg/m)
0.008
0.006
0.004
X: 0.71
Y: 0.002741
0.002
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
(rad/s)
= 0
= 36
= 54
= 72
= 90
The results of the frequency response function for the pitch response are illustrated in Figure
6.5. These are presented for a range of headings within the first quadrant avoiding the areas
where the pitch is overestimated and also for head sea (see previous Figure 6.2).
55
4
3.5
3
(deg/m)
2.5
2
1.5
1
0.5
0
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
(rad/s)
= 180
= 18
= 45
= 54
= 90
Due to this barge approximation, there is a fore/aft symmetry that implies zero pitch in beam
sea. The higher peaks are found for all the cases at wave frequencies around 1.5 rad/s. Already
in the unassembled case, Vuyk E.R. predicted slightly higher responses for quartering sea
conditions. In Figure 6.5 above, higher pitch amplification than for head sea is found for the
heading of 45.. As it will be checked in the MPL calculations later, there is no significant
difference by choosing a heading of 45 or head sea (remember that the responses for following
sea or head sea are the same due to the symmetry conditions).
As it was explained at the beginning of this chapter, the number of variables must be reduced to
an appropriate number to create manageable time series. It is adequate to choose one heading
angle as well as one wave period; then different significant wave heights can be selected for
different cases of wind speed, according to correlation tables (i.e. Lloyd 1995, 63-65, Ref. [20]).
The heading angle and wave period can be determined by carrying out MPL calculations for the
pitch. The MPL for the pitch is calculated for a range of wave periods and significant wave
heights (see previous Table 6.1).
A JONSWAP wave spectrum for short-crested seaways on average of three hours, with a
spreading function of cos4 is used. Wave scatter data for the North Atlantic as presented in
Ref. [20] is utilized to identify the range of wave periods Tz. Figure 6.6 presents the wave
spectrum of 5 m significant wave height for wave periods varying between 4 and 12 sec..
56
14
12
10
S ( )
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
(rad/s)
Tz = 4 s.
Tz=5.5 s
Tz = 6 s
Tz = 7.5s
Tz = 12s
The MPL values for the pitch motion are presented in Figure 6.7 for the cases of 45 heading
and 180 heading.
7
MPL (deg)
10
11
12
13
Tz (s)
Hs = 1 m
= 45
Hs= 1 m
= 180
Hs = 2 m
= 45
Hs = 2 m
= 180
Hs = 3 m
= 45
Hs = 3 m
= 180
Hs = 4 m
= 45
Hs = 4 m
= 180
57
Hs = 5 m
= 45
Hs = 5 m
= 180
The peaks for both cases vary slightly between each other. For the heading of 45, the peaks are
slightly higher. For each heading the peaks are found at the same wave period, i.e. 6 sec for 45
heading and 7.5 sec for 180 heading. As expected, higher significant wave heights lead to
higher pitch angles.
Therefore, a heading of 180 and a wave period of 7.5 sec are selected to generate the time
series. The time series are calculated for each section of the WT. Recalling, the WT is
discretized into 95 sections (see further in Chapter 3)
The following section presents the final results of the sea transport analyses.
Pitched regulated WT
(deg)
82
(deg)
Tilt
(deg)
Cone
(deg)
Wing
(deg)
180
(kg/m )
0.11
1.225
Gravity
(m/s2)
9.81
(sec)
0.03
Simulation Time
Max Time
(sec)
1800
Wind Speed
Mean Wind Vel.
(m/s)
2.1
3.6
58
5.7
8.8
11.3
14.4
Fluctuations: Stochastic part of the wind, calculated according to equation (3.8), previous Chapter 3.
Wave-induced motions
Significant Wave Height (m)
15
Heading
180
(deg)
Tz
(sec)
7.5
The wind fluctuations are added to each mean wind speed. In previous Chapter 3, the equations
to calculate the stochastic part of the wind are presented (see equations (3.3) to (3.9)). Recalling,
the wind fluctuations are generated based on the Kaimal spectrum. Using the inverse of the
Fourier transform, the wind fluctuations are calculated. If the wind fluctuations are calculated
correctly, it must be possible to generate a spectrum response that matches with the Kaimal
spectrum.
The next figure shows the Kaimal spectrum used as well as the spectrum generated from the
wind fluctuations, it is called simulated spectrum. Because the amount of data was high, the
simulated spectrum is smoothed by averaging neighboring frequency bins; 20 points per decade
is chosen.
Spectrum, Sxx
10
10
-5
10
-10
10
-4
10
-3
10
-2
10
-1
10
10
10
10
Spectrum, Sxx
10
10
-5
10
-4
10
-3
10
-2
-1
10
10
10
Spectrum Frequencies, f
Kaimal Spectrum
10
10
Simulated Spectrum
From the figure above, it is checked that the method to generate the wind fluctuations is
consistent. Using previous equation (3.8) in Chapter 3, the incoming wind is calculated for a
59
particular mean wind speed. Figure 6.9 shows an example of a mean wind speed of 14.4 m/s. In
the figure, it is seen the wind fluctuations over a simulation time of 1800 sec (30 min.)
24
22
20
14.4 m/s
18
16
14
12
10
8
6
4
200
400
600
800
1000
Time (sec)
1200
1400
1600
1800
Figure 6.9 Wind fluctuations for a mean wind speed of 14.4 m/s.
The longitudinal acceleration at the nacelle (or tower top) is calculated for a range of significant
wave heights and mean wind speeds. According to correlation tables for the North Atlantic
(Lloyd 1995, 63-65, Ref. [20]), those probabilities higher than 30 parts per thousand are
selected. Table 6.3 below shows the summary of the simulations.
Correlations significant wave heights mean wind speeds
Hs = 1 m
2.1
3.6
5.7
Hs = 2 m
2.1
3.6
5.7
8.8
11.3
Hs = 3 m
5.7
8.8
11.3
14.4
Hs = 4 m
8.8
11.3
14.4
Hs = 5 m
11.3
14.4
Therefore, 17 simulations are performed. 17 time series for the longitudinal accelerations are
thus calculated. Then, the most probable largest values of the longitudinal accelerations are
solved by using equation (3.2) given in previous Chapter 3. Figure 6.10 shows an example of
the time series for the last simulation, i.e. 5 m significant wave height and 14.4 m/s mean wind
speed. The rest of the results are depicted in Appendix H.
60
0.6
0.4
aL Nacelle (m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure 6.10 Time series of the long. acceleration at the nacelle , Hs = 5 m, V0 = 14.4 m/s
The next table shows the final results for the MPL of the longitudinal accelerations for all the
simulations.
Longitudinal accelerations at the nacelle (m/s2)
Mean Wind Vel .(m/s)
2.1
3.6
5.7
Hs = 1 m
0.094
0.100
0.115
Hs = 2 m
0.141
0.144
Hs = 3 m
Hs = 4 m
8.8
11.3
0.154
0.179
0.203
0.207
0.226
0.246
0.277
0.278
0.294
0.319
0.345
0.368
Hs = 5 m
14.4
From the table above, it is seen that all cases fulfill the adopted limit for transportation of 9.8
m/s2(see equation (3.1) in Chapter 3). The Viking Barge vessel is highly stable, small pitch
angles are experienced. The WT is thereby almost unaffected by the waves. The parked position
minimizes the aerodynamic loads.
More steps are to be taken in order to answer the question of whether or not fully assembled
upright WTs can be transported. This is explained later in the section Future Development.
61
Conclusions.
CONCLUSIONS
A program that calculates sea transport analyses for a given barge/WT configuration is
presented. One upright WT is selected as the scenario for the sea transport analyses. The waveinduced motions of the system barge/WT are calculated based on a series of closed-form semianalytical expressions derived by Jensen et al.[17]. Then, the corresponding aeroelastic response
of the WT is analyzed during sailing. Validations of each module of the program, i.e. barge and
WT, are carried out. Good agreements are generally found..
However, some considerations must be taken into account. The closed-form expressions for the
wave-induced motions are simplified and some limitations in the method are found. The heave
and pitch responses are not well predicted for heading angles close to beam sea, and between
quartering sea to beam sea, respectively. With regard to the roll response, the selection of the
additional damping influences highly the results. A manual selection must be done.
The WT aeroelastic model shows good agreement in the natural frequencies for the first 3
modes, yielding 8% maximum relative difference for the second flapwise mode. The shape
function expressions illustrate expected results. The aeroelastic response of the WT is in general
well predicted compared to the results by BHawC at the steady state; it must be taken into
consideration the differences that both programs have by definition. Different initial conditions
are used in the comparisons. The structural model is different, only a few DOFs are selected in
the program to discretize the WT with reasonably level of accuracy. BHawC utilizes induced
velocities in the calculus of the aerodynamic loads, and different tower shadow models are
implemented. All of this implies some differences in the results. Nevertheless, good results are
found in the longitudinal displacement of the tower top for all cases, concluding that the desired
longitudinal accelerations at the tower top calculated in this project provide reliable results.
The stability of the barge is also checked and good results are found for the case of no
submersion/immersion of the barge edges under the selected loading condition.
Longitudinal accelerations at the nacelle or tower top are chosen as the limit for transportation.
Results below the limit are obtained for all the combined cases of significant wave heights and
wind speed for the North Atlantic. Transverse and vertical accelerations must be further studied
to provide some conclusions.
Concluding, the first steps to transport upright WTs indicate good results and room for further
investigations.
62
Future Development.
FUTURE DEVELOPMENT
To answer completely the question of whether or not upright WTs are possible to be transported
on barges from both engineering and economic points of view is difficult in the time frame of
this work. Therefore, multiple further steps can be done. Some of them are described in this
section.
The first step would be to analyze the transverse and vertical accelerations at the nacelle as well
as structural response of other turbine parts (e.g. tower and blades). Other criteria can be found
as limits of transportation. For example, correlations between tower bending moments, sea
states and ultimate stresses may provide useful information about the transport..
Then, different configurations of WTs-barge-ballasts must be studied in order to find an
optimum. Influences on the loads regarding the location and direction of the WTs on the barge,
and changes in the ballasting might contribute in the sensitivity analyses to find the optimum.
Furthermore, one specific barge was only analyzed here, studying different barge dimensions is
also interesting.
The effect that the dynamic response of WT causes on the barge stability is not modeled here. A
full coupling between both modules, i.e. barge and WT, should be done to study the barge
stability completely.
A sensitivity analysis by changing the pitch angle in the blades might provide useful
information. It was selected a pitch of 82, because it corresponds to the parked condition, but
perhaps there is an optimum that minimizes the loading during a sailing.
Turbine mounted on flexible barges may also be interesting to study, analyze the influence on
the dynamic of the WT when the barge is also part of the structure; as well as the influence of
attachment of the turbine such as supports or bracings
From a broader perspective, studies with respect the availability of the ports, their crane
capacity, different layouts of the ports to optimize pre-assembly yards would be the logical
steps to tackle the economic point of view of the problem.
63
REFERENCES
[1] Beatrice Wind Farm Demonstrator Project [2009] The project timeline, Available from
World Wide Web: www.beatricewind.co.uk. Talisman Energy Ltd, Aberdeen, Scotland, UK.
[2] British Wind Energy Association [1998] Prospects for Offshore Wind Energy. Contrat
XVII/4.130/Z/98-395. London, UK.
[3] Commission of the European Communities [2008] 20 20 by 2020. Europes climate change
opportunity COM(2008) 30 final. Brussels, Belgium.
[4] Dudson E., Willbourm M., and Brook-Hart W. [2009] The transport and installation of
Concrete Foundations. Presentation and paper in the European Offshore Wind 2009. BMT
Nigel Gee Ltd and Gifford, Stockholm, Sweden.
[5] European Wind Energy Association [2007] Delivering Offshore Wind Power in Europe.
Policy Recommendations for Large-Scale Deployment of Offshore Wind Power in Europe by
2020. Brussels, Belgium.
[6] European Commission - Energy [2009] Targets of 20% by 2020 [online]. Renewable
Energy - Targets. Available from World Wide Web: http://ec.europa.eu/energy/index_en.htm.
[7] European Commission - Energy [2008] Renewable Energy Fact Sheet [online].
Directorate -General for Energy and Transport. Available from World Wide Web:
http://ec.europa.eu/energy/index_en.htm.
[8] European Offshore Wind [2009] Programme overview. Available from World Wide Web:
www.eow2009proceedings.info.
[9] Faltinsen, O.M., [1995] Sea Loads on ships and offshore structures. Cambridge Ocean
Technology Series. Cambridge University Press.
[10] Friis, A.M., Andersen P., [2000] Ship Design: Part 1. Department of Naval Architecture
and Offshore Engineering. Technical University of Denmark. DTU
[11] Hansen, M.O.L., [2008] Aerodynamics of Wind Turbines. 2nd Edition Earthscan.
London Sterling, VA.
[12] House of Lords [2008] The EUs Target for Renewable Energy Volume 1. Report.
London, UK.
[13] Inman, D.J. [2007] Engineering Vibration. 3rd Edition Prentice Hall. New Jersey, USA.
64
References.
[14] Intergovernmental Panel on Climate Change [2007] Fourth Assessment Report: Climate
Change 2007. Synthesis Report (SYR) Summary for Policymakers (SPM) [online]. Available
from World Wide Web: http://www.ipcc-nggip.iges.or.jp/.
[15] International Ship Consultants A/S [1995] Loading Manual Including stability book
for < Probarge 2 > . Naval Architects and Marine Engineers Marine Surveyors. Siemens Wind
Power A/S (internal document).
[16] Jensen, J.J., [2001]. Loads and global response of ships. Elsevier Ocean Engineering
Book Series vol.4. Elsevier.
[17] Jensen, J.J., Mansour, A.E. and Olsen, A.S. [2004], Estimation of Ship Motions using
Closed-Form Expressions, Ocean Engineering, Vol. 31, pp 61-85.
[18] Kleipool, C. [2008], Optimization of the Transport and Installation of Offshore Wind
Farms, Thesis, Delft University of Technology Siemens Wind Power A/S. Delft, the
Netherlands.
[19] La Tene Maps [2009], Offshore Wind Farm Projects, Map in collaboration with EWEA.
Available from World Wide Web: www.latene.com
[20] Lloyd, A.R.J.M., [1995]. Seakeeping: Ship Behaviour in rough weather. A R J M Lloyd.
[21] Lynderup H.F., [2009], Innovations in transport and installation methods, Presentation in
the European Offshore Wind 2009, Siemens Wind Power A/S, Stockholm, Sweden
[22] Mansour, A.E., Jensen, J.J. and Olsen, A.S. [2004], Fast Evaluation of the Reliability of
Container Securing Arrangements, 9th Symposium on Practical Design of Ships and Other
Floating Structures, pp 577-585. Luebeck-Travemuende. Germany.
[23] Myhr A., Moss D.W., and Nygaard T.A. [2009], Large scale assembly and erection of
floating offshore wind turbines. Presentation and paper in the European Offshore Wind 2009,
Department of Mathematical Science and Technology, the Norwegian University of Life
Sciences (UMB), Stockholm, Sweden
[24] Nielsen, M. [2008], Notes of wind resources and loads on wind turbines, Course,
Technical University of Denmark.
[25] Pedersen, P.T. [2000], Grudlggende. Skibs-og Havteknik, Institut for Skibs-og
Havteknik, Technical University of Denmark (DTU).
[26] Rawson, K.J., and Tupper, E.C. [1994], Basic ship theory: 1: Hydrostatics and strength,
4th edition. Longman, London.
65
[27] Ruer J., Decrin M.K., Tosello A., and Colmard C. [2009], New offshore wind turbines
installation device dubbed Castoro Vento. Presentation and paper in the European Offshore
Wind 2009. Saipem SA, Stockholm, Sweden
[28] Sea of Solutions [2009], F2F Wind Energy Concept, pdf document. Available from
World Wide Web: www.seaofsolutions.nl. Vlaardingen, the Netherlands.
[29] Siemens Wind Power A/S [2009] Wind Turbine 2.3 MW B45, Brochure.
[30] Simn, J.M., Johansen N., and Danyluk R. [2009], Design and experimental testing of
new scour prevention devices for offshore wind turbine monopile foundations, Poster
presentation and paper in the European Offshore Wind 2009, Department of Mechanical
Engineering, Technical University if Denmark, Stockholm Sweden.
[31] Simn, J.M., [2008], Offshore Transportation of Wind Turbine Components, Report
version 2. Siemens Wind Power A/S (internal report).
[32] Sumer B. M., and Fredse J., [2002], The Mechanics of Scour in the Marine
Environment, World Scientific, River Edge, NJ.
[33] Thomsen, K.E., [2009], Second generation transport and installation of offshore wind
farms, Presentation in the European Offshore Wind 2009. Advanced Offshore Solutions (Aps).
Stockholm, Sweden.
[34] Vuyk Engineering Rotterdam [2008], Motion analysis Viking barge, Motion Analysis
Wind Turbine Generator Transport. Siemens Wind Power A/S (internal report).
[35] Wikipedia [2009], List of offshore wind farms, Available from World Wide Web:
http://en.wikipedia.org. January.
[36] ye S. [2008], Aeroelastic Modelling of Wind Turbines, Project in Wind Turbine
Aeroelasticitys Notes. Department of Mechanical Engineering, Technical University of
Denmark DTU.
66
Chapter Appendixes
A. APPENDIX. LIST OF OFFSHORE WIND FARMS
Table of Contents
A.
A.2
A.3
List of Tables
Table A.1 Wind farms in operation (Updated to Sep 2009) ....................................................... 69
Table A.2 Offshore Wind Farms under Construction (Updated Sep 2009) ................................ 69
Table A.3 Proposed Offshore Wind Farms (Updated Jan. 2009)................................................ 71
This appendix presents the list of OWFs in operation, under construction, and the proposed
wind farms (see further in Ref. [19] and [35])
Inst. Capacity(MW)
Country
60
Germany
N. Turbines x model
6 x 5 REpower
and
Commis.
2009
6 x Multibrid M5000
Arklow Bank
25
Ireland
90
Beatrice
Blyth
Bockstigen
7 x 3.6 GE
2004
UK
30 x Vestas V90-3MW
2006
10
UK
2 x Repower 5 MW
2007
UK
2 x Vestas V66-2MW
2000
2.75
Sweden
1998
67
Burbo Bank
90
UK
25 x Siemens 3.6-107
2007
108
Netherlands
36 x Vestas V90-3MW
2006
Frederikshavn
10.6
Denmark
2003
1 x Nordex
Hywind
2.3
Norway
1 x Siemens/StatoilHydro
2009
Horns Rev
160
Denmark
80 x Vestas V80-2MW
2002
Horns Rev II
209
Denmark
2009
Irene Vorrink
16.8
Netherlands
1996
Kemi Ajos I + II
30
Finland
10 x WinWinD 3MW
2008
Kentish Flats
90
UK
30 x Vestas V90-3MW
2005
Lely
Netherlands
1994
Lillgrund
110
Sweden
48 x Siemens 2.3MW
2007
194
UK
54 x Siemens 3.6MW
2008
Middelgrunden
40
Denmark
20 x Bonus 2MW
2001
North Hoyle
60
UK
30 x Vestas V80-2MW
2003
166
Denmark
72 x Siemens 2.3MW
2003
Princess Amalia
120
Netherlands
60 x Vestas V80-2MW
2008
Sams
23
Denmark
10 x Siemens 2.3MW
2003
Scroby Sands
60
UK
30 x Vestas V80-2MW
2004
Thornton Bank I
30
Belgium
6 x REpower 5MW
2008
Tun Knob
Denmark
10 x Vestas 500 kW
1995
Utgrunden
10.5
Sweden
5 x GE 1.5MW
2001
Vindeby
Denmark
11 x Siemens 450 kW
1991
Ytrre Stengund
10
Sweden
68
5 x NEG Micon 2 MW
2002
1750 MW
Total
8 countries
728 WTs
1991-2009
Inst. Capacity(MW)
Country
Avedre
7.2
Denmark
Donghai Bridge
Wind Farm
Shangai
100
China
BARD offshore I
400
Frederikshavn II
12
Gasslingegrund
30
N. Turbines x model
Expected
Not decided
2009
34 xSinovel 3MW
2010
Germany
Not decided
2010
Denmark
Not decided
2010
Sweden
Not decided
2009
Greater Gabbard
500
UK
2011
172
UK
48 x Siemens 3.6-107
2010
Ormonde
150
UK
Not decided
2010
Rhyl Flats
90
UK
25 x Siemens 3.6-107
2009
Rdsand II
200
Denmark
72 x Siemens 2.3-93
2010
Robin Rigg
180
UK
60 x Vestas V90-3MW
2009
Sheringham Shoal
315
UK
88 x Siemens 3.6-107
2011
Sprog
21
Denmark
Not decided
2009
Thanet Offshore
Wind Project
300
UK
2010
Bligh Bank
165
Belgium
55 x Vestas V90-3MW
2011
2650 MW
6 countries
Total
Table A.2 Offshore Wind Farms under Construction (Updated Sep 2009)
69
2009-2011
Inst. Capacity(MW)
Country
1500
UK
Baltic 1
48
Germany
Borkum West II
400
Germany
Borkum Riffgat
220
Germany
Atlantic Array
Breeveertien II
350
Netherlands
Buzzards Bay
300
USA
Butendiek
300
Germany
Cape Wind
420
USA
Dantysk Offshore
400
Germany
Delaware Offshore
200
USA
800
Germany
1600
Canada
Gwynt Mr
750
UK
Innogy Nordsee I
960
Germany
Korsnas
600
Finland
Liepaja Offshore
900
Latvia
250
UK
London Array
1000
UK
Neart Na Gaoithe
420
UK
330
Ireland
620
UK
70
N. Turbines x model
Year.
Shell Flat
180
UK
Superior Array
650
Canada
Trillium Power I
710
Canada
Trillium Power II
740
Canada
1200
UK
450
UK
Wasatch Wind
4400
Canada/USA
West Duddon
Wind Farm
500
UK
22000 MW
8 countries
Total
71
Introduction ............................................................................................................... 72
B.2
B.3
B.4
of the cargo............................................................................................................................. 81
B.5
B.6
List of Figures
Figure B.1 Ship sailing in a short-crested seaway and for a following sea ................................. 86
Figure B.2 Terminology for short-crested seaways .................................................................... 87
List of Tables
Table B.1. General Ship Displacements...................................................................................... 73
B.1 Introduction
The wave-induced motions and loads on ships can be calculated from the linear strip theory.
This theory considers the ship in incident regular waves of amplitude a with a small wave
steepness, i.e. the waves are far from breaking. Thus, the linear theory poses that the waveinduced motions and load amplitudes are proportional to a.
The sea is considered irregular; but nevertheless, results in irregular waves can be obtained by
adding together results from regular waves of different amplitudes, wavelengths and
propagation directions, and thereby, the problem is simplified to a set of regular waves problems
(Faltinsen 1995, 37 Ref. [9]).
72
In this section, the frequency response functions for the wave-induced motions and
accelerations on ships are thus calculated based on the linear strip theory. Particularly, the
method is established according to the closed forms expressions from Jensen et al. (2004 Ref.
[17]) and Mansour et al. (2004 Ref. [22]). Besides, the displacements, velocities, and
accelerations at any position of the ship can be analyzed relative to the center of motion of the
ship from these frequency response functions.
Notation/Index
Units
Positive
Surge
u/1
m.
forward
Sway
s/2
m.
to PS
Heave
w/3
/4
m.
up
rad.
SB side down
rad.
bow down
rad.
bow to portside
Roll
Pitch
Yaw
/5
/6
Under the linear theory, it is possible to obtain results in irregular seas by linearly superposing
the results from regular wave components. The equations of motion for a ship with
port/starboard symmetry are described as follows (Lloyd 1998, 68-83 Ref. [20]):
( ))
&& + b53 w& + c53 w + (I 55 + a 55 )&& + b55 & + c55 = Fwave5 sin(t + Total ( ))
a 53 w
&& + b33 w& + c33 w + a 35 && + b35 & + c35 = Fwave3 sin t + Total
Heave: ( m + a33 )w
w
Pitch:
Roll:
(B.1)
()
where the Iij terms are the moments of inertia, the added mass coefficients aij, damping bij and
restoring cij quantify the forces and moments required to sustain the motion of the ship, and
is the frequency of encounter described later.
The complete ship-wave system is considered a damped system with forced vibrations. This
problem is tackled by using the Method of Undetermined Coefficients that explains the solution
as the sum of a particular solution and the homogenous solution, or in other words, as the sum
of a steady state response and the transient response, respectively.
73
The homogenous solution is well-known since it depends on the initial conditions and will
decay exponentially with time. It is assumed a steady state condition. This implies that the
particular solutions are harmonic solutions with the same frequency as the harmonic forces
and moments induced by the waves. The frequency of encounter takes into account the wave
frequency as well as the forward speed and the ship heading.
The solutions are expressed in terms of the encounter frequency , the response amplitudes
and phase lags for particular wave amplitude a:
Pitch : (t ) = a ( ) cos t
w
Total
+
( )
(B.2)
The response amlitudes are named also frequency response functions. By introducing a
complex representation into the solutions yields a relationship between the response amplitudes
( ) = K ( )
[m m]
[rad m]
[rad m]
(B.3)
By definition, the complex transfer function is defined as the response to a unit (normalized)
force. The frequency response functions, the response amplitude operator and the complex
transfer function are then related as:
Heave : RAO w = W2 ( ) = K w ( )
Pitch : RAO = 2 ( ) = K ( )
RAO = 2 ( ) = K ( )
(B.4)
Roll :
It is appropriate to differentiate between the frequency response functions and the response
amplitude operators (RAOs) often described in the literature. R is denoted as the frequency
response function for a particular response R, while R2 is the RAO for the particular response R
(Jensen 2001, 152 Ref. [16]).
74
The main dimensions of the ship such as length (L), maximum waterline breadth (B0),
draught (T), block coefficient (Cb), water plane coefficient (CWP), transverse metacentric
height (GMT) and natural period of rolling (TN).
The governing equations for the complete ship-wave problem are simplified to the following
equations of motion in regular waves with unit wave amplitude a, considering a homogenously
loaded box-shaped vessel, neglecting coupling between heave and pitch as well as the roll from
the other transverse motions (sway and yaw), and assuming a constant sectional added mass
equal to the displaced water:
Heave : 2
Pitch : 2
kT
2
&& +
w
A2
kB 3
w& + w = aF cos( t )
kT &&
A2 &
+
+ = aG sin( t )
2
kB 3
(B.5)
Roll :
TN
Here k is the wave number, the wave frequency 2 = kg ; B and T are the breadth and
draught of the box, respectively; TN is the natural period for roll, C44 the restoring moment
coefficient, B44 the hydrodynamic damping, F and G are the forcing functions, M is the
excitation moment, and is the frequency of encounter found as a function of the wave
frequency, forward speed of the ship V, and heading angle : = kV cos .
The solutions to the previous equation introducing a complex notation yield the following
frequency response functions:
Heave : w = F
Pitch : = G
Roll :
TN
2
+ 1 C 2 + 2 B 2
44
44
75
1/ 2
[m m]
[rad m]
[rad m]
(B.6)
[17]
However, it has been considered convenient to simply depict the expressions used in the
calculations, since there have been some modifications from the original paper.
The parameter is defined as:
2 A2
= 1 2 kT 2 +
kB 2
(B.7)
A = 2 sin kB 2 exp( kT 2 )
2
(B.8)
gL as:
= 1 Fn kL cos
(B.9)
2
k L
sin e
ke L 2
ke L ke L
k L
G = f
sin
cos e
2
(k e L )2 L 2 2
24
(B.10)
(1 kT )
A2
+
kB 3
(B.11)
(B.12)
For the rolling calculations, the ship is model as two prismatic beams in order to capture the roll
motion with the same draught but different breadths B0 and B1 and cross sectional areas A0 and
A1. The ratio between the breadth of the two beams is found such that the water plane
coefficient CWP is the same for the real ship and the model. Thus, the breadth ratio is found as:
The expression for the Smith Correction factor is already modified from the expression depicted in the
original paper by Jensen et al. (2004 Ref. [17]) according to the latest update of the formula.
76
B1 CWP
=
B0
1
(B.13)
where the length parameter is given as input and it takes into account how the ship is divided
into the two beams and it must be smaller than CWP.
Moreover, it is assumed that the draught of the forward and aft beam is the same and hence the
area of the forward beam is A1 = A0.
The natural period for roll TN must be given as input, C 44 = gGMT is the restoring moment
coefficient, where is the displacement ( = C b LBoT ) and GMT is the transverse metacentric
height that must also be given as input.
B44 is the hydrodynamic damping for the ship. The hydrodynamic damping is calculated as the
sum of the inviscid hydrodynamic or wave damping B44_inv and the viscose roll damping B44_visc.
The viscose damping is considered as an additional damping by adding a percentage of critical
damping to the inviscid wave damping. The critical damping is defined as
B44 _ cr =
C 44 T N
(B.14)
(B.15)
(B.16)
where the ratio of the sectional damping for the two beams elements ~ is defined as:
b44 ,1
~ 2 =
b44 ,0
(B.17)
The sectional damping for the two beams are approximated by using the following Frank close
fit method
77
b44 ,0 =
A0 B0 2
B0
2g
(B.18)
b44 ,1 =
A1 B1
B1
2g
where the functions a(B/T), b(B/T) and d(B/T) for the beams are assumed to be linear in B/T
adopting different expressions depending on the block coefficient Cb. This limit is usually
established to a value of 0.55. Different expressions are thus adopted:
[Triangular Section Approximation for beams]
C b 0.55
B
b(B / T ) = 0.11 T 2.55 [3 B / T 6 ]
d (B / T ) = 0.033 B 1.419
(B.19)
In Jensen et al. [17], it describes expressions for the case of C b > 0.55 with narrow valid interval.
It was found that often vessels have B/T ratios out of the formal range. New expressions were
provided by Siemens to cover a wider spectrum:
78
a (B / T ) = 3.94 B + 13.69
B
b(B / T ) = 2.12 1.89
[1 B / T 3]
T
B
d (B / T ) = 1.86 7.97
T
a (B / T ) = 1.87
(
[3 < B / T < 5]
b B / T ) = 8.25
C b > 0.55
d (B / T ) = 2.39
a (B / T ) = 21.358
[5 B / T < 10]
b(B / T ) = 7.9
d (B / T ) = 8.516
a (B / T ) = 41.407
b(B / T ) = 7.867
[B / T 10 ]
d (B / T ) = 6.161
(B.20)
g 2 2
ke
(B.21)
1/ 2
The phase angles or phase lags between the motion components are found from the equations of
motion for heave, pitch and roll in the previous section according to the expressions described in
Mansour et al. (2004 Ref. [22]). The coupling between different motions has been neglected in
all three equations.
The phase angle for heave is made up of two components, the phase angle of the forcing
function force, i.e. the excitation force in heave relative to the incoming wave; and the phase
angle for the heave w relative to the forcing function
79
kB 3 f
tan force =
1 kT
Total
f
= force + w
w
A2
kB
tan( w ) =
[ 180 w 0 ]
2
1 2 kT
A2
(B.22)
The equations of motion for heave and pitch have the same coefficients, but the amplitudes of
the forcing functions are different. The two motions are 90 degree out of phase. Therefore, the
phase angle for pitch Total is calculated as:
Total = Total
(B.23)
The phase angle for roll is made up of two components, the phase angle of the roll excitation
moment relative to the wave moment; and the phase angle for the roll relative to the excitation
moment :
H cos(0.5 kL cos ) + E sin(0.5 kL cos )
M
tan( moment ) =
E cos(0.5 kL cos ) H sin(0.5 kL cos )
M
B44
1/ 2
2
2 TN
2
2
2
+ 1 C + B44
44
tan =
180 0
2
2 N + 1 C 44
1/ 2
2
2 TN
2
2 2
+
1
C
+
44
44
(B.24)
Total = moment +
(B.25)
( )
where
80
H = b44 ,0 ~
(B.26)
Vertical Disp. :
uV = w x0 + y 0 = a w ( ) cos t + Total ( )
w
(B.27)
x0 a ( ) cos t + Total ( )
+ y 0 a ( ) cos t + Total ( )
The previous expressions are established assuming small angles for pitch and roll. The relative
displacements can be written in terms of harmonic expressions as follows:
81
Longitudinal Disp. :
u L = z 0 a ( ) cos t + Total ( ) = a U L ( ) cos t + Total ( )
Transverse Disp. :
Vertical Disp. :
(B.28)
uV = a w ( ) cos t + Total ( )
w
x0 a ( ) cos t + Total ( )
The expression for the vertical displacement is described somehow in Mansour et al. (2004 Ref.
[22]) when it is explained how to calculate the forces in lashed containers. Considering some
simple trigonometric equations, the frequency response functions for the displacements can be
obtained by
Longitudinal Disp. :
[m m]
U L = z 0 ( )
Transverse Disp. :
[m m]
UT = z 0 ( )
Vertical Disp. :
w ( )2 + x 2 ( )2 + y 2 ( )2
0
(B.29)
UV =
2 x0 w ( ) ( ) cos Total ( ) Total ( )
[m m]
The expressions for the frequency response functions for the velocities and accelerations are
straight forward:
82
Longitudinal Vel. : VL = U L ( )
Transverse Vel. :
VT = UT ( )
Vertical Vel. :
VV = UV ( )
Longitudinal Acc. : AL = 2 U L ( )
Transverse Acc. :
AT = 2 UT ( )
Vertical Acc. :
AV = 2 UV ( )
[m ms]
[m ms]
[m ms]
m
ms 2
m
ms 2
m
ms 2
(B.30)
(B.31)
to S ( )d . This Gaussian process is completely described by the spectral density S() often
0
83
S (, H S ,TS , ) = S PM (, H S ,TS )
1
F1
1 0.206 F T 1 2
2 S
exp
2
[m s]
2
(B.32)
(B.33)
(B.34)
whereas
= 0.07
if 0.206 F2TS 1
= 0.09
(B.35)
When takes a value of 3.3, the wave spectrum is called the Standard JONSWAP Wave
Spectrum. Often, the zero-upcrossing period TZ is given rather than TS. Therefore, the following
(10.89 + )(5 + )
(B.36)
6.774 +
It was shown that the wave elevation can be analyzed as a stationary stochastic process. The
response is conveniently found by Fourier transformation. Due to linearity the response2 R to
the wave elevation, the response spectral density R (SR) can be found as (Jensen 2001, 157-159
Ref. [16]):
S R ( ) = R2 ( )S ()
(B.37)
Hence, the standard deviation R of a linear wave-induced response R for long-crested waves
i.e. the wave crests remain straight and parallel (Lloyd 1998, 55 Ref. [20]) is given as:
Note that R refers to ship motions, displacements, velocities or accelerations of the cargo
84
2 = R2 ( )S ()d
R
(B.38)
The former expression takes into account that the incoming wave is unidirectional and is aligned
with the heading angle . In order to perform the integration either the frequency of encounter
should be expressed in terms of the wave frequency or vice versa. In fact, wind driven
waves are generated in all directions relative to the wind, although an easily recognized
primary direction aligned with the local wind may be distinguished. This fact can be ignored
and assume that the wave system is long-crested which for many purposes may provide
acceptable results; nonetheless, the degree of wave spreading does have a profound influence on
ship motions (particularly roll) and its effect cannot be ignored (Lloyd 1998, 55 Ref. [20]).
Hence, the wave spectrum S(,) must be defined for all different angles relative to the wind
(the angle between the wind direction and the wave direction), and wave frequencies. This wave
spectrum characterizes short-crested seaways and is calculated as:
S (, ) = S () f ( )
(B.39)
f ( )d = 1
(B.40)
It is assumed that only very small waves are generated opposite to the wind direction, therefore,
the spreading function is zero for those values. The spreading function f() is usually taken in
the form:
n
A cos
f ( ) = n
0
n = 2
with
n = 4
2
2
elsewhere
-
A2 =
A4 =
8
(3 )
(B.41)
2 = S ( ) R2 (, ) f ( )dd
R
(B.42)
where is the angle between the ship heading and the wind direction as long as the wind
direction is not considered aligned to the primary wave direction, otherwise it is the same as the
85
ship heading. The response amplitude operator R2 (, ) must be calculated for a number of
heading angles described as: = covering the range defined by the spreading function
f(), see Figure B.1 below.
Wind
Wave
component
= Heading
Figure B.1 Ship sailing in a short-crested seaway and for a following sea
To calculate the response amplitude operator for the response R for all different headings, the
following should be taken into consideration:
Firstly, the ship heading is defined as the angle between the ship direction and the
primary wave direction, this angle is anticlockwise as is depicted in the previous
picture.
Secondly, it is assumed that the primary wave direction is aligned to the wind direction,
hence is the same as the ship heading; furthermore, the relative angle between the
wind direction and the wave direction is zero for this particular case of wave
direction.
Thirdly, is defined from the wind direction to different wave directions, often called
secondary wave directions in the literature (Lloyd 1998, 55 Ref. [20]), being positive
clockwise and negative anticlockwise.
Finally, the ith- heading angle is defined as i = i for a number of wave directions
within the spreading region.
Figure B.2 shows a sketch with the terminology employed in the short-crested calculations in
order to clarify the idea better.
86
i =
225
+=
90
= 90
Sp Lim
re i t o
ad f
in
g
=
ding
Hea
Ship
ith - wave
direction
Ship Direction
Wind Direction
(aligned with primary
wave direction)
= 0
Sp Lim
re it o
ad f
in
g
In the short-term analysis, the most probable largest (MPL) value MPLmax
for a linear waveR
induced response R is often used. Note that there is still a probability for the response R to
within the period of time selected:
exceed MPLmax
R
MPLmax
R =
t
2 ln
R
TZ
(B.43)
where t is the short period of time selected, often selecting three hours as limited time.
The frequency response functions (FRFs) for the heave and pitch are found by modeling
the ship as a simple box, whereas for roll the ship is modeled by two prismatic beams in
order to capture the roll motion.
A constant sectional added mass is equaled to the displaced water in the responses for
heave and pitch.
87
The roll motion is decoupled from the other transverse motions (sway and yaw).
The expressions to calculate the displacements are developed assuming small angles for
pitch and roll.
The method presents some limitations. The weakest point of the method is found in the selection
of the additional damping. There is not any available procedure to estimate this additional
damping. A manual selection is currently done. Others limitations are found depending on the
heading angle. Jensen et al.[17] already mentioned in their paper that the heave response
undergoes higher dynamic amplifications in beam sea conditions.
Thus, these limitations must be taken into account when analyzing the results. However, the
present method has been considered applicable for the purpose of this study.
With regard to the short term predictions, the most probable largest values are calculated by a
stochastic o random process assuming:
Linearity between the responses, i.e. ship motions, displacements, velocities and
accelerations, and the wave elevation.
2 , 2] .
The limitation of this procedure will depend on the better or worse estimations of the FRFs for
the ship motions, displacements, velocities, and accelerations of the cargo, since they are
directly related. As it was mentioned before heave responses are normally overestimated in
beam sea conditions; therefore, it will bring some uncertainties in the determination of the
MPLs for those conditions. In Appendix G, some more insight about this issuet is provided.
88
Introduction ............................................................................................................... 89
C.2
C.3
C.4
List of Figures
Figure C.1 Scheme of WT aeroelastic model.............................................................................. 90
Figure C.2. Wind Turbine Blade ................................................................................................. 91
Figure C.3 Velocity triangle seen locally on a blade section ...................................................... 92
Figure C.4 Orientation of principal axis...................................................................................... 94
Figure C.5 Pitched mode shapes ................................................................................................. 97
C.1 Introduction
This appendix describes the WT theory for this report. More detailed information has been
considered convenient here to provide a general idea of the problem. The appendix finalizes
with the description of the procedure to obtain the mode shapes for the blades and tower, as well
as some considerations regarding the adopted time integration scheme.
The aeroelastic model of the WT considers the combination between the aerodynamic loads and
the elastic deformation of the structure. The aerodynamic loads depend on two factors: (i) the
relative velocity, and (ii) the corresponding angle of attack.
When the aerodynamic loads are acting on the WT, they deflect the structure and thereby
changing the relative velocity and the angle of attack, and thereby again the loads; this implies
an iterative method. In addition, inertia loads from the structure mass distribution are also acting
on the WT. These inertial loads can be: (i) steady, i.e. gravitational forces or ice loads; and (ii)
unsteady from the vibration of the structure, i.e. structural accelerations caused by external
89
unsteady loads such as the aforementioned aerodynamic loads, but also wave loads, or seismic
loads.
The structural model calculates the deflections, velocities and accelerations of the structure,
commonly named the structural response. This structural response is formally known as
structural dynamic response or simply dynamic response, where elastic and mass properties are
considered under prescribed time dependent external loading. If the aerodynamic loads are
included, the response is then called aeroelastic response. Figure C.1 shows a block diagram to
clarify these ideas (Ref. [36]).
C.2
The aerodynamic model of a WT is explained by 2-D aerodynamics theory; this implies that the
flow at a given radial position is two dimensional, i.e. the spanwise velocity component of the
flow (x-component, see Figure C.2 below) is much lower than the streamwise component.
90
The reacting force from the flow or simply, the aerodynamic force is decomposed into a
direction perpendicular to the relative velocity called lift force L, and to a direction parallel to
the relative velocity called drag force D. By definition, the lift and drag forces are equal to:
1
2
Vrel c C l
2
1
2
D = Vrel c C d
2
L=
(C.1)
where Vrel is the relative velocity, which is explained later; Cl and Cd are defined as lift and drag
coefficient, respectively, these coefficients are given with the aerodynamic data of the WT; is
the air density and c is the chord or airfoil length.
The aerodynamic loads acting on a conical tower as those for the current WTs are reduced
mainly to drag forces, where the drag coefficient takes a unit value. In this case, the relative
velocity Vrel only accounts for the undisturbed or incoming wind speed. However, in the case of
a WT blade, both forces are present. The aerodynamic shape of a WTs blade is specially
designed to maximize the lift force and minimize the drag force.
From basic vortex theory, when a WT is rotating the vortex system induces an axial velocity
component opposite to the direction of the wind and a tangential component opposite to the
rotation of the rotor blades. The vectorial combination of the induced axial velocity and the
induced tangential velocity is known as the induced velocity W. If only the aerodynamic
components are considered, the relative velocity Vrel on a WT blade can be calculated as the
combination between the undisturbed wind speed V0, the rotational speed Vrot, and the induced
velocity W:
91
Vrel = V0 + Vrot + W
Vrel y V y x W y
+
Vrel = V + 0
W
z z
(C.2)
Note that in the former expression, only y and z components are considered, i.e. assuming 2-D
aerodynamics theory (see coordinate system in Figure C.3 below).
The figure shows the velocity triangle seen locally on a blade section. The figure taken from
Hansen (2008, 90 Ref. [11]) is modified to present also the lift and drag forces aforementioned.
Besides, the figure presents the angles that appear on a WT blade, which are used in the
calculations.
L
D
From the figure, the relative velocity forms an angle with the plane of rotation called flow angle
= tan 1
(C.3)
The twist of the blade is defined relative to the tip chord; whereas, the pitch angle p is
defined as the angle between the tip chord and the rotorplane (in the pitch regulated wind
turbines this angle varies to harness as much as possible the incoming wind).The combination of
the twist of the blade and the pitch angle p is known as local pitch , and it is thus defined as
the angle between the local chord and the plane of rotation, i.e. = + p . Lastly, the local
angle of attack is defined as follows:
=
(C.4)
Often, the aerodynamic forces (lift L and drag D forces) are decomposed into a fixed coordinate
system at the blade hub (see x-y-z coordinate system in Figure C.3 above). These components
are known as the tangential aerodynamic force Ft or Fy, and the normal aerodynamic force Fn or
Fz. From simple trigonometry:
92
Ft = L sin() D cos()
Fn = L cos( ) + D sin()
(C.5)
Or also:
2
Ft = 1 Vrel cCt
2
2
Fn = 1 Vrel cC n
2
(C.6)
where
C t = C l sin() C d cos()
C n = C l cos() + C d sin()
(C.7)
It is now convenient to present the classical Blade Element Momentum method (BEM). The
BEM method is the most extended aerodynamic model of a WT. It couples the momentum
theory with the local events taking place at the actual blades (Hansen 2008, 45 Ref. [11]). The
purpose of this model is to calculate the steady aerodynamic loads, and thus also the thrust and
power for given settings of constant wind speed, rotational speed and pitch angle. Hence,
applying the steady BEM method is sufficient to calculate the known power curve of a wind
turbine and the estimation of the annual energy production, accordingly.
In order to estimate realistically the aeroelastic behavior of the wind turbine, the following must
be taken into account: (i) the unsteadiness of the wind seen by the WT caused by atmospheric
turbulence, (ii) wind shear, and (iii) the presence of the tower (tower shadow effects). Thus, the
incoming wind is no longer a uniform flow seen by the WT. Besides, the possibility of changing
pitch angles can be also considered. The steady or classical BEM method must be modified to
estimate the time series of the loads for these unsteady inputs; so that, some engineering models
are added, mainly three: (i) the dynamic wake model that calculates the induced velocities
taking into account the time delay that the induced velocities present; (ii) the yaw/tilt model that
accounts for yawing (and/or tilting) in the rotor, since the induced velocities vary, and therefore
the loads on the blade (the upstream blade sees a higher wind, i.e. a higher loads, than the
downstream blade ); and (iii) the dynamic stall model that calculates the lift coefficient Cl taking
into account whether the boundary layer is attached or partly separated; and the constant
changes in the blades angle of attack due to the direct impact by wind shear, yaw/tilt
misalignment, tower passage, and atmospheric turbulence. Besides, this model also accounts for
the time delay that appears in the loads by the effect of changing the blades angle of attack.
In conclusion, the essence of this unsteady BEM method is to determine the induced velocity
W and thus the local angles of attack (Hansen 2008, 90 Ref. [11]). Then, the corresponding
aerodynamic loads can be calculated, i.e. lift L and drag D forces by using equation (C.1), or
tangential Ft/Fy and normal Fn/Fz forces by using equations (C.5) or (C.6).
93
Chord Line
Y
Blade Tip
The shear forces Ty and Tz, and the bending moments My and Mz on an infinitesimal piece of the
beam can be derived from Newtons second law as
94
dT y
= p y ( x ) + m( x )u&&y (x )
(C.8)
dT z
= p z ( x ) + m( x )u&&z (x )
dx
(C.9)
dx
dM y
dx
= Tz ( x )
(C.10)
dM z
= T y ( x )
dx
(C.11)
where py and pz are the external loads, and u&&y and u&&z are the accelerations. By using the
equations for the curvatures about the principal axes and the angular deformations, the
deflections can be calculated by numerical algorithm (see Hansen 2008, 115-116, Ref. [11]),
with convenient transformations of coordinates between principal axes and y and z-axis, and
vice versa. Note that the y and z-axis are aligned with the tip airfoil (see previous Figure C.4).
The first three eigenmodes can be derived from the previous numerical algorithm taking into
account some considerations. By definition, the eigenmodes is a free continuous vibration at a
specific natural frequency, which means that the eigenmodes and the inertia forces at the
natural frequency are in static equilibrium; equations (C.8) an (C.9) are then modified as
dT y
= m(x )u&&y (x )
(C.12)
dT z
= m( x )u&&z ( x )
dx
(C.13)
dx
where, the external loads are set to zero. In free continuous vibrations, the accelerations are then
proportional to deflection u as
u&&(x ) = 2 u
(C.14)
= m(x ) 2 u y ( x ) = p y ( x )
(C.15)
dT z
= m( x ) 2 u z ( x ) = p z (x )
dx
(C.16)
dx
The deflections uy and uz in the equations (C.15)and (C.16) are unknown. The numerical
algorithm aforementioned is needed to be solved iteratively, and it will converge for the first
eigenmode, i.e. first flapwise 1f associated with the lowest natural frequency. Initial guess for
the deflections are used, and then the natural or eigenfrequency is estimated at the tip as:
95
2 =
p z (x N )
m( x N )u y ( x N )
(C.17)
p z ( xi ) = m(xi ) 2
u y ( xi )
u y (x N )2 + u z ( x N )2
(C.18)
u z (xi )
u y ( x N )2 + u z ( x N )2
(C.19)
It is often done to normalize the tip deflection, i.e. to ensure that the tip deflection becomes one
in the next iteration. New deflections uy and uz can be calculated with new loads from equations
(C.18) and (C.19), the procedure is repeated until the eigenfrequency becomes constant.
For the other two eigenmodes, i.e. first edgewise 1e and second flapwise 2f, the orthogonality
constrain between eigenmodes must be fulfilled
R
1f
1e
1f
1e
u y mu y dx + u z mu z dx = 0
(C.20)
1e
2f
1e
2f
u y mu y dx + u z mu z dx = 0
(C.21)
The deflections for the first edgewise u1e and for the second flapwise u2f are thereby computed
as
96
1f
1f
u y mu y dx + u z mu z dx
0
u 1ye = u y 0
u 1y f
R
R
1f
1f
1f
1f
u y mu y dx + u z mu z dx
0
(C.22)
0
R
1f
1f
u y mu y dx + u z mu z dx
0
u 1ze = u z 0
u 1z f
R
R
1f
1f
1f
1f
u y mu y dx + u z mu z dx
0
(C.23)
0
R
1f
1f
u y mu y dx + u z mu z dx
1e
1e
u y mu y dx + u z mu z dx
0
0
u 2y f = u y 0
u 1y f 0
u 1ye
R
R
R
R
1f
1f
1f
1f
1e
1e
1e
1e
u y mu y dx + u z mu z dx
u y mu y dx + u z mu z dx
0
u z2 f = u z 0
0
R
u 1z f 0
0
R
1f
1f
u y mu y dx + u z mu z dx
1f
uy
0
mu 1y f
dx +
1f
uz
0
mu 1z f
(C.24)
1e
1e
u y mu y dx + u z mu z dx
u 1ze
(C.25)
1e
1e
1e
1e
u y mu y dx + u z mu z dx
0
0
dx
The mode shapes have been introduced; however they are referred to a coordinate system
aligned with the blade tip (see Figure C.4).
If the blade is pitched, the mode shapes must be transformed to the blade root coordinate system
by simple trigonometric transformations.
ZR
Zb
YR
Rotor plane
p
Yb
If the blade is pitched an angle p, the mode shapes take the expression
97
(C.26)
(C.27)
) (
(C.28)
The deflections and accelerations can be solved for the next time step using the previous
accelerations, and a series of intermediate steps as follows in the scheme procedure:
A=
GX&& b =
1
GX& + A
2
2
2
t
B=
g GFg , GX + b , GX& + A, GM , GK , GC
2
t
C=
g GFg , GX + b , GX& + B , GM , GK , GC
2
d = t GX& + C
t
D=
g GFg , GX + d , GX& + 2C , GM , GK , GC
2
(
(
)
)
(C.29)
GX n+1 = GX + t GX& + ( A + B + C )
3
1
GX& n+1 = GX& + ( A + 2 B + 2C + D )
3
(C.30)
t n+1 = t + t
It is important to note that depending on the time step, numerical damping can arises and the
numerical time integration scheme is not accurate enough. From Ref. [36], it is explained that
by choosing time steps higher than 10 times per period, the scheme yields solutions with 99.9 %
of accuracy, and thereby, the influence of numerical damping is eliminated.
A time step of 0.03 sec is found to be sufficient, since it is not expected to find responses with
periods higher than 0.3 sec; this would imply modes excitation higher than 16th according to
Ref. [29].
98
D.2
D.3
D.4
This appendix describes the expressions for the generalized terms used in the structural model to
solve the equation of motion. Recalling the generalized coordinate vector is
x
{
}
Tower
first
mode
in
the
longitudin
al
direction
(fore
aft)
t2
bl 1
x1 f { Blade 1, first flapwise}
bl 1
x1e { Blade 1, first edgewise}
bl 1
x 2 f { Blade 1, second flapwise}
1e
2f
bl 3
The generalized terms include generalized forces, mass, stiffness, and damping terms.
99
however, in this case the WT is not rotating, only acting small angular deformation, so these
loads are neglected.
The generalized force vector is given for each generalized coordinate
GF = [GF1 , GF2 , GF3 , GF4 , GF5 , GF6 , GF7 , GF8 , GF9 , GF10 , GF11 ]T
(D.1)
The process to calculate the ith generalized force GFi is done in the following way:
1. The structure is subjected to a small increment in displacement corresponding to the ith
generalized coordinate (generally, gxi = 1), while the other DOFs are set to zero. The
external loads acting on the structure are analyzed, i.e. aerodynamics, gravity loading, and
inertia loads from the stiff-body motions of the ship.
v
2. The ith shape functions ui are calculated. These shape functions must be associated with this
gxi as a consequence of the small displacement at all positions of the structure where the
1. xt1 = 1;
2. Shape Functions:
Xt1
0
= 0
z
xp
r
r = yp
X1
Y1
Z1
100
ut
Tower : u tower ( x ) = xt 1 u t 1 ( x ) + xt 2 u t 2 ( x ) = xt 1 y + xt 2
0
0 u t
t = y
u 0
z
*
y p *z
0
y p z
0
0
{
144244
(D.2)
rotation
Note that xp and yp are given in the nacelle coordinate system (coordinate system 2).
3. PVW: It is noted that the tower is given in coordinate system 1; and the blades in coordinate
system 2.
GF1 =
Pt u tower + Pb u blade
tower
(D.3)
blade
where Pb is referred to coordinate system 2; the aeroelastic program calculates these forces in
coordinate system 4, simply using the transformation matrix from coordinate system 4 to
coordinate system 2, i.e. a 24 T :
Coord .System4
Pb = a 24 T Pb
(D.4)
xp
r= 0
Xt2
zp
0
= y
0
( y = z )
X1
Z1
Y1
101
ut
0 0
Tower : u tower ( x ) = xt 1 u t 1 (x ) + xt 2 u t 2 (x ) = xt 1 y + xt 2 t = t
u u
0
z z
*
z *
0
z p y
0
p y
+ 0
Blade : u blade
= 0
= 0 + 0
1
x *
t2 u t z (N ) x p *y
{
1x4
p
y
4244
3 14243
traslation 14243
traslation
rotation
(D.5)
rotation
Note that xp and zp are given in the nacelle coordinate system (coordinate system 2).
3. PVW: It is noted the tower is given in coordinate system 1; and the blades in coordinate
system 2.
GF2 =
Pt
tower
u tower + Pb u blade
(D.6)
blade
where Pb is referred to coordinate system 2; the aeroelastic program calculates these forces in
coordinate system 4, simply using the transformation matrix from coordinate system 4 to
coordinate system 2, i.e. a 24 T :
Coord .System4
Pb = a 24 T Pb
(D.7)
u1 f
z
(D.8)
3. PVW: Both loads and shape function are given in coordinate system 4.
GF3 = P bl 1 u blade
(D.9)
blade
Note that the shape function used to calculate the generalized forces GF6 and GF9 are the same
as for GF3. The generalized force is thus calculated in the same manner but for the loads
corresponding to each blade.
102
bl 1
bl 1
bl 1
1e
u 1e
z
(D.10)
3. PVW: Both loads and shape function are given in coordinate system 4.
GF4 = P bl 1 u blade
(D.11)
blade
Note that the shape function used to calculate the generalized forces GF7 and GF10 are the same
as for GF4. The generalized force is thus calculated in the same manner but for the loads
corresponding to each blade.
u 2 f
z
(D.12)
3. PVW: Both loads and shape function are given in coordinate system 4.
GF5 = P bl 1 u blade
(D.13)
blade
Note that the shape function used to calculate the generalized forces GF9 and GF11 are the same
as for GF5. The generalized force is thus calculated in the same manner but for the loads
corresponding to each blade.
103
GM 3 ,1
GM 4 ,1
GM 5 ,1
GM =
GM 11,1
GM 1,2
GM 1,3
GM 1,4
GM 1,5
GM 2 ,2
GM 3 ,2
GM 2 ,3
GM 3 ,3
GM 2 ,4
0
GM 2 ,5
0
GM 4 ,2
GM 5 ,2
0
0
GM 4 ,4
0
0
GM 5 ,5
GM 1,11
GM 11,11
(D.14)
The mass matrix is and fully coupled and symmetric matrix. The zeros in the matrix come from
the orthogonality constraints on the eigenmodes for each blade. It is noted that only the terms
for the first blade are depicted above, similar procedure is applied to the other blades.
The process to calculate each of the mass terms GMij is described as follows:
1. The structure is subjected to a small acceleration increment of the jth generalized coordinate,
while the acceleration in all other DOFs are set to zero.. And the inertial loads are then
calculated acting on the structure as a consequence of that acceleration.
2. Calculate the generalized force for each row, with the corresponding shape functions, but
only considering inertial forces as external loads.
3. Finally, GMij is calculated as the work of the inertia loads subjected to the shape function,
both in the same coordinate system:
L
GM ij g&x&i = 0 P1 u i + P2 u i + etc.
104
Xt1
0
= 0
z
xp
r
r = yp
X1
Y1
Z1
ut
Tower : Ptower (x ) = mt (x ) u&&tower (x ) = mt ( x ) y
0
y p *z
Blade : Pblade (x ) = mb ( x ) 1 + x p *z
0
(D.15)
0 u t
t = y
u 0
z
*
y p *z
0
y p z
0
0
{
144244
(D.16)
rotation
Nacelle : u nacelle = 1
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 2.
GM 1,1 =
Ptower
tower
105
(D.17)
ut
0 0
Tower : u tower ( x ) = xt 1 u t 1 (x ) + xt 2 u t 2 (x ) = xt 1 y + xt 2 t = t
u u
0
z z
*
z *
0
z p y
0
p y
+ 0
Blade : u blade
= 0
= 0 + 0
1
*
*
(
)
x
u
N
t
t
242z44
14
p
y
p
y
{
3 142
43 traslation 14243
traslation
rotation
(D.18)
rotation
Nacelle : u nacelle = 1
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 2.
GM 2 ,1 =
Ptower
tower
(D.19)
blade
bl 1
bl 1
bl 1
Blade : u blade ( x ) = x1 f u 1 f ( x ) + x1e u 1e ( x ) + x 2 f u 2 f (x ) = u 1y f
u1 f
z
(D.20)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
GM 3 ,1 = Pblade u blade
(D.21)
blade
u 1e
z
(D.22)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
GM 4 ,1 = Pblade u blade
(D.23)
blade
106
bl 1
bl 1
bl 1
Blade : u blade ( x ) = x1 f u 1 f ( x ) + x1e u 1e ( x ) + x 2 f u 2 f ( x ) = u 2y f
u 2 f
z
(D.24)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
GM 4 ,1 = Pblade u blade
(D.25)
blade
xp
r= 0
Xt2
zp
0
= y
0
( y = z )
X1
Z1
Y1
0
Tower : Ptower ( x ) = mt (x ) u&&tower (x ) = mt (x ) t
u
z
z *
p y
Blade : Pblade ( x ) = mb (x ) 0
1 x *
p
y
107
(D.26)
ut
0 0
Tower : u tower ( x ) = xt 1 u t 1 (x ) + xt 2 u t 2 (x ) = xt 1 y + xt 2 t = t
u u
0
z z
*
z *
0
z p y
0
p y
+ 0
Blade : u blade
= 0
= 0 + 0
1
*
*
(
)
x
u
N
t
t
242z44
14
p
y
p
y
{
3 142
43 traslation 14243
traslation
rotation
(D.27)
rotation
Nacelle : u nacelle = 1
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 2.
GM 2 ,2 =
Ptower
tower
(D.28)
blade
bl 1
bl 1
bl 1
Blade : u blade ( x ) = x1 f u 1 f ( x ) + x1e u 1e ( x ) + x 2 f u 2 f (x ) = u 1y f
u1 f
z
(D.29)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
GM 3 ,2 = Pblade u blade
(D.30)
blade
u 1e
z
(D.31)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
GM 4 ,2 = Pblade u blade
(D.32)
blade
108
bl 1
bl 1
bl 1
Blade : u blade ( x ) = x1 f u 1 f ( x ) + x1e u 1e ( x ) + x 2 f u 2 f ( x ) = u 2y f
u 2 f
z
(D.33)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
GM 4 ,2 = Pblade u blade
(D.34)
blade
Blade : Pblade ( x )
= mb ( x ) u&&blade ( x ) = mb (x ) u 1y f
u1 f
z
(D.35)
bl 1
bl 1
bl 1
Blade : u blade ( x ) = x1 f u 1 f ( x ) + x1e u 1e ( x ) + x 2 f u 2 f (x ) = u 1y f
u1 f
z
(D.36)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
GM 3 ,3 = Pblade u blade
(D.37)
blade
u 1e
z
109
(D.38)
bl 1
bl 1
bl 1
1e
u 1e
z
(D.39)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
GM 4 ,4 = Pblade u blade
(D.40)
blade
u 2 f
z
(D.41)
u 2 f
z
(D.42)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
GM 5 ,2 = Pblade u blade
(D.43)
blade
110
0
0
GK =
GK 2 ,2
0
0
GK 3 ,3
0
0
0
0
0
0
0
0
GK 4 ,4
0
0
GK 5 ,5
GK 11,11
0
(D.44)
The generalized stiffness matrix is uncoupled due to the orthogonality constraints of the mode
shapes. The process to calculate each jth column is the following:
1. The set of external loads to produce a unit deflection in the jth DOF and zero deflection in all
other DOFs are specified.
2. The generalized force and the shape function are calculated.
3. Finally, GKij is calculated as the external loads subjected to the shape function, both in the
same coordinate system.
L
GK ij gxi = 0 P1 u i + P2 u i + etc.
(D.45)
0 u ty
=
t
u
z 0
u
Tower : u tower ( x ) = xt 1 u t 1 ( x ) + xt 2 u t 2 ( x ) = xt 1 y + xt 2
3. PVW:
111
(D.46)
GK 1,1 =
Ptower utower =
tower
t
u ty
2 u y
= 2 GM
(
)
m
x
t1 t
t1
t1
0
tower
0
(D.47)
0
Tower : Ptower ( x ) = mt ( x ) t22 u t 2 (x ) = mt ( x ) t22 t
u
z
(D.48)
0 0
t = t
u u
z z
(D.49)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 2.
0
0
GK 2 ,2 = Ptower u tower = t22 t mt (x ) t = t22 GM t 2
u
u
tower
tower
z
z
(D.50)
2
2 1f
Blade : Pblade ( x ) = mb (x ) 1 f u 1 f ( x ) = mb ( x ) 1 f u y
u1 f
z
(D.51)
bl 1
bl 1
bl 1
Blade : u blade ( x ) = x1 f u 1 f ( x ) + x1e u 1e ( x ) + x 2 f u 2 f (x ) = u 1y f
u1 f
z
(D.52)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
0
2 1f
GK 3 ,3 = Pblade u blade = 1 f u y
blade
blade
u1 f
z
m (x ) u 1 f
b
y
u1 f
112
= 2 GM
1f
1f
(D.53)
2
2 1e
Blade : Pblade ( x ) = mb (x ) 1e u1e (x ) = mb (x ) 1e u y
u 1e
z
(D.54)
u 1e
z
(D.55)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
0
0
2 1e
1e
blade
blade
u 1e
u 1e
z
z
(D.56)
2
2
Blade : Pblade ( x ) = mb (x ) 2 f u 1 f (x ) = mb (x ) 2 f u 2y f
u2 f
z
(D.57)
u 2 f
z
(D.58)
3. PVW: Note that the loads and shape function for the blades are given in coordinate system 4.
113
2
GK 5 ,5 = Pblade u blade = 2 f u 2y f
blade
blade
u 2 f
z
m (x ) u 2 f
b
y
u 2 f
= 2 GM
2f
2f
(D.59)
0
0
GC =
GC 2 ,2
0
0
GC 3 ,3
0
0
0
0
0
0
0
0
GC 4 ,4
0
0
GC 5 ,5
GC11,11
0
(D.60)
Where
GC1,1 = t 1 GM t 1 t 1 ; GC 2 ,2 = t 2 GM t 2 t 2 ;
1 f
2 f
GC 3 ,3 = 1 f GM 1 f
; GC 4 ,4 = 1e GM 1e 1e ; and GC 5 ,5 = 2 f GM 2 f
114
This Appendix describes how the roll period is calculated. The case of one upright wind turbine
serves to illustrate the procedure, note that the expressions are valid for any configuration of
WTs.
Recalling, the WT is clamped to the deck of the barge and it is located at the center line (CL).
The center of the tower is aligned with the barges COG. Ballasts are used to provide a draft
around 2.5 m. The fuel for departure is also considered.
b arg e
WT COG WT
+ bal .COG xbal . + f COG xf
x + b arg e COG x
Tot
b arg e
.
WT COG WT
+ bal .COG bal
+ f COG yf
y + b arg e COG y
y
Tot
(E.1)
WT COG WT
+ b arg e COG zb arg e + bal .COG zbal . + f COG zf
z
Tot
The displacement is calculated based on the previous weight. Considering the shape of the barge
and the previous displacement, the draft and ship length are estimated. The metacentric height
GMt is then obtained using (see further in Chapter 4):
GMt = KB + BMt KG
(E.2)
The mass moment of inertia of each component, i.e. barge, WT, ballast and fuel are calculated
referred to the APP by:
115
(
)
I yy i
= Iyy i + ri 2 i = kyyei2 i + (COGxi2 + COGz i2 )i
APP
I zz iAPP = Izz i + ri 2 i = kzzei2 i + (COGxi2 + COGy i2 )i
I xx iAPP = Ixx i + ri 2 i = kxxei2 i + COGy i2 + COGz i2 i
(E.3)
where subscript i means either the barge, WT, ballast or fuel. The total mass moment of inertia
of the system is simply the sum of the components.
i
I xx Tot
APP = I xx APP ;
i
i
I yy Tot = I yy i
; I zz Tot
APP = I zz APP
APP
APP
i
(E.4)
The radii of gyration of the system can be derived from the equation (E.3) and using the COG of
the system. They are thus referred to the COG of the complete system barge/WT:
(
(COGx
(COGx
)
+ COGz )
+ COGy )
2
2
kxxeTot = I xx Tot
APP COGy + COGz
kyyeTot = I yy Tot
APP
kzzeTot = I zz Tot
APP
(E.5)
TN =
2 kxxeTot
(E.6)
g GM t
116
List of Figures
Figure F.1 GZ Curve: Case Typical ballast condition (empty deck) ........................................ 118
Figure F.2 GZ Curve: Case Case: High module on deck, arrival.............................................. 119
Figure F.3 GZ Curve: Case Medium high module on deck, arrival .......................................... 120
Figure F.4 GZ Curve: Case Large module on deck, arrival ...................................................... 121
List of Tables
Table F.1 Case: Typical ballast condition (empty deck) ........................................................... 118
Table F.2 Case: High module on deck, arrival .......................................................................... 119
Table F.3 Case: Medium high module on deck, arrival ............................................................ 120
Table F.4 Case: Large module on deck, arrival ........................................................................ 121
This Appendix shows the results of the stability analysis of the Viking Barge vessel. A series of
loading cases are given for different operations varying ballasts, cargos and their configurations.
The GZ curves only cover a small range of inclinations, i.e. until a maximum inclination MAX
that prevents submersion/immersion of the barge edges.
The conditions for each case is given in the tables below; besides, the COG of the system, draft
and metacentric height are also included in the tables comparing them with those by Ref. [15].
The results of the GZ curves are compared with those provided by Ref. [15] in the figures
below, the figures from Ref [15] are directly taken from the original document.
As it can be seen in the following figures, good agreement is found.
117
Volume
Gravity
Displ
COG x
COG y
COG z
(m3)
(Tn/m3)
(Tn)
(m)
(m)
(m)
1831
1.000
1831.00
44.648
3.520
460
1.025
471.50
85.850
3.970
Ballast 2 Centres
1704
1.025
1746.60
72.010
3.050
Ballast 3 Wings
1200
1.025
1230.00
51.440
2.143
Ballast 4 Centres
1708
1.025
1750.70
30.860
3.050
Ballast 5 Wings
1550
1.025
1588.75
11.140
3.256
10.00
0.830
8.30
14.890
4.300
3.111
Lightship
Ballast 1 Wing
Barge Program
44.410
Ref [15]
COG
(m)
3.110
44.410
Draft
(m)
3.592
3.689
GMT
(m)
16.891
17.045
3.5
Rightling lever, GZ
3
2.5
2
1.5
1
0.5
0
6
Angle (deg)
10
12
118
Condition
Volume
Gravity
Displ
COG x
COG y
COG z
(m )
(Tn/m )
(Tn)
(m)
(m)
(m)
Lightship
1831
1.000
1831.00
44.648
3.520
Module on deck
2000
1.000
2000.00
45.740
37.310
Ballast 2 Wings
1704
1.025
1746.60
72.010
3.050
Ballast 5 Wings
1550
1.025
1588.75
11.140
3.256
1.20
0.830
1.00
17.890
2.000
12.777
Barge Program
44.190
Ref [15]
COG
(m)
12.777
44.189
Draft
(m)
3.051
3.104
GMT
(m)
10.189
10.467
2.5
Rightling lever, GZ
1.5
0.5
6
8
Angle (deg)
10
12
14
119
Condition
Volume
Gravity
Displ
COG x
COG y
COG z
(m )
(Tn/m )
(Tn)
(m)
(m)
(m)
Lightship
1831
1.000
1831.00
44.648
3.520
Module on deck
3500
1.000
3500.00
46.000
21.800
Ballast 2 Centres
1704
1.025
1746.60
72.010
3.050
Ballast 5 Wings
1550
1.025
1588.75
11.140
3.256
1.20
0.830
8.30
17.890
2.000
10.759
Barge Program
44.563
Ref [15]
COG
(m)
10.759
44.562
Draft
(m)
3.608
3.707
GMT
(m)
9.175
9.471
1.6
1.4
Rightling lever, GZ
1.2
1
0.8
0.6
0.4
0.2
0
4
6
Angle (deg)
10
120
Condition
Volume
Gravity
Displ
COG x
COG y
COG z
(m )
(Tn/m )
(Tn)
(m)
(m)
(m)
Lightship
1831
1.000
1831.00
44.648
3.520
Module on deck
5500
1.000
3500.00
44.000
15.550
1.20
0.830
8.30
14.890
2.000
12.545
Barge Program
44.158
Ref [15]
COG
(m)
12.544
44.158
Draft
(m)
3.113
3.170
GMT
(m)
10.023
10.304
2.5
Rightling lever, GZ
1.5
0.5
6
8
Angle (deg)
10
12
14
121
G.1.1
G.1.2
G.1.3
G.2
G.2.1
G.2.2
G.2.3
G.3
List of Figures
Figure G.1 Heave Frequency Response Function Comparison of fast ferry TMV 114 ............ 128
Figure G.2 Pitch Frequency Response Function Comparison of fast ferry TMV 114 .............. 129
Figure G.3 Roll Frequency Response Function Comparison of fast ferry TMV 114 ............... 130
Figure G.4 Vertical Acceleration Frequency Response Function Comparison of fast ferry TMV
114 located at the vessels center line (CL) .............................................................................. 131
Figure G.5 Cargo Positions stowed on Viking Barge. .............................................................. 133
Figure G.6 Heave Frequency Response Functions Comparison of Viking Barge .................... 136
Figure G.7 Pitch Frequency Response Functions Comparison of Viking Barge ...................... 137
Figure G.8 Roll Frequency Response Functions Comparison of Viking Barge ....................... 138
Figure G.9 MPL of Heave Comparison of Viking Barge for different wave directions ........... 140
Figure G.10 MPL of Pitch Comparison of Viking Barge for different wave directions ........... 141
122
Figure G.11 MPL of Roll Comparison of Viking Barge for different wave directions ............ 142
Figure G.12 MPL of Longitudinal Acceleration Comparison of Upper Tower 1 for different
wave directions.......................................................................................................................... 144
Figure G.13 MPL of Transverse Acceleration Comparison of Upper Tower 1 for different wave
directions ................................................................................................................................... 145
Figure G.14 MPL of Vertical Acceleration Comparison of Upper Tower 1 for different wave
directions ................................................................................................................................... 146
Figure G.15 MPL of Vertical Acceleration Comparison of Lower Tower 6 for different wave
directions ................................................................................................................................... 148
Figure G.16 Comparison between pitch spectrums................................................................... 150
Figure G.17 Blade Mode Shapes............................................................................................... 152
Figure G.18 Shape function visual checks ................................................................................ 153
Figure F.19 Wind Shear ............................................................................................................ 154
Figure G.20 Thrust comparison at the nacelle under 15 m/s..................................................... 155
Figure G.21 Comparison of the tower top deflections in the fore aft direction under 15 m/s... 156
Figure G.22 Zoom in fore-aft tower top deflections for the last 90 sec. ................................... 157
Figure G.23 Spectral Analysis of the fore-aft tower top deflections. ........................................ 158
Figure G.24 Relative velocity comparison at mid-span section (30 m.) for each blade and 0
pitch, under 15 m/s .................................................................................................................... 159
Figure G.25 Relative velocity comparison at tip section (44 m.) for each blade and 0 pitch,
under 15 m/s .............................................................................................................................. 160
Figure G.26 Relative velocity comparison between mid-span and tip section for blade 1 and 0
pitch. .......................................................................................................................................... 161
Figure G.27 Flapwise bending moment comparison for each blade at the rotor plane (or hub)
under 15 m/s .............................................................................................................................. 162
Figure G.28 Edgewise bending moment comparison for each blade at the rotor plane (or hub)
under 15 m/s, Pitch 45. ............................................................................................................ 163
Figure G.29 Thrust comparison at the nacelle under harmonic excitation................................ 165
123
Figure G.30 Relative velocity comparison at mid-span section (30 m.) for each blade and 0
pitch, under harmonic excitation ............................................................................................... 166
Figure G.31 Spectral Analysis of the relative velocity at mid-span section (30 m.) for each
blade, under harmonic excitation, 0 pitch. ............................................................................... 167
Figure G.32 Angle of attack comparison at mid-span section (30 m.) for each blade and 0 pitch,
under harmonic excitation ......................................................................................................... 169
Figure G.33 Angle of attack comparison comparison at tip section (44 m.) for each blade and
0 pitch, under harmonic excitation........................................................................................... 170
Figure G.34 Comparison of flapwise bending moments for each blade, under harmonic
excitation, Pitch = 0................................................................................................................... 171
Figure G.35 Spectral Analysis of the flapwise bending moment for each blade under harmonic
excitation, 0 pitch. .................................................................................................................... 172
Figure G.36 Comparison of the tower top deflections in the fore aft direction under harmonic
excitation ................................................................................................................................... 173
Figure G.37 Spectral Analysis of the tower top deflections in the fore aft direction under
harmonic excitation ................................................................................................................... 174
Figure F.38 Wind shear and harmonic excitation ..................................................................... 176
Figure G.39 Thrust comparison at the nacelle under 15 m/s and harmonic excitation. ............ 176
Figure G.40 Spectral Analysis of the thrust force at the nacelle under 15 m/s and harmonic
excitation. .................................................................................................................................. 178
Figure G.41 Comparison of the tower top deflections in the fore aft direction under 15 m/s and
harmonic excitation. .................................................................................................................. 179
Figure G.42 Spectral Analysis of the tower top deflect. in the fore aft direction under 15 m/s and
harmonic excitation. .................................................................................................................. 180
Figure G.43 Flapwise bending moment comparison for each blade at the rotor plane (or hub)
under 15 m/s and harmonic excitation ...................................................................................... 181
Figure G.44 Edgewise bending moment comparison for each blade at the rotor plane (or hub)
under 15 m/s and harmonic excitation, Pitch 45. ..................................................................... 182
124
List of Tables
Table G.1 Fast Ferry TMV114 Specifications .......................................................................... 127
Table G.2 Viking barge Specifications ..................................................................................... 132
Table G.3 Viking Barge data for calculations ........................................................................... 134
Table G.4 Comparison between MPLs of Viking barge at COG .............................................. 139
Table G.5 Comparison between MPLs of the longitudinal, transverse, and vertical cargo
acceleration ............................................................................................................................... 149
Table G.6. Mode Frequencies Comparison ............................................................................... 151
Table G.7 Fore-aft tower top deflection mean values at the steady state. ................................. 157
Table G.8 Summary of spectral analysis of the tower top deflections in the fore aft direction
under harmonic excitation ......................................................................................................... 175
Table G.9 Mean and standard deviation values of the thrust under 15 m/s and harmonic
excitation ................................................................................................................................... 177
Table G.10 Mean and standard deviation values of the tower top deflect. in the fore aft direction
under 15 m/s and harmonic excitation ...................................................................................... 179
This Appendix is divided into two main parts for convenience. First the validation of the barge
program is presented; and then the validation of the sea transport program (WT). Finally, the
Appendix finalizes with the summary of the main findings and limitations in the programs.
(iii) Lastly, subsection G.1.3 deals with the validation of the last module of the barge program,
i.e. the generation of time series.
[17]
found that the shape effect of the hull geometry given alone by the block
coefficient Cb could be included most appropriately by simply taking the breadth as the product
between the maximum waterline breadth B0 and Cb. Hence, a barge approximation of the vessel
can be taken, i.e. the ships are represented by homogeneously loaded box-shaped barges with
beam modified so that the total mass of the ships equal the buoyancy. They affirm that the
formulas predict the variations of the motions and accelerations with the main dimensions,
frequency, heading, and speed fairly accurately (Ref. [17]). But also it is stated some reserves:
The pitch response is too large around L = 1 for Froude numbers larger than 0.2.
Taking the aforementioned limitations in the method into account, it is considered that their
results can serve as benchmark or reference to compare with the results given by the barge
program.
It should be noted that Jensen et al. [17]s figures are just copied from the original paper. The
legend of the figures is thus unaltered. Their notation Exp refers to results from the model test
experiments, while Simple refers to their simplified method.The results given by the barge
program are depicted on the left side of the figures.
The heave, pitch, roll, and vertical acceleration (at the CL) frequency response functions are
compared. Table G.1 shows Fast ferry TMV114 specifications
126
(m)
96
B0
(m)
(m)
Parameters
COG
Cb
0.53
TN (sec)
6.3
13.8
CWP
0.713
GMT(m)
4.19
2.5
Approx. by
Amidship
0.6
Heave, pitch, and vertical acceleration responses by Jensen et al. are compared with model tests
made by MARIN (as a part of the work in the EUREKA project), and predictions from various
strip theories (SGN and Shipmo).
Figure G.1 shows the results for the heave response for 120, 150 of heading, and for beam and
head sea. It can be observed that the results agree with those in Jensen et al. [17]
127
1.5
1.5
w (m/m)
= 180
= 150
0.5
0.5
0.5
1.5
1.5
0.5
1.5
w (m/m)
= 120
= 90
0.5
0.5
1.5
0.5
1
(rad/s)
1.5
0.5
1.5
(rad/s)
With permission from the Author (Ref.[17])
Figure G.1 Heave Frequency Response Function Comparison of fast ferry TMV 114
It is noted that all the heave responses take a unit value for small wave frequencies, this happens because small wave frequencies correspond large wave periods, and at
these conditions the vessel presents the same vertical displacement (heave) at the wave amplitude. By definition the FRFs are prescribed to unit wave amplitudes. The
correction in the expression for the Smith factor k provides now excellent results compared to those in the experiments in beam sea.
For pitch, the results are given for the same series of headings in Figure G.2. It is seen that the results from the barge program and from Jensen et al.[17]s are identical as
well.
128
(deg/m)
= 180
= 150
0.5
1.5
0.5
(deg/m)
= 120
= 90
1.5
0.5
1
(rad/s)
1.5
0.5
1.5
(rad/s)
With permission from the Author (Ref.[17])
Figure G.2 Pitch Frequency Response Function Comparison of fast ferry TMV 114
With regards to the roll frequency response function, the calculations were made with three different cases of additional damping: (i) no additional damping (only inviscid
hydrodynamic damping), (ii) 20 % critical damping, (iii) and 40 % critical damping.
Figure G.3depicts the comparison for the roll frequency response functions. In this figure, the head sea case is eliminated in order to keep the same format as in Jensen et
al.[17]. It can be observed that the results match perfectly. It is found that 40% critical damping yields the closest approximation to the model test results for most of the
headings barring the beam sea case, where 20% critical damping fits better with the model test results for wave frequencies higher than 1 rad/s.
129
20
roll (deg/m)
= 150
15
10
5
0
0.5
1.5
(rad/s)
30
40
roll (deg/m)
= 120
= 90
30
20
20
10
10
0.5
1
(rad/s)
0 % crit. damp
1.5
0.5
1.5
(rad/s)
20 % crit. damp
40 % crit. damp
Figure G.3 Roll Frequency Response Function Comparison of fast ferry TMV 114
Finally, the vertical acceleration response function is compared in Figure G.4. The results are given for 120, 150 heading, and for head and beam seas. It is seen that the
new expression for Smith correction factor k yields identical results also for the beam sea case, correcting the higher response observed when the old expression for k was
used.
130
= 180
2
aV [(m/s )/m]
1
0
0.5
7
6
1.5
= 120
1
0
0.5
1
(rad/s)
1.5
0.5
7
6
= 150
2
aV [(m/s )/m]
1.5
= 90
0.5
1.5
(rad/s)
With permission from the Author (Ref.[17])
Figure G.4 Vertical Acceleration Frequency Response Function Comparison of fast ferry TMV 114 located at the vessels center line (CL)
131
Parameters
COG (m)
Lpp
(m)
91.44
Cb
0.96
TN (sec)
7.6
(m)
87.77
CWP
0.9
GMT(m)
14.639
B0
(m)
27.432
Depth
(m)
6.096
(m)
3.227
Displ.
(ton)
7450
44.848
7.44
Knowing the displacement volume it is possible to calculate the moulded volume from the
Arquimedes equation by simply using a sea water density of 1.025 t/m3. Then, the block
coefficient Cb is calculated by the following expression (Friis & Andersen 2000, 49 Ref. [10]).
132
Cb =
Bo LT
(G.1)
But first the vessel length L must be calculated. From the Viking barges loading manual (Ref.
[15]), the vessel length for the given draft is equal 87.77 m, yielding a block coefficient value of
0.96 (almost a perfect box, i.e. Cb = 1). Therefore, the water plane coefficient (CWP) can be
assumed equal to one, and the parameter delta3 is set to 0.9. Lastly, the transverse metacentric
height (GMT) is determined by the empirical equation given by Friis and Andersen (2000, 203
Ref. [10]) that relates the natural period of rolling (TN) with GMT:
2CBo
TN =
GM
T
(G.2)
where
B
C = 0.373 + 0.023 o 0.043 L
100
T
(G.3)
Table G.3 shows the data provided by Vuyk E.R. required for the calculations. It is noted that
Vuyk E.R. does not explain either the amount of additional damping considered or the amount
From Siemens Wind Powers Report (Ref. [31]), the influence of the parameter delta on the roll
response was studied; the conclusions states that small values of yield higher roll responses, but the
relative differences between extreme values of are less than 5%.
133
2
0 deg.
0 kn
= 3.3
Energy Spreading
cos4
Time Frame
Series of Headings
FRFs
MPLs
Item
3 hours
Tz
(sec)
Cargo Positions
4.79
-3.49
23.70
4.79
-9.81
17.25
61.50
-3.49
23.70
61.50
-9.81
17.25
18.07
10.80
12.16
73.33
10.80
12.16
-19.50
14.20
8.20
134
135
1.4
1.2
w (m/m)
0.8
0.6
0.4
0.2
10
15
Period (s)
20
25
30
With permission from Siemens Wind Power A/S
= 0
= 45
= 90
= 0
136
= 45
= 90
2
1.8
1.6
pitch (deg/m)
1.4
1.2
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
1.2
(rad/s)
1.4
1.6
1.8
2
With permission from Siemens Wind Power A/S
= 0
= 45
= 90
= 0
137
= 45
14
12
roll (deg/m)
10
10
15
Period (s)
20
25
30
With permission from Siemens Wind Power A/S
= 0
= 45
= 90
= 45
138
= 90
Barge Program
COG
TZ
COG
3.111
90,270
> 9 sec.
3.200
90
4,502
0,180
7.5 sec.
5.200
45
6.5 sec.
20.91
90,270
6 sec.
26.900
90
6 sec.
TZ
> 9 sec.
A good agreement is found in the MPL of the heave. Figure G.9 shows that the present method captures the variation of the heave with wave period well. An exception is
beam sea, where the barge program predicts higher MPLs at small periods, i.e. until Tz = 6 sec.
139
It is noted that the highest values are predicted in beam sea conditions for periods higher than Tz = 9 sec.
3.5
MPLW (m)
2.5
1.5
0.5
10
11
12
13
Tz (s)
= 0
= 45,225
= 270
= 115,295
Figure G.9 MPL of Heave Comparison of Viking Barge for different wave directions
3 hours-time frame. Hs = 3.5 m. Additional damping = 2 % Critical damping. Zero deg of amount of wave energy spreading
Left: Barge program results
Right: Vuyk E.R. results
For MPL of the pitch, it is seen in Figure G.10 below that the variation with period is well captured, although an exception is found for 295 heading, here the heave
response is not well-captured for small Tz. The responses are somewhat underestimated. It is also checked that the barge program predicts the highest values for following
140
sea at Tz = 7.5 s; while Vuyk E.R.s do for quartering sea (i.e. 225) at Tz = 6.5 s. It is interesting to note that for each heading, both the barge programs and Vuyk E.Rs
responses present the highest values at the same zero-upcrossing periods.
MPL (deg)
10
11
12
13
Tz (s)
= 0
= 45,225
= 270
= 115,295
Figure G.10 MPL of Pitch Comparison of Viking Barge for different wave directions
3 hours-time frame. Hs = 3.5 m. Additional damping = 2 % Critical damping. Zero deg of amount of wave energy spreading
Left: Barge program results
Right: Vuyk E.R. results
141
Comparisons with the MPL of the roll motion are depicted in Figure G.11. The variation with period is again well captured, but the responses are underestimated. 6 sec of
Tz is identified to yield the highest values for both sources. Note that both programs predict zero pitch in beam sea conditions, and zero roll in following sea as expected.
30
25
MPLroll (deg)
20
15
10
10
11
12
13
Tz (s)
= 0
= 45,225
= 270
= 115,295
Figure G.11 MPL of Roll Comparison of Viking Barge for different wave directions
3 hours-time frame. Hs = 3.5 m. Additional damping = 2 % Critical damping. Zero deg of amount of wave energy spreading
Left: Barge program results
Right: Vuyk E.R. results
142
The MPLs of the cargo positions are compared now with those by Vuyk E.R. Thus, the comparisons for the longitudinal, transverse and vertical acceleration of the cargo
are presented next. The cargo positions was already described in Table G.3 Viking Barge data for calculations
. The two blade containers (Blade Container 1 and 2) and two towers (Tower 1 and 6) are analyzed. The towers are divided into upper and lower tower parts.
It must be taken into account that similar behaviors might be found for each of the wind turbine components when the differences between the x,y,or z-coordinate of the
wind turbine components are not significant. Changes in the maximum values can be found but a general trend or behavior is also common. Obviously, those wind turbine
components that have different z-coordinates will present different longitudinal and transverse accelerations. Therefore, only the results for the Upper Tower 1
component and the Lower Tower 6 component are presented being representative for the other cargo positions.
Figure G.12 shows the comparison of the longitudinal acceleration of Upper Tower 1. A fairly good agreement is found with respect to the variation with period. Even
though, an exception is 115-295 heading, where the variation with period is not well captured for small periods. The responses are somewhat underestimated. It is seen
that the pitch response for these headings have a strong influence on the longitudinal acceleration. Previous Figure G.10 already observed higher values the MPL of the
pitch at small periods for 295 heading. For the headings of 45-225 and 0, the highest values are found at around the same zero-upcrossing period than those in Vuyk
E.R.s, i.e. 5.5 sec and 6.5 sec, respectively.
For MPL of the transverse acceleration of Upper Tower 1, the results from the barge program and Vuyk E.Rs are given in Figure G.13. The variation with period is well
captured. However, the responses are underestimated, due to smaller predictions in the roll response by the barge program compared to this given by Vuyk E.R.s. It is also
observed that due to the conditions of symmetry assumed in the barge program, equal responses are given for 45-225 headings and for 115-295 headings. Nevertheless,
different responses can be found for each of these headings in the results from Vuyk E.R.
Both programs predict nil longitudinal acceleration in beam sea, as well as zero transverse acceleration in following sea, as expected. Similar behaviors are observed in the
longitudinal and transverse accelerations for the rest of the wind turbine components, although different maximum values are found.
143
1.6
1.4
MPLaL (m/s 2)
1.2
1
0.8
0.6
0.4
0.2
0
10
11
12
13
Tz (s)
= 0
= 45,225
= 270
= 115,295
Figure G.12 MPL of Longitudinal Acceleration Comparison of Upper Tower 1 for different wave directions
3 hours-time frame. Hs = 3.5 m. Additional damping = 2 % Critical damping. Zero deg of amount of wave energy spreading
Left: Barge program results
Right: Vuyk E.R. results
144
12
10
MPLaT (m/s 2)
10
11
12
13
Tz (s)
= 0
= 45,225
= 270
= 115,295
Figure G.13 MPL of Transverse Acceleration Comparison of Upper Tower 1 for different wave directions
3 hours-time frame. Hs = 3.5 m. Additional damping = 2 % Critical damping. Zero deg of amount of wave energy spreading
Left: Barge program results
Right: Vuyk E.R. results
145
Comparisons with the MPL of the vertical acceleration of Upper Tower 1 are showed in Figure G.14. The variation with period is not well captured for all headings. For
those headings whose heave and pitch responses yield higher values at small periods; i.e. 270 heading, and 295 headings, respectively (see previous Figure G.9 and
Figure G.10), higher vertical acceleration responses are here found for the vertical acceleration responses.
4.5
4
MPLaV (m/s 2)
3.5
3
2.5
2
1.5
1
0.5
10
11
12
13
Tz (s)
= 0
= 45
= 270
= 295
Figure G.14 MPL of Vertical Acceleration Comparison of Upper Tower 1 for different wave directions
3 hours-time frame. Hs = 3.5 m. Additional damping = 2 % Critical damping. Zero deg of amount of wave energy spreading
Left: Barge program results
Right: Vuyk E.R. results
146
For the heading of 0, excellent results are found. For the heading of 45, good results are obtained, although slightly smaller values are found than those by Vuyk E.R. The
responses for 115 and 225 heading are not equal but very similar with respect to the responses for the headings of 295 and 45, respectively.
It is found that small relative x-coordinates of the cargo to the COG entails better behaviors in the vertical accelerations for 115 and 295 headings, than those WT
components stowed further from the ships COG. The main reason for this performing is due to small influences of the pitch motion on the vertical acceleration.
It is seen that wind turbine components stowed close to the x-coordinate of the COG of the system (see Table G.2) undergo higher vertical accelerations at small periods.
Thus, Upper and Lower Tower 6, as well as Blade Container 1 undergo better performances for these headings, since they are placed closer to the ships COG (see cargo
locations described in Table G.3 and Figure G.5); the smaller, the better.
Figure G.15 shows the vertical acceleration of Lower Tower 6. It is observed that for the heading of 115, a good agreement with respect to the variation with period is
found. The peak value is observed at the same zero-upcrossing period of 6 sec as this by Vuyk E.R., although the response is somewhat underestimated. For 295 heading,
a fairly good agreement with respect to the variation with period is seen as well. The highest value is found at the same period of 5.5 sec; however, the response is this time
overestimated compared to this given by Vuyk E.R.
147
MPLaV (m/s2)
10
11
12
13
Tz (s)
= 0
= 45
= 270
= 295
Figure G.15 MPL of Vertical Acceleration Comparison of Lower Tower 6 for different wave directions
3 hours-time frame. Hs = 3.5 m. Additional damping = 2 % Critical damping. Zero deg of amount of wave energy spreading
Left: Barge program results
Right: Vuyk E.R. results
148
The following table presents a summary of the peak values in a sea state of 3.5 m of significant
wave height for the cargo. It is noted that the peaks illustrated in the table correspond to the
interval recommended by DNV guidelines, i.e. neglecting values for zero-upcrossing periods
smaller than 5 sec.
Motions
Barge Program
Upper T. 1
Tz (sec)
Upper T. 1
Tz (sec)
MPL aL
1.359
115,295
1.46
295
MPL aT
4.074
90, 270
9.84
90, 270
MPL aV
3.710
65,295
3.49
65
5.5
Lower T. 1
Tz (sec)
Lower T. 1
Tz (sec)
MPL aL
0.820
115,295
1.19
295
MPL aT
2.458
90, 270
7.78
90, 270
MPL aV
4.010
65,295
4.95
90
Upper T. 6
Tz (sec)
Upper T. 6
Tz (sec)
MPL aL
1.359
115,295
1.46
295
MPL aT
4.074
90, 270
9.84
90, 270
MPL aV
3.069
90,270
3.05
90
5.5
Lower T. 6
Tz (sec)
Lower T. 6
Tz (sec)
MPL aL
0.820
115,295
1.19
295
MPL aT
2.458
90, 270
7.78
90, 270
MPL aV
3.430
90, 270
4.95
90
Blade Cont1
Tz (sec)
Blade Cont1
Tz (sec)
MPL aL
0.395
65,115,295
0.89
65
MPL aT
1.183
90, 270
6.16
90, 270
MPL aV
4.402
90,270
5.5
5.11
270
Blade Cont2
Tz (sec)
Blade Cont2
Tz (sec)
MPL aL
0.395
65,115,295
0.89
65
MPL aT
1.183
90, 270
6.16
90, 270
MPL aV
4.402
90,270
5.5
5.11
270
Table G.5 Comparison between MPLs of the longitudinal, transverse, and vertical cargo acceleration
(3 hours-time frame. Hs = 3.5 m. Additional damping = 2 % Critical damping).
Zero deg of amount of wave energy spreading)
149
Spitch (rad s)
x 10
-4
-3
= 45
4
1
2
0
1
2
Spitch (rad s)
= 0
x 10
0.01
= 90
= 115
0.5
0
0.005
-0.5
-1
(rad/s)
(rad/s)
Simulated spectrum
Therefore, the procedure to obtain the time series for the wave-induced motions is consistent.
150
First Edgewise
Second Flapwise
0.792 Hz.
1.206 Hz.
2.259 Hz.
0.770 Hz.
1.208 Hz.
2.086 Hz.
Fairly good results are found with a maximum relative difference of 8% for the second flapwise
mode.
Next figures show the mode shapes for the first three modes, i.e. first flapwise, first edgewise
and second flapwise. The modes have been normalized to unit maximum tip deflection. Each
mode has y and z-components referred to the tip chord.
Each mode undergoes expected shapes, the first flapwise experiences higher deflections in the zcomponent, since this is the predominant bending direction. The same principle can be applied
to the first edgewise but in the y-direction.
151
0.8
0.8
0.6
0.6
0.4
Deflection
0.6
Deflection
Deflection
0.8
0.4
0.2
0.4
0.2
-0.2
-0.2
0.2
10
20
30
Radius (m)
40
50
-0.4
- first flapwise-
10
20
30
Radius (m)
40
50
- first edgewisez-component
y-component
-0.4
10
20
30
Radius (m)
40
50
- second flapwiseundeformed
152
100
100
80
80
60
60
40
40
20
20
0
0
- Starboard-Port side Direction -
Undeformed
In the next sections, the WT model is tested by comparing different load cases with the results by Siemens BHawC code.
153
40
20
0
SB - PS
fore - aft
Figure G.19 Wind Shear
154
The wind shear is modeled using the power law model (see equation (2.18) in Chapter 2); the
amount of wind shear stress is set to 0.11. From the figure above, it is seen that 15 m/s is
reached at the hub height, and it becomes higher or lower whether the particular section is
higher or lower the hub height, respectively. Note that the nacelle has tilted 6 deg. and the
blades are also coned 2 deg.
It should be noted that the initial conditions between both programs, i.e. the sea transport
analysis program and BHawC, differ. While BHawC has an initialization before the actual
simulation starts, the sea transport program hits the structure with 15 m/s at the first time step.
Therefore, the transients to the steady state cannot be compared formally to each other.
Moreover, the sea transport program does not take into account either induced velocities or
rotational velocity at a particular airfoil. However, induced velocities are considered by
BHawC; thereby, the velocity triangle is different between the two codes (see previous
Appendix C section C.2).
In conclusion, these differences must be kept in mind when evaluation the results. The purpose
of the sea transport analysis program is not to find a perfect match with BHawC, but to be able
to calculate the aeroelastic response of the WT with a reasonable level of accuracy.
The thrust force at the nacelle is depicted in the figure below for three different cases of pitch
angles: 0, 45 and 82.
5
x 10
0 Pitch
Thrust (N)
3
45 Pitch
1
82 Pitch
50
100
150
Time (sec)
200
240
155
The steady state is assumed to be reached after 150 sec. From the figure above, it is noted that
fairly good results are obtained at the steady state for all three cases, presenting a relative error
of 15% for the case of 45 pitch. The cases of 0 and 82 pitch provide a good match with
BHawCs results with a relative difference around 5%. Some resonance is seen in the case of
45 pitch in BHawC that does not appear in the sea transport program for this type of load.
Finally, it is important to note that the thrust load is diminished when pitching the blade as
expected. The parked condition is formally set to 82 of pitch angle; in this situation, the WT is
designed to diminish the aerodynamic loads. This pitch angle is presently considered for
transporting the WT on the barge.
The tower top deflection in the fore and aft direction is compared with this provided by BHawC.
Note that the sea transport analyses later are focused on the longitudinal acceleration at the
tower top, which means the second derivative of the displacements.
The figure below shows the comparison for three different cases of pitch angles: 0, 45 and 82.
0.14
0.12
0.1
0.08
0 Pitch
0.06
0.04
45 Pitch
0.02
82 Pitch
0
-0.02
50
100
150
Time (sec)
200
240
Figure G.21 Comparison of the tower top deflections in the fore aft direction under 15 m/s
From the figure above, good results are found in the tower top deflections at the steady state.
The next table depicts the mean values at the steady state. From the table, it is checked that
roughly 11% maximum relative difference is found for the cases of 45 and 82 pitch. As it was
explained before, the deflection decreases when pitching the blades; thus, the tower deflection
in the case of 82 pitch is reduced 80% from this in the case of 0 pitch.
156
0 Pitch
0.0670 m.
0.0671 m.
45 Pitch
0.0417 m.
0.0374 m.
82 Pitch
0.0139 m.
0.0123 m.
Table G.7 Fore-aft tower top deflection mean values at the steady state.
From the scale of the figure, it does not appreciate the resonance with 45 of pitch angle. Figure
G.22 shows the tower top deflections zoomed in the 90 sec. As it was explained for the thrust, it
seems that BHawC predicts beats of resonance for this particular pitch angle; the sea transport
program also predicts these beats.
0.048
45 Pitch
0.046
0.044
0.042
0.04
0.038
0.036
150
160
170
180
190 200
Time (sec)
210
220
230
240
Figure G.22 Zoom in fore-aft tower top deflections for the last 90 sec.
The beats of resonance are found when the vibration frequency is close to any other natural
frequency of the structure. The beat is defined as a rapid oscillation with slowly varying
amplitude (Inman 2007, 109 Ref. [13]). The figure below shows the spectral analysis of foreaft tower top deflections for both BHawC and the sea transport program. It is seen that the
maximum energy content of the signals are found close to the first mode of the structure, i.e. in
the fore-aft direction (0.34 Hz.).
157
10
10
45 Pitch
X: 0.3458
Y: 0.1839
-2
X: 0.3416
Y: 0.002419
-4
PSD
10
10
10
10
-6
-8
X: 0.34
Y: 1e-010
-10
10
-2
10
-1
10
10
Hz
Sea Transp. Program
It was mentioned above that BHawC utilizes different velocity triangle, since induced velocities
are considered, which are not present in the sea transport program. This implies differences in
aerodynamic forces on the blades, i.e. normal and tangential forces. Therefore, some differences
are expected in the flap and edgewise bending moments of the blades.
Note that the definition of the aerodynamic forces is referred to the rotor plane (or hub
coordinate system in BHawC), which means a fix coordinate system regardless whether the
blade is pitched or not. The pitch and twist of the blade are considered in the calculus of the
angle of attack, but the forces do not rotate when the blade pitches.
Two sections are analyzed in each blade, one section at mid-span (at 30 m from the blade root)
and the other close to the tip (at 44 m from the blade root). The results given by BHawC are not
exactly at 30 m and 44 m, but at 29.57 m and 44.87 m, respectively. Nevertheless, small
differences are expected, and the comparisons can still be done. The relative velocity, the angle
of attack and the lift and drag coefficients are studied. Recalling, blade 1 is pointing downwards
aligned with the tower. Figure G.24 shows the relative velocity at the mid-span section for each
of the blades at 0 of pitch angle.
158
It is seen that the relative velocity for blade 1 is smaller than for the other blades; this is because blade 1 is affected by the wind shear. Similar velocities are found for blade
2 and blade 3. The relative velocity for blade 1 is also affected by the tower shadow.
16
(m/s)
Blade 1
0 Pitch
15
14
13
50
100
150
200
240
50
100
150
200
240
50
100
150
200
240
(m/s)
Blade 2
16
15
14
13
(m/s)
Blade 3
16
15
14
13
Time (sec)
Figure G.24 Relative velocity comparison at mid-span section (30 m.) for each blade and 0 pitch, under 15 m/s
The tower shadow accounts for the distortion of the incoming wind speed induced by the shape of the tower. The incoming wind is considered as potential flow, it is
unknown for this author how BHawC implements the tower shadow, so several differences might also be found due to different tower shadow models. Once again the
159
transients must be read carefully since the initial conditions for the simulations of each of the two codes are different; however, the steady states can be compared and fairly
good results are found. Similar conclusions are found for the relative velocity at the section close to the tip (at 44 m.), shown in Figure G.25.
(m/s)
Blade 1
16
0 Pitch
14
12
50
100
150
200
240
50
100
150
200
240
50
100
150
200
240
(m/s)
Blade 2
16
14
12
(m/s)
Blade 3
16
14
12
Time (sec)
Figure G.25 Relative velocity comparison at tip section (44 m.) for each blade and 0 pitch, under 15 m/s
The relative velocity for blade 1 is always smaller than for the other blades due to the wind shear. It is found that the relative differences between both programs are higher
in the mid-span section than at the tip. This is attributed to the differences in the tower shadow model for both codes. The figure below shows this comparison.
160
13.8
13.8
Relative Difference = 2.2236 %
13.6
13.6
13.4
13.4
13.2
13.2
13
13
12.8
12.8
12.6
12.6
(m/s)
Blade 1
0 Pitch
12.4
12.4
12.2
12
12.2
50
100
150
Time (sec)
200
12
240
50
100
150
Time (sec)
200
240
Figure G.26 Relative velocity comparison between mid-span and tip section for blade 1 and 0 pitch.
In the figure above, it is seen that the relative difference is smaller in the tip because, at this section, the blade is located further from the tower due to the tilt and cone
angles. Therefore, the influence of the tower shadow is smaller and the relative velocity is close to this calculated by BHawC.
Identical conclusions are found for the cases of 45 and 82 pitch. When the steady state is reached, the structural velocities have died out, and the relative velocity is
identical to the incoming wind speed. Then, there is no influence of the pitch angle in the relative velocity.
161
When the relative velocity is calculated, the angle of attack is derived from the flow angle and the particular twist of the section and pitch of the blade. Lift and drag
coefficients are simply taken from a look-up table. Therefore, if there are differences in the relative velocity between both codes, the aerodynamic forces will be also
different and consequently the loads derived from them. Figure G.27 shows comparison of the flapwise bending moment for each blade and three different pitch angles.
x 10
0 Pitch
(Nm)
Blade 1
4
2
45 Pitch
82 Pitch
0
0
(Nm)
Blade 2
x 10
50
200
240
45 Pitch
82 Pitch
4
(Nm)
150
0 Pitch
Blade 3
100
x 10
50
100
150
200
240
0 Pitch
45 Pitch
82 Pitch
0
50
100
150
200
240
Time (sec)
Figure G.27 Flapwise bending moment comparison for each blade at the rotor plane (or hub) under 15 m/s
From the figure above, a good agreement is found in the results. The flapwise-bending moments decrease when pitching the blades as expected.
162
In the case of 45 pitch, the aforementioned beats of resonance are also found in Siemens BHawC results, in addition some negative aerodynamic damping is also
experienced; whereas the results of the sea transport program settles to a certain value. For 82 of pitch angle, blade 2 experiences negative flapwise-bending moment, i.e.
into the rotor plane, in both BHawC and the sea transport program. The edgewise bending moments referred to the rotor plane are also compared for each of the blades and
the three different cases of pitch angle. Figure G.28 shows the edgewise bending moments for each of the blades in the case of 45 pitch.
x 10
(Nm)
Blade 1
45 Pitch
2.5
2
0
x 10
50
100
150
200
240
50
100
150
200
240
50
100
150
200
240
(Nm)
Blade 2
3
2.5
2
0
x 10
(Nm)
Blade 3
3
2.5
2
0
Time (sec)
Figure G.28 Edgewise bending moment comparison for each blade at the rotor plane (or hub) under 15 m/s, Pitch 45.
163
Some differences are found for this type of bending moment between BHawC and the sea transport program for the other two cases of pitch angle. There has not been
found an explication for this behavior.
164
0.5
0.5
0
x 10
50
100
150
200
-1
240
0
-0.5
-1
0
x 10
50
100
150
200
-1
240
50
100
150
Time (sec)
200
0 Pitch
240
-1
x 10
50
100
150
200
240
50
100
150
Time (sec)
200
240
0
-0.5
-0.5
0
0.5
0.5
(N)
(N)
0.5
0
-0.5
(N)
0.5
0
-0.5
-0.5
-1
(N)
(N)
(N)
-1
50
100
150
Time (sec)
200
240
45 Pitch
82 Pitch
Siemens BHawC code
From the figure above, it is important to note that the scale between both programs is different. BHawC uses a scale 104 higher than this for the sea transport program. It
has not been found any reason to explain those higher differences. BHawC calculates very similar thrust regardless the pitch angle, while the thrust is reduced when
pitching the blade calculated by the sea transport program as expected. If there is no wind acting on the WT, the only forces induced to the blades are coming from the
structural response, i.e. the vibration of the blades and the vibration that the tower induces on the blades. Therefore, it is not expected that the WT is subjected to thrust
amplifications of 5000 N calculated by BHawC, since the structural velocities are small. Two sections are thus analyzed to justify this argument: one section at mid-span
(i.e. at 30 m from the blade root), and other close to the blade tip (i.e. at 44 m from the blade root). Figure G.30 shows the comparison of the relative velocity at the midspan section for the case of 0 pitch.
165
0.2
Stand. Dev.
(m/s)
Blade 1
0 Pitch
0.008 m/s
0
0.004 m/s
-0.2
50
100
150
200
240
(m/s)
Blade 2
0.2
Stand. Dev.
0.027 m/s
0.024 m/s
-0.2
50
100
150
200
240
(m/s)
Blade 3
0.2
Stand. Dev.
0.027 m/s
0.025 m/s
-0.2
50
100
150
200
240
Time (sec)
Figure G.30 Relative velocity comparison at mid-span section (30 m.) for each blade and 0 pitch, under harmonic excitation
From the figure above, it is noted that the channel in BHawC for the relative velocity is actually the modulus; hence, there is no negative amplifications in the plots.
Fairly good agreement is found in the velocities between both codes. Smaller velocities are found for blade 1 due to the tower shadow than for the other blades. The
standard deviation in the velocities for blade 1 is higher than this for BHawC. This can be attributed to differences in the tower shadow model between both programs.
Note that the standard deviations for the other blades are very comparable. It is interesting to perform spectral analyses to check the dynamic response of the WT.
166
0
X: 0.1592
Y: 5
X: 0.34
Y: 5
0 Pitch
X: 0.71
Y: 5
PSD
Blade 1
10
Harm. F. Freq
Fore-aft Freq
1st Flap Stru.
10
10
-2
10
-1
10
10
PSD
Blade 2
Harm. F. Freq
Fore-aft Freq
1st Flap Stru.
10
10
-2
10
-1
10
10
PSD
Blade 3
Harm. F. Freq
Fore-aft Freq
1st Flap Stru.
10
-2
10
-1
10
10
Hz
Sea Transp. Program
Figure G.31 Spectral Analysis of the relative velocity at mid-span section (30 m.) for each blade, under harmonic excitation, 0 pitch.
From the figure above, similar results in the dynamic response are found for both programs. The WT is excited at the harmonic force frequency (0.1592 Hz), and the first
mode of the structure (i.e. in the fore-aft direction, 0.34 Hz). Blade 1 also presents a peak close to the first flap or third mode structure (0.71 Hz) for BHawC, while this
peak is found at higher frequency for the sea transport program Nevertheless, an impulse load might be more appropriate to carry out a formal modal analysis of the
167
structure. The longitudinal harmonic excitation case just compares the two codes. The sea transport program shows similar behavior for the other blades, while BHawC
shows differences for blades 2 and 3 compared to blade 1.
The results of the relative velocity for the other section, i.e. close to the tip, lead to similar conclusions. The amplitudes are slightly higher for each blade compared with
the previous section at mid-span of the blade. This makes sense since the vibrations close to the tip are expected to be higher. Again FFT analyses show similar peaks at
frequencies that correspond to the harmonic force frequency and fore-aft mode. No conclusive peaks are found for the first flap mode for any of the blades.
In conclusion, if the relative velocities are small, the thrust force is expected to be also small, as the sea transport program predicts. The results for the relative velocities at
the two sections for the other two cases of pitch angle (45 and 82) also confirm small velocities, and smaller than the case of 0 pitch.
The angles of attack at the two selected sections show interesting results. First, the section at the mid-span is studied. If there is no wind, this implies that rotational and
induced velocities are zero, and the only velocities on the airfoil correspond to the structural velocities. Therefore, the airfoil vibrates up and down, and the flow angle
oscillates between 180 and -180.
Figure G.32 below shows the angle of attack for the mid-span section for each of the blades and the case of 0 pitch. BHawC shows almost constant angle of attack at
around 100, whereas the angle of attack oscillates mainly between -100 and 100. This can be explained due to different tower shadow model, but also due to the presence
of induced velocities in the BHawC calculations.
With regard to blade 2 and blade 3, similar results are found in the angle of attack. Both BHawC and the sea transport program calculate values that mainly oscillate
between -100 and 100. More peaks close either to -180 or 180 are found in the results by the sea transport program. A more flexible structural model than this for
BHawC might be the reason why. Again the influence of the induced velocities cannot be quantified by BHawC, but it may be also the reason.
168
180
0 Pitch
(deg)
Blade 1
100
0
-100
-180
50
100
150
200
240
50
100
150
200
240
50
100
150
200
240
180
(deg)
Blade 2
100
0
-100
-180
180
(deg)
Blade 3
100
0
-100
-180
Time (sec)
Figure G.32 Angle of attack comparison at mid-span section (30 m.) for each blade and 0 pitch, under harmonic excitation
The section close to the tip is also analyzed for the same case of pitch angle. The next figure shows the results for the angle of attack. A good agreement is found between
both programs. Now, the results for blade 1 for BHawC also oscillate between -100 and 100. This section is further located from the tower shadow, thus less influence is
expected for this section, and both programs shows similar results.
169
180
0 Pitch
(deg)
Blade 1
100
0
-100
-180
50
100
150
200
240
50
100
150
200
240
50
100
150
200
240
180
(deg)
Blade 2
100
0
-100
-180
180
(deg)
Blade 3
100
0
-100
-180
Time (sec)
Sea Transp. Program
Figure G.33 Angle of attack comparison comparison at tip section (44 m.) for each blade and 0 pitch, under harmonic excitation
The angle of attack for blade 1 oscillates highly than for blade 2 and 3 in BHawC. There are more peaks close to either -180 or 180 in blade 1 than for blades 2 and 3. The
sea transport program shows similar results for all blades. Similar conclusions are obtained from the other two cases of pitch angle.
170
The flapwise-bending moments are also studied for each blade and three cases of pitch angle. The flapwise-bending moments decrease slightly when pitching the blades.
0
-5
150
200
-10
240
4
Blade 2
-2
-4
100
150
Time (sec)
200
Blade 1
240
100
150
200
-10
240
-4
50
x 10
50
-2
0
0
x 10
50
100
150
200
240
50
100
150
Time (sec)
200
240
2
(Nm)
100
Blade 3
x 10
50
2
(Nm)
Blade 1
0 Pitch
-5
-5
(Nm)
-10
(Nm)
10
Blade 3
10
(Nm)
10
Blade 2
(Nm)
Blade 1
Figure G.34 shows the flapwise moments of each blade and for the case of 0 pitch.
0
-2
50
100
150
Time (sec)
200
240
-4
Blade 2
Blade 3
Siemens BHawC code
Figure G.34 Comparison of flapwise bending moments for each blade, under harmonic excitation, Pitch = 0.
From the figure above, it is important to note that the scale of the BHawC results is again 104 higher than this for the sea transport program. As it was already explained in
the discussion of the thrust, it has not been found any reason to explain those higher differences, but due to the only presence of small structural velocities in the relative
velocities along the blade, amplitudes of 20000 Nm in the flapwise moments are rather high. However, the behavior with time is well comparable with both programs.
And as it was expected the flapwise moments for blade 2 and 3 are similar and higher than this of blade 1. The next figure shows the spectral analysis of the flapwise
moments for each blade. It is seen expected peaks at the harmonic force frequency and first structure mode (i.e. fore-aft). With regards to the first flap, neither BHawC nor
the sea transport program capture well this peak. A formal modal analysis might be carried out under an impulse load to better distinguish the modes.
171
PSD
Blade 1
X: 0.1592
Y: 5e+005
10
X: 0.34
Y: 5e+005
0 Pitch
X: 0.71
Y: 5e+005
Harm. F. Freq
Fore-aft Freq
1st Flap Stru.
10
-2
10
-1
10
10
PSD
Blade 2
Harm. F. Freq
10
Fore-aft Freq
1st Flap Stru.
10
-2
10
-1
10
10
PSD
Blade 3
Harm. F. Freq
10
Fore-aft Freq
1st Flap Stru.
10
-2
10
-1
10
10
Hz
Sea Transp. Program
Figure G.35 Spectral Analysis of the flapwise bending moment for each blade under harmonic excitation, 0 pitch.
Similar conclusions are derived for the edgewise bending moments. In both codes, neither the flapwise moments nor the edgewise moments show clear peaks around first
flap or first edge, respectively. It is seems that the harmonic force does not excite clearly these modes.
172
Finally, the tower top deflection in the fore and aft direction is compared with this provided by Siemens BHawC. The figure below shows the comparison for three
0.1
0.1
0.05
0.05
-0.1
-0.05
0
50
100
150
200
-0.1
240
0.1
(m)
(m)
0.05
0
-0.05
-0.1
50
100
150
200
50
100
150
Time (sec)
200
0 Pitch
240
-0.1
240
0.1
0.1
0.05
0.05
-0.1
50
100
150
200
240
50
100
150
Time (sec)
200
240
0
-0.05
-0.05
0
0
-0.05
(m)
-0.05
0.1
0.05
(m)
(m)
(m)
-0.1
50
100
150
Time (sec)
200
240
45 Pitch
82 Pitch
Siemens BHawC code
Figure G.36 Comparison of the tower top deflections in the fore aft direction under harmonic excitation
From the figure above, fairly good results are found for both in amplitudes and behavior with time. The deflection is approximately the same regardless the pitch angle. It
is also interesting to perform a spectral analysis of the signals. Figure G.37 shows the spectral analysis of the previous deflections for each pitch angle. It is expected to find
a clear peak at the forcing frequency with the highest energy content (i.e. PSD), and also a clear peak at the first structure mode that corresponds to the fore-aft bending
direction, but with less energy content.
173
10
10
10
10
X: 0.1592
Y: 4
10
X: 0.34
Y: 4
X: 0.3458
Y: 0.08411
-2
10
-4
-6
10
10
-8
10
-10
10
-2
10
-1
10
10
10
X: 0.1592
Y: 4
X: 0.34
Y: 4
10
X: 0.3458
Y: 0.07083
-2
10
PSD fore-aft deflect.
10
10
-4
-6
-8
10
10
-10
10
10
-2
Hz
10
-1
10
10
10
X: 0.1592
Y: 4
-2
X: 0.3541
Y: 0.05387
-4
-6
-8
-10
10
-2
10
-1
10
10
Hz
Hz
0 Pitch
X: 0.34
Y: 4
45 Pitch
82 Pitch
Fore-aft Freq.
Figure G.37 Spectral Analysis of the tower top deflections in the fore aft direction under harmonic excitation
Table G.8 below shows a summary of the relevant peaks, it is depicted a comparison between BHawC and the sea transport program for three cases of pitch angle. Besides
the frequency, it is also illustrated the PSD or energy content.
It is checked that the highest energy content correspond to the frequency close to the harmonic forcing frequency. The dynamic response of the WT is very similar
regardless the pitch of the blade as expected.
174
Mode Frequency
(Hz)
Frequency (Hz)
PSD
Frequency (Hz)
PSD
0 Pitch
0.1592
0.3400
0.1625
0.3458
0.8491
0.0841
0.1625
0.3416
3.1370
0.0201
45 Pitch
0.1592
0.3400
0.1625
0.3458
0.8482
0.0708
0.1625
0.3458
3.1350
0.0164
82 Pitch
0.1592
0.3400
0.1625
0.3541
0.8455
0.0539
0.1625
0.3458
3.1340
0.0212
Table G.8 Summary of spectral analysis of the tower top deflections in the fore aft direction under harmonic excitation
175
Moreover, the sea transport program does not take into account either induced velocities or
rotational velocity at a particular airfoil. However, induced velocities are considered by
BHawC; the velocity triangle is thereby different between the two codes.
The sketch below shows the loading condition in this final case.
100
80
60
15 m/s
Harmonic
Excitation
40
20
0
SB - PS
fore - aft
Figure G.38 Wind shear and harmonic excitation
The thrust force at the nacelle is depicted in the figure below for three different cases of pitch
angles: 0, 45 and 82.
5
x 10
0 Pitch
Thrust (N)
3
45 Pitch
2
1
82 Pitch
0
-1
50
100
150
Time (sec)
200
240
Figure G.39 Thrust comparison at the nacelle under 15 m/s and harmonic excitation.
176
The purpose of plotting the three cases of pitch in the same plot is to show how by pitching the blades, the thrust force is reduced. From the figure above, a good agreement
is found at the steady values between both codes.
However, the magnitudes of the amplitudes of both forces are different. The thrust in BHawC fluctuates with higher amplification than this in the sea transport program.
The resolution of fluctuations in the thrust force of the sea transport program cannot be appreciated in the figure due to the scale. The next table shows a summary with the
mean and standard deviation values for both codes.
Sea Transport Program
Mean (N)
Std (N)
Mean (N)
Std (N)
0 Pitch
47212
108
45061
2016
45 Pitch
26469
64
22877
2024
82 Pitch
2730
2509
1991
Table G.9 Mean and standard deviation values of the thrust under 15 m/s and harmonic excitation
Besides, a spectral analysis is also carried out to show the dynamic response in both codes in Figure G.40. A good agreement is found between both programs. It is
distinguished two clean peaks corresponding to the harmonic forcing frequency and the first structure mode in both programs. Nevertheless, it is seen that the peak
corresponding to the harmonic forcing frequency has the highest energy content in the case of BHawC, while the previous two peaks are very similar in the case of the sea
transport program; therefore, it seems that the vibrations in the fore aft direction are as dominant as the forcing frequency, and so the structure appears to be more rigid than
in BHawC. There is also a third peak that does not correspond clearly to the first structure flap mode; in both programs this peak is found somewhat at a higher frequency.
For 45 pitch in the sea transport program, there is a peak close to the first structure flap mode but has small energy content compared to the rest of the peaks.
177
10
10
X: 0.1592
Y: 1e+008
10
PSD Thrust
PSD Thrust
10
X: 0.34 X: 0.71
Y: 1e+008
Y: 1e+008
-5
10
10
10
-2
10
-1
10
10
X: 0.1592
Y: 1e+008
X: 0.34 X: 0.71
Y: 1e+008
Y: 1e+008
10
PSD Thrust
X: 0.1592
Y: 1e+008
-5
10
10
10
-2
10
-1
10
10
-5
10
-2
10
-1
Hz
Hz
0 Pitch
X: 0.34 X: 0.71
Y: 1e+008
Y: 1e+008
10
10
Hz
45 Pitch
82 Pitch
Fore-aft Freq.
Figure G.40 Spectral Analysis of the thrust force at the nacelle under 15 m/s and harmonic excitation.
The longitudinal deflection at the tower top is also studied and compared with BHawCs results for three different pitch angles. The next figure shows the comparison. It is
seen that a very good agreement is found between both programs. The deflections are reduced when pitching the blade. Even though, the fluctuations in BHawC are
somewhat higher than those in the sea transport program.
Table G.10 shows the summary of the mean and standard deviation values of the deflections. The mean values are very comparable, but standard deviation in BHawC is
almost double. It seems that the structural model in the sea transport program is more rigid than in BHawC.
178
0.15
0.1
0.05
-0.04
0.15
0.15
0.1
0.05
0.1
0.05
50
100
150
Time (sec)
200
240
-0.04
50
0 Pitch
100
150
Time (sec)
200
240
-0.04
50
45 Pitch
100
150
Time (sec)
82 Pitch
Figure G.41 Comparison of the tower top deflections in the fore aft direction under 15 m/s and harmonic excitation.
Mean (m)
Std (m)
Mean (m)
Std (m)
0 Pitch
0.067
0.016
0.066
0.034
45 Pitch
0.041
0.016
0.036
0.034
82 Pitch
0.013
0.016
0.011
0.034
Table G.10 Mean and standard deviation values of the tower top deflect. in the fore aft direction under 15 m/s and harmonic excitation
179
200
240
Moreover, the spectral analysis of the signals is illustrated in the figure below for the three cases of pitch angle.
10
10
10
10
10
X: 0.1592
Y: 5
X: 0.34
Y: 5
10
-2
10
-4
10
-6
10
-8
10
10
-2
10
-1
10
10
X: 0.1592
Y: 5
X: 0.34
Y: 5
10
-2
10
-4
10
-6
10
-8
10
10
-2
Hz
10
-1
10
10
X: 0.1592
Y: 5
-2
-4
-6
-8
10
-2
10
-1
10
10
Hz
Hz
0 Pitch
X: 0.34
Y: 5
45 Pitch
82 Pitch
Fore-aft Freq.
Figure G.42 Spectral Analysis of the tower top deflect. in the fore aft direction under 15 m/s and harmonic excitation.
As expected, two clear peaks are shown in the previous spectra. These peaks correspond to the harmonic forcing frequency and the first structure mode. Again, these peaks
have similar energy content in the sea transport program, whereas the first peak has the highest energy content in BHawC. This is in line with the previous explications.
Finally the flapwise and edgewise bending moments are compared with those by BHawC. The next figure shows the comparison for the flapwise moments for each blade
and three different cases of pitch angle. A very good agreement is found.
.
180
(Nm)
Blade 1
x 10
0 Pitch
2
45 Pitch
82 Pitch
0
0
4
x 10
50
100
150
200
240
(Nm)
Blade 2
0 Pitch
2
45 Pitch
82 Pitch
0
x 10
50
100
150
200
240
(Nm)
Blade 3
0 Pitch
2
45 Pitch
82 Pitch
0
50
100
150
200
240
Time (sec)
Figure G.43 Flapwise bending moment comparison for each blade at the rotor plane (or hub) under 15 m/s and harmonic excitation
Similar conclusions as in the case of wind only are obtained. The flapwise-bending moments decrease when pitching the blades as expected. In the case of 45 pitch, the
beats of resonance are also found in the results of BHawC, in addition some negative aerodynamic damping is also experienced; whereas the results of the sea transport
program settles to a certain value. For 82 of pitch angle, blade 2 experiences negative flapwise-bending moment, i.e. into the rotor plane, in both BHawC and the sea
transport program. The edgewise bending moments referred to the rotor plane are also compared for each of the blades and the three different cases of pitch angle. Figure
G.28 shows the edgewise bending moments each of the blades for the case of 45 pitch.
181
x 10
45 Pitch
3
(Nm)
Blade 1
3.5
2.5
2
0
(Nm)
Blade 2
3.5
50
100
150
200
240
50
100
150
200
240
50
100
150
200
240
x 10
3
2.5
2
(Nm)
Blade 3
3.5
3
2.5
2
Time (sec)
Figure G.44 Edgewise bending moment comparison for each blade at the rotor plane (or hub) under 15 m/s and harmonic excitation, Pitch 45.
The edgewise bending moments for 45 pitch are somewhat underestimated compared to those by BHawC. For the other cases of pitch angle, higher differences are found.
It has not been found any explication for this behavior.
182
183
List of Figures
Figure H.1 Time series of the long. acceleration at the nacelle , Hs = 1 m, V0 = 2.1 m/s. ....... 185
Figure H.2 Time series of the long.l acceleration at the nacelle , Hs = 1 m, V0 = 3.6 m/s. ...... 185
Figure H.3 Time series of the long. acceleration at the nacelle , Hs = 1 m, V0 = 5.7 m/s. ....... 186
Figure H.4 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 2.1 m/s. ....... 186
Figure H.5 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 3.6 m/s. ....... 187
Figure H.6 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 5.7 m/s. ....... 187
Figure H.7 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 8.8 m/s. ....... 188
Figure H.8 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 11.3 m/s. ..... 188
Figure H.9 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 5.7 m/s. ....... 189
Figure H.10 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 8.8 m/s. ..... 189
Figure H.11 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 11.3 m/s. ... 190
Figure H.12 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 14.4 m/s. ... 190
Figure H.13 Time series of the long. acceleration at the nacelle , Hs = 4 m, V0 = 8.8 m/s. ..... 191
Figure H.14 Time series of the long. acceleration at the nacelle , Hs = 4 m, V0 = 11.3 m/s. ... 191
Figure H.15 Time series of the long. acceleration at the nacelle , Hs = 4 m, V0 = 14.4 m/s. ... 192
Figure H.16 Time series of the long. acceleration at the nacelle , Hs = 5 m, V0 = 11.3 m/s. ... 192
Figure H.17 Time series of the long. acceleration at the nacelle , Hs = 5 m, V0 = 14.4 m/s. ... 193
184
This Appendix presents the results of the simulations of the sea transport analyses. 17
simulations varying the significant wave height and wind speed are performed. The figures in
the Appendix show the time series of the longitudinal acceleration at the tower top. The MPL
values are obtained from each time series as depicted in Table 6.4 in Chapter 6.
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.1 Time series of the long. acceleration at the nacelle , Hs = 1 m, V0 = 2.1 m/s.
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.2 Time series of the long.l acceleration at the nacelle , Hs = 1 m, V0 = 3.6 m/s.
185
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.3 Time series of the long. acceleration at the nacelle , Hs = 1 m, V0 = 5.7 m/s.
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.4 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 2.1 m/s.
186
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.5 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 3.6 m/s.
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.6 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 5.7 m/s.
187
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.7 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 8.8 m/s.
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.8 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 11.3 m/s.
188
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.9 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 5.7 m/s.
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.10 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 8.8 m/s.
189
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.11 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 11.3 m/s.
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.12 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 14.4 m/s.
190
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.13 Time series of the long. acceleration at the nacelle , Hs = 4 m, V0 = 8.8 m/s.
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.14 Time series of the long. acceleration at the nacelle , Hs = 4 m, V0 = 11.3 m/s.
191
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.15 Time series of the long. acceleration at the nacelle , Hs = 4 m, V0 = 14.4 m/s.
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.16 Time series of the long. acceleration at the nacelle , Hs = 5 m, V0 = 11.3 m/s.
192
0.8
0.6
0.4
(m/s )
0.2
0
-0.2
-0.4
-0.6
-0.8
200
400
600
Figure H.17 Time series of the long. acceleration at the nacelle , Hs = 5 m, V0 = 14.4 m/s.
193
I. MATLAB CODE
This Appendix depicts the main Matlab code. Note that the scripts appear in the same order as
in the execution of the program. First, the code regarding the hydrostatic calculations are shown;
then the code of barge program is depicted, and finally the code corresponding to the sea
transport program.
194
9/10/09 11:40
1 of 12
9/10/09 11:40
Cwp = 1;
%==========================================================================
%
%
OTHER INPUTS
%
%==========================================================================
rho = 1.025;
% Seawater density (Tn/m^3)
g = 9.81;
% Gravity (m/s^2)
%==========================================================================
%
%
STABILITY ANALYSIS - WIND TURBINE CASE
%
%==========================================================================
% ------------------------------------------------------------------------%
------- CASE 1: ONE WT PLACED ALIGNED WITH THE COG_SHIP ------%
(without Ballasts)
% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions: (Siemens B45-63.84-2.3)
% ------------------------------------------------------------------------%--------------------------------- Cargo ---------------------------------% Weight, Delta_WT (Tons)
Delta_WT = 235.5547;
%COG_WT (m)
COG_WT = [0.62,0,50.71];
%Mass Moment of Inertia: Anders' Brochure (16/07/09)
Ixx_WT = 1.1302e8; %tnm^2
Iyy_WT = 1.1778e8; %tnm^2
Izz_WT = 7.5691e6; %tnm^2
%Radius of Gyration
kiie_WT = [sqrt(Ixx_WT/Delta_WT), ...
sqrt(Iyy_WT/Delta_WT),...
sqrt(Izz_WT/Delta_WT)];
%---------------------------------- Fuel ---------------------------------% Fuel (Departure)
Delta_fuel = 8.3; % (Tons)
COG_fuel = [14.89
0.000
4.300]; % (m)
kiie_fuel = [15.75 -5.200 3.750]; % (m)
%--------------------------------- Ballast ---------------------------------Delta_ballast = 0;
COG_ballast = 0;
kiie_ballast = 0;
% ------------------------------------------------------------------------% 1.- Calculus of New COG:
% ------------------------------------------------------------------------% Position of WT with respect the Barge Global Coord System
WT_position = [COG_barge(1),0,D]; %Place at the center line (CL).
2 of 12
9/10/09 11:40
% COG with New Coordinates for WT (i.e. with Barge Global C.S.)
COG_WT_APP = COG_WT + WT_position;
% NEW_COG: COG of the system
NEW_COG_X = (Delta_barge*COG_barge(1) +...
Delta_WT*COG_WT_APP(1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + Delta_WT + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) +...
Delta_WT*COG_WT_APP(2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + Delta_WT + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) +...
Delta_WT*COG_WT_APP(3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + Delta_WT + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];
% Tn
Tn_empirical = (2*C*Bo/sqrt(GMt));
% Applying Radius of Gyration of WT
Tn = roll_period ...
3 of 12
9/10/09 11:40
4 of 12
(Delta_barge,Delta_WT,Delta_ballast,Delta_fuel,...
COG_system,COG_barge,COG_WT_APP,COG_ballast,COG_fuel,...
kiie_barge,kiie_WT,kiie_ballast,kiie_fuel,...
g,GMt);
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
% ------------------------------------------------------------------------%
------- CASE 2: ONE WT PLACED ALIGNED WITH THE COG_SHIP ------%
(with Ballasts)
% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions: (Siemens B45-63.84-2.3)
% ------------------------------------------------------------------------%--------------------------------- Cargo ---------------------------------% Weight, Delta_WT (Tons)
Delta_WT = 235.5547;
%COG_WT (m)
COG_WT = [0.62,0,50.71];
%Mass Moment of Inertia: Anders' Brochure (16/07/09)
Ixx_WT = 1.1302e8; %tnm^2
Iyy_WT = 1.1778e8; %tnm^2
Izz_WT = 7.5691e6; %tnm^2
%Radius of Gyration
kiie_WT = [sqrt(Ixx_WT/Delta_WT), ...
sqrt(Iyy_WT/Delta_WT),...
sqrt(Izz_WT/Delta_WT)];
%---------------------------------- Fuel ---------------------------------% Fuel (Departure)
Delta_fuel = 8.3; % (Tons)
9/10/09 11:40
COG_fuel = [14.89
kiie_fuel = [15.75
0.000
-5.200
4.300]; % (m)
3.750]; % (m)
5 of 12
9/10/09 11:40
6 of 12
% Tn
Tn_empirical = (2*C*Bo/sqrt(GMt));
% Applying Radius of Gyration of WT
Tn = roll_period ...
(Delta_barge,Delta_WT,Delta_ballast,Delta_fuel,...
COG_system,COG_barge,COG_WT_APP,COG_ballast,COG_fuel,...
kiie_barge,kiie_WT,kiie_ballast,kiie_fuel,...
g,GMt);
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
9/10/09 11:40
% ------------------------------------------------------------------------%
------- CASE 3: THREE WT PLACED AT CL ------%
(without ballasts)
% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions: (Siemens B45-63.84-2.3)
% ------------------------------------------------------------------------%--------------------------------- Cargo ---------------------------------% Weight, Delta_WT (Tons)
Delta_WT = [235.5547,235.5547,235.5547];
%COG_WT (m)
COG_WT = [ 0.62
0
50.71;...
0.62
0
50.71;...
0.62
0
50.71];
%Mass Moment of Inertia: Anders' Brochure (16/07/09)
Ixx_WT = 1.1302e8; %tnm^2
Iyy_WT = 1.1778e8; %tnm^2
Izz_WT = 7.5691e6; %tnm^2
%Radius of Gyration
kxxe = sqrt(Ixx_WT/Delta_WT(1));
kyye = sqrt(Iyy_WT/Delta_WT(1));
kzze = sqrt(Izz_WT/Delta_WT(1));
kiie_WT = [ kxxe
kyye
kzze; ...
kxxe
kyye
kzze; ...
kxxe
kyye
kzze];
%---------------------------------- Fuel ---------------------------------% Fuel (Departure)
Delta_fuel = 8.3; % (Tons)
COG_fuel = [14.89
0.000
4.300]; % (m)
kiie_fuel = [15.75 -5.200 3.750]; % (m)
%--------------------------------- Ballast ---------------------------------Delta_ballast = 0;
COG_ballast = 0;
kiie_ballast = 0;
7 of 12
9/10/09 11:40
% Tn
Tn_empirical = (2*C*Bo/sqrt(GMt));
% Applying Radius of Gyration of WT
Tn = roll_period ...
(Delta_barge,Delta_WT,Delta_ballast,Delta_fuel,...
COG_system,COG_barge,COG_WT_APP,COG_ballast,COG_fuel,...
8 of 12
9/10/09 11:40
9 of 12
kiie_barge,kiie_WT,kiie_ballast,kiie_fuel,...
g,GMt);
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
% ------------------------------------------------------------------------%
------- CASE 4: THREE WT PLACED AT CL ------%
(with ballasts)
% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions: (Siemens B45-63.84-2.3)
% ------------------------------------------------------------------------%--------------------------------- Cargo ---------------------------------% Weight, Delta_WT (Tons)
Delta_WT = [235.5547,235.5547,235.5547];
%COG_WT (m)
COG_WT = [ 0.62
0
50.71;...
0.62
0
50.71;...
0.62
0
50.71];
%Mass Moment of Inertia: Anders' Brochure (16/07/09)
Ixx_WT = 1.1302e8; %tnm^2
Iyy_WT = 1.1778e8; %tnm^2
Izz_WT = 7.5691e6; %tnm^2
%Radius of Gyration
kxxe = sqrt(Ixx_WT/Delta_WT(1));
kyye = sqrt(Iyy_WT/Delta_WT(1));
kzze = sqrt(Izz_WT/Delta_WT(1));
kiie_WT = [ kxxe
kyye
kzze; ...
9/10/09 11:40
kxxe
kxxe
kyye
kyye
kzze; ...
kzze];
10 of 12
9/10/09 11:40
11 of 12
% Tn
Tn_empirical = (2*C*Bo/sqrt(GMt));
% Applying Radius of Gyration of WT
Tn = roll_period ...
(Delta_barge,Delta_WT,Delta_ballast,Delta_fuel,...
COG_system,COG_barge,COG_WT_APP,COG_ballast,COG_fuel,...
kiie_barge,kiie_WT,kiie_ballast,kiie_fuel,...
g,GMt);
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
9/10/09 11:40
figure
plot(phi.*180/pi,GZ,'-o' ,'LineWidth',2)
hold all
plot (phi.*180/pi,GMt*sin(phi),'--k', 'LineWidth' ,2)
xlabel('Angle \phi \it{(deg)}')
ylabel('Rightling lever, GZ')
grid on
title('Case WT: Three Upright-WT at the CL, departure (with ballasts)')
12 of 12
9/10/09 11:43
%==========================================================================
%
%
DRAFT
%
%==========================================================================
if Vol <= 8787.297
A = m_AP + m_FP;
B = m_AP*m_FP*82.44 - 3.596*m_FP;
C = -m_AP*m_FP*Vol/(Cb*Bo);
1 of 2
9/10/09 11:43
2 of 2
9/10/09 11:44
%==========================================================================
%
%
MOMENT OF INERTIA
%
(respect APP)
%
%==========================================================================
% Moment of Inertia_Barge:
Ixx_barge = kiie_barge(1)^2*Delta_barge + ...
(COG_barge(2)^2+COG_barge(3)^2)*Delta_barge;
1 of 3
9/10/09 11:44
2 of 3
9/10/09 11:44
Ixx_ballast = 0;
Iyy_ballast = 0;
Izz_ballast = 0;
end
% Moment of Inertia_Fuel:
if Delta_fuel ~= 0
Ixx_fuel = kiie_fuel(1)^2*Delta_fuel + ...
(COG_fuel(2)^2+COG_fuel(3)^2)*Delta_fuel;
Iyy_fuel = kiie_fuel(2)^2*Delta_fuel + ...
(COG_fuel(1)^2+COG_fuel(3)^2)*Delta_fuel;
Izz_fuel = kiie_fuel(3)^2*Delta_fuel + ...
(COG_fuel(1)^2+COG_fuel(2)^2)*Delta_fuel;
else
Ixx_fuel = 0;
Iyy_fuel = 0;
Izz_fuel = 0;
end
% Moment of Inertia_System:
Ixx_system = Ixx_barge + Ixx_cargo + Ixx_ballast + Ixx_fuel;
Iyy_system = Iyy_barge + Iyy_cargo + Iyy_ballast + Iyy_fuel;
Izz_system = Izz_barge + Izz_cargo + Izz_ballast + Izz_fuel;
%==========================================================================
%
%
RADIOUS OF GYRATION
%
(respect COG)
%
%==========================================================================
kxxe_system = sqrt((Ixx_system - ...
(COG_system(2)^2 + COG_system(3)^2)*Delta_system)/Delta_system);
kyye_system = sqrt((Iyy_system - ...
(COG_system(1)^2 + COG_system(3)^2)*Delta_system)/Delta_system);
kzze_system = sqrt((Izz_system - ...
(COG_system(1)^2 + COG_system(2)^2)*Delta_system)/Delta_system);
%==========================================================================
%
%
ROLL PERIOD
%
(respect COG)
%
%==========================================================================
Tn = 2*pi*kxxe_system/sqrt(g*GMt);
3 of 3
9/10/09 11:46
1 of 19
9/10/09 11:46
Cwp = 1;
%==========================================================================
%
%
OTHER INPUTS
%
%==========================================================================
rho = 1.025;
% Seawater density (Tn/m^3)
g = 9.81;
% Gravity (m/s^2)
%==========================================================================
%
%
STABILITY ANALYSIS - VIKING BARGE STABILITY CASES
%
(Loading Manual: International Ship Consultants)
%
%==========================================================================
% The Barge's stability is tested through running different cases:
% ------------------------------------------------------------------------%
------------ CASE 1: Lightship -----------% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions:
% ------------------------------------------------------------------------% This case does not contain cargo.
% ------------------------------------------------------------------------% 1.- Calculus of New COG:
% ------------------------------------------------------------------------kiie_cargo=0;kiie_ballast=0;kiie_fuel=0;
COG_cargo=0;COG_ballast=0;COG_fuel=0;
COG_system = COG_barge;
% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol
% ------------------------------------------------------------------------Delta_cargo=0;Delta_ballast=0;Delta_fuel=0;
Vol = (Delta_barge)/rho; % (m^3)
% ------------------------------------------------------------------------% 3.- Draft, T
% ------------------------------------------------------------------------% T = Vol/(Lpp*Bo*Cb); % (m)
% T = 0.86;
[T,L]=draft(Vol,Bo,Lpp,Cb);
% ------------------------------------------------------------------------% 4.- Metacentric Height, GMt
% ------------------------------------------------------------------------% Height of Center of Bouyancy above the keel, KB
KB = T/2;
% (m)
%Transverse Metacentric Height of Bouyancy, BMt
Ix = 1/12*Bo^3*L; % Area Moment of Inertia (m^4)
2 of 19
9/10/09 11:46
3 of 19
BMt = Ix/Vol;
% (m)
% BMt = 76.16
% Height of COG above the keel, KG
KG = COG_system(3); % (m)
% GMt
GMt = KB + BMt - KG;
% GMt = 73.056
% (m)
9/10/09 11:46
% ------------------------------------------------------------------------%
------- CASE 2: Typical Ballast Condition (empty deck) ------% ------------------------------------------------------------------------L = 91.440;
% ------------------------------------------------------------------------% 0.- Cargo Conditions:
% ------------------------------------------------------------------------% Ballast tanks weight, Delta_ballast (Tons)
Delta_ballast = [471.50, 1746.60, 1230.00, 1750.70, 1588.75];
% COGs of the ballast tanks, COG_ballast: [x y z;x2 y2 z2;...]
COG_ballast = [ 85.850 0.000
3.97;...
72.010 0.000
3.050;...
51.440 0.000
2.143;...
30.860 0.000
3.050;...
11.140 0.000
3.256]; % (m)
% Fuel
Delta_fuel = 8.30; % (Tons)
COG_fuel = [14.89
0.000
4.300]; % (m)
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];
4 of 19
9/10/09 11:46
5 of 19
% Tn
Tn = (2*C*Bo/sqrt(GMt));
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
9/10/09 11:46
text(0,70,...
['Draft: T = ' num2str(T) ' m.'])
text(0,60,...
['Metacentric Height: GMt = ' num2str(GMt) ' m. (> 0.15 m.)' ])
text(0,50,...
['Roll Period: Tn = ' num2str(Tn) ' sec.'])
axis off
% ------------------------------------------------------------------------%
------- CASE 3: High Module on Deck Arrival ------% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions:
% ------------------------------------------------------------------------% Module on deck, Delta_module (Tons)
Delta_module = 2000;
% COG of module, COG_module: [x y z]
COG_module = [ 45.740 0.000
37.310];
% Ballast tanks weight, Delta_ballast (Tons)
Delta_ballast = [1746.60, 1588.75];
% COGs of the ballast tanks, COG_ballast: [x y z;x2 y2 z2;...]
COG_ballast = [ 72.010 0.000
3.050;...
11.140 0.000
3.256]; % (m)
% Fuel
Delta_fuel = 1; % (Tons)
COG_fuel = [17.89
0.000
2.000]; % (m)
6 of 19
9/10/09 11:46
7 of 19
% T = Vol/(Lpp*Bo*Cb);
[T,L]=draft(Vol,Bo,Lpp,Cb);
% ------------------------------------------------------------------------% 4.- Metacentric Height, GMt
% ------------------------------------------------------------------------% Height of Center of Bouyancy above the keel, KB
KB = T/2;
%Transverse Metacentric Height of Bouyancy, BMt
Ix = 1/12*Bo^3*L; % Area Moment of Inertia (m^4)
BMt = Ix/Vol;
% Height of COG above the keel, KG
KG = COG_system(3);
% GMt
GMt = KB + BMt - KG;
%
%
%
%
%
C
% Tn
Tn = (2*C*Bo/sqrt(GMt));
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
9/10/09 11:46
% ------------------------------------------------------------------------%
------- CASE 4: Medium high Module on Deck, Arrival ------% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions:
% ------------------------------------------------------------------------% Module on deck, Delta_module (Tons)
Delta_module = 3500;
% COG of module, COG_module: [x y z]
COG_module = [ 46.000 0.000
21.8000];
% Ballast tanks weight, Delta_ballast (Tons)
Delta_ballast = [1746.60, 1588.75];
% COGs of the ballast tanks, COG_ballast: [x y z;x2 y2 z2;...]
COG_ballast = [ 72.009 0.000
3.050;...
11.140 0.000
3.256]; % (m)
% Fuel
Delta_fuel = 1; % (Tons)
COG_fuel = [17.89
0.000
2.000]; % (m)
8 of 19
9/10/09 11:46
9 of 19
% Tn
Tn = (2*C*Bo/sqrt(GMt));
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
9/10/09 11:46
figure
axis([0 50 0 100])
text(0,90,...
'Case 4: Medium High Module on Deck, Arrival' )
text(0,80,...
['Center of Gravity of the system: (m) [' num2str(COG_system) ']'])
text(0,70,...
['Draft: T = ' num2str(T) ' m.'])
text(0,60,...
['Metacentric Height: GMt = ' num2str(GMt) ' m. (> 0.15 m.)' ])
text(0,50,...
['Roll Period: Tn = ' num2str(Tn) ' sec.'])
axis off
% ------------------------------------------------------------------------%
------- CASE 5: Large Module on Deck, Arrival ------% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions:
% ------------------------------------------------------------------------% Module on deck, Delta_module (Tons)
Delta_module = 5500;
% COG of module, COG_module: [x y z]
COG_module = [ 44.000 0.000
15.550];
% Fuel
Delta_fuel = 1; % (Tons)
COG_fuel = [14.89
0.000
2.000]; % (m)
10 of 19
9/10/09 11:46
11 of 19
% Tn
Tn = (2*C*Bo/sqrt(GMt));
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
9/10/09 11:46
figure
axis([0 50 0 100])
text(0,90,...
'Case 5: Large Module on Deck, Arrival')
text(0,80,...
['Center of Gravity of the system: (m) [' num2str(COG_system) ']'])
text(0,70,...
['Draft: T = ' num2str(T) ' m.'])
text(0,60,...
['Metacentric Height: GMt = ' num2str(GMt) ' m. (> 0.15 m.)' ])
text(0,50,...
['Roll Period: Tn = ' num2str(Tn) ' sec.'])
axis off
% ------------------------------------------------------------------------%
------- CASE 6: Larger Module on Deck, Arrival ------% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions:
% ------------------------------------------------------------------------% Module on deck, Delta_module (Tons)
Delta_module = 8500;
% COG of module, COG_module: [x y z]
COG_module = [ 44.800 0.000
9.500];
% Fuel
Delta_fuel = 1; % (Tons)
COG_fuel = [14.89
0.000
2.000]; % (m)
12 of 19
9/10/09 11:46
13 of 19
% T = Vol/(Lpp*Bo*Cb);
[T,L]=draft(Vol,Bo,Lpp,Cb);
% ------------------------------------------------------------------------% 4.- Metacentric Height, GMt
% ------------------------------------------------------------------------% Height of Center of Bouyancy above the keel, KB
KB = T/2;
%Transverse Metacentric Height of Bouyancy, BMt
Ix = 1/12*Bo^3*L; % Area Moment of Inertia (m^4)
BMt = Ix/Vol;
% Height of COG above the keel, KG
KG = COG_system(3);
% GMt
GMt = KB + BMt - KG;
%
%
%
%
%
C
% Tn
Tn = (2*C*Bo/sqrt(GMt));
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
9/10/09 11:46
2.000]; % (m)
14 of 19
9/10/09 11:46
15 of 19
% Tn
Tn = (2*C*Bo/sqrt(GMt));
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
9/10/09 11:46
% ------------------------------------------------------------------------%
------- CASE 8: Max. Uniform Deck Cargo, Departure ------% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions:
% ------------------------------------------------------------------------% Module on deck, Delta_module (Tons)
Delta_module = 9740;
% COG of module, COG_module: [x y z]
COG_module = [ 44.800 0.000
7.330];
% Fuel
Delta_fuel = 8.3; % (Tons)
COG_fuel = [14.89
0.000
4.300]; % (m)
16 of 19
9/10/09 11:46
17 of 19
KB = T/2;
%Transverse Metacentric Height of Bouyancy, BMt
Ix = 1/12*Bo^3*L; % Area Moment of Inertia (m^4)
BMt = Ix/Vol;
% Height of COG above the keel, KG
KG = COG_system(3);
% GMt
GMt = KB + BMt - KG;
%
%
%
%
%
C
% Tn
Tn = (2*C*Bo/sqrt(GMt));
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
9/10/09 11:46
text(0,50,...
['Roll Period: Tn = ' num2str(Tn) ' sec.'])
axis off
% ------------------------------------------------------------------------%
------- CASE 9: Log. Cargo, Density 0.40 Overall ------% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 0.- Cargo Conditions:
% ------------------------------------------------------------------------% Module on deck, Delta_module (Tons)
Delta_module = 6188;
% COG of module, COG_module: [x y z]
COG_module = [ 44.300 0.000
9.800];
% Fuel
Delta_fuel = 1; % (Tons)
COG_fuel = [17.89
0.000
2.000]; % (m)
18 of 19
9/10/09 11:46
19 of 19
% Tn
Tn = (2*C*Bo/sqrt(GMt));
% ------------------------------------------------------------------------% 6.- Calculus of GZ
% ------------------------------------------------------------------------phi_max = atan((D-T)/(Bo/2)); % Max Roll before submerge or inmerse the deck edges.
% Angles of heel
phi = [0:0.01:phi_max];
% Stability Form.
MtS = (1/2)*BMt*tan(phi).^2.*sin(phi);
% GZ
GZ = -MtS + GMt*sin(phi);
8/10/09 13:57
. . . . . .
%
%
%
%
The heave, pitch, and roll motions as well as phase angles in the
frequency domain are firstly solved based on the ship dimensions,
forward speed, headings and wave frequencies. The results are saved on
an excel sheet that can be read later in the program.
%
%
%
%
% The program shows the results for selected ship motions in several plots.
% In addition, the program calculates the wave spectrum of a given sea
% state. The wave spectrum implemented here corresponds to the JONSWAP
% wave spectrum.
%
%
%
%
%
%
%
Then, the program can be selected to carry out short termn statistics
analysis. The most probable largest values(MPLs) for the ship motions are
calculated. The MPLs can be estimated by using different waves coming to
the ship, which means that the MPLs are weighted up within a spread
region by implemented a spread function. But also, the MPLs can be
estimated considering only a main wave (aligned to the wind) coming to
the ship.
1 of 8
8/10/09 13:57
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - close all
clear all
clc
directory = cd;
%==========================================================================
%
%
CALL INPUTS OF THE GENERAL OFFSHORE PROGRAM
%
%==========================================================================
disp('---------------------------------------------------------' )
disp('INITIALIZING OFFSHORE TRANSPORTATION')
disp('OF WIND TURBINE COMPONENTS PROGRAM.... ' )
disp('SETTING INPUTS: ' )
Inputs_offshore_program
%==========================================================================
%
%
MODULE 1: SHIP MOTIONS CALCULATIONS PROGRAM
%
%==========================================================================
%-------------------------------------------------------------------------%
CALCULATIONS OF SHIP MOTIONS, AS WELL AS
%
DISPLACEMENT AND ACCELERATION OF THE CARGO
%-------------------------------------------------------------------------disp('---------------------------------------------------------' )
disp('STARTING SHIP MOTIONS CALCULATIONS PROGRAM: ')
% flag_1 = 1 <-> The FRFs are unknown and must be calculated.
if flag_1 == 1
disp('- - - - - - - - - - - - - - - - - - - - - ' )
disp('THE FREQUENCIES RESPONSES ARE UNKOWN AND MUST BE CALCULATED.' )
disp('CALCULATING FREQUENCY RESPONSE FUNCTIONS...........' )
addpath('Function_Scritpt_Files')
response_amplitude
% Reading the file just created (on the main folder).
addpath('FRFs_excel_Files' )
cd('FRFs_excel_Files')
FRFs = xlsread(['Response_Amplitude_' num2str(name) '_step_' num2str(dbeta)
'_damping_' num2str(floor(percentage)) '.xls'], 'Data');
cd ..;
addpath('Function_Scritpt_Files')
response_amplitude_reading
ship_motions
% flag_1 = 0 <-> The FRFs are known and must be only read.
else
disp('- - - - - - - - - - - - - - - - - - - - - ' )
disp('THE FREQUENCIES RESPONSES ARE KNOWN.' )
disp('READING FREQUENCY RESPONSE FUNCTIONS...........' )
2 of 8
8/10/09 13:57
addpath('Function_Scritpt_Files')
response_amplitude_reading
ship_motions
end
%-------------------------------------------------------------------------%
PLOTTING FRFs
%-------------------------------------------------------------------------%--------------------------PLOTTING SHIP MOTIONS--------------------------if flag_1_plot1 == 1
disp('- - - - - - - - - - - - - - - - - - - - - ' )
disp('PLOTTING SHIP MOTIONS...........' )
plotshipmotion(flag_a,rows,columns,beta_plots,N_beta_plots,...
beta,omega,phi_w,phi_pitch,phi_roll,L,g,k,lambda)
end
%-----------------PLOTTING DISPL. AND ACCEL. OF THE CARGO-----------------if flag_1_plot2 == 1
disp('- - - - - - - - - - - - - - - - - - - - - ' )
disp('PLOTTING DISPLAC. DISPLAC. AND ACCEL. OF THE CARGO...........' )
plotcargomotion(item,sel_cargo,...
flag_b,rows_c,columns_c,beta_plots_cargo,N_beta_plots_cargo,...
beta,omega,phi_u_L,phi_u_T,phi_u_V,...
phi_vel_L,phi_vel_T,phi_vel_V,...
phi_a_L,phi_a_T,phi_a_V)
end
%==========================================================================
%
%
MODULE 2: SHORT TERM STATISTICS PROGRAM
%
%==========================================================================
%-------------------------------------------------------------------------%
CALCULATIONS OF MPLs
%-------------------------------------------------------------------------% Set to MPLs calculations
if flag_2 == 1
disp('---------------------------------------------------------' )
disp('STARTING SHORT TERM STATISTICS PROGRAM: ' )
short_terms_statistics
%---------------------------------------------------------------------%
PLOTTING Sw and MPLs
%---------------------------------------------------------------------%--------------------------PLOTTING WAVE SPECTRUM---------------------if flag_2_plot1 == 1
disp('- - - - - - - - - - - - - - - - - - - - - ')
disp('PLOTTING WAVE SPECTRUM...........' )
figure
plot(omega,Sw)
xlabel('\omega \it{(rad/s)}')
ylabel('S \it{(\omega)}' )
legend(wspectrum_legend,'Location', 'NorthEast' )
3 of 8
8/10/09 13:57
4 of 8
if peak == 3.3
title(['Standard JONSWAP Wave Spectrum. Hs = ' num2str(Hs) ' m.' ' Peak = '
num2str(peak) '.'])
else
title(['Generalized JONSWAP Wave Spectrum. Hs = ' num2str(Hs) ' m.' ' Peak
= ' num2str(peak) '.' ])
end
grid on
end
%--------------------------PLOTTING MPL FOR SHIP MOTIONS--------------if flag_2_plot2 == 1
disp('- - - - - - - - - - - - - - - - - - - - - ')
disp('PLOTTING MOST PROBABLE LARGEST VALUES...........' )
plotMPLshipmotion(flag_c,rows_mpl,columns_mpl,...
ship_headings,ship_headings_MPL,N_ship_headings_MPL,...
Ts,Tz,MPL_w,MPL_pitch,MPL_roll,Hs)
end
%-----------------PLOTTING MPL FOR DISPL. AND ACCEL. OF THE CARGO-----if flag_2_plot3 == 1
disp('- - - - - - - - - - - - - - - - - - - - - ')
disp('PLOTTING DISPLAC. AND ACCEL. OF THE CARGO...........')
plotMPLcargomotion(item,sel_cargo_MPL,...
flag_d,rows_mpl_c,columns_mpl_c,...
ship_headings,ship_headings_MPL_cargo,N_ship_headings_MPL_cargo,...
Ts,Tz,MPL_u_L,MPL_u_T,MPL_u_V,...
MPL_vel_L,MPL_vel_T,MPL_vel_V,...
MPL_a_L,MPL_a_T,MPL_a_V)
end
end
%==========================================================================
%
%
MODULE 3: TIME SERIES PROGRAM
%
%==========================================================================
%-------------------------------------------------------------------------%
CALCULATIONS OF TIME SERIES
%-------------------------------------------------------------------------if flag_3 == 1
disp('---------------------------------------------------------' )
disp('STARTING TIME SERIES PROGRAM: ' )
time_series
%---------------------------------------------------------------------%
PLOTTING RESULTS
%---------------------------------------------------------------------%--------------------- PLOTTING SPECTRUM RESPONSES--------------if flag_3_plot1 == 1
disp('- - - - - - - - - - - - - - - - - - - - - ')
disp('PLOTTING SPECTRUM RESPONSES...........')
plotSpectrumResponse(flag_e1,flag_e2,rows_sr,columns_sr,...
ship_headings,ship_headings_sr_plot,...
8/10/09 13:57
omega,Tz,Ts,...
S_heave,S_pitch,S_roll,...
S_u_L,S_u_T,S_u_V,...
S_vel_L,S_vel_T,S_vel_V,...
S_a_L,S_a_T,S_a_V)
end
%--------------------- PLOTTING TIME SERIES --------------if flag_3_plot2 == 1
disp('- - - - - - - - - - - - - - - - - - - - - ')
disp('PLOTTING TIME SERIES...........' )
% --------------------------- HEAVE -------------------------------if flag_f1 == 1
disp('HEAVE TIME SERIES...........' )
response_label = 'Heave (\it{m})' ;
num_fig = 100000;
plot_timeseries(dt,time,N_simulation,rows_ts,columns_ts,...
flag_f2,flag_f3,flag_f4,flag_f5,flag_f6,...
flag_f7,flag_f8,flag_f9,flag_f10,flag_f11,flag_f12,...
ship_headings_ts,ship_headings_ts_plot,...
index_Tz_plot,Tz_ts(index_Tz_plot),response_label, ...
heave_tot,num_fig,index_cargo,label_cargo)
end
% --------------------------- PITCH -------------------------------if flag_f2 == 1
disp('PITCH TIME SERIES...........' )
response_label = 'Pitch (\it{deg})' ;
num_fig = 200000;
plot_timeseries(dt,time,N_simulation,rows_ts,columns_ts,...
flag_f2,flag_f3,flag_f4,flag_f5,flag_f6,...
flag_f7,flag_f8,flag_f9,flag_f10,flag_f11,flag_f12,...
ship_headings_ts,ship_headings_ts_plot,...
index_Tz_plot,Tz_ts(index_Tz_plot),response_label, ...
pitch_tot,num_fig,index_cargo,label_cargo)
end
% --------------------------- ROLL -------------------------------if flag_f3 == 1
disp('ROLL TIME SERIES...........' )
response_label = 'Roll (\it{deg})' ;
num_fig = 300000;
plot_timeseries(dt,time,N_simulation,rows_ts,columns_ts,...
flag_f2,flag_f3,flag_f4,flag_f5,flag_f6,...
flag_f7,flag_f8,flag_f9,flag_f10,flag_f11,flag_f12,...
ship_headings_ts,ship_headings_ts_plot,...
index_Tz_plot,Tz_ts(index_Tz_plot),response_label, ...
roll_tot,num_fig,index_cargo,label_cargo)
end
% --------------------------- u_L -------------------------------if flag_f4 == 1
disp('LONGITUDINAL DISP. TIME SERIES...........' )
response_label = 'u_{L} (\it{m})' ;
num_fig = 400000;
flag_f2 = 0; flag_f3 = 0;
plot_timeseries(dt,time,N_simulation,rows_ts,columns_ts,...
flag_f2,flag_f3,flag_f4,flag_f5,flag_f6,...
flag_f7,flag_f8,flag_f9,flag_f10,flag_f11,flag_f12,...
5 of 8
8/10/09 13:57
end
% --------------------------- u_T -------------------------------if flag_f5 == 1
disp('TRANSVERSE DISP. TIME SERIES...........' )
response_label = 'u_{T} (\it{m})' ;
num_fig = 500000;
flag_f2 = 0; flag_f3 = 0;
plot_timeseries(dt,time,N_simulation,rows_ts,columns_ts,...
flag_f2,flag_f3,flag_f4,flag_f5,flag_f6,...
flag_f7,flag_f8,flag_f9,flag_f10,flag_f11,flag_f12,...
ship_headings_ts,ship_headings_ts_plot,...
index_Tz_plot,Tz_ts(index_Tz_plot),response_label, ...
u_T_tot,num_fig,index_cargo,label_cargo)
end
% --------------------------- u_V -------------------------------if flag_f6 == 1
disp('VERTICAL DISP. TIME SERIES...........' )
response_label = 'u_{V} (\it{m})' ;
num_fig = 600000;
flag_f2 = 0; flag_f3 = 0;
plot_timeseries(dt,time,N_simulation,rows_ts,columns_ts,...
flag_f2,flag_f3,flag_f4,flag_f5,flag_f6,...
flag_f7,flag_f8,flag_f9,flag_f10,flag_f11,flag_f12,...
ship_headings_ts,ship_headings_ts_plot,...
index_Tz_plot,Tz_ts(index_Tz_plot),response_label, ...
u_V_tot,num_fig,index_cargo,label_cargo)
end
% --------------------------- Vel_L -------------------------------if flag_f7 == 1
disp('LONGITUDINAL VEL. TIME SERIES...........' )
response_label = 'vel_{L} (\it{m/s})' ;
num_fig = 700000;
flag_f2 = 0; flag_f3 = 0;
plot_timeseries(dt,time,N_simulation,rows_ts,columns_ts,...
flag_f2,flag_f3,flag_f4,flag_f5,flag_f6,...
flag_f7,flag_f8,flag_f9,flag_f10,flag_f11,flag_f12,...
ship_headings_ts,ship_headings_ts_plot,...
index_Tz_plot,Tz_ts(index_Tz_plot),response_label, ...
vel_L_tot,num_fig,index_cargo,label_cargo)
end
% --------------------------- Vel_T -------------------------------if flag_f8 == 1
disp('TRANSVERSE VEL. TIME SERIES...........' )
response_label = 'vel_{T} (\it{m/s})' ;
num_fig = 800000;
flag_f2 = 0; flag_f3 = 0;
plot_timeseries(dt,time,N_simulation,rows_ts,columns_ts,...
flag_f2,flag_f3,flag_f4,flag_f5,flag_f6,...
flag_f7,flag_f8,flag_f9,flag_f10,flag_f11,flag_f12,...
ship_headings_ts,ship_headings_ts_plot,...
index_Tz_plot,Tz_ts(index_Tz_plot),response_label, ...
vel_T_tot,num_fig,index_cargo,label_cargo)
end
6 of 8
8/10/09 13:57
7 of 8
8/10/09 13:57
8 of 8
8/10/09 14:08
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%-------------------------------------------------------------------------%==========================================================================
%
%
INPUTS FOR THE GENERAL OFFSHORE PROGRAM
%
%==========================================================================
%-------------------------------------------------------------------------%
0.- Select Modules
%-------------------------------------------------------------------------% The offshore program through different flags can decide which modules are
% going to be calculated. There are three main modules:
%
1.- Ship Motions Program Module
%
2.- Short Terms Statistics Program Module
%
3.- Time Series Program Module.
%-------------------------------------------------------------------------%
1.- Select Ship Motions Program Module
%-------------------------------------------------------------------------% The frequency response functions (FRFs) and phase angles for heave, pitch and
% roll can be calculated or read from a excel sheet.
% If the FRFs are:
%
Known, i.e. read from a excel sheet:
Type: flag_1 = 0
%
Unknown, i.e. must be calculated:
Type: flag_1 = 1
flag_1 = 1;
if flag_1 == 0
% Folder is created or added containing FRFs excel files.
addpath('FRFs_excel_Files' )
cd('FRFs_excel_Files')
% Type the name of the file within the previous folder.
FRFs = xlsread('Response_Amplitude_Viking_step_9_damping_2.xls', 'Data');
cd ..;
end
1 of 10
8/10/09 14:08
%-------------------------------------------------------------------------%
2.- Select Short Term Statistics Program Module
%-------------------------------------------------------------------------% If this module is selected, the most probable largest values (MPLs) are
% calculated. These MPLs are calculated for both ship motions and
% displacements and accelerations of the cargo.
% Thus, if the module is:
%
Selected, i.e. MPLs are calculated:
%
Otherwise:
flag_2 = 1;
Type: flag_2 = 1
Type: flag_2 = 0
%-------------------------------------------------------------------------%
3.- Select Time Series Program Module
%-------------------------------------------------------------------------% If this module is selected, the time series are generated from the FRFs
% calculated in the ship motions module.
% Thus, if the module is:
%
Selected:
%
Otherwise:
flag_3 = 1;
Type: flag_3 = 1
Type: flag_3 = 0
%==========================================================================
%
%
INPUTS FOR SHIP MOTIONS CALCULATIONS PROGRAM
%
%==========================================================================
%-------------------------------------------------------------------------%
0.- Select General Parameters
%-------------------------------------------------------------------------% Gravity, g (m/s2)
g = 9.81;
% Density, rho (kg/m3)
rho = 1025; % For sea water.
%-------------------------------------------------------------------------%
1.- Select Ship
%-------------------------------------------------------------------------% Folder is created or added containing the dimensions of the ships.
addpath( 'Ship_Dimensions_Files')
% Type the name of the file within the previous folder.
ship_dimensions_Viking
%-------------------------------------------------------------------------%
2.- Select Center of Gravity
%-------------------------------------------------------------------------%
flag_1_1 = 1 -> COG is given in the ship dimensions file
%
flag_1_1 = 0 -> COG has to be derived from the ship dimensions file
% Note: flag_1_1 is selected manually within the ship dimensions file.
2 of 10
8/10/09 14:08
3 of 10
if flag_1_1 == 0
% Amidship, Amid
Amid = Lpp/2;
% Center of Motion, CM (x-direction)
CM = Amid;
% Position of center of reference, C_R [x,y,z]
CR = [CM,0,T];
end
%-------------------------------------------------------------------------%
3.- Forward Speed
%-------------------------------------------------------------------------% If the forward speed is given in knots
V = 0;
% Note: 1 knot = 0.515 m/s
V = V*0.515; % Transforming into m/s
% Otherwise:
% V = 12.609; % (m/s)
%-------------------------------------------------------------------------%
4.- Range of Heading Angles
%-------------------------------------------------------------------------%..................................NOTE....................................
%
The series of headings must be given in increasing order.
%..........................................................................
% The range is setting by heading step angle: dbeta (in degrees)
dbeta = 9;
beta = [0:dbeta:54 65 72:dbeta:108 115 126:dbeta:234 245 252:dbeta:288 295 306:dbeta:
(360-dbeta)]*pi/180; % Transforming into radians
% Note:
% ----% If it is desired a specific range of headings, uncomment the part
% below:
% beta = [0 45 90 135 180 225 270 315]*pi/180; dbeta = 0; % Transforming into radians
%-------------------------------------------------------------------------%
5.- Range of Wave Frequencies
%-------------------------------------------------------------------------% Wave Frequency, omega (rad/s)
omega_max = 2;
d_omega = 0.01;
omega_min = 0.01;
omega=[omega_min:d_omega:omega_max];
%-------------------------------------------------------------------------%
6.- Additional Damping
%-------------------------------------------------------------------------% If the FRFs are calculated (flag_1 = 1), the Additional Damping must be selected:
if flag_1 == 1
% The additional damping is seen as percentage of the critical damping
% Press percentage: e.g = 0, 1, 2, 10, 20, etc.
percentage = 2;
8/10/09 14:08
end
%-------------------------------------------------------------------------%
7.- Select Cargo Positions
%-------------------------------------------------------------------------%..................................NOTE....................................
%
The cargo must be given in global coordinates.
%..........................................................................
% Select if there is multi_cargo_positions file
%
flag_1_2 = 0 -> No
%
flag_1_2 = 1 -> Yes
flag_1_2 = 1;
if flag_1_2 == 0
% Type manually the desired cargo positions as:
%
x_cargo = [cargo1_x, cargo1_y, cargo1_z; ..._x ; ..._y ; ..._z ];
x_cargo = [0,0,0];
[itemr,itemc]=size(x_cargo);
item = 1:itemr;
else
% Folder is created or added containing series of cargo positions.
addpath('Cargo_Positions_Files')
% Type the name of the file within the previous folder.
multi_cargo_positions_Viking_upWT
end
%-------------------------------------------------------------------------%
8.- Plotting Parameters
%-------------------------------------------------------------------------%--------------------------PLOTTING SHIP MOTIONS--------------------------% Select if FRFs of ship motions are plotted
%
flag_1_plot1 = 0 -> No
%
flag_1_plot1 = 1 -> Yes
flag_1_plot1 = 0;
if flag_1_plot1 == 1
% Select Headings to plot
beta_plots = [0 45 90 135];
N_beta_plots = length(beta_plots);
% Select if FRFs are plotted per heading angle or all in the same fig
%
flag_a = 1 ->All the headings are plotted in the same plot for each
%
ship motion
%
flag_a = 0 ->Each heading is plotted in the diff. subplot for each
%
ship motion
flag_a = 1;
if flag_a == 1
rows = 1;
columns = 1;
else
% Select Rows and Columns for the subplots
rows = 3;
4 of 10
8/10/09 14:08
columns = 2;
end
end
%-------------PLOTTING DISPL. VEL, AND ACCEL. OF THE CARGO-----------------% Select if FRFs of displac. and acceler. are plotted
%
flag_1_plot2 = 0 -> No
%
flag_1_plot2 = 1 -> Yes
flag_1_plot2 = 0;
if flag_1_plot2 == 1
% Select cargo to plot, i.e. from item variable select the cargo
% positions to plot their FRFs of the displ. and accel.
sel_cargo = [item(3)];
% Select Headings to plot
beta_plots_cargo = [180 45 225 90 315 135];
N_beta_plots_cargo = length(beta_plots_cargo);
% Select if FRFs are plotted per heading angle or all in the same fig
%
flag_b = 1 ->All the headings are plotted in the same plot for each
%
displ. and accel. of each cargo
%
flag_b = 0 ->Each heading is plotted in the diff. subplot for each
%
displ. and accel. of all the cargo
flag_b = 1;
if flag_b == 1
rows_c = 1;
columns_c = 1;
else
% Select Rows and Columns for the subplots
rows_c = 3;
columns_c = 2;
end
end
%==========================================================================
%
%
INPUTS FOR SHORT TERMS STATISTICS PROGRAM
%
%==========================================================================
if flag_2 == 1
%---------------------------------------------------------------------%
1.- Short Crested Seaways
%---------------------------------------------------------------------% Select if MPLs are calculated based on the short crested seaways,i.e.
% considering different incoming waves.
%
flag_2_1 = 0 -> No
%
flag_2_1 = 1 -> Yes
flag_2_1 = 0;
if flag_2_1 == 1
%----------- A) INTEGRATION STEP ----------% Select the integration step or sweeping step for the heading angles:
5 of 10
8/10/09 14:08
6 of 10
%---------------------------------------------------------------------%
2.- Create Excel Sheet with the MPLs
%---------------------------------------------------------------------% Select if MPLs are saved in a excel sheet.
%
flag_2_2 = 0 -> No
%
flag_2_2 = 1 -> Yes
flag_2_2 = 0;
%---------------------------------------------------------------------%
3.- Select Sea State
%---------------------------------------------------------------------% Folder is created or added containing the dimensions of the ships.
addpath('Sea_States_Files' )
% Type file name ship_dimensions
sea_state_5_Viking
%---------------------------------------------------------------------%
4.- Range of Ship Heading Angles for the MPL calculations
%---------------------------------------------------------------------% The range is setting by heading step angle: dbeta_MPLs (in degrees)
%
dbeta_MPLs = 9;
%
ship_headings = [0:dbeta_MPLs:(360 - dbeta_MPLs)]*pi/180; % Transforming into
radians
% Note:
% ----% If it is desired a specific range of headings, uncomment the part
% below:
%
ship_headings = [0 45 65 90 115 135 180 225 245 270 295 315]*pi/180; %
Transforming into radians
ship_headings = [180]*pi/180; % Transforming into radians
dbeta_MPLs = 0;
%---------------------------------------------------------------------%
5.- Select Time Limit for the MPLs
%---------------------------------------------------------------------% The time for the calculations is limited to a range from: [0.5 - 10] h.
% Type manually:
limited_time = 3;
limited_time = limited_time*3600; % Transforming into sec.
%---------------------------------------------------------------------%
6.- Plotting Parameters
%----------------------------------------------------------------------
8/10/09 14:08
7 of 10
%-------------------------------PLOTTING CARGO MPLs-------------------% Select if MPLs of displac. and acceler. of the cargo are plotted
%
flag_2_plot3 = 0 -> No
%
flag_2_plot3 = 1 -> Yes
flag_2_plot3 = 0;
if flag_2_plot3 == 1
% Select cargo to plot, i.e. from item variable select the positions of the
% cargo to plot their MPLs of displ. and accel.
sel_cargo_MPL = [item(5)];
% Select Headings to plot
ship_headings_MPL_cargo = [0 45 115 225 270 295];
N_ship_headings_MPL_cargo = length(ship_headings_MPL_cargo);
% Select if MPLs are plotted per heading angle or all in the same fig
%
flag_d = 1 ->All the headings are plotted in the same plot for each
%
MPLs of displ. and accel. for each cargo
%
flag_d = 0 ->Each heading is plotted in the diff. subplot for each
%
MPLs of displ. and accel. of all the cargo
flag_d = 1;
8/10/09 14:08
if flag_d == 1
rows_mpl_c = 1;
columns_mpl_c = 1;
else
% Select Rows and Columns for the subplots
rows_mpl_c = 3;
columns_mpl_c = 1;
end
end
end
%==========================================================================
%
%
INPUTS FOR TIME SERIES PROGRAM
%
%==========================================================================
if flag_3 == 1
%---------------------------------------------------------------------%
1.- Time Series Parameters
%---------------------------------------------------------------------% For a given Response Spectrum, the numbers of points to create the
% Discrete Fourier Transform is subjected to the Aliasing Theorem. This
% Theorem sets that the number of points must be double than the number
% of wave frequencies.
% 1.- Wave Frequencies:
Previous selected range of wave freq.
% 2.- Spectrum Frequencies: f_spectrum = wave_freq/(2pi).
(Hz)
% 3.- Nyquist Frequency:
f_nyquist = max(f_spectrum).
(Hz)
% 4.- Sample Frequency:
f_sample = f_nyquist*2.
(Hz)
% 5.- Time Step:
dt = 1/f_sample.
(s)
% 6.- Number of points:
N_points = 2*length(wave_freq). (-)
% 7.- Max. Time of Simulat: time = N_points*dt.
(s)
%
% Therefore, for a typical max wave frequency of 1.5 rad/s and
% following the simple aforementioned equations, the maximum time of
% simulation is around 10 min.
% So with a minimum of 10 min, the time series can be calculated as
% long as it is preferred, by selecting more time simulations, i.e. 2
% time simulations will provide 20 min time series; 3 time simulations
% will provide 30 min time series, and so on...
%
% Note, that it has been selected as Nyquisy frequency the maximum wave
% frequency for convenience, but this can be changed.
%
% Select time of simulations:
Number_of_simulations = 150; dt=0.03;
%---------------------------------------------------------------------%
2.- Select Ship Heading for the Time Series
%---------------------------------------------------------------------ship_headings_ts = [180];
dbeta_MPLs = 0;
8 of 10
8/10/09 14:08
%---------------------------------------------------------------------%
3.- Select Sea State (Manual not from file)
%---------------------------------------------------------------------% Significant wave Height, Hs (m)
Hs = 5.0;
% Zero-Upcrossing Period, Tz (s)
% Tz_ts = [4:0.5:10 13]; % As in the MPL calculations
Tz_ts = [7.5];
% Peak Enhancement factor, peak_factor
peak = 3.3;
if peak == 3.3
disp('It is used Standard JONSWAP Wave Spectrum. ' )
end
%---------------------------------------------------------------------%
4.- Plotting Results
%---------------------------------------------------------------------%---------------------- PLOTTING Spectrum Response -------------------% Select if the spectrum responses are plotted:
%
flag_3_plot1 = 0 -> No
%
flag_3_plot1 = 1 -> Yes
flag_3_plot1 = 0;
if flag_3_plot1 == 1
% Select ship headings to plot:
ship_headings_sr_plot = [180];
% Select how to present the results. Each subfigure contains the
% spectrum response of each heading for all wave periods.
rows_sr = 2;
columns_sr = 2;
% Select what responses are plotted:
% Heave, Pitch and roll
%
flag_e1 = 0 -> No
%
flag_e1 = 1 -> Yes
flag_e1 = 1;
%
% Cargo motions
%
flag_e2 = 0 -> No
%
flag_e2 = 1 -> Yes
flag_e2 = 0;
end
%---------------------- PLOTTING TIME SERIES -------------------% Select if the time series are plotted:
%
flag_3_plot2 = 0 -> No
%
flag_3_plot2 = 1 -> Yes
flag_3_plot2 = 1;
if flag_3_plot2 == 1
% Select ship headings to plot:
ship_headings_ts_plot = [180];
% Select how to present the results. Each subfigure contains the
9 of 10
8/10/09 14:08
%---------------------------------------------------------------------%
4.- Checking Results
%---------------------------------------------------------------------% Select whether checking the time series process.
%
flag7 = 0 -> No
%
flag7 = 1 -> Yes
flag7 = 0;
end
10 of 10
8/10/09 14:01
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
% clear all
% close all
% clc
%-------------------------------------------------------------------------%---------------------- CASE 1: 1 WT W/O BALLAST -------------------------%-------------------------------------------------------------------------%-------------------------------------------------------------------------%
0.- NAME OF THE SHIP
%-------------------------------------------------------------------------name = 'Viking' ;
%-------------------------------------------------------------------------%
1.- SHIP MAIN DIMENSIONS
%-------------------------------------------------------------------------% Length between perpendiculars, Lpp
Lpp = 85.1897;
L = Lpp;
% Maximum Waterline Breadth, Bo (m)
Bo = 27.432;
% Draught, T (mean) (m)
T = 2.4981;
% Height, height (m)
ship_height = 6.096;
%-------------------------------------------------------------------------%
2.- PARAMETERS
%-------------------------------------------------------------------------% GENERAL PARAMETERS
% Block Coefficient, Cb
Cb = 0.9588;
1 of 2
8/10/09 14:01
% ROLLING PARAMETERS
% Water Plane area Coefficient, Cwp
Cwp = 1; % Estimated: Assumed to the maximum.
% Length Coefficient, delta: this parameter takes into account the portion
% of prismatic beams for rolling.
delta = 0.9; % Estimated
if delta > Cwp
disp('error! The delta parameter must be smaller than Cwp.' )
break
end
% Natural Period of Rolling, Tn (s)
Tn=60.5647;
% Transverse Metacentric Height, GMt (m)
GMt=21.8263;
%-------------------------------------------------------------------------%
3.- CENTER OF GRAVITY
%-------------------------------------------------------------------------% If the Center of gravity is:
%
Known -> Type flag_1_1 = 1
%
Unknown -> Type flag_1_1 = 0
flag_1_1 = 1;
if flag_1_1 == 1
% Type [x_g,y_g,z_g] of the COG.
CR = [47.1658 0 5.6044];
end
2 of 2
8/10/09 14:01
1 of 4
8/10/09 14:01
theta_wing_blade1 = theta_wing_blade1*pi/180;
phase = 2*pi/nB;
theta_wing_blades = [theta_wing_blade1;...
theta_wing_blade1+phase;...
theta_wing_blade1+2*phase];
%-------------------------------------------------------------------------%
Transformation Matrices
%-------------------------------------------------------------------------%
-------From Coordinate System 1 to Coordinate System 2------%To go from coordinate system 1 to coordinate system 2 we have two
%rotations. One is about the first x axis (yaw) and the second is about the
%first y axis (tilt). For this we must create a transformation matrix.
a1=[1 0 0;...
0 cos(theta_yaw) sin(theta_yaw);...
0 -sin(theta_yaw) cos(theta_yaw)];
a2=[cos(theta_tilt) 0 -sin(theta_tilt);...
0 1 0;...
sin(theta_tilt) 0 cos(theta_tilt)];
a3=[1 0 0;...
0 1 0;...
0 0 1];
a12=a3*a2*a1;
%
-------From Coordinate System 3 to Coordinate System 4------a34=[cos(theta_cone) 0 -sin(theta_cone);...
0 1 0;...
sin(theta_cone) 0 cos(theta_cone)];
%==========================================================================
%
%
1.- GLOBAL COORDINATES OF THE SELECTED CARGO
%
POSITION
%
%==========================================================================
% Position of the center of gravity (COG) for all items with coordinates as
%(COG_x, COG_y, COG_z) from APP.
% NOTE: Dimensions in meters
%--------------------------------- Tower ---------------------------------r_tower = TOWER(:,1);
x_tower = [COG_system(1)*ones(length(r_tower),1) zeros(length(r_tower),1)
(r_tower+ship_height)];
%-------------------------------- Blades ---------------------------------r_blade = BLADE(:,1);
%
- - - - - - Note: WT has a different Coordinate System - - - - %
---------- Blade1 ----------%
-------From Coordinate System 2 to Coordinate System 3------a23_b1=[cos(theta_wing_blades(1)) sin(theta_wing_blades(1)) 0;...
-sin(theta_wing_blades(1)) cos(theta_wing_blades(1)) 0;...
0 0 1];
%
-------From Coordinate System 1 to Coordinate System 4------a14_b1=a34*a23_b1*a12;
2 of 4
8/10/09 14:01
%
-------From Coordinate System 2 to Coordinate System 4------a24_b1=a34*a23_b1;
%
Blade_Coord = hub + a14*r_b + a12'r_s
Blade_coordinates_undef_blade1= hub*ones(1,length(r_blade)) + ...
a14_b1*[r_blade';zeros(1,length(r_blade));zeros(1,length(r_blade))] + ...
a12'*[zeros(1,length(r_blade));zeros(1,length(r_blade));SHAFT_L*ones(1,length
(r_blade))]; % Note Shaft is positive since the WT is facing wind
Blade_coordinates_undef_blade1 = Blade_coordinates_undef_blade1';
% Allocating on the deck: Aligned with COG
x_blade1 = [COG_system(1) + Blade_coordinates_undef_blade1(:,3) ...
COG_system(2) + Blade_coordinates_undef_blade1(:,2) ...
Blade_coordinates_undef_blade1(:,1) + ship_height];
%
---------- Blade2 ----------%
-------From Coordinate System 2 to Coordinate System 3------a23_b2=[cos(theta_wing_blades(2)) sin(theta_wing_blades(2)) 0;...
-sin(theta_wing_blades(2)) cos(theta_wing_blades(2)) 0;...
0 0 1];
%
-------From Coordinate System 1 to Coordinate System 4------a14_b2=a34*a23_b2*a12;
%
-------From Coordinate System 2 to Coordinate System 4------a24_b2=a34*a23_b2;
%
Blade_Coord = a14'*r_b + a12'r_s
Blade_coordinates_undef_blade2= hub*ones(1,length(r_blade)) + ...
a14_b2'*[r_blade';zeros(1,length(r_blade));zeros(1,length(r_blade))] + ...
a12'*[zeros(1,length(r_blade));zeros(1,length(r_blade));SHAFT_L*ones(1,length
(r_blade))]; % Note Shaft is positive since the WT is facing wind
Blade_coordinates_undef_blade2 = Blade_coordinates_undef_blade2';
% Allocating on the deck: Aligned with COG
x_blade2 = [COG_system(1) + Blade_coordinates_undef_blade2(:,3) ...
COG_system(2) + Blade_coordinates_undef_blade2(:,2) ...
Blade_coordinates_undef_blade2(:,1) + ship_height];
%
---------- Blade3 ----------%
-------From Coordinate System 2 to Coordinate System 3------a23_b3=[cos(theta_wing_blades(3)) sin(theta_wing_blades(3)) 0;...
-sin(theta_wing_blades(3)) cos(theta_wing_blades(3)) 0;...
0 0 1];
%
-------From Coordinate System 1 to Coordinate System 4------a14_b3=a34*a23_b3*a12;
%
-------From Coordinate System 2 to Coordinate System 4------a24_b3=a34*a23_b3;
%
Blade_Coord = a14'*r_b + a12'r_s
Blade_coordinates_undef_blade3= hub*ones(1,length(r_blade)) + ...
a14_b3'*[r_blade';zeros(1,length(r_blade));zeros(1,length(r_blade))] + ...
a12'*[zeros(1,length(r_blade));zeros(1,length(r_blade));SHAFT_L*ones(1,length
(r_blade))]; % Note Shaft is positive since the WT is facing wind
Blade_coordinates_undef_blade3 = Blade_coordinates_undef_blade3';
% Allocating on the deck: Aligned with COG
x_blade3 = [COG_system(1) + Blade_coordinates_undef_blade3(:,3) ...
COG_system(2) + Blade_coordinates_undef_blade3(:,2) ...
Blade_coordinates_undef_blade3(:,1) + ship_height];
3 of 4
8/10/09 14:01
% x_blade1 = [(COG_system(1)+shaft)*ones(length(r_blade),1)
(r_tower(end)-r_blade+ship_height)];
% x_blade2 = [(COG_system(1)+shaft)*ones(length(r_blade),1)
(r_tower(end)+r_blade*sin(30*pi/180)+ship_height)];
% x_blade3 = [(COG_system(1)+shaft)*ones(length(r_blade),1)
(r_tower(end)+r_blade*sin(30*pi/180)+ship_height)];
x_cargo = [x_tower;x_blade1;x_blade2;x_blade3];
% Intem Number according to the plot specified
item = [1:1:length(x_cargo)];
item_tower_top = length(x_tower);
item_blade1_tip = length(x_blade1);
item_blade2_tip = length(x_blade2);
item_blade3_tip = length(x_blade3);
4 of 4
zeros(length(r_blade),1)
-r_blade*cos(30*pi/180)
r_blade*cos(30*pi/180)
9/10/09 12:00
1 of 1
8/10/09 14:11
% Outputs:
%
- Spreadsheet (excel file) with the frequency response functions for
%
heave, pitch and roll, as well as the phase angles for a range of
%
heading angles.
% Inputs:
%
- Ship Dimensions: Lpp, B, etc
%
- Center of gravity
%
- Forward Speed
%
- Heading angle
%
- Wave Frequencies.
% References:
%
%
%
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------%
1.- CALCULATING FREQUENCY RESPONSE FUNCTIONS (phi_R) AND PHASE ANGLES
%
FOR A RANGE OF HEADING ANGLES AND WAVE FREQUENCIES
%
Dimensions: phi_R [beta x omega]
%
[R = w, pitch and roll]
%-------------------------------------------------------------------------for j = 1:length(beta)
for i = 1:length(omega)
%-----------------------------------------------------------------%
1.1.- CALCULATE PARAMETERS
1 of 8
8/10/09 14:11
%-----------------------------------------------------------------%-------------------------------DIMENSIONAL-----------------------% Breadth, B
B = Bo*Cb;
% Wave Number, k
k(i) = omega(i)^2/g;
% Lambda
lambda(i)=2*pi/k(i);
% Frequency of encounter, omega_bar
omega_bar(j,i) = abs(omega(i) - k(i)*V*cos(beta(j)));
% Froude Number, Fn
Fn = V/(sqrt(g*L));
%----------------------------HEAVE AND PITCH----------------------% Parameter Alpha, alpha
alpha(j,i) = 1 - Fn*sqrt(k(i)*L)*cos(beta(j));
% Hydrodynamic Damping, A
A(j,i) = 2*sin(0.5*k(i)*B*alpha(j,i)^2)...
*exp(-k(i)*T*alpha(j,i)^2);
% Effective wave number, ke
ke(j,i) = abs(k(i)*cos(beta(j)));
% Parameter f, f
f(j,i) = sqrt( (1 - k(i)*T)^2 + ...
(A(j,i)^2/(k(i)*B*alpha(j,i)^3))^2 );
% Smith Correction factor, kappa
kappa = exp(-k(i)*T);
% Forcing Functions, F
F = abs(kappa*f(j,i)*(
G = abs(kappa*f(j,i)*(
( sin(ke(j,i)*L/2)
& G
2/(ke(j,i)*L) )*sin(ke(j,i)*L/2));
24/((ke(j,i)*L)^2*L) )*...
- (ke(j,i)*L/2)*cos(ke(j,i)*L/2) ));
2 of 8
8/10/09 14:11
3 of 8
8/10/09 14:11
21.358;
-7.9;
-8.516;
>= 10
41.407;
-7.867;
-6.161;
if B1/T > 3
ratio =
a_B1T =
b_B1T =
d_B1T =
elseif B1/T
a_B1T =
b_B1T =
d_B1T =
elseif Bo/T
a_B1T =
b_B1T =
d_B1T =
end
4 of 8
8/10/09 14:11
5 of 8
%-----------------------------------------------------------------%
1.3.- CALCULATE FREQ. RESP. FUNCTION FOR HEAVE (phi_w)
%-----------------------------------------------------------------phi_w(j,i)= eta(j,i)*F;
8/10/09 14:11
%-----------------------------------------------------------------%
1.4.- CALCULATE FREQ. RESP. FUNC. FOR PITCH (phi_pitch)
%-----------------------------------------------------------------phi_pitch(j,i) = eta(j,i)*G;
%-----------------------------------------------------------------%
1.5.- CALCULATE FREQ. RESP. FUNCT. FOR ROLL (phi_roll)
%-----------------------------------------------------------------phi_roll(j,i) = Moment_Amplitude(j,i)/...
( (-(omega_bar(j,i)^2)*(Tn/(2*pi))^2 + 1)^2*C44^2 ...
+ omega_bar(j,i)^2*B44(j,i)^2 )^0.5;
%-----------------------------------------------------------------%
1.6.- CALCULATE PHASE ANGLES FOR HEAVE AND PITCH
%-----------------------------------------------------------------% A.-) PHASE ANGLE FOR HEAVE AND PITCH, epsilon_w
% Phase Angle for heave and pitch, epsilon_w
cos_epsilon_w(j,i) = (1 - 2*k(i)*T*alpha(j,i)^2)*eta(j,i);
sin_epsilon_w(j,i) = (-A(j,i)^2/(k(i)*B*alpha(j,i)^2))*eta(j,i);
epsilon_w(j,i) = atan2(sin_epsilon_w(j,i),cos_epsilon_w(j,i));
% B.-) PHASE ANGLE FOR FORCING FUNCTION, epsilon_f
% Phase Angle for forcing function, epsilon_f {Vector = [freq]}
cos_epsilon_f(j,i) = (1 - k(i)*T)/f(j,i);
sin_epsilon_f(j,i) = A(j,i)^2/(k(i)*B*alpha(j,i)^3);
epsilon_f(j,i) = atan2(sin_epsilon_f(j,i),cos_epsilon_f(j,i));
% C.-) TOTAL PHASE ANGLE FOR HEAVE, epsilon_w_tot
epsilon_w_tot(j,i) = epsilon_w(j,i) + epsilon_f(j,i);
% D.-) TOTAL PHASE ANGLE FOR pitch, epsilon_pitch_tot
epsilon_pitch_tot(j,i) = epsilon_w_tot(j,i) - pi/2;
%-----------------------------------------------------------------%
1.7.- CALCULATE PHASE ANGLES FOR ROLL
%-----------------------------------------------------------------% A.-) PHASE ANGLE FOR ROLL, epsilon_roll
% Phase Angle for roll, epsilon_roll {Vector = [freq]}
cos_epsilon_roll(j,i) = (-omega_bar(j,i)^2*(Tn/(2*pi))^2 + 1)*C44./...
( ((-omega_bar(j,i)^2*(Tn/(2*pi))^2 + 1)^2)*C44^2 +...
omega_bar(j,i)^2*B44(j,i)^2 )^(0.5);
sin_epsilon_roll(j,i) = omega_bar(j,i)*B44(j,i)/...
( ((-omega_bar(j,i)^2*(Tn/(2*pi))^2 + 1)^2)*C44^2 +...
omega_bar(j,i)^2*B44(j,i)^2 )^(0.5);
epsilon_roll(j,i) =...
atan2(sin_epsilon_roll(j,i),cos_epsilon_roll(j,i));
6 of 8
8/10/09 14:11
7 of 8
2*(b44_ratio(j,i))^(0.5)...
*cos(0.5*(1 + delta)*k(i)*L*cos(beta(j))).*...
sin(0.5*(1 - delta)*k(i)*L*cos(beta(j))) );
H(j,i) = (b44_0(j,i))^(0.5)*( (cos(delta*k(i)*L*cos(beta(j))) - 1)...
+ 2*(b44_ratio(j,i))^(0.5)...
*sin(0.5*(1 + delta)*k(i)*L*cos(beta(j))).*...
sin(0.5*(delta - 1)*k(i)*L*cos(beta(j))) );
% Phase Angle for roll excitation moment, epsilon_m
cos_epsilon_m(j,i) =( E(j,i)*cos(0.5*k(i)*L*cos(beta(j))) - ...
H(j,i)*sin(0.5*k(i)*L*cos(beta(j))) )/Moment_Amplitude(j,i);
sin_epsilon_m(j,i)=( H(j,i)*cos(0.5*k(i)*L*cos(beta(j))) + ...
E(j,i)*sin(0.5*k(i)*L*cos(beta(j))) )/Moment_Amplitude(j,i);
epsilon_m(j,i) = atan2(sin_epsilon_m(j,i),cos_epsilon_m(j,i));
%-------------------------------------------------------------------------%
2.- CREATING .XLS FILE:
%
'Response_Amplitude_shipname_step_dbeta_damping_percentage'
%-------------------------------------------------------------------------% RAOs has xls extension (Excel file) and contains the RAOs and Phase
% Angles created previously.
disp('- - - - - - - - - - - - - - - - - - - - - ')
disp('GENERATING EXCEL FILE IN "FRFs_Excel_Files" FOLDER...........')
disp('NOTE:')
disp('File Format=> <<Response_Amplitude_shipname_step_dbeta_damping_percentage>>' )
Nfreq = length(omega);
name;
warning off MATLAB:xlswrite:AddSheet
text1 = {'Ship Name' , 'Lpp', 'Bo' , 'T', 'Vs' , 'NBeta', 'Nfreq'; ...
name,L,Bo,T,V,length(beta),Nfreq};
s = xlswrite([directory '\FRFs_excel_Files\' 'Response_Amplitude_' num2str(name)
'_step_' num2str(dbeta) '_damping_' num2str(floor(percentage)) '.xls'], text1,
'Data', 'A1');
text10 = {'%Add. Damp.' };
s = xlswrite([directory '\FRFs_excel_Files\' 'Response_Amplitude_' num2str(name)
'_step_' num2str(dbeta) '_damping_' num2str(floor(percentage)) '.xls'], text10,
'Data', 'F3');
s = xlswrite([directory '\FRFs_excel_Files\' 'Response_Amplitude_' num2str(name)
'_step_' num2str(dbeta) '_damping_' num2str(floor(percentage)) '.xls'], percentage,
'Data', 'G3');
8/10/09 14:11
8 of 8
const1 = 0;
for j=1:length(beta)
text2 = {'Beta'};
s = xlswrite([directory '\FRFs_excel_Files\' 'Response_Amplitude_' num2str(name)
'_step_' num2str(dbeta) '_damping_' num2str(floor(percentage)) '.xls'], text2, 'Data',
['A' num2str(3+const1)]);
heading = beta(j)*180/pi;
s = xlswrite([directory '\FRFs_excel_Files\' 'Response_Amplitude_' num2str(name)
'_step_' num2str(dbeta) '_damping_' num2str(floor(percentage)) '.xls'], heading,
'Data',[ 'B' num2str(3+const1)]);
text4 = {'phi_w', 'phi_pitch' , 'phi_roll', 'Ph_w','Ph_pitch' , 'Ph_roll' , 'wavefreq' };
s = xlswrite([directory '\FRFs_excel_Files\' 'Response_Amplitude_' num2str(name)
'_step_' num2str(dbeta) '_damping_' num2str(floor(percentage)) '.xls'], text4, 'Data',
['A' num2str(4+const1)]);
text5 = {'m/m', 'rad/m', 'rad/m', 'rad' , 'rad', 'rad', 'rad/s'};
s = xlswrite([directory '\FRFs_excel_Files\' 'Response_Amplitude_' num2str(name)
'_step_' num2str(dbeta) '_damping_' num2str(floor(percentage)) '.xls'], text5, 'Data',
['A' num2str(5+const1)]);
responses = [phi_w(j,:)',phi_pitch(j,:)',phi_roll(j,:)',...
epsilon_w_tot(j,:)',epsilon_pitch_tot(j,:)',epsilon_roll_tot(j,:)',omega'];
s = xlswrite([directory '\FRFs_excel_Files\' 'Response_Amplitude_' num2str(name)
'_step_' num2str(dbeta) '_damping_' num2str(floor(percentage)) '.xls'], responses,
'Data',[ 'A' num2str(6+const1)]);
const1 = const1 + (Nfreq+3);
end
8/10/09 14:13
%-------------------------------------------------------------------------%
2.- SETTING UP VARIABLES.
%-------------------------------------------------------------------------% Variables to split up data:
n_chunks = FRFs(1,6);
% n_chunks = 3;
length_chunks = FRFs(1,7);
limit = length_chunks+4;
limit2 = length_chunks+5;
% Allocating: Transfer Function for heave, pitch, and roll; as well as phase
% angles:
%
- phi_w = Transfer Function for heave
%
- phi_pitch = Transfer Function for pitch
%
- phi_roll = Transfer Function for roll
%
- epsilon_w_tot = Total Phase Angle for heave
%
- epsilon_pitch_tot = Total Phase Angle for pitch
%
- epsilon_roll_tot = Total Phase Angle for roll
for i=1:n_chunks
if i == 1
phi_w{i} = FRFs(5:limit,1)';
phi_pitch{i} = FRFs(5:limit,2)';
phi_roll{i} = FRFs(5:limit,3)';
1 of 2
8/10/09 14:13
epsilon_w_tot{i} = FRFs(5:limit,4)';
epsilon_pitch_tot{i} = FRFs(5:limit,5)';
epsilon_roll_tot{i} = FRFs(5:limit,6)';
omega = FRFs(5:limit,7)';
beta(i) = FRFs(2,2);
% NOTE: The wave frequency is the same for all headings.
else
phi_w{i} = FRFs(limit+4:limit+4+length_chunks-1,1)';
phi_pitch{i} = FRFs(limit+4:limit+4+length_chunks-1,2)';
phi_roll{i} = FRFs(limit+4:limit+4+length_chunks-1,3)';
epsilon_w_tot{i} = FRFs(limit+4:limit+4+length_chunks-1,4)';
epsilon_pitch_tot{i} = FRFs(limit+4:limit+4+length_chunks-1,5)';
epsilon_roll_tot{i} = FRFs(limit+4:limit+4+length_chunks-1,6)';
beta(i) = FRFs(limit2,2);
limit = limit+4+length_chunks-1;
limit2 = limit2+length_chunks+3;
end
end
% Allocating: Forward Speed (V)
V = FRFs(1,5);
% Calculate Frequency of encounter, omega_bar
% Wave Number, k
k = omega.^2/g;
% Frequency of encounter, omega_bar
for i=1:n_chunks
omega_bar{i} = omega - k.*V*cos(beta(i)*pi/180);
end
% Renaming n_chunks
N_beta = n_chunks;
% Allocating: L (Length between perpendiculars, Bo and T)
L = FRFs(1,2);
Bo = FRFs(1,3);
T = FRFs(1,4);
percentage = FRFs(2,7);
% Wave Length, lambda (Only for plotting)
lambda = 2*pi./k;
2 of 2
8/10/09 14:16
%
%
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------%
1.- CALCULATE RELATIVE CARGO POSITION
%-------------------------------------------------------------------------% Coordinates relative to the reference coordinate system, x_relative
%(Recalling the reference coordinate system has its origin at the centre
%of rotation or COG)
for i = 1:length(item)
% Global Cargo Position - Centre of Rotation
x_relative(i,:) = x_cargo(i,:) - CR;
end
[pos_r,pos_c] = size(x_relative);
1 of 2
8/10/09 14:16
N_cargo = pos_r;
%-------------------------------------------------------------------------%
2.- CALCULATE FREQUENCY RESPONSE FUNCTIONS FOR DISPLACEMENTS
%
AND ACCELERATIONS FOR DIFFERENT HEADINGS AND CARGO POSITIONS
%-------------------------------------------------------------------------for j=1:N_beta % LOOP TO CALCULTE DIFFERENT HEADINGS
% NOTE: The wave frequency (omega) is the same for all headings.
for i =1:N_cargo
%------------2.1.- RESPONSE AMPLITUDE FOR DISPLACEMENTS-----------% Transfer Function for Longitudinal Displacement,
phi_u_L
%
(cargo_posit x freq)
phi_u_L{j}(i,:) = x_relative(i,3)*phi_pitch{j};
% Transfer Function for Transverse Displacement,
phi_u_T
%
(cargo_posit x freq)
phi_u_T{j}(i,:) = x_relative(i,3)*phi_roll{j};
% Transfer Function for Vertical Displacement,
phi_u_V
%
(cargo_posit x freq)
phi_u_V{j}(i,:) = sqrt( phi_w{j}.^2 +...
x_relative(i,1)^2*phi_pitch{j}.^2 +...
x_relative(i,2)^2*phi_roll{j}.^2 + ...
2*x_relative(i,2)*phi_w{j}.*phi_roll{j}.*...
(cos(epsilon_roll_tot{j} - epsilon_w_tot{j}))...
- 2*x_relative(i,1)*x_relative(i,2).*phi_pitch{j}.*phi_roll{j}.*...
(cos(epsilon_roll_tot{j} - epsilon_pitch_tot{j}))...
- 2*x_relative(i,1)*phi_w{j}.*phi_pitch{j}.*...
(cos(epsilon_w_tot{j} - epsilon_pitch_tot{j})) ...
);
%------------2.2.- RESPONSE AMPLITUDE FOR VELOCITIES-----------for l=1:length(omega)
% Transfer Function for Longitudinal Velocity, phi_vel_L (freq)
phi_vel_L{j}(i,l) = -omega_bar{j}(l)*phi_u_L{j}(i,l);
% Transfer Function for Transverse Velocity, phi_vel_T (freq)
phi_vel_T{j}(i,l) = -omega_bar{j}(l)*phi_u_T{j}(i,l);
% Transfer Function for Vertical Velocity, phi_vel_V (freq)
phi_vel_V{j}(i,l) = -omega_bar{j}(l)*phi_u_V{j}(i,l);
end
%------------2.2.- RESPONSE AMPLITUDE FOR ACCELERATIONS-----------for l=1:length(omega)
% Transfer Function for Longitudinal Acceleration, phi_a_L (freq)
phi_a_L{j}(i,l) = omega_bar{j}(l)^2*phi_u_L{j}(i,l);
% Transfer Function for Transverse Acceleration, phi_a_T (freq)
phi_a_T{j}(i,l) = omega_bar{j}(l)^2*phi_u_T{j}(i,l);
% Transfer Function for Vertical Acceleration, phi_a_V (freq)
phi_a_V{j}(i,l) = omega_bar{j}(l)^2*phi_u_V{j}(i,l);
end
end % END LOOP TO CALCULATE DIFFERENT CARGO POSITIONS
end % END LOOP TO CALCULTE DIFFERENT HEADINGS
2 of 2
8/10/09 14:36
%
%
%
---- HEAVE ---figure(1)
subplot(rows,columns,j)
plot(omega*(L/g)^0.5,phi_w{index_beta})
xlabel('\omega(L/g)^{1/2}')
%
%
plot(omega,phi_w{index_beta})
xlabel('\omega \it{(rad/s)}')
%
%
plot(lambda/L,phi_w{index_beta})
xlabel('\lambda/L')
plot((omega(25:end)./(2*pi)).^(-1),phi_w{index_beta}(25:end))
xlabel('Period \it{(s)}' )
ylabel('\phi_{w} \it{(m/m)}')
title(['\beta = ' num2str(beta_plots(j)) ''])
grid on
axis([0 2 0 2.5])
%
%
%
%
---- PITCH ---figure(2)
subplot(rows,columns,j)
plot(omega*(L/g)^0.5,(phi_pitch{index_beta}./k),'r')
xlabel('\omega(L/g)^{1/2}')
ylabel('\ph8i_{\theta}/k (m/m)')
1 of 3
8/10/09 14:36
%
%
%
plot(lambda/L,(phi_pitch{index_beta}./k),'r')
xlabel('\lambda/L')
ylabel('\phi_{\theta}/k (m/m)')
plot(omega,(phi_pitch{index_beta}.*180/pi),'r' )
xlabel('\omega \it{(rad/s)}')
ylabel('\phi_{\theta} \it{(deg/m)}')
title(['\beta = ' num2str(beta_plots(j)) ''])
grid on
axis([0 2 0 3])
%
%
%
---- ROLL ---figure(3)
subplot(rows,columns,j)
plot(omega*(L/g)^0.5,(phi_roll{index_beta}.*180/pi),'k')
xlabel('\omega(L/g)^{1/2}')
%
%
2 of 3
plot(omega,(phi_roll{index_beta}.*180/pi),'k')
xlabel('\omega \it{(rad/s)}')
plot((omega(25:end)./(2*pi)).^(-1),(phi_roll{index_beta}(25:end).*180/pi),'k')
xlabel('Period \it{(s)}' )
ylabel('\phi_{roll} \it{(deg/m)}' )
title(['\beta = ' num2str(beta_plots(j)) ''])
grid on
axis([0 2 0 10])
%
end
8/10/09 14:36
xlabel('Period \it{(s)}' )
ylabel('\phi_{roll} \it{(deg/m)}' )
grid on
end
figure(1)
legend(motion_legend)
figure(2)
legend(motion_legend)
figure(3)
legend(motion_legend)
end
3 of 3
8/10/09 14:37
1 of 5
8/10/09 14:37
grid on
%
---- VERTICAL DISPLACEMENT ---figure(6)
subplot(rows_c,columns_c,j)
plot(omega,phi_u_V{index_beta}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{uV} \it{(m/m)}' )
title(['\beta = ' num2str(beta_plots_cargo(j)) '' ])
grid on
%
---- LONGITUDINAL VELOCITY ---figure(7)
subplot(rows_c,columns_c,j)
plot(omega,phi_vel_L{index_beta}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{vL} \it{(m/s/m)}' )
title(['\beta = ' num2str(beta_plots_cargo(j)) '' ])
grid on
%
---- TRANSVERSE VELOCITY ---figure(8)
subplot(rows_c,columns_c,j)
plot(omega,phi_vel_T{index_beta}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{vT} \it{(m/s/m)}' )
title(['\beta = ' num2str(beta_plots_cargo(j)) '' ])
grid on
%
---- VERTICAL VELOCITY ---figure(9)
subplot(rows_c,columns_c,j)
plot(omega,phi_vel_V{index_beta}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{vT} \it{(m/s/m)}' )
title(['\beta = ' num2str(beta_plots_cargo(j)) '' ])
grid on
%
---- LONGITUDINAL ACCELERATION ---figure(10)
subplot(rows_c,columns_c,j)
plot(omega,phi_a_L{index_beta}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{aL} \it{[(m/s^2)/m]}' )
title(['\beta = ' num2str(beta_plots_cargo(j)) '' ])
grid on
%
---- TRANSVERSE ACCELERATION ---figure(11)
subplot(rows_c,columns_c,j)
plot(omega,phi_a_T{index_beta}(index_cargo,:))
2 of 5
8/10/09 14:37
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{aT} \it{[(m/s^2)/m]}' )
title(['\beta = ' num2str(beta_plots_cargo(j)) '' ])
grid on
%
---- VERTICAL ACCELERATION ---figure(12)
subplot(rows_c,columns_c,j)
plot(omega,phi_a_V{index_beta}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{aV} \it{[(m/s^2)/m]}' )
title(['\beta = ' num2str(beta_plots_cargo(j)) '' ])
grid on
axis([0 2 0 4])
end
end
figure(4)
legend(cargo_legend,'Location', 'Best' )
figure(5)
legend(cargo_legend,'Location', 'Best' )
figure(6)
legend(cargo_legend,'Location', 'Best' )
figure(7)
legend(cargo_legend,'Location', 'Best' )
figure(8)
legend(cargo_legend,'Location', 'Best' )
figure(9)
legend(cargo_legend,'Location', 'Best' )
figure(10)
legend(cargo_legend,'Location', 'Best' )
figure(11)
legend(cargo_legend,'Location', 'Best' )
figure(12)
legend(cargo_legend,'Location', 'Best' )
3 of 5
8/10/09 14:37
figure(5+12*(i-1))
plot(omega,phi_u_T{index_beta(j)}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{uT} \it{(m/m)}' )
title(['Cargo = ' num2str(sel_cargo(i))])
grid on
%
---- VERTICAL DISPLACEMENT ---figure(6+12*(i-1))
plot(omega,phi_u_V{index_beta(j)}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{uV} \it{(m/m)}' )
title(['Cargo = ' num2str(sel_cargo(i))])
grid on
%
---- LONGITUDINAL VELOCITY ---figure(7+12*(i-1))
plot(omega,phi_vel_L{index_beta(j)}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{vL} \it{(m/s/m)}' )
title(['Cargo = ' num2str(sel_cargo(i))])
grid on
%
---- TRANSVERSE VELOCITY ---figure(8+12*(i-1))
plot(omega,phi_vel_T{index_beta(j)}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{vT} \it{(m/s/m)}' )
title(['Cargo = ' num2str(sel_cargo(i))])
grid on
%
---- VERTICAL VELOCITY ---figure(9+12*(i-1))
plot(omega,phi_vel_V{index_beta(j)}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{vV} \it{(m/s/m)}' )
title(['Cargo = ' num2str(sel_cargo(i))])
grid on
%
---- LONGITUDINAL ACCELERATION ---figure(10+12*(i-1))
plot(omega,phi_a_L{index_beta(j)}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{aL} \it{(m/m)}' )
title(['Cargo = ' num2str(sel_cargo(i))])
grid on
%
---- TRANSVERSE ACCELERATION ---figure(11+12*(i-1))
plot(omega,phi_a_T{index_beta(j)}(index_cargo,:))
4 of 5
8/10/09 14:37
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{aT} \it{(m/m)}' )
title(['Cargo = ' num2str(sel_cargo(i))])
grid on
%
---- VERTICAL ACCELERATION ---figure(12+12*(i-1))
plot(omega,phi_a_V{index_beta(j)}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{aV} \it{(m/m)}' )
title(['Cargo = ' num2str(sel_cargo(i))])
grid on
end
figure(4+12*(i-1))
legend(motion_legend)
figure(5+12*(i-1))
legend(motion_legend)
figure(6+12*(i-1))
legend(motion_legend)
figure(7+12*(i-1))
legend(motion_legend)
figure(8+12*(i-1))
legend(motion_legend)
figure(9+12*(i-1))
legend(motion_legend)
figure(10+12*(i-1))
legend(motion_legend)
figure(11+12*(i-1))
legend(motion_legend)
figure(12+12*(i-1))
legend(motion_legend)
end
end
5 of 5
8/10/09 14:24
Description: Main Script file that CALCULATES the most probable largest
(MPL) value of linear wave-induced responses such as heave, pitch, and
roll for the ship; as well as the MPLs of displacements, velocities and
accelerations for the cargo within short-crested seaway.
% NOTE: The MPL for heave, pitch and roll are referred to the ship itself,
% i.e. all the cargo have the same heave, pitch and roll. The heave, pitch
% and roll responses are referred to the center of motion.
% Outputs:
%
- The Most Probable Largest (MPL) value for
%
+ Heave (MPL_w)
%
+ Pitch (MPL_pitch)
%
+ Roll (MPL_roll)
%
+ Longitudinal Displacement (MPL_u_L)
%
+ Transverse Displacement (MPL_u_T)
%
+ Vertical Displacement (MPL_u_V)
%
+ Longitudinal Velocity (MPL_vel_L)
%
+ Transverse Velocity (MPL_vel_T)
%
+ Vertical Velocity (MPL_vel_V)
%
+ Longitudinal Acceleration (MPL_a_L)
%
+ Transverse Acceleration (MPL_a_T)
%
+ Vertical Acceleration (MPL_a_V)
%
%
%
%
%
1 of 20
8/10/09 14:24
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------%
1.- CALLING SCRIPTS USED
%-------------------------------------------------------------------------disp('- - - - - - - - - - - - - - - - - - - - - ')
disp('CALCULATING WAVE SPECTRUM........... ')
wave_spectrum
%-------------------------------------------------------------------------%
2.- CALCULATE RESPONSE AMPLITUDE OPERATORS
%-------------------------------------------------------------------------%------------------------------CALCULATING RAO----------------------------% The response amplitude operators, RAO_R
%
[R = w, pitch and roll, displacements and accelerations]
%---------------------------INITIALIZE VARIABLES--------------------------RAO_w_TEMP = cell(1,N_beta);
RAO_pitch_TEMP = cell(1,N_beta);
RAO_roll_TEMP = cell(1,N_beta);
RAO_u_L_TEMP = cell(1,N_beta);
RAO_u_T_TEMP = cell(1,N_beta);
RAO_u_V_TEMP = cell(1,N_beta);
RAO_vel_L_TEMP = cell(1,N_beta);
RAO_vel_T_TEMP = cell(1,N_beta);
RAO_vel_V_TEMP = cell(1,N_beta);
RAO_a_L_TEMP = cell(1,N_beta);
RAO_a_T_TEMP = cell(1,N_beta);
RAO_a_V_TEMP = cell(1,N_beta);
for j
%
%
%
= 1:N_beta
NOTE: Heave, pitch and roll are always referred to the center of
motion, which means that they are constant regarless the cargo
position.
% Dimensions: {N_beta}(1xomega)
RAO_w_TEMP{j} = phi_w{j}.^2;
RAO_pitch_TEMP{j} = phi_pitch{j}.^2;
RAO_roll_TEMP{j} = phi_roll{j}.^2;
% Dimensions: {N_beta}(cargo_positionxomega)
RAO_u_L_TEMP{j} = phi_u_L{j}.^2;
RAO_u_T_TEMP{j} = phi_u_T{j}.^2;
RAO_u_V_TEMP{j} = phi_u_V{j}.^2;
RAO_vel_L_TEMP{j} = phi_vel_L{j}.^2;
RAO_vel_T_TEMP{j} = phi_vel_T{j}.^2;
RAO_vel_V_TEMP{j} = phi_vel_V{j}.^2;
RAO_a_L_TEMP{j} = phi_a_L{j}.^2;
RAO_a_T_TEMP{j} = phi_a_T{j}.^2;
RAO_a_V_TEMP{j} = phi_a_V{j}.^2;
end
%-----------------------------REARRANGING RAOS-----------------------------
2 of 20
8/10/09 14:24
%
%
%
%
%
In order to calculate the standard deviation, the RAOs are spread over a
general range from 0 to 359 with an increment of 1. Those headings
which RAOs are unknown are set to zero. Thereby, in the calculations of
the standard deviation, the integration step can be selected for any
integral value greater than 1.
%
----------- A) INITIALIZING RAOs ----------------% Empty Cell Arrays, from 0 to 359 degrees.
angles = [0:1:359];
RAO_w = cell(1,length(angles));
RAO_pitch = cell(1,length(angles));
RAO_roll = cell(1,length(angles));
RAO_u_L = cell(1,length(angles));
RAO_u_T = cell(1,length(angles));
RAO_u_V = cell(1,length(angles));
RAO_vel_L = cell(1,length(angles));
RAO_vel_T = cell(1,length(angles));
RAO_vel_V = cell(1,length(angles));
RAO_a_L = cell(1,length(angles));
RAO_a_T = cell(1,length(angles));
RAO_a_V = cell(1,length(angles));
vector_zeros = zeros(1,length(omega));
matrix_zeros = zeros(N_cargo,length(omega));
%
----------- B) FILLING UP RAOs ----------------% With known values:
beta = round(beta);
index_known = beta+1;
index_known = round(index_known);
for j = 1:length(index_known)
RAO_w{index_known(j)} = RAO_w_TEMP{j};
RAO_pitch{index_known(j)} = RAO_pitch_TEMP{j};
RAO_roll{index_known(j)} = RAO_roll_TEMP{j};
RAO_u_L{index_known(j)} = RAO_u_L_TEMP{j};
RAO_u_T{index_known(j)} = RAO_u_T_TEMP{j};
RAO_u_V{index_known(j)} = RAO_u_V_TEMP{j};
RAO_vel_L{index_known(j)} = RAO_vel_L_TEMP{j};
RAO_vel_T{index_known(j)} = RAO_vel_T_TEMP{j};
RAO_vel_V{index_known(j)} = RAO_vel_V_TEMP{j};
RAO_a_L{index_known(j)} = RAO_a_L_TEMP{j};
RAO_a_T{index_known(j)} = RAO_a_T_TEMP{j};
RAO_a_V{index_known(j)} = RAO_a_V_TEMP{j};
end
% With known values:
for j=1:length(beta)
for i=1:length(angles)
if beta(j)==angles(i)
angles(i)=0;
3 of 20
8/10/09 14:24
end
end
end
index_unknown = find(angles); %Calculates index for non-zero values.
for j = 1:length(index_unknown)
RAO_w{index_unknown(j)} = vector_zeros;
RAO_pitch{index_unknown(j)} = vector_zeros;
RAO_roll{index_unknown(j)} = vector_zeros;
RAO_u_L{index_unknown(j)} = matrix_zeros;
RAO_u_T{index_unknown(j)} = matrix_zeros;
RAO_u_V{index_unknown(j)} = matrix_zeros;
RAO_vel_L{index_unknown(j)} = matrix_zeros;
RAO_vel_T{index_unknown(j)} = matrix_zeros;
RAO_vel_V{index_unknown(j)} = matrix_zeros;
RAO_a_L{index_unknown(j)} = matrix_zeros;
RAO_a_T{index_unknown(j)} = matrix_zeros;
RAO_a_V{index_unknown(j)} = matrix_zeros;
end
%-------------------------------------------------------------------------%
3.- CALCULATE STANDARD DEVIATION FOR
%
SHORT-CRESTED SEAWAY.
%-------------------------------------------------------------------------% The standard deviation, std_R is calculated for a wave spectrum and a
% ship heading.
% Recalling, the wave spectrum is calculated for a number of Tz with
% constant peak and Hs. Therefore, the standard deviation must be
% calculated for a ship heading and a number of Tz.
%
std_R Dimensions (ship_headings x Tz)
% The standard deviation can be calculated either considering different wave
% directions (secondary waves) spreading over a certain region [-pi/2,pi/2]
% or only a main wave direction, aligned with the wind.
% In case of different wave directions, the RAOs must be calculated for a
% number of "relative" headings angles:
%
beta_rel = ship_heading - wind_wave_angle
% covering this region.
%-----------------------CALCULUS STANDARD DEVIATION----------------------disp('- - - - - - - - - - - - - - - - - - - - - ')
disp('CALCULATING STANDARD DEVIATION BY........... ')
%
.............................
if flag_2_1 == 1 % ..... 3.1.- WITH SPREADING FUNCTION.....
disp('CONSIDERING DIFFERENT WAVE DIRECTIONS...........' )
%---------------------1.- CALCULATE WIND_WAVE_ANGLES---------------wind_wave_angle_pos = [int_step:int_step:pi/2];
wind_wave_angle_neg = [-pi/2:int_step:-int_step];
wind_wave_angle = [wind_wave_angle_neg 0 wind_wave_angle_pos];
4 of 20
8/10/09 14:24
%
5 of 20
8/10/09 14:24
end
% HEAVE
values_1000 = Sw(p,:).*INTEGRATE_ANGLES_w;
INTEGRATE2 = integrate_over_region(values_1000,omega);
var_w(j,p) = INTEGRATE2;
% PITCH
values_2000 = Sw(p,:).*INTEGRATE_ANGLES_pitch;
INTEGRATE2 = integrate_over_region(values_2000,omega);
var_pitch(j,p) = INTEGRATE2;
% ROLL
values_3000 = Sw(p,:).*INTEGRATE_ANGLES_roll;
INTEGRATE2 = integrate_over_region(values_3000,omega);
var_roll(j,p) = INTEGRATE2;
end
end
%........Std........
std_w = sqrt(var_w);
std_pitch = sqrt(var_pitch);
std_roll = sqrt(var_roll);
%------- B) STD FOR DISPLAC. AND ACCELERATIONS -------------%
Dimensions: std_u_L {ship_headings}(N_cargo x Tz)
%
Dimensions: std_u_T {ship_headings}(N_cargo x Tz)
%
Dimensions: std_u_V {ship_headings}(N_cargo x Tz)
%
Dimensions: std_a_L {ship_headings}(N_cargo x Tz)
%
Dimensions: std_a_T {ship_headings}(N_cargo x Tz)
%
Dimensions: std_a_V {ship_headings}(N_cargo x Tz)
%........Integrals........
% Initialized:
values_4 = zeros(N_cargo,length(f_spread));
values_5 = zeros(N_cargo,length(f_spread));
values_6 = zeros(N_cargo,length(f_spread));
values_7 = zeros(N_cargo,length(f_spread));
values_8 = zeros(N_cargo,length(f_spread));
values_9 = zeros(N_cargo,length(f_spread));
values_10 = zeros(N_cargo,length(f_spread));
values_11 = zeros(N_cargo,length(f_spread));
values_12 = zeros(N_cargo,length(f_spread));
INTEGRATE_ANGLES_u_L = zeros(N_cargo,length(omega));
INTEGRATE_ANGLES_u_T = zeros(N_cargo,length(omega));
INTEGRATE_ANGLES_u_V = zeros(N_cargo,length(omega));
6 of 20
8/10/09 14:24
INTEGRATE_ANGLES_a_L =
INTEGRATE_ANGLES_a_T =
INTEGRATE_ANGLES_a_V =
INTEGRATE_ANGLES_vel_L
INTEGRATE_ANGLES_vel_T
INTEGRATE_ANGLES_vel_V
var_u_L =
var_u_T =
var_u_V =
var_a_L =
var_a_T =
var_a_V =
var_vel_L
var_vel_T
var_vel_V
zeros(N_cargo,length(omega));
zeros(N_cargo,length(omega));
zeros(N_cargo,length(omega));
= zeros(N_cargo,length(omega));
= zeros(N_cargo,length(omega));
= zeros(N_cargo,length(omega));
cell(1,length(ship_headings));
cell(1,length(ship_headings));
cell(1,length(ship_headings));
cell(1,length(ship_headings));
cell(1,length(ship_headings));
cell(1,length(ship_headings));
= cell(1,length(ship_headings));
= cell(1,length(ship_headings));
= cell(1,length(ship_headings));
for j = 1:length(ship_headings)
for p = 1:length(Tz)
for i = 1:length(omega)
for l = 1:length(f_spread)
index = round(beta_rel(j,l)*180/pi + 1);
% LONGITUDINAL DISPLACEMENT
values_4(:,l) = RAO_u_L{index}(:,i)*f_spread(l);
% TRANSVERSE DISPLACEMENT
values_5(:,l) = RAO_u_T{index}(:,i)*f_spread(l);
% VERTICAL DISPLACEMENT
values_6(:,l) = RAO_u_V{index}(:,i)*f_spread(l);
% LONGITUDINAL ACCELERATION
values_7(:,l) = RAO_a_L{index}(:,i)*f_spread(l);
% TRANSVERSE ACCELERATION
values_8(:,l) = RAO_a_T{index}(:,i)*f_spread(l);
% VERTICAL ACCELERATION
values_9(:,l) = RAO_a_V{index}(:,i)*f_spread(l);
% LONGITUDINAL VELOCITY
values_10(:,l) = RAO_vel_L{index}(:,i)*f_spread(l);
% TRANSVERSE VELOCITY
values_11(:,l) = RAO_vel_T{index}(:,i)*f_spread(l);
% VERTICAL VELOCITY
values_12(:,l) = RAO_vel_V{index}(:,i)*f_spread(l);
end
% LONGITUDINAL DISPLACEMENT
INTEGRATE1 = integrate_over_region(values_4,wind_wave_angle);
INTEGRATE_ANGLES_u_L(:,i) = INTEGRATE1;
% TRANSVERSE DISPLACEMENT
INTEGRATE1 = integrate_over_region(values_5,wind_wave_angle);
INTEGRATE_ANGLES_u_T(:,i) = INTEGRATE1;
% VERTICAL DISPLACEMENT
INTEGRATE1 = integrate_over_region(values_6,wind_wave_angle);
INTEGRATE_ANGLES_u_V(:,i) = INTEGRATE1;
% LONGITUDINAL ACCELERATION
INTEGRATE1 = integrate_over_region(values_7,wind_wave_angle);
7 of 20
8/10/09 14:24
end
for c = 1:N_cargo
% LONGITUDINAL DISPLACEMENT
values_40 = Sw(p,:).*INTEGRATE_ANGLES_u_L(c,:);
INTEGRATE2 = integrate_over_region(values_40,omega);
var_u_L{j}(c,p) = INTEGRATE2;
% TRANSVERSE DISPLACEMENT
values_50 = Sw(p,:).*INTEGRATE_ANGLES_u_T(c,:);
INTEGRATE2 = integrate_over_region(values_50,omega);
var_u_T{j}(c,p) = INTEGRATE2;
% VERTICAL DISPLACEMENT
values_60 = Sw(p,:).*INTEGRATE_ANGLES_u_V(c,:);
INTEGRATE2 = integrate_over_region(values_60,omega);
var_u_V{j}(c,p) = INTEGRATE2;
% LONGITUDINAL ACCELERATION
values_70 = Sw(p,:).*INTEGRATE_ANGLES_a_L(c,:);
INTEGRATE2 = integrate_over_region(values_70,omega);
var_a_L{j}(c,p) = INTEGRATE2;
% TRANSVERSE ACCELERATION
values_80 = Sw(p,:).*INTEGRATE_ANGLES_a_T(c,:);
INTEGRATE2 = integrate_over_region(values_80,omega);
var_a_T{j}(c,p) = INTEGRATE2;
% VERTICAL ACCELERATION
values_90 = Sw(p,:).*INTEGRATE_ANGLES_a_V(c,:);
INTEGRATE2 = integrate_over_region(values_90,omega);
var_a_V{j}(c,p) = INTEGRATE2;
% LONGITUDINAL VELOCITY
values_100 = Sw(p,:).*INTEGRATE_ANGLES_vel_L(c,:);
INTEGRATE2 = integrate_over_region(values_100,omega);
var_vel_L{j}(c,p) = INTEGRATE2;
% TRANSVERSE VELOCITY
values_110 = Sw(p,:).*INTEGRATE_ANGLES_vel_T(c,:);
INTEGRATE2 = integrate_over_region(values_110,omega);
var_vel_T{j}(c,p) = INTEGRATE2;
% VERTICAL VELOCITY
values_120 = Sw(p,:).*INTEGRATE_ANGLES_vel_V(c,:);
8 of 20
8/10/09 14:24
end
end
end
%........Std........
for j = 1:length(ship_headings)
std_u_L{j} = sqrt(var_u_L{j});
std_u_T{j} = sqrt(var_u_T{j});
std_u_V{j} = sqrt(var_u_V{j});
std_a_L{j} = sqrt(var_a_L{j});
std_a_T{j} = sqrt(var_a_T{j});
std_a_V{j} = sqrt(var_a_V{j});
std_vel_L{j} = sqrt(var_vel_L{j});
std_vel_T{j} = sqrt(var_vel_T{j});
std_vel_V{j} = sqrt(var_vel_V{j});
end
%
else
.............................
% .....3.2.- W/O SPREADING FUNCTION.....
disp('CONSIDERING ONLY A MAIN WAVE DIRECTIONS...........' )
%--------------------1.- CALCULATE STANDARD DEVIATION (STD)-------%------- A) STD FOR HEAVE, PITCH AND ROLL -------------%
Dimensions: std_w (ship_headings x Tz)
%
Dimensions: std_pitch (ship_headings x Tz)
%
Dimensions: std_roll (ship_headings x Tz)
% Initialized:
var_w = zeros(length(ship_headings),length(Tz));
var_pitch = zeros(length(ship_headings),length(Tz));
var_roll = zeros(length(ship_headings),length(Tz));
%........Integrals........
for j = 1:length(ship_headings)
index = round(ship_headings(j)*180/pi + 1);
[Sw,wspectrum_legend,Ts,omega_bar_MPLs] = wave_spectrum_MPLs...
(Tz,ship_headings(j),...
omega,g,V,...
peak,Hs);
for p = 1:length(Tz)
% HEAVE
values_1000 = Sw(p,:).*RAO_w{index};
INTEGRATE2 = integrate_over_region(values_1000,omega_bar_MPLs);
var_w(j,p) = INTEGRATE2;
% PITCH
values_2000 = Sw(p,:).*RAO_pitch{index};
INTEGRATE2 = integrate_over_region(values_2000,omega_bar_MPLs);
var_pitch(j,p) = INTEGRATE2;
% ROLL
values_3000 = Sw(p,:).*RAO_roll{index};
INTEGRATE2 = integrate_over_region(values_3000,omega_bar_MPLs);
var_roll(j,p) = INTEGRATE2;
end
end
9 of 20
8/10/09 14:24
%........Std........
std_w = sqrt(var_w);
std_pitch = sqrt(var_pitch);
std_roll = sqrt(var_roll);
%------- B) STD FOR MOTIONS AND ACCELERATIONS -------------%
Dimensions: std_u_L {ship_headings}(N_cargo x Tz)
%
Dimensions: std_u_T {ship_headings}(N_cargo x Tz)
%
Dimensions: std_u_V {ship_headings}(N_cargo x Tz)
%
Dimensions: std_a_L {ship_headings}(N_cargo x Tz)
%
Dimensions: std_a_T {ship_headings}(N_cargo x Tz)
%
Dimensions: std_a_V {ship_headings}(N_cargo x Tz)
% Initialized:
var_u_L = cell(1,length(ship_headings));
var_u_T = cell(1,length(ship_headings));
var_u_V = cell(1,length(ship_headings));
var_a_L = cell(1,length(ship_headings));
var_a_T = cell(1,length(ship_headings));
var_a_V = cell(1,length(ship_headings));
var_vel_L = cell(1,length(ship_headings));
var_vel_T = cell(1,length(ship_headings));
var_vel_V = cell(1,length(ship_headings));
%........Integrals........
for j = 1:length(ship_headings)
index = round(ship_headings(j)*180/pi + 1);
[Sw,wspectrum_legend,Ts,omega_bar_MPLs] = wave_spectrum_MPLs...
(Tz,ship_headings(j),...
omega,g,V,...
peak,Hs);
for p = 1:length(Tz)
for c = 1:N_cargo
% LONGITUDINAL DISPLACEMENT
values_40 = Sw(p,:).*RAO_u_L{index}(c,:);
INTEGRATE2 = integrate_over_region(values_40,omega_bar_MPLs);
var_u_L{j}(c,p) = INTEGRATE2;
% TRANSVERSE DISPLACEMENT
values_50 = Sw(p,:).*RAO_u_T{index}(c,:);
INTEGRATE2 = integrate_over_region(values_50,omega_bar_MPLs);
var_u_T{j}(c,p) = INTEGRATE2;
% VERTICAL DISPLACEMENT
values_60 = Sw(p,:).*RAO_u_V{index}(c,:);
INTEGRATE2 = integrate_over_region(values_60,omega_bar_MPLs);
var_u_V{j}(c,p) = INTEGRATE2;
% LONGITUDINAL ACCELERATION
values_70 = Sw(p,:).*RAO_a_L{index}(c,:);
INTEGRATE2 = integrate_over_region(values_70,omega_bar_MPLs);
var_a_L{j}(c,p) = INTEGRATE2;
% TRANSVERSE ACCELERATION
values_80 = Sw(p,:).*RAO_a_T{index}(c,:);
INTEGRATE2 = integrate_over_region(values_80,omega_bar_MPLs);
var_a_T{j}(c,p) = INTEGRATE2;
% VERTICAL ACCELERATION
values_90 = Sw(p,:).*RAO_a_V{index}(c,:);
10 of 20
8/10/09 14:24
end
end
end
% Initialized:
std_u_L = cell(1,length(ship_headings));
std_u_T = cell(1,length(ship_headings));
std_u_V = cell(1,length(ship_headings));
std_a_L = cell(1,length(ship_headings));
std_a_T = cell(1,length(ship_headings));
std_a_V = cell(1,length(ship_headings));
std_vel_L = cell(1,length(ship_headings));
std_vel_T = cell(1,length(ship_headings));
std_vel_V = cell(1,length(ship_headings));
%........Std........
for j = 1:length(ship_headings)
std_u_L{j} = sqrt(var_u_L{j});
std_u_T{j} = sqrt(var_u_T{j});
std_u_V{j} = sqrt(var_u_V{j});
std_a_L{j} = sqrt(var_a_L{j});
std_a_T{j} = sqrt(var_a_T{j});
std_a_V{j} = sqrt(var_a_V{j});
std_vel_L{j} = sqrt(var_vel_L{j});
std_vel_T{j} = sqrt(var_vel_T{j});
std_vel_V{j} = sqrt(var_vel_V{j});
end
end
%-------------------------------------------------------------------------%
4.- CALCULATE MOST PROBABLE
%
LARGEST VALUE (MPL)
%-------------------------------------------------------------------------disp('- - - - - - - - - - - - - - - - - - - - - ')
disp('CALCULATING THE MOST PROBABLE LARGEST VALUES (MPLs)........... ')
11 of 20
8/10/09 14:24
12 of 20
disp(['Time for the short term statistics: ' num2str(limited_time/3600) ' h.'])
%----------------------------CALCULATE MPLs-------------------------------% MOTIONS: HEAVE, PITCH AND ROLL
%
Dimensions: MPL_w (ship_headings x Tz)
%
Dimensions: MPL_pitch (ship_headings x Tz)
%
Dimensions: MPL_roll (ship_headings x Tz)
% Initialized:
MPL_w = zeros(length(ship_headings),length(Tz));
MPL_pitch = zeros(length(ship_headings),length(Tz));
MPL_roll = zeros(length(ship_headings),length(Tz));
for p = 1:length(Tz)
MPL_w(:,p) = std_w(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_pitch(:,p) = std_pitch(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_roll(:,p) = std_roll(:,p)*sqrt(2*log(limited_time/Tz(p)));
end
% Transforming into degrees:
MPL_pitch = MPL_pitch.*180/pi;
MPL_roll = MPL_roll.*180/pi;
x
x
x
x
x
x
Tz)
Tz)
Tz)
Tz)
Tz)
Tz)
for j = 1:length(ship_headings)
for p = 1:length(Tz)
MPL_u_L{j}(:,p) = std_u_L{j}(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_u_T{j}(:,p) = std_u_T{j}(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_u_V{j}(:,p) = std_u_V{j}(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_a_L{j}(:,p) = std_a_L{j}(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_a_T{j}(:,p) = std_a_T{j}(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_a_V{j}(:,p) = std_a_V{j}(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_vel_L{j}(:,p) = std_vel_L{j}(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_vel_T{j}(:,p) = std_vel_T{j}(:,p)*sqrt(2*log(limited_time/Tz(p)));
MPL_vel_V{j}(:,p) = std_vel_V{j}(:,p)*sqrt(2*log(limited_time/Tz(p)));
end
end
8/10/09 14:24
13 of 20
%-------------------------------------------------------------------------%
5.- CREATE EXCEL FILE (.xls)
%
WITH THE RESULTS: 'MPL'
%-------------------------------------------------------------------------if flag_2_2 == 1
disp('- - - - - - - - - - - - - - - - - - - - - ' )
disp('GENERATING EXCEL FILE IN "MPLs_Excel_Files" FOLDER...........' )
disp('NOTE:' )
disp('File Format=> <<MPL_shipname_sweep_sweepvalue_damping_percentage.xls>>' )
warning off MATLAB:xlswrite:AddSheet
%----------------------------CREATE MPL_COG SHEET-------------------------N_headings = length(ship_headings);
N_Ts = length(Ts);
int_step = int_step*180/pi;
text11 = {'Ship Name','Lpp' , 'Bo', 'T' , 'Vs', 'NShipHead.' ,'NTs' , 'NCargo' ; ...
name,L,Bo,T,V,N_headings,N_Ts,N_cargo};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text11, 'MPL_COG' , 'A1' );
text100 = {'%Add. Damp.'};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text100, 'MPL_COG' , 'G3' );
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], percentage, 'MPL_COG' , 'H3');
%
const1 = 0;
for j=1:length(ship_headings)
text22 = {'Beta' };
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text22, 'MPL_COG' ,
['A' num2str(3+const1)]);
heading = ship_headings(j)*180/pi;
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], heading, 'MPL_COG' ,
['B' num2str(3+const1)]);
text222 = {'Hs' ,Hs};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text222, 'MPL_COG' ,
['C' num2str(3+const1)]);
8/10/09 14:24
14 of 20
for c = 1:N_cargo
text111 = {'Cargo',item(c)};
cargo_name = item(c);
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text11, ['Cargo_0'
num2str(cargo_name)],'A1');
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text111, ['Cargo_0'
num2str(cargo_name)],'D3');
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text100, ['Cargo_0'
8/10/09 14:24
15 of 20
num2str(cargo_name)],'A3');
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], percentage,
['Cargo_0' num2str(cargo_name)], 'B3');
const1 = 0;
for j=1:length(ship_headings)
text22 = {'Beta'};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text22, ['Cargo_0'
num2str(cargo_name)],['A' num2str(4+const1)]);
heading = ship_headings(j)*180/pi;
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], heading, ['Cargo_0'
num2str(cargo_name)],['B' num2str(4+const1)]);
text222 = {'Hs',Hs};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text222, ['Cargo_0'
num2str(cargo_name)],['C' num2str(4+const1)]);
text444 =
{'Ts' , 'MPL_u_L' , 'MPL_u_T','MPL_u_V' , 'MPL_vel_L' , 'MPL_vel_T', 'MPL_vel_V' , 'MPL_a_L' , 'MPL_
a_T', 'MPL_a_V' };
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text444, ['Cargo_0'
num2str(cargo_name)],['A' num2str(5+const1)]);
text555 = {'s', 'm' , 'm', 'm' , 'm/s', 'm/s' ,'m/s' , 'm/s2', 'm/s2', 'm/s2'};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text555, ['Cargo_0'
num2str(cargo_name)],['A' num2str(6+const1)]);
MPLs_us_as = [Ts',MPL_u_L{j}(c,:)',MPL_u_T{j}(c,:)',MPL_u_V{j}(c,:)',
MPL_vel_L{j}(c,:)',MPL_vel_T{j}(c,:)',MPL_vel_V{j}(c,:)',MPL_a_L{j}(c,:)',MPL_a_T{j}
(c,:)',MPL_a_V{j}(c,:)'];
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], MPLs_us_as,
['Cargo_0' num2str(cargo_name)],[ 'A' num2str(7+const1)]);
% Finding Maximum values:
text66 = {'Max. Values'};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text66, ['Cargo_0'
num2str(cargo_name)],['A' num2str(7+const1+N_Ts)]);
text77 = {'Ts assoc.' };
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text77, ['Cargo_0'
num2str(cargo_name)],['A' num2str(8+const1+N_Ts)]);
Ts_index_max_u_L = find(MPL_u_L{j}(c,:) == max(MPL_u_L{j}(c,:)));
max_MPL_u_L(c,j) = max(MPL_u_L{j}(c,:)); % Saving for Summary
8/10/09 14:24
16 of 20
8/10/09 14:24
17 of 20
text3 = {'Maximums' };
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text3, 'Summary','A4' );
text33 = {'COG', 'Beta/s' };
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text33, 'Summary' , 'C4' );
text333 = {'MPL_w', 'm'; 'MPL_pitch' , 'deg'; 'MPL_roll' , 'deg'};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text333, 'Summary' , 'A5' );
beta_index_max_w = find(max_MPL_w == max(max_MPL_w));
beta_index_max_pitch = find(max_MPL_pitch == max(max_MPL_pitch));
beta_index_max_roll = find(max_MPL_roll == max(max_MPL_roll));
if length(beta_index_max_w)==1 &&...
length(beta_index_max_pitch)==1 &&...
length(beta_index_max_roll)==1
maximums_beta_COG =...
{max(max_MPL_w),ship_headings(beta_index_max_w)*180/pi ...
;max(max_MPL_pitch),ship_headings(beta_index_max_pitch)*180/pi...
;max(max_MPL_roll),ship_headings(beta_index_max_roll)*180/pi};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_COG,
'Summary', 'C5' );
else
maximums_COG = {max(max_MPL_w);max(max_MPL_pitch);max(max_MPL_roll)};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_COG,
'Summary', 'C5' );
for j=1:length(beta_index_max_w)
maximums_beta_w(j) = ship_headings(beta_index_max_w(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_w,
'Summary', 'D5' );
for j=1:length(beta_index_max_pitch)
maximums_beta_pitch(j) = ship_headings(beta_index_max_pitch(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_pitch,
'Summary', 'D6' );
for j=1:length(beta_index_max_roll)
maximums_beta_roll(j) = ship_headings(beta_index_max_roll(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_roll,
'Summary', 'D7' );
end
8/10/09 14:24
18 of 20
% Summary for MPL displacement and accelerations for each cargo position:
text11111 = {'Summary' , 'Displac/Accele.' };
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text11111, 'Summary' , 'D9');
const2=0;
for c=1:N_cargo
text111 = {'Cargo',item(c)};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text111, 'Summary' ,
['A' num2str(10+const2)]);
text3_us_as = {'Maximums' };
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text3_us_as,
'Summary',[ 'A' num2str(11+const2)]);
text33_us_as = {'Beta/s' };
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text33_us_as,
'Summary',[ 'D' num2str(11+const2)]);
text333_us_as =
{'MPL_u_L' , 'm' ; 'MPL_u_T' ,'m'; 'MPL_u_V' , 'm'; 'MPL_vel_L' , 'm/s'; 'MPL_vel_T' , 'm/s'; 'MPL_vel
_V', 'm/s'; 'MPL_a_L' , 'm/s2'; 'MPL_a_T' , 'm/s2'; 'MPL_a_V' , 'm/s2'};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text333_us_as,
'Summary',[ 'A' num2str(12+const2)]);
beta_index_max_u_L = find(max_MPL_u_L(c,:) == max(max_MPL_u_L(c,:)));
beta_index_max_u_T = find(max_MPL_u_T(c,:) == max(max_MPL_u_T(c,:)));
beta_index_max_u_V = find(max_MPL_u_V(c,:) == max(max_MPL_u_V(c,:)));
beta_index_max_vel_L = find(max_MPL_vel_L(c,:) == max(max_MPL_vel_L(c,:)));
beta_index_max_vel_T = find(max_MPL_vel_T(c,:) == max(max_MPL_vel_T(c,:)));
beta_index_max_vel_V = find(max_MPL_vel_V(c,:) == max(max_MPL_vel_V(c,:)));
beta_index_max_a_L = find(max_MPL_a_L(c,:) == max(max_MPL_a_L(c,:)));
beta_index_max_a_T = find(max_MPL_a_T(c,:) == max(max_MPL_a_T(c,:)));
beta_index_max_a_V = find(max_MPL_a_V(c,:) == max(max_MPL_a_V(c,:)));
maximums_cargo = {max(max_MPL_u_L(c,:))...
;max(max_MPL_u_T(c,:))...
;max(max_MPL_u_V(c,:))...
;max(max_MPL_vel_L(c,:))...
;max(max_MPL_vel_T(c,:))...
;max(max_MPL_vel_V(c,:))...
;max(max_MPL_a_L(c,:))...
;max(max_MPL_a_T(c,:))...
;max(max_MPL_a_V(c,:))};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_cargo,
'Summary',[ 'C' num2str(12+const2)]);
8/10/09 14:24
19 of 20
for j=1:length(beta_index_max_u_L)
maximums_beta_u_L(j) = ship_headings(beta_index_max_u_L(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_u_L,
'Summary',[ 'D
' num2str(12+const2)]);
for j=1:length(beta_index_max_u_T)
maximums_beta_u_T(j) = ship_headings(beta_index_max_u_T(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_u_T,
'Summary',[ 'D
' num2str(13+const2)]);
for j=1:length(beta_index_max_u_V)
maximums_beta_u_V(j) = ship_headings(beta_index_max_u_V(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_u_V,
'Summary',[ 'D
' num2str(14+const2)]);
for j=1:length(beta_index_max_vel_L)
maximums_beta_vel_L(j) = ship_headings(beta_index_max_vel_L(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_vel_L,
'Summary',[ 'D
' num2str(15+const2)]);
for j=1:length(beta_index_max_vel_T)
maximums_beta_vel_T(j) = ship_headings(beta_index_max_vel_T(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_vel_T,
'Summary',[ 'D
' num2str(16+const2)]);
for j=1:length(beta_index_max_vel_V)
maximums_beta_vel_V(j) = ship_headings(beta_index_max_vel_V(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_vel_V,
'Summary',[ 'D
' num2str(17+const2)]);
for j=1:length(beta_index_max_a_L)
maximums_beta_a_L(j) = ship_headings(beta_index_max_a_L(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_a_L,
'Summary',[ 'D
' num2str(18+const2)]);
for j=1:length(beta_index_max_a_T)
maximums_beta_a_T(j) = ship_headings(beta_index_max_a_T(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_a_T,
'Summary',[ 'D
' num2str(19+const2)]);
8/10/09 14:24
20 of 20
for j=1:length(beta_index_max_a_V)
maximums_beta_a_V(j) = ship_headings(beta_index_max_a_V(j))*180/pi;
end
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_beta_a_V,
'Summary',[ 'D
' num2str(20+const2)]);
const2 = const2 + 12;
end
end
8/10/09 14:27
1 of 2
%
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------%
1.- WAVE SPECTRUM CALCULATIONS FOR DIFFERENT
%
ZERO-UPCROSSING PERIODS AND WAVE FREQUENCIES
%-------------------------------------------------------------------------for j = 1:length(Tz)
for i = 1:length(omega) % Calculate Transfer Functions for each wave freq.
%---------------------------------------------------------------------%
1.1.- CALCULATE PARAMETERS
%---------------------------------------------------------------------% Mean Period, Ts
Ts(j) = Tz(j)*sqrt((10.89 + peak)*(5 + peak))/(6.774 + peak);
% Pierson Moskowitch Wave Spectrum, Spm
Spm(j,i) = 173*Hs^2*Ts(j)*(omega(i)*Ts(j))^(-5)*exp(-692*(omega(i)*Ts(j))^
(-4));
% Coefficients F1 and F2
if j==1 && i == 1
if peak >= 1 && peak <= 2
F1 = 0.24*peak + 0.76;
8/10/09 14:27
2 of 2
F2 = -0.05*peak + 1.05;
elseif peak > 2 && peak <= 3
F1 = 0.22*peak + 0.80;
F2 = -0.02*peak + 0.99;
elseif peak > 3 && peak <= 4
F1 = 0.20*peak + 0.86;
F2 = -0.02*peak + 0.99;
elseif peak > 4 && peak <= 5
F1 = 0.20*peak + 0.86;
F2 = -0.01*peak + 0.95;
elseif peak > 5 && peak <= 6
F1 = 0.18*peak + 0.96;
F2 = -0.01*peak + 0.95;
else
disp('Error!! The peak enhancement factor selected is out of the range.
')
end
end
% Coefficient sigma, sigma
if 0.206*F2*Ts(j)*omega(i) <= 1
sigma = 0.07;
else
sigma = 0.06;
end
%---------------------------------------------------------------------%
1.2.- CALCULATE GENERALIZED JONSWAP
%
WAVE SPECTRUM
%---------------------------------------------------------------------% Generalized JONSWAP Wave Spectrum, Sw
Sw(j,i) = Spm(j,i)*(1/F1)*peak^(...
exp( -0.5*((0.206*F2*Ts(j)*omega(i) - 1)/sigma)^2 ));
end % End Loop Wave Frequencies
wspectrum_legend{j} = (['Ts = ' num2str(Ts(j)) ' s.']);
wspectrum_legend{j} = (['Tz = ' num2str(Tz(j)) ' s.' ]);
end % End Loop Zero-UpCrossing Periods
%
8/10/09 14:36
%INPUTS:
% value: Vector or Matrix that contains the values that will be
% integrating over the region. In case of a matrix, the integration is
% carried out row by row (see NOTE2).
% r: Vector that contains the distances that will be used to solve the
% numerical integration:
%
%
%
%
%
%
NOTE: The vector distance "r" must be given as global distances, i.e
distances referred to an origin and not between points.
For instance, if the region is the spreading-wave region,the distance
are radians and cover from -pi/2 to pi/2. Even tough, the distances
between one point and the next one, for this case,it will be constant
and equal to the integration angle (int_step).
% NOTE2: The lengths for "value" and "r" must be the same.
%OUTPUTS:
% VALUE: SCALAR with the numerical integration.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function VALUE = integrate_over_region(value,r)
[m,n] = size(value);
VALUE = zeros(m,1);
for i=1:length(r)-1
VALUE = VALUE + (r(i+1)-r(i)).*(value(:,i+1)+value(:,i))/2;
end
1 of 1
8/10/09 14:32
1 of 2
%
%
8/10/09 14:32
2 of 2
%---------------------------------------------------------------------%
1.1.- CALCULATE PARAMETERS
%---------------------------------------------------------------------% Mean Period, Ts
Ts_ts(j) = Tz_ts(j)*sqrt((10.89 + peak)*(5 + peak))/(6.774 + peak);
% Pierson Moskowitch Wave Spectrum, Spm
Spm(j,i) = 173*Hs^2*Ts_ts(j)*(omega_bar_MPLs(i)*Ts_ts(j))^(-5)*exp(-692*
(omega_bar_MPLs(i)*Ts_ts(j))^(-4));
% Coefficients F1 and F2
if j==1 && i == 1
if peak >= 1 && peak <= 2
F1 = 0.24*peak + 0.76;
F2 = -0.05*peak + 1.05;
elseif peak > 2 && peak <= 3
F1 = 0.22*peak + 0.80;
F2 = -0.02*peak + 0.99;
elseif peak > 3 && peak <= 4
F1 = 0.20*peak + 0.86;
F2 = -0.02*peak + 0.99;
elseif peak > 4 && peak <= 5
F1 = 0.20*peak + 0.86;
F2 = -0.01*peak + 0.95;
elseif peak > 5 && peak <= 6
F1 = 0.18*peak + 0.96;
F2 = -0.01*peak + 0.95;
else
disp('Error!! The peak enhancement factor selected is out of the range.
')
end
end
% Coefficient sigma, sigma
if 0.206*F2*Ts_ts(j)*omega_bar_MPLs(i) <= 1
sigma = 0.07;
else
sigma = 0.06;
end
%---------------------------------------------------------------------%
1.2.- CALCULATE GENERALIZED JONSWAP
%
WAVE SPECTRUM
%---------------------------------------------------------------------% Generalized JONSWAP Wave Spectrum, Sw
Sw(j,i) = Spm(j,i)*(1/F1)*peak^(...
exp( -0.5*((0.206*F2*Ts_ts(j)*omega_bar_MPLs(i) - 1)/sigma)^2 ));
end % End Loop Wave Frequencies
%
wspectrum_legend{j} = (['Ts = ' num2str(Ts(j)) ' s.']);
wspectrum_legend_ts{j} = (['Tz_ts = ' num2str(Tz_ts(j)) ' s.' ]);
end % End Loop Zero-UpCrossing Periods
8/10/09 14:41
figure(100)
subplot(rows_mpl,columns_mpl,j)
plot(Ts,MPL_w(index_beta_MPL,:),'-o')
ylabel('MPL_{W} \it{(m)}')
xlabel('Ts \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL(j)) ''])
grid on
%
---- PITCH ---figure(200)
subplot(rows_mpl,columns_mpl,j)
plot(Tz,MPL_pitch(index_beta_MPL,:,'-o' ))
ylabel('MPL_{\theta} \it{(deg)}' )
xlabel('Tz \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL(j)) ''])
grid on
1 of 3
8/10/09 14:41
%
%
%
%
%
%
%
figure(200)
subplot(rows_mpl,columns_mpl,j)
plot(Ts,MPL_pitch(index_beta_MPL,:,'-o'))
ylabel('MPL_{\theta} \it{(deg)}')
xlabel('Ts \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL(j)) ''])
grid on
%
---- ROLL ---figure(300)
subplot(rows_mpl,columns_mpl,j)
plot(Tz,MPL_roll(index_beta_MPL,:),'-o' )
ylabel('MPL_{roll} \it{(deg)}')
xlabel('Tz \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL(j)) ''])
grid on
%
%
%
%
%
%
%
figure(300)
subplot(rows_mpl,columns_mpl,j)
plot(Ts,MPL_roll(index_beta_MPL,:),'-o')
ylabel('MPL_{roll} \it{(deg)}')
xlabel('Ts \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL(j)) ''])
grid on
end
figure(100)
plot(Ts,MPL_w(index_beta_MPL,:),'-o')
hold all
ylabel('MPL_{W} \it{(m)}')
xlabel('Ts \it{(s)}')
grid on
%
---- PITCH ---figure(200)
plot(Tz,MPL_pitch(index_beta_MPL,:),'-o' )
hold all
ylabel('MPL_{\theta} \it{(deg)}' )
xlabel('Tz \it{(s)}')
grid on
2 of 3
8/10/09 14:41
%
%
%
%
%
%
3 of 3
figure(200)
plot(Ts,MPL_pitch(index_beta_MPL,:),'-o')
hold all
ylabel('MPL_{\theta} \it{(deg)}')
xlabel('Ts \it{(s)}')
grid on
%
---- ROLL ---figure(300)
plot(Tz,MPL_roll(index_beta_MPL,:),'-o' )
hold all
ylabel('MPL_{roll} \it{(deg)}')
xlabel('Tz \it{(s)}')
grid on
%
%
%
%
%
%
figure(300)
plot(Ts,MPL_roll(index_beta_MPL,:),'-o')
hold all
ylabel('MPL_{roll} \it{(deg)}')
xlabel('Ts \it{(s)}')
grid on
end
figure(100)
legend(MPL_legend)
figure(200)
legend(MPL_legend)
figure(300)
legend(MPL_legend)
end
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
figure(100)
hold all
plot(ones(1,length(Tz))*5.38,linspace(0,3.5,length(Tz)),'--k','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(end),linspace(0,3.5,length(Tz)),'--k','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(6),linspace(0,3.5,length(Tz)),'-.m','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(14),linspace(0,3.5,length(Tz)),'-.m','LineWidth', 2)
figure(200)
hold all
plot(ones(1,length(Tz))*5.38,linspace(0,4.5,length(Tz)),'--k','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(end),linspace(0,4.5,length(Tz)),'--k','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(6),linspace(0,4.5,length(Tz)),'-.m','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(14),linspace(0,4.5,length(Tz)),'-.m','LineWidth', 2)
figure(300)
hold all
plot(ones(1,length(Tz))*5.38,linspace(0,12,length(Tz)),'--k','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(end),linspace(0,12,length(Tz)),'--k','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(6),linspace(0,12,length(Tz)),'-.m','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(14),linspace(0,12,length(Tz)),'-.m','LineWidth', 2)
8/10/09 14:43
%
%
%
%
%
%
%
1 of 8
8/10/09 14:43
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
figure(500)
subplot(rows_mpl_c,columns_mpl_c,j)
plot(Ts,MPL_u_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{uT} \it{(m)}')
xlabel('Ts \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on
%
%
%
%
%
%
%
%
figure(600)
subplot(rows_mpl_c,columns_mpl_c,j)
plot(Ts,MPL_u_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{uV} \it{(m)}')
xlabel('Ts \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on
%
%
%
%
%
%
%
%
figure(700)
subplot(rows_mpl_c,columns_mpl_c,j)
plot(Ts,MPL_vel_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o' )
ylabel('MPL_{vL} \it{(m/s)}' )
xlabel('Ts \it{(s)}' )
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on
%
%
%
2 of 8
8/10/09 14:43
%
%
%
%
%
figure(800)
subplot(rows_mpl_c,columns_mpl_c,j)
plot(Ts,MPL_vel_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o' )
ylabel('MPL_{vT} \it{(m/s)}' )
xlabel('Ts \it{(s)}' )
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on
%
%
%
%
%
%
%
%
figure(900)
subplot(rows_mpl_c,columns_mpl_c,j)
plot(Ts,MPL_a_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{aV} \it{(m/s^2)}')
xlabel('Ts \it{(s)}' )
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on
%
%
%
%
%
%
%
%
figure(1000)
subplot(rows_mpl_c,columns_mpl_c,j)
plot(Ts,MPL_a_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{aL} \it{(m/s^2)}')
xlabel('Ts \it{(s)}' )
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on
%
%
%
%
%
%
%
%
3 of 8
8/10/09 14:43
figure(1100)
subplot(rows_mpl_c,columns_mpl_c,j)
plot(Ts,MPL_a_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{aT} \it{(m/s^2)}')
xlabel('Ts \it{(s)}' )
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on
%
%
%
%
%
%
%
%
figure(1200)
subplot(rows_mpl_c,columns_mpl_c,j)
plot(Ts,MPL_a_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{aV} \it{(m/s^2)}')
xlabel('Ts \it{(s)}' )
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
end
end
figure(400)
legend(MPL_cargo_legend,'Location','Best')
figure(500)
legend(MPL_cargo_legend,'Location','Best')
figure(600)
legend(MPL_cargo_legend,'Location','Best')
figure(700)
legend(MPL_cargo_legend,'Location','Best')
figure(800)
legend(MPL_cargo_legend,'Location','Best')
figure(900)
legend(MPL_cargo_legend,'Location','Best')
figure(1000)
legend(MPL_cargo_legend,'Location','Best')
figure(1100)
legend(MPL_cargo_legend,'Location','Best')
figure(1200)
legend(MPL_cargo_legend,'Location' , 'Best')
4 of 8
8/10/09 14:43
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
figure(500+12*(i-1))
plot(Ts,MPL_u_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{uT} \it{(m)}')
xlabel('Ts \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
---- VERTICAL DISPLACEMENT ---figure(600+12*(i-1))
plot(Tz,MPL_u_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{uV} \it{(m)}')
xlabel('Tz \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
%
%
%
%
%
%
figure(600+12*(i-1))
plot(Ts,MPL_u_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{uV} \it{(m)}')
xlabel('Ts \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
---- LONGITUDINAL VELOCITY ---figure(700+12*(i-1))
plot(Tz,MPL_vel_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o' )
5 of 8
8/10/09 14:43
hold all
ylabel('MPL_{vL} \it{(m/s)}' )
xlabel('Tz \it{(s)}' )
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
%
%
%
%
%
%
figure(700+12*(i-1))
plot(Ts,MPL_vel_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{vL} \it{(m/s)}')
xlabel('Ts \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
---- TRANSVERSE VELOCITY ---figure(800+12*(i-1))
plot(Tz,MPL_vel_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o' )
hold all
ylabel('MPL_{vT} \it{(m/s)}' )
xlabel('Tz \it{(s)}' )
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
figure(800+12*(i-1))
plot(Ts,MPL_vel_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{vT} \it{(m/s)}')
xlabel('Ts \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
---- VERTICAL VELOCITY ---figure(900+12*(i-1))
plot(Tz,MPL_vel_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o' )
hold all
ylabel('MPL_{vV} \it{(m/s)}' )
xlabel('Tz \it{(s)}' )
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
figure(900+12*(i-1))
plot(Ts,MPL_vel_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{vV} \it{(m/s)}')
xlabel('Ts \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
---- LONGITUDINAL ACCELERATION ---figure(1000+12*(i-1))
plot(Tz,MPL_a_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{aL} \it{(m/s^2)}')
xlabel('Tz \it{(s)}' )
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
6 of 8
8/10/09 14:43
grid on
%
%
%
%
%
%
%
figure(1000+12*(i-1))
plot(Ts,MPL_a_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{aL} \it{(m/s^2)}')
xlabel('Ts \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
---- TRANSVERSE ACCELERATION ---figure(1100+12*(i-1))
plot(Tz,MPL_a_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{aT} \it{(m/s^2)}')
xlabel('Tz \it{(s)}' )
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
figure(1100+12*(i-1))
plot(Ts,MPL_a_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{aT} \it{(m/s^2)}')
xlabel('Ts \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
---- VERTICAL ACCELERATION ---figure(1200+12*(i-1))
plot(Tz,MPL_a_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{aV} \it{(m/s^2)}')
xlabel('Tz \it{(s)}' )
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
figure(1200+12*(i-1))
plot(Ts,MPL_a_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{aV} \it{(m/s^2)}')
xlabel('Ts \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
end
figure(400+12*(i-1))
legend(MPL_legend_c)
figure(500+12*(i-1))
legend(MPL_legend_c)
figure(600+12*(i-1))
legend(MPL_legend_c)
figure(700+12*(i-1))
legend(MPL_legend_c)
figure(800+12*(i-1))
legend(MPL_legend_c)
figure(900+12*(i-1))
7 of 8
8/10/09 14:43
8 of 8
legend(MPL_legend_c)
figure(1000+12*(i-1))
legend(MPL_legend_c)
figure(1100+12*(i-1))
legend(MPL_legend_c)
figure(1200+12*(i-1))
legend(MPL_legend_c)
hold all
plot(ones(1,length(Tz))*5.38,linspace(0,6,length(Tz)),'--k','LineWidth', 2)
plot(ones(1,length(Tz))*Ts(end),linspace(0,6,length(Tz)),'--k','LineWidth',
%
%
2)
%
%
plot(ones(1,length(Tz))*Ts(6),linspace(0,6,length(Tz)),'-.','Color',[0.3 0.3
0.3],'LineWidth', 2)
%
plot(ones(1,length(Tz))*Ts(14),linspace(0,6,length(Tz)),'-.','Color',[0.3 0.3
0.3],'LineWidth', 2)
end
end
8/10/09 15:02
%
%
%
%
%
%
% References:
%
Vol. 31, pp 61-85.
%
- Jensen, J.J., 2001. Loads and global response of ships.Elsevier Ocean
%
Engineering Book Series vol.4. Elsevier.
%
- Faltinsen, O.M., 1995. Sea Loads on ships and offshore structures.
%
Cambridge Ocean Technology Series. Cambridge University Press.
%
- Dyrbye, C., Hansen S.O., ''Wind Loads on Structures', Wiley & Sons
%
Ltd., Appendix A.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %--------------------------------------------------------------------------
1 of 10
8/10/09 15:02
%
1.- SELECTING PARAMETERS FOR
%
DISCRETE FOURIER TRANSFORM
%-------------------------------------------------------------------------%---------------- 1.1.- SET SHIP HEADINGS/Ts FOR THE TIME SERIES ------------disp('---------------------------------------------------------' )
disp('The time series are calculated for the following' )
disp('heading angles:' )
ship_headings_ts % From Inputs File.
disp('And Zero-Up Crossing Wave Periods Tz:')
Tz_ts
%---------------- 1.2.- SET FREQ PARAMETERS FOR THE TIME SERIES ------------disp('---------------------------------------------------------' )
disp('Parameters for the time series are:')
disp(['Time Step (note equal to WT time step!!): ' num2str(dt) ' s.'])
f_sample = 1/dt;
disp(['Sample Frequency: ' num2str(f_sample) ' Hz.'])
f_nyquist = f_sample/2;
disp(['Nyquist Frequency: ' num2str(f_nyquist) ' Hz.'])
% N_points to generate Discrete Fourier Transform
% NOTE: This number must be double of wave frequencies according to the
% Sampling Theorem in order to prevent aliasing.
disp('---------------------------------------------------------' )
disp('Avoiding Aliasing - - Sampling Theorem - - ' )
disp('Selected appropriate number of points to create the' )
disp('Discrete Fourier Transfomr (DFT), i.e. double of wave freq.' )
f_spectrum = omega/(2*pi); % Wave Frequencies in Hertz
N_points = 2*length(f_spectrum);
disp('---------------------------------------------------------' )
% Maximum Simulation Time
time = N_points*dt;
N_simulation = Number_of_simulations; % Given by Inputs File.
% Displaying time parameters
disp('---------------------------------------------------------' )
disp(['Time per simulation: ' num2str(time) ' s.' ])
disp(['Total Time Series: ' num2str(N_simulation*time) ' s.'])
disp('---------------------------------------------------------' )
%-------------------------------------------------------------------------%
2.- CALCULATE SPECTRUM RESPONSES
%-------------------------------------------------------------------------%---------------- 2.1.- CALCULATE RESPONSE AMPLITUDE OPERATORS -----------% The response amplitude operators are defined as freq. response functions
%squared, denoted by RAO_R.
%where: [R = w(heave), pitch and roll, displacements and accelerations]
%---------------------------INITIALIZE VARIABLES--------------------------RAO_w_ts = cell(1,length(ship_headings_ts));
RAO_pitch_ts = cell(1,length(ship_headings_ts));
RAO_roll_ts = cell(1,length(ship_headings_ts));
RAO_u_L_ts = cell(1,length(ship_headings_ts));
RAO_u_T_ts = cell(1,length(ship_headings_ts));
RAO_u_V_ts = cell(1,length(ship_headings_ts));
RAO_vel_L_ts = cell(1,length(ship_headings_ts));
2 of 10
8/10/09 15:02
RAO_vel_T_ts = cell(1,length(ship_headings_ts));
RAO_vel_V_ts = cell(1,length(ship_headings_ts));
RAO_a_L_ts = cell(1,length(ship_headings_ts));
RAO_a_T_ts = cell(1,length(ship_headings_ts));
RAO_a_V_ts = cell(1,length(ship_headings_ts));
for j = 1:length(ship_headings_ts)
% NOTE: Heave, pitch and roll are always referred to the center of
% motion, which means that they are constant regarless the cargo
% position.
% Dimensions: {N_beta}(1xomega)
index = find(ship_headings_ts(j)==round(beta));
RAO_w_ts{j} = phi_w{index}.^2;
RAO_pitch_ts{j} = phi_pitch{index}.^2;
RAO_roll_ts{j} = phi_roll{index}.^2;
% Dimensions: {N_beta}(cargo_positionxomega)
RAO_u_L_ts{j} = phi_u_L{index}.^2;
RAO_u_T_ts{j} = phi_u_T{index}.^2;
RAO_u_V_ts{j} = phi_u_V{index}.^2;
RAO_vel_L_ts{j} = phi_vel_L{index}.^2;
RAO_vel_T_ts{j} = phi_vel_T{index}.^2;
RAO_vel_V_ts{j} = phi_vel_V{index}.^2;
RAO_a_L_ts{j} = phi_a_L{index}.^2;
RAO_a_T_ts{j} = phi_a_T{index}.^2;
RAO_a_V_ts{j} = phi_a_V{index}.^2;
end
%----------------- 2.3.- RESPONSE SPECTRAL DENSITY, S_R ------------------% The Resp. Spectral Density or simply Spectrum Density is calculated as:
%
S_R(omega_bar) = RAO_R(omega_bar)*Sw(omega_bar)
% where: [R = heave, pitch and roll, displacements and accelerations]
% NOTE: Wave Spectrum must be calculated with respect omega_bar by using
% function file wave_spectrum_ts.
% Recalling, the wave spectrum is calculated for a number of Ts
% with constant peak and Hs. Therefore, the S_R must be
% calculated for a ship heading and a number of Ts.
% S_R for ship motions
% Dimensions {ship_headings_ts}(Tzxomega)
% ----------------------Initilization of Variables------------------------S_heave = cell(1,length(ship_headings_ts));
S_pitch = cell(1,length(ship_headings_ts));
S_roll = cell(1,length(ship_headings_ts));
for j = 1:length(ship_headings_ts)
[Sw,wspectrum_legend_ts,Ts_ts] = wave_spectrum_ts...
(Tz_ts,ship_headings_ts(j),...
omega,g,V,...
peak,Hs);
for p = 1:length(Tz_ts)
S_heave{j}(p,:) = Sw(p,:).*RAO_w_ts{j};
S_pitch{j}(p,:) = Sw(p,:).*RAO_pitch_ts{j};
S_roll{j}(p,:) = Sw(p,:).*RAO_roll_ts{j};
end
3 of 10
8/10/09 15:02
end
% S_R for displacements, vel, and accelerations
% Dimensions {ship_headings_ts,cargo}(Tzxomega)
% ----------------------Initilization of Variables------------------------S_u_L = cell(length(ship_headings_ts),N_cargo);
S_u_T = cell(length(ship_headings_ts),N_cargo);
S_u_V = cell(length(ship_headings_ts),N_cargo);
S_vel_L = cell(length(ship_headings_ts),N_cargo);
S_vel_T = cell(length(ship_headings_ts),N_cargo);
S_vel_V = cell(length(ship_headings_ts),N_cargo);
S_a_L = cell(length(ship_headings_ts),N_cargo);
S_a_T = cell(length(ship_headings_ts),N_cargo);
S_a_V = cell(length(ship_headings_ts),N_cargo);
for j = 1:length(ship_headings_ts)
[Sw,wspectrum_legend_ts,Ts_ts] = wave_spectrum_ts...
(Tz_ts,ship_headings_ts(j),...
omega,g,V,...
peak,Hs);
for c = 1:N_cargo
for p = 1:length(Tz_ts)
S_u_L{j,c}(p,:)=Sw(p,:).*RAO_u_L_ts{j}(c,:);
S_u_T{j,c}(p,:)=Sw(p,:).*RAO_u_T_ts{j}(c,:);
S_u_V{j,c}(p,:)=Sw(p,:).*RAO_u_V_ts{j}(c,:);
S_vel_L{j,c}(p,:)=Sw(p,:).*RAO_vel_L_ts{j}(c,:);
S_vel_T{j,c}(p,:)=Sw(p,:).*RAO_vel_T_ts{j}(c,:);
S_vel_V{j,c}(p,:)=Sw(p,:).*RAO_vel_V_ts{j}(c,:);
S_a_L{j,c}(p,:)=Sw(p,:).*RAO_a_L_ts{j}(c,:);
S_a_T{j,c}(p,:)=Sw(p,:).*RAO_a_T_ts{j}(c,:);
S_a_V{j,c}(p,:)=Sw(p,:).*RAO_a_V_ts{j}(c,:);
end
end
end
4 of 10
8/10/09 15:02
5 of 10
vel_L_tot = cell(length(ship_headings_ts),N_cargo);
vel_T_tot = cell(length(ship_headings_ts),N_cargo);
vel_V_tot = cell(length(ship_headings_ts),N_cargo);
a_L_tot = cell(length(ship_headings_ts),N_cargo);
a_T_tot = cell(length(ship_headings_ts),N_cargo);
a_V_tot = cell(length(ship_headings_ts),N_cargo);
for simul = 1:N_simulation
%---------------------------------------------------------------------%
4.- GENERATE DFT, X_l_R
%---------------------------------------------------------------------%------------------4.1.- CREATE COMPLEX GAUSSIAN FOR SHIP MOTIONS-% Initializating Variables:
X_l_heave = cell(1,length(ship_headings_ts));
X_l_pitch = cell(1,length(ship_headings_ts));
X_l_roll = cell(1,length(ship_headings_ts));
% Define imaginary number: imaginary
imaginary = sqrt(-1);
for j = 1:length(ship_headings_ts)
for p = 1:length(Tz_ts)
X_l_heave{j}(p,:) = complex_gaussian(S_heave{j}(p,:),N_points);
X_l_pitch{j}(p,:) = complex_gaussian(S_pitch{j}(p,:),N_points);
X_l_roll{j}(p,:) = complex_gaussian(S_roll{j}(p,:),N_points);
end
end
%-----------4.2.- CREATE COMPLEX GAUSSIAN FOR DISPL, VEL, AND ACCEL--% Initializating Variables:
X_l_u_L = cell(length(ship_headings_ts),N_cargo);
X_l_u_T = cell(length(ship_headings_ts),N_cargo);
X_l_u_V = cell(length(ship_headings_ts),N_cargo);
X_l_vel_L = cell(length(ship_headings_ts),N_cargo);
X_l_vel_T = cell(length(ship_headings_ts),N_cargo);
X_l_vel_V = cell(length(ship_headings_ts),N_cargo);
X_l_a_L = cell(length(ship_headings_ts),N_cargo);
X_l_a_T = cell(length(ship_headings_ts),N_cargo);
X_l_a_V = cell(length(ship_headings_ts),N_cargo);
% Define imaginary number: imaginary
imaginary = sqrt(-1);
for j = 1:length(ship_headings_ts)
for c = 1:N_cargo
for p = 1:length(Tz_ts)
X_l_u_L{j,c}(p,:) = complex_gaussian(S_u_L{j,c}(p,:),N_points);
X_l_u_T{j,c}(p,:) = complex_gaussian(S_u_T{j,c}(p,:),N_points);
X_l_u_V{j,c}(p,:) = complex_gaussian(S_u_V{j,c}(p,:),N_points);
X_l_vel_L{j,c}(p,:) = complex_gaussian(S_vel_L{j,c}(p,:),N_points);
X_l_vel_T{j,c}(p,:) = complex_gaussian(S_vel_T{j,c}(p,:),N_points);
X_l_vel_V{j,c}(p,:) = complex_gaussian(S_vel_V{j,c}(p,:),N_points);
X_l_a_L{j,c}(p,:) = complex_gaussian(S_a_L{j,c}(p,:),N_points);
X_l_a_T{j,c}(p,:) = complex_gaussian(S_a_T{j,c}(p,:),N_points);
8/10/09 15:02
6 of 10
X_l_a_V{j,c}(p,:) = complex_gaussian(S_a_V{j,c}(p,:),N_points);
end
end
end
%---------------------------------------------------------------------%
5.- CALCULATE TIME SERIES
%---------------------------------------------------------------------%------------------5.1.- TIME SERIES FOR SHIP MOTIONS-----% Initializating Variables:
heave = cell(1,length(ship_headings_ts));
pitch = cell(1,length(ship_headings_ts));
roll = cell(1,length(ship_headings_ts));
for j = 1:length(ship_headings_ts)
for p = 1:length(Tz_ts)
heave{j}(p,:) = ifft(X_l_heave{j}(p,:),'symmetric' );
pitch{j}(p,:) = ifft(X_l_pitch{j}(p,:),'symmetric' );
roll{j}(p,:) = ifft(X_l_roll{j}(p,:),'symmetric');
end
end
if simul ==1
for j = 1:length(ship_headings_ts)
for p = 1:length(Tz_ts)
heave_tot{j}(p,:) = heave{j}(p,:);
pitch_tot{j}(p,:) = pitch{j}(p,:);
roll_tot{j}(p,:) = roll{j}(p,:);
end
end
else
for j = 1:length(ship_headings_ts)
for p = 1:length(Tz_ts)
heave_tot{j}(p,1:simul*N_points) = [heave_tot{j}(p,1:(simul-1)
*N_points), heave{j}(p,:)];
pitch_tot{j}(p,1:simul*N_points) = [pitch_tot{j}(p,1:(simul-1)
*N_points), pitch{j}(p,:)];
roll_tot{j}(p,1:simul*N_points) = [roll_tot{j}(p,1:(simul-1)*N_points),
roll{j}(p,:)];
end
end
end
%------------------5.2.- TIME SERIES FOR DISPL, VEL, AND ACCEL-----% Initializating Variables:
u_L = cell(length(ship_headings_ts),N_cargo);
u_T = cell(length(ship_headings_ts),N_cargo);
u_V = cell(length(ship_headings_ts),N_cargo);
vel_L = cell(length(ship_headings_ts),N_cargo);
vel_T = cell(length(ship_headings_ts),N_cargo);
vel_V = cell(length(ship_headings_ts),N_cargo);
a_L = cell(length(ship_headings_ts),N_cargo);
a_T = cell(length(ship_headings_ts),N_cargo);
a_V = cell(length(ship_headings_ts),N_cargo);
8/10/09 15:02
7 of 10
for j = 1:length(ship_headings_ts)
for c = 1:N_cargo
for p = 1:length(Tz_ts)
u_L{j,c}(p,:) = ifft(X_l_u_L{j,c}(p,:),'symmetric' );
u_T{j,c}(p,:) = ifft(X_l_u_T{j,c}(p,:),'symmetric' );
u_V{j,c}(p,:) = ifft(X_l_u_V{j,c}(p,:),'symmetric' );
vel_L{j,c}(p,:) = ifft(X_l_vel_L{j,c}(p,:),'symmetric' );
vel_T{j,c}(p,:) = ifft(X_l_vel_T{j,c}(p,:),'symmetric' );
vel_V{j,c}(p,:) = ifft(X_l_vel_V{j,c}(p,:),'symmetric' );
a_L{j,c}(p,:) = ifft(X_l_a_L{j,c}(p,:),'symmetric' );
a_T{j,c}(p,:) = ifft(X_l_a_T{j,c}(p,:),'symmetric' );
a_V{j,c}(p,:) = ifft(X_l_a_V{j,c}(p,:),'symmetric' );
end
end
end
if simul ==1
for j = 1:length(ship_headings_ts)
for c = 1:N_cargo
for p = 1:length(Tz_ts)
u_L_tot{j,c}(p,:) = u_L{j,c}(p,:);
u_T_tot{j,c}(p,:) = u_T{j,c}(p,:);
u_V_tot{j,c}(p,:) = u_V{j,c}(p,:);
vel_L_tot{j,c}(p,:) = vel_L{j,c}(p,:);
vel_T_tot{j,c}(p,:) = vel_T{j,c}(p,:);
vel_V_tot{j,c}(p,:) = vel_V{j,c}(p,:);
a_L_tot{j,c}(p,:) = a_L{j,c}(p,:);
a_T_tot{j,c}(p,:) = a_T{j,c}(p,:);
a_V_tot{j,c}(p,:) = a_V{j,c}(p,:);
end
end
end
else
for j = 1:length(ship_headings_ts)
for c = 1:N_cargo
for p = 1:length(Tz_ts)
u_L_tot{j,c}(p,1:simul*N_points) = [u_L_tot{j,c}(p,1:(simul-1)
*N_points), u_L{j,c}(p,:)];
u_T_tot{j,c}(p,1:simul*N_points) = [u_T_tot{j,c}(p,1:(simul-1)
*N_points), u_T{j,c}(p,:)];
u_V_tot{j,c}(p,1:simul*N_points) = [u_V_tot{j,c}(p,1:(simul-1)
*N_points), u_V{j,c}(p,:)];
vel_L_tot{j,c}(p,1:simul*N_points) = [vel_L_tot{j,c}(p,1:(simul-1)
*N_points), vel_L{j,c}(p,:)];
vel_T_tot{j,c}(p,1:simul*N_points) = [vel_T_tot{j,c}(p,1:(simul-1)
*N_points), vel_T{j,c}(p,:)];
vel_V_tot{j,c}(p,1:simul*N_points) = [vel_V_tot{j,c}(p,1:(simul-1)
*N_points), vel_V{j,c}(p,:)];
8/10/09 15:02
8 of 10
a_L_tot{j,c}(p,1:simul*N_points) = [a_L_tot{j,c}(p,1:(simul-1)
*N_points), a_L{j,c}(p,:)];
a_T_tot{j,c}(p,1:simul*N_points) = [a_T_tot{j,c}(p,1:(simul-1)
*N_points), a_T{j,c}(p,:)];
a_V_tot{j,c}(p,1:simul*N_points) = [a_V_tot{j,c}(p,1:(simul-1)
*N_points), a_V{j,c}(p,:)];
end
end
end
end
%-------------------------------------------------------------------------%
7.- CHECK RESULTS
%
(For the last time of simulation).
%-------------------------------------------------------------------------% disp('---------------------------------------------------------')
% disp('Do you want to check the results of the')
% flag7 = input('FFT analysis(Checking for pitch)? Press: Yes = 1; No = 0.');
if flag7 == 1
%----------------------7.1.- CALCULATE FFT, SPECTRUM, AND TIME SERIES -----for j = 1:length(ship_headings_ts)
for p = 1:length(Tz_ts)
% a) Fast Fourier Transform
X_l_heave_check{j}(p,:) = fft(heave{j}(p,:)');
X_l_pitch_check{j}(p,:) = fft(pitch{j}(p,:)');
X_l_roll_check{j}(p,:) = fft(roll{j}(p,:)');
% b) Calculate the spectrum
S_pitch_FFT{j}(p,:) = X_l_pitch_check{j}(p,:).*...
conj(X_l_pitch_check{j}(p,:))/N_points;
% c) Calculate time series
pitch_check{j}(p,:) = ifft(X_l_pitch_check{j}(p,:),'symmetric' );
end
end
%----------------------7.2.- PLOT THE FFT CREATED VS FFT FROM TIME SERIES-figure(108)
omega_window = 0.01:0.01:4;
plot(omega_window,X_l_pitch{1}(1,:))
hold all
plot(omega_window,X_l_pitch_check{1}(1,:))
xlabel('\omega (\it{rad/s})' )
legend('FFT_{GAUSSIAN}', 'FFT_{TimeSeries}' , 'Location' , 'Best')
grid on
8/10/09 15:02
9 of 10
8/10/09 15:02
10 of 10
8/10/09 15:08
1 of 2
%
%
8/10/09 15:08
2 of 2
%---------------------------------------------------------------------%
1.1.- CALCULATE PARAMETERS
%---------------------------------------------------------------------% Mean Period, Ts
Ts_ts(j) = Tz_ts(j)*sqrt((10.89 + peak)*(5 + peak))/(6.774 + peak);
% Pierson Moskowitch Wave Spectrum, Spm
Spm(j,i) = 173*Hs^2*Ts_ts(j)*(omega_bar_ts(i)*Ts_ts(j))^(-5)*exp(-692*
(omega_bar_ts(i)*Ts_ts(j))^(-4));
% Coefficients F1 and F2
if j==1 && i == 1
if peak >= 1 && peak <= 2
F1 = 0.24*peak + 0.76;
F2 = -0.05*peak + 1.05;
elseif peak > 2 && peak <= 3
F1 = 0.22*peak + 0.80;
F2 = -0.02*peak + 0.99;
elseif peak > 3 && peak <= 4
F1 = 0.20*peak + 0.86;
F2 = -0.02*peak + 0.99;
elseif peak > 4 && peak <= 5
F1 = 0.20*peak + 0.86;
F2 = -0.01*peak + 0.95;
elseif peak > 5 && peak <= 6
F1 = 0.18*peak + 0.96;
F2 = -0.01*peak + 0.95;
else
disp('Error!! The peak enhancement factor selected is out of the range.
')
end
end
% Coefficient sigma, sigma
if 0.206*F2*Ts_ts(j)*omega_bar_ts(i) <= 1
sigma = 0.07;
else
sigma = 0.06;
end
%---------------------------------------------------------------------%
1.2.- CALCULATE GENERALIZED JONSWAP
%
WAVE SPECTRUM
%---------------------------------------------------------------------% Generalized JONSWAP Wave Spectrum, Sw
Sw(j,i) = Spm(j,i)*(1/F1)*peak^(...
exp( -0.5*((0.206*F2*Ts_ts(j)*omega_bar_ts(i) - 1)/sigma)^2 ));
end % End Loop Wave Frequencies
%
wspectrum_legend{j} = (['Ts = ' num2str(Ts(j)) ' s.']);
wspectrum_legend_ts{j} = (['Tz_ts = ' num2str(Tz_ts(j)) ' s.' ]);
end % End Loop Zero-UpCrossing Periods
8/10/09 15:10
%OUTPUTS:
% X_l: FFT for a given Spectrum.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function [X_l] = complex_gaussian(S_R,N)
for l = 2:(N/2+1)
% Calculate the var of X, using the previus Spectrum Density.
var_X = (S_R(l-1)*N);
% Calculate the std if the complex gaussian: std_a = std_b.
% Thus, var_X = var_a + var_b = 2*var_a =>
% So if std_a = sqrt(var_a) => std_a = sqrt(var_X/2)
std_a = sqrt(var_X/2);
std_b = std_a;
% Generate Gaussian complex components X_l = a + ib. a and b
% have mean zero and std deviation to generate std_X.
a(l) = std_a*randn;
b(l) = std_b*randn;
1 of 2
8/10/09 15:10
a(N+2-l) = a(l);
b(N+2-l) = -b(l);
end
% Force that first value and the (N/2+1) value of X must be real, which
% means that b must be zero at those points.
b = [0 b(2:N/2) 0 b(N/2+2:N)];
2 of 2
8/10/09 15:13
%
%
1 of 1
8/10/09 15:14
1 of 2
8/10/09 15:14
figure(30000)
subplot(rows_sr,columns_sr,j)
plot(omega,S_roll{index_beta_sr})
title(['\beta = ' num2str(ship_headings_sr_plot(j))])
hold all
xlabel('\omega (\it{rad/s})')
ylabel('S_{roll} (\it{rad^2s})' )
end
figure(30000)
legend(Tz_legend)
end
if flag_e2 == 1
disp('Still to Implememnt!!!!!!' )
end
2 of 2
8/10/09 15:15
1 of 1
8/10/09 15:58
%
Engineering, Technical University of Denmark DTU.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - clear all;
close all;
clc;
% profile on
% tic;
%==========================================================================
%
%
SETTINGS
%
%==========================================================================
%------ GRAPHICS -----set(0,'DefaultAxesFontName', 'Times')
set(0,'DefaultAxesFontAngle', 'Normal' )
set(0,'DefaultAxesFontSize',12)
set(0,'DefaultTextFontName', 'Times')
set(0,'DefaultTextFontAngle', 'Normal' )
set(0,'DefaultTextFontSize',12)
disp('--------------------------------------------------' )
disp('STARTING SEA TRANSPORT ANALYSIS PROGRAM...' )
disp('--------------------------------------------------' )
disp('Reading Inputs:' )
%==========================================================================
1 of 10
8/10/09 15:58
2 of 10
%
%
WIND TURBINE DATA. INPUTS
%
%==========================================================================
% ------------------------------------------------------------------------%
Call Data Input File
% ------------------------------------------------------------------------Structural_Data_w_zero_section
% It contains the structural data of the W.T.
Aerodynamic_Data_w_zero_section
% It contains the aerodynamic data of the W.T.
% Structural_Data_w_uniform_tower_inertia % Only for testing tower top deflec.
% ------------------------------------------------------------------------%
General Parameters
% ------------------------------------------------------------------------hub=[TOWER(end,1);0;0];
% Hub Height in coordinate system 1
shaft=[0;0;-SHAFT_L];
% Shaft Length in coordinate system 2
a_hub = radius_tower(3);
a_change = radius_tower(2);
a_bottom = radius_tower(1);
height_cone = 10;
%
%
%
%
%-------------------------------------------------------------------------%
Blade Properties
%-------------------------------------------------------------------------%different sections of each blade
r = BLADE(:,1)';
%distributed mass of the blade
mass = BLADE(:,2)';
%chord at the cooresponding section of blade
chord = BLADE(:,6)';
% twist at the cooresponding section of blade
twist = -BLADE(:,7)';
% relative thickness at the cooresponding section of blade
thickness = BLADE_Aero(:,4)';
%-------------------------------------------------------------------------%
Tower Properties
%-------------------------------------------------------------------------%different sections of each tower
r_tower = TOWER(:,1)';
%distributed mass of the tower
mass_tower = TOWER(:,2)';
% ------------------------------------------------------------------------%
Angles. Turbine Operation
% ------------------------------------------------------------------------% - - - In Deg - - theta_yaw = 0;
theta_tilt = -6;
theta_cone = 2;
8/10/09 15:58
theta_wing_blade1 = 180;
% - - - In Radians - - theta_yaw=theta_yaw*pi/180;
theta_tilt=theta_tilt*pi/180;
theta_cone=theta_cone*pi/180;
theta_wing_blade1 = theta_wing_blade1*pi/180;
phase = 2*pi/nB;
theta_wing_blades = [theta_wing_blade1;...
theta_wing_blade1+phase;...
theta_wing_blade1+2*phase];
%==========================================================================
%
%
WIND TURBINE OPERATIONAL PARAMETERS
%
%==========================================================================
% ------------------------------------------------------------------------%
Set Methods to consider in the calculations
% ------------------------------------------------------------------------wind_shear = 0.11; % Wind Shear Amount
tower_flag = 1; % Considering Tower passage
%
--------------%---------------------------- Pitch Angle ------------------------------%
--------------% ------------------------------------------------------------------------%
Change in pitch during simulations
% ------------------------------------------------------------------------t_change=0; % Set time when a change in pitch is applied
% ------------------------------------------------------------------------%
Pitch Angle
% ------------------------------------------------------------------------% Note: globlapitch = [pitch1 pitch2...]
if t_change == 0 % No change in pitch
globalpitch = -82;
else
globalpitch = [82,45]; % e.g. There is a change from 82 to 45.
end
%==========================================================================
%
%
READING SHIP MOTIONS AND TIME FOR SIMULATIONS
%
%==========================================================================
disp('--------------------------------------------------' )
disp('Loading SHIP MOTIONS:')
% ------------------------------------------------------------------------%
Reading Offshore program.
% -------------------------------------------------------------------------
3 of 10
8/10/09 15:58
% The Offshore program calculates the ship motions and cargo displacements,
% velocities and accelerations in the time domain.
load offshore_program_Thinlink u_L_tot u_T_tot u_V_tot...
vel_L_tot vel_T_tot vel_V_tot...
a_L_tot a_T_tot a_V_tot...
time dt N_simulation CR x_cargo ship_headings_ts Tz_ts index_Tz_plot Hs
%==========================================================================
%
%
TIME SETTINGS
%
%==========================================================================
% ------------------------------------------------------------------------%
Time Parameters
% ------------------------------------------------------------------------tmax = N_simulation*time; % t_max is the final time of calculations, from
% barge calculations.
% dt, Time Step, from barge calculations: dt = 0.03 s
disp(['The time step, dt, has been set to ' num2str(dt) ' s'])
%==========================================================================
%
%
WIND CONSIDERATIONS
%
%==========================================================================
disp('--------------------------------------------------' )
disp('Calculating STOCHASTIC WIND:')
% ------------------------------------------------------------------------%
Wind Properties
% ------------------------------------------------------------------------density = 1.225;
% kg/m3
g = 9.81;
% Gravity
%
--------------%---------------------------- Wind Speed
------------------------------%
--------------% ------------------------------------------------------------------------%
Apply a sudden gust
% ------------------------------------------------------------------------t_change2 = 0; % Set time when a sudden gust arises.
% ------------------------------------------------------------------------%
Mean Wind Speed (Hub height wind speed (m/s))
% ------------------------------------------------------------------------% Note: VO_vector[y_comp_t1 y_comp_t2
...
%
z_comp_t1 z_comp_t2
...]
if t_change2 == 0 % No gust
V0_mean = [0;14.4];
else
V0_mean = [0 0;15 30]; % e.g. There is a gust of 30 m/s
end
% ------------------------------------------------------------------------%
Fluctuations in the Wind Speed
4 of 10
8/10/09 15:58
% ------------------------------------------------------------------------%
Wind Speed (Hub height wind speed (m/s))
% ------------------------------------------------------------------------V0_vector = [V_fluc_y + V0_mean(1);V_fluc_z + V0_mean(2)];
V0_vector = [0 V0_vector(1,:);0 V0_vector(2,:)];
%==========================================================================
%
%
STIFF BODY MOTIONS FROM BARGE
%
%==========================================================================
% ------------------------------------------------------------------------%
Select Heading and Period from the time series
% ------------------------------------------------------------------------head_pos = 1;
% <=> heading = 180.
heading_time_series = ship_headings_ts(head_pos);
Tz_pos = 1;
% <=> Tz = 6 sec.
Tz_time_series = Tz_ts(Tz_pos);
time_length = (N_simulation*time)/dt; % From barge. Note that these time
% series starts at dt, i.e. not 0.
% ------------------------------------------------------------------------%
Select Time series and allocating.
% ------------------------------------------------------------------------% Initializating... (NOTE that the time series are increased to match with
% the WT model, i.e. it is included the first time step equal to zero)
WT_u_L_tot = zeros(length(x_cargo),time_length + 1);
WT_u_T_tot = zeros(length(x_cargo),time_length + 1);
WT_u_V_tot = zeros(length(x_cargo),time_length + 1);
WT_vel_L_tot = zeros(length(x_cargo),time_length + 1);
WT_vel_T_tot = zeros(length(x_cargo),time_length + 1);
WT_vel_V_tot = zeros(length(x_cargo),time_length + 1);
WT_a_L_tot = zeros(length(x_cargo),time_length + 1);
WT_a_T_tot = zeros(length(x_cargo),time_length + 1);
WT_a_V_tot = zeros(length(x_cargo),time_length + 1);
% It is considered the different coordinate systems; thus, the longitudinal
5 of 10
8/10/09 15:58
are changed.
= -u_L_tot{head_pos,i}(Tz_pos,:);
= -u_T_tot{head_pos,i}(Tz_pos,:);
= u_V_tot{head_pos,i}(Tz_pos,:);
WT_vel_L_tot(i,2:end) = -vel_L_tot{head_pos,i}(Tz_pos,:);
WT_vel_T_tot(i,2:end) = -vel_T_tot{head_pos,i}(Tz_pos,:);
WT_vel_V_tot(i,2:end) = vel_V_tot{head_pos,i}(Tz_pos,:);
WT_a_L_tot(i,2:end) = -a_L_tot{head_pos,i}(Tz_pos,:);
WT_a_T_tot(i,2:end) = -a_T_tot{head_pos,i}(Tz_pos,:);
WT_a_V_tot(i,2:end) = a_V_tot{head_pos,i}(Tz_pos,:);
end
% ------------------------------------------------------------------------%
STIFF BODY TOWER
% ------------------------------------------------------------------------%----------------------------- Deflections -------------------------------SB_Tower_displac_L = WT_u_L_tot(1:length(r_tower),:);
SB_Tower_displac_T = WT_u_T_tot(1:length(r_tower),:);
SB_Tower_displac_V = WT_u_V_tot(1:length(r_tower),:);
%----------------------------- Velocities --------------------------------SB_Tower_vel_L = WT_vel_L_tot(1:length(r_tower),:);
SB_Tower_vel_T = WT_vel_L_tot(1:length(r_tower),:);
SB_Tower_vel_V = WT_vel_L_tot(1:length(r_tower),:);
%---------------------------- Accelerations ------------------------------SB_Tower_acc_L = WT_a_L_tot(1:length(r_tower),:);
SB_Tower_acc_T = WT_a_L_tot(1:length(r_tower),:);
SB_Tower_acc_V = WT_a_L_tot(1:length(r_tower),:);
% ------------------------------------------------------------------------%
STIFF BODY BLADES
% ------------------------------------------------------------------------% It is considered the different coordinate systems; thus, the longitudinal
% and transverse motion are changed.
%----------------------------- Deflections -------------------------------SB_Blade_displac_L = WT_u_L_tot(length(r_tower)+1:end,:);
SB_Blade_displac_T = WT_u_T_tot(length(r_tower)+1:end,:);
SB_Blade_displac_V = WT_u_V_tot(length(r_tower)+1:end,:);
%----------------------------- Velocities --------------------------------SB_Blade_vel_L = WT_vel_L_tot(length(r_tower)+1:end,:);
SB_Blade_vel_T = WT_vel_T_tot(length(r_tower)+1:end,:);
SB_Blade_vel_V = WT_vel_V_tot(length(r_tower)+1:end,:);
%---------------------------- Accelerations ------------------------------SB_Blade_acc_L = WT_a_L_tot(length(r_tower)+1:end,:);
SB_Blade_acc_T = WT_a_T_tot(length(r_tower)+1:end,:);
SB_Blade_acc_V = WT_a_V_tot(length(r_tower)+1:end,:);
6 of 10
8/10/09 15:58
% toc;
% t1 = toc;
%==========================================================================
%
%
AEROELASTIC CALCULATIONS
%
%==========================================================================
disp('--------------------------------------------------' )
disp('Calculating WT AEROELASTIC RESPONSE:')
% ------------------------------------------------------------------------%
Aeroelastic Calculations
% ------------------------------------------------------------------------[t2,t3,t4,t5,t6,t7,Acceleration_Towertop_Y,Acceleration_Towertop_Z,...
Displacement_Turbine_X,Displacement_Turbine_Y,Displacement_Turbine_Z,...
Fn,Ft,time,M_tot_plot,THRUST_plot,THRUST_plot_2,...
Fn_plot,Ft_plot,time_plot,...
M_flap_total_plot,M_edge_total_plot,F_tower,...
theta_star_y,theta_star_z]...
= Aeroelastic_Calculations...
(theta_yaw,theta_tilt,theta_cone,theta_wing_blades,...
hub,shaft,a_hub,a_change,a_bottom,height_cone,transition_height,...
nB,M_nacelle,r,mass,chord,twist,thickness,r_tower,mass_tower,...
density,g,t_change2,V0_vector,wind_shear,tower_flag,t_change,...
data_blade,globalpitch,tmax,dt,...
SB_Tower_displac_L,SB_Tower_vel_L,SB_Tower_acc_L,...
SB_Tower_displac_T,SB_Tower_vel_T,SB_Tower_acc_T,...
SB_Tower_displac_V,SB_Tower_vel_V,SB_Tower_acc_V,...
SB_Blade_displac_L,SB_Blade_vel_L,SB_Blade_acc_L,...
SB_Blade_displac_T,SB_Blade_vel_T,SB_Blade_acc_T,...
SB_Blade_displac_V,SB_Blade_vel_V,SB_Blade_acc_V,...
blade_log_decrem_1,blade_log_decrem_2,blade_log_decrem_3,...
fore_aft_log_decrem,SB_PS_log_decrem);
% tic;
%==========================================================================
%
%
PLOTTING RESULTS LOADS
%
%==========================================================================
disp('--------------------------------------------------' )
disp('Plotting Results:' )
% ------------------------------------------------------------------------%
Select to plot the loads: Ft, Fn, Thrust, Torque, Flap and Edge
%
Moments.
% ------------------------------------------------------------------------flag_plot = 0; % 0 = No, 1 = Yes
if flag_plot == 1
% --------------------------------------------------------------------%
Select Section to plot Aerodynamic forces
% --------------------------------------------------------------------sect = 1; % Blade section.
7 of 10
8/10/09 15:58
8 of 10
8/10/09 15:58
figure(7)
plot(time_plot,F_tower(:,end,3),'-k')
xlabel('Time \it{(sec)}' )
ylabel('Z-comp Tower Top Force \it{(N)}' )
title('Tower Force Time History. Z-component')
grid on
%------ PLOTTING DISPLACEMENT TOWER TOP -----tower_top = length(r_tower);
figure(8)
subplot(2,1,1)
plot(time_plot,Displacement_Turbine_Y(tower_top,:),'-b' )
xlabel('Time \it{(sec)}' )
ylabel('Y-Tower Top Deflection \it{(m)}' )
grid on
subplot(2,1,2)
plot(time_plot,Displacement_Turbine_Z(tower_top,:),'-r' )
xlabel('Time \it{(sec)}' )
ylabel('Z-Tower Top Deflection \it{(m)}' )
grid on
end
%==========================================================================
%
%
PLOTTING TOWER TOP ACCELERATIONS
%
%==========================================================================
figure
plot(time_plot,Acceleration_Towertop_Z)
ylabel('Long. Accel. Tower Top')
xlabel('Time')
grid on
%==========================================================================
%
%
MOST PROBABLE LARGEST VALUE
%
%==========================================================================
mean_a_L = mean(Acceleration_Towertop_Z);
std_a_L = std(Acceleration_Towertop_Z);
a_L_MPL = std_a_L*sqrt(2*log(tmax/Tz_time_series));
disp('--------------------------------------------')
disp('MPL for the longitudinal acceleration: ' )
disp(['a_L_MPL = ' num2str(a_L_MPL) ' m/s2'])
disp(['\beta = ' num2str(heading_time_series) '.'])
disp(['Hs = ' num2str(Hs) ' m.' ])
disp(['Tz = ' num2str(Tz_time_series) ' sec.'])
disp('--------------------------------------------')
%==========================================================================
%
%
SAVED VARIABLES
%
%==========================================================================
save DOF11_Main_Program_BEM Displacement_Turbine_X Displacement_Turbine_Y...
9 of 10
8/10/09 15:58
10 of 10
8/10/09 16:02
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [V_fluc]=stoc_wind(tmax,dt,V0_mean)
%-------------------------------------------------------------------------% tmax = 60;
% dt = 0.03;
% V0_mean = 15;
%-------------------------------------------------------------------------% PARAMETERS
%-------------------------------------------------------------------------% Sample Frequency: The minimum frequency that our devices can
% measure.
sample_freq = 1/dt; % Sample Frequency
% Nyquist Frequency: The maximum frequency that we can calculate
% its spectrum.
nyquist_freq = sample_freq / 2;
% Maximum Simmulation Time: T
T = tmax;
% Number of points
N = T/dt; % Recommendation in class: N should be 1024.
1 of 2
8/10/09 16:02
2 of 2
8/10/09 16:04
%
Engineering, Technical University of Denmark DTU.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [t2,t3,t4,t5,t6,t7,Acceleration_Towertop_Y,Acceleration_Towertop_Z,...
Displacement_Turbine_X,Displacement_Turbine_Y,Displacement_Turbine_Z,...
Fn,Ft,time,M_tot_plot,THRUST_plot,THRUST_plot_2,Fn_plot,Ft_plot,time_plot,...
M_flap_total_plot,M_edge_total_plot,F_tower,...
theta_star_y,theta_star_z]...
= Aeroelastic_Calculations...
(theta_yaw,theta_tilt,theta_cone,theta_wing_blades,...
hub,shaft,a_hub,a_change,a_bottom,height_cone,transition_height,...
nB,M_nacelle,r,mass,chord,twist,thickness,r_tower,mass_tower,...
density,g,t_change2,V0_vector,wind_shear,tower_flag,t_change,...
data_blade,globalpitch,tmax,dt,...
SB_Tower_displac_L,SB_Tower_vel_L,SB_Tower_acc_L,...
SB_Tower_displac_T,SB_Tower_vel_T,SB_Tower_acc_T,...
SB_Tower_displac_V,SB_Tower_vel_V,SB_Tower_acc_V,...
SB_Blade_displac_L,SB_Blade_vel_L,SB_Blade_acc_L,...
SB_Blade_displac_T,SB_Blade_vel_T,SB_Blade_acc_T,...
SB_Blade_displac_V,SB_Blade_vel_V,SB_Blade_acc_V,...
blade_log_decrem_1,blade_log_decrem_2,blade_log_decrem_3,...
fore_aft_log_decrem,SB_PS_log_decrem)
%-------------------------------------------------------------------------%==========================================================================
%
%
INPUTS
%
%==========================================================================
t2 = 0;t3 = 0;t4 = 0;t5 = 0;t6 = 0;t7 = 0;
1 of 8
8/10/09 16:04
%==========================================================================
%
%
AEROELASTIC RESPONSE
%
(BEM + STRUCTURAL DYAMICS)
%
%==========================================================================
%-------------------------------------------------------------------------% 1. INITIALIZING VARIABLES
%-------------------------------------------------------------------------% Setting initial value of x, theta, x_d, theta_d (displac., veloc.)
Displacement = zeros(11,1);
Velocity = zeros(11,1);
2 of 8
8/10/09 16:04
3 of 8
8/10/09 16:04
4 of 8
Gpitch = globalpitch;
theta = (Gpitch + twist) * pi / 180;
elseif t_change ~= 0
for j=1:length(t_change)
if time(t) == 0
Gpitch = globalpitch(1);
theta = (Gpitch + twist) * pi / 180;
break
elseif time(t) == t_change(j)
Gpitch = globalpitch(j+1);
theta = (Gpitch + twist) * pi / 180;
end
end
end
% toc;
% t2 = toc + t2;
% tic;
%---------------------------------------------------------------------% 2.3 Generate Generalized Mass Terms & Mode Shapes "Pitched"
%---------------------------------------------------------------------% Callling "GM_terms_tot.m". It calculates the Generalized mass terms
% taking into account changes in the pitch angle.
[GM11_tower,GM11_blade,GM11_nacelle,...
GM22_tower,GM22_blade,GM22_nacelle,...
GM21_blade,GM31,GM41,GM51,GM32,GM42,GM52,GM33,GM44,GM55,...
u_1flap_pitch,u_1edge_pitch,u_2flap_pitch]=GM_terms_tot(time,t,t_change,...
globalpitch,Gpitch,M_nacelle,hub,shaft,...
u_1tm,theta_1tm_star_y,theta_1tm_star_z,mass_tower,r_tower,...
modes_blades,mass,r,...
theta_cone,theta_yaw,theta_tilt,theta_wing_blades,nB,...
GM11_tower,GM11_blade,GM11_nacelle,GM21_blade,GM31,GM41,GM51,...
GM22_tower,GM22_blade,GM22_nacelle,GM32,GM42,GM52, ...
GM33,GM44,GM55,u_1flap_pitch,u_1edge_pitch,u_2flap_pitch);
% toc;
% t3 = toc + t3;
% tic;
%
-------------%-------------------------Tower
-----------------------------%
-------------%---------------------------------------------------------------------% 2.4 Calculate Forces on the Tower
%---------------------------------------------------------------------% Calling "tower_aero_cal.m"
[P_tower]=...
tower_aero_calc(t,density,g,r_tower,mass_tower,...
V0,wind_shear,...
hub,a_hub,a_change,a_bottom,...
transition_height,...
SB_Tower_vel_L,SB_Tower_acc_L,...
SB_Tower_vel_T,SB_Tower_acc_T,...
SB_Tower_vel_V,SB_Tower_acc_V,...
Velocity,u_1tm);
8/10/09 16:04
% toc;
% t4 = toc + t4;
% tic;
%
-------------%-------------------------Blades
-----------------------------%
-------------%---------------------------------------------------------------------% 2.5 Calculate Forces on the Blades
%---------------------------------------------------------------------[Pn,Pt,Torque_tot,...
THR,THR_2,Moment_flap_total,Moment_edge_total,a34,a12]=...
blade_aero_calc...
(t,nB,g,density,data_blade,r,mass,chord,thickness, ...
theta,theta_yaw,theta_tilt,theta_cone,theta_wing_blades,...
V0,wind_shear,...
hub,shaft,a_hub,a_change,a_bottom,...
transition_height,height_cone,tower_flag,...
SB_Blade_vel_L,SB_Blade_acc_L,...
SB_Blade_vel_T,SB_Blade_acc_T,...
SB_Blade_vel_V,SB_Blade_acc_V,...
theta_1tm_star_y,theta_1tm_star_z,...
Velocity,u_1flap_pitch,u_1edge_pitch,u_2flap_pitch);
% Saving Variables at each time step.
Fn(t,:,:) = Pn(:,:);
Ft(t,:,:) = Pt(:,:);
M_tot(t,:) = Torque_tot(:); % Coord. System 3 (at the shaft) per blade
THRUST(t) = THR;
% Coord System 1 (Tower)
THRUST_2(t) = THR_2;
% Coord System 2 (Nacelle)
M_flap_total(t,:) = Moment_flap_total;
M_edge_total(t,:) = Moment_edge_total;
% toc;
% t5 = toc + t5;
% tic;
%
--------------------------%-------------------Total Wind Turbine
----------------------%
--------------------------%---------------------------------------------------------------------% 3. CALCULATE DYNAMICS RESPONSE (11 DOF SYSTEM)
%---------------------------------------------------------------------%---------------------------------------------------------------------% 3.1 Calling "rugekutta.m" Function
%---------------------------------------------------------------------[Displacement, Velocity, Acceleration] = rungekutta...
(Displacement, Velocity,dt,...
nB,theta_wing_blades,a34,a12,r,r_tower,hub,shaft,...
u_1tm,theta_1tm_star_y,theta_1tm_star_z,EF_1m,...
u_1flap_pitch,u_1edge_pitch,u_2flap_pitch,EF_1f,EF_1e,EF_2f,...
5 of 8
8/10/09 16:04
F_tower(t,:,:),Ft(t,:,:),Fn(t,:,:),...
GM11_tower,GM11_blade,GM11_nacelle,...
GM22_tower,GM22_blade,GM22_nacelle,...
GM21_blade,GM31,GM41,GM51,GM32,GM42,GM52,GM33,GM44,GM55,...
blade_log_decrem_1,blade_log_decrem_2,blade_log_decrem_3,...
fore_aft_log_decrem,SB_PS_log_decrem);
% toc;
% t6 = toc + t6;
% tic;
%---------------------------------------------------------------------% 3.2 Calculate displacement of the Turbine
%---------------------------------------------------------------------[Displac_Turbine_X,Displac_Turbine_Y,Displac_Turbine_Z]=...
displac_turbine(Displacement,u_1tm,...
u_1flap_pitch,u_1edge_pitch,u_2flap_pitch,...
a34,theta_wing_blades,r,shaft,hub,r_tower);
% Saving Variables at each time step.
Displacement_Turbine_X(:,t)=Displac_Turbine_X;
Displacement_Turbine_Y(:,t)=Displac_Turbine_Y;
Displacement_Turbine_Z(:,t)=Displac_Turbine_Z;
%
%
toc;
t7 = toc + t7;
end
%--------------------------
----------------------------
6 of 8
8/10/09 16:04
time_plot=time;
else % LOOKING FOR CHANGES IN GLOBAL PITCH
% Find the Index in Vector of time changes (t_changes) in the
% total time vector (time).
for j=1:length(t_change)
index(j)=find(time == t_change(j));
end
% Splitting up the Vectors: Fn,Ft,M_tot,T_tot,THURST,POWER and
% converting them into Fn_plot, Ft_plot, M_tot_plot, T_tot_plot,
% THURST_plot, POWER_plot, M_flap_total_plot, M_edge_total_plot
for j=1:length(index)
% FIRST CHUNK
if j==1
Ft_plot{j}=Ft(1:(index(j)),sect,1);
Fn_plot{j}=Fn(1:(index(j)),sect,1);
M_tot_plot{j}=M_tot(1:(index(j)),1);
T_tot_plot{j}=T_tot(1:(index(j)),1);
M_flap_total_plot{j}=M_flap_total(1:(index(j)));
M_edge_total_plot{j}=M_edge_total(1:(index(j)));
THRUST_plot{j}=THRUST(1:index(j));
time_plot{j}=time(1:index(j));
%SECOND CHUNK if Gpitch only changes once
if length(index) == 1
Ft_plot{j+1}=Ft(index(j):end,sect,1);
Fn_plot{j+1}=Fn(index(j):end,sect,1);
M_tot_plot{j+1}=M_tot(index(j):end,1);
T_tot_plot{j+1}=T_tot(index(j):end,1);
M_flap_total_plot{j+1}=M_flap_total(index(j):end);
M_edge_total_plot{j+1}=M_edge_total(index(j):end);
THRUST_plot{j+1}=THRUST(index(j):end);
time_plot{j+1}=time(index(j):end);
end
%REST OF CHUNKS
elseif j~=length(index)
Ft_plot{j}=Ft(index(j-1):index(j),sect,1);
Fn_plot{j}=Fn(index(j-1):index(j),sect,1);
M_tot_plot{j}=M_tot(index(j-1):index(j),1);
T_tot_plot{j}=T_tot(index(j-1):index(j),1);
M_flap_total_plot{j}=M_flap_total(index(j-1):index(j));
M_edge_total_plot{j}=M_edge_total(index(j-1):index(j));
THRUST_plot{j}=THRUST(index(j-1):index(j));
time_plot{j}=time(index(j-1):index(j));
else
% PENULTIMATE CHUNK
Ft_plot{j}=Ft(index(j-1):index(j),sect,1);
Fn_plot{j}=Fn(index(j-1):index(j),sect,1);
M_tot_plot{j}=M_tot(index(j-1):index(j),1);
T_tot_plot{j}=T_tot(index(j-1):index(j),1);
M_flap_total_plot{j}=M_flap_total(index(j-1):index(j));
M_edge_total_plot{j}=M_edge_total(index(j-1):index(j));
THRUST_plot{j}=THRUST(index(j-1):index(j));
time_plot{j}=time(index(j-1):index(j));
7 of 8
8/10/09 16:04
% LAST CHUNK
Ft_plot{j+1}=Ft(index(j):end,sect,1);
Fn_plot{j+1}=Fn(index(j):end,sect,1);
M_tot_plot{j+1}=M_tot(index(j):end,1);
T_tot_plot{j+1}=T_tot(index(j):end,1);
M_flap_total_plot{j+1}=M_flap_total(index(j):end);
M_edge_total_plot{j+1}=M_edge_total(index(j):end);
THRUST_plot{j+1}=THRUST(index(j):end);
time_plot{j+1}=time(index(j):end);
end
end
end % END LOOP OF CHANGES IN PITCH
% toc
% t3 = toc
8 of 8
8/10/09 16:32
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - clear all
close all
clc
%==========================================================================
%
%
SETTINGS
%
%==========================================================================
%------ GRAPHICS -----set(0,'DefaultAxesFontName', 'Times')
set(0,'DefaultAxesFontAngle', 'Normal' )
set(0,'DefaultAxesFontSize',12)
set(0,'DefaultTextFontName', 'Times')
set(0,'DefaultTextFontAngle', 'Normal' )
set(0,'DefaultTextFontSize',12)
disp('-----------------------------------------------------')
disp('BLADE MODE SHAPES' )
%==========================================================================
%
%
STRUCTURAL DATA
%
%==========================================================================
Structural_Data_w_zero_section % It contains the structural data for the W.T.
%-------------------------------------------------------------------------%
Blade Properties
%-------------------------------------------------------------------------radius = BLADE(:,1);
mass = BLADE(:,2);
stiffness_1 = E_blade*BLADE(:,3);
% Stiffness of the first ppal axis
1 of 12
8/10/09 16:32
stiffness_2 = E_blade*BLADE(:,4);
st_pitch = BLADE(:,5)*pi/180;
twist = BLADE(:,7)*pi/180;
2 of 12
%==========================================================================
%
%
MODE SHAPE ANALYSIS
%
%==========================================================================
%------------------ EigenModes and Eigen Frequencies ---------------------% Note:
%
1 = First Principal Axis (twist + nu);
[nu = st_pitch]
%
2 = Second Principal Axis (twist + nu)
%
y = Y-axis in the rotor plane (untwisted)
%
z = Z-axis in the rotor plane (untwisted)
%==========================================================================
%------------------------- First Eigenmode -------------------------------%==========================================================================
% Note:
% This Eigenmode is called: FIRST FLAPWISE (1f as stated below)
change=1;
tolerance=1e-7;
% - - - Inertial Loads (p_y_star, p_z_star) - - % - - - Guess - - p_1f_y_star(1:length(radius))=1;
p_1f_z_star(1:length(radius))=1;
while change>tolerance
% - - - Shear Forces (Ty_star,Tz_star)- - T_1f_y_star(length(radius))=0;
T_1f_z_star(length(radius))=0;
for i=-length(radius):-2
T_1f_y_star(abs(i)-1)=T_1f_y_star(abs(i)) + 0.5*(p_1f_y_star(abs(i)-1)
+p_1f_y_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1));
T_1f_z_star(abs(i)-1)=T_1f_z_star(abs(i)) + 0.5*(p_1f_z_star(abs(i)-1)
+p_1f_z_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1));
end
% - - - Bending Moment (My_star),(Mz_star)- - % Bending Moment is always with respect an axis
M_1f_y_star(length(radius))=0;
M_1f_z_star(length(radius))=0;
for i=-length(radius):-2
M_1f_y_star(abs(i)-1)=M_1f_y_star(abs(i))-T_1f_z_star(abs(i))*(radius(abs(i)) radius(abs(i)-1))...
- ((1/6)*p_1f_z_star(abs(i)-1) + (1/3)*p_1f_z_star(abs(i)))*...
8/10/09 16:32
3 of 12
(radius(abs(i)) - radius(abs(i)-1))^2;
M_1f_z_star(abs(i)-1)=M_1f_z_star(abs(i))+T_1f_y_star(abs(i))*(radius(abs(i)) radius(abs(i)-1))...
+ ((1/6)*p_1f_y_star(abs(i)-1) + (1/3)*p_1f_y_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1))^2;
end
% - - - Bending Moment (M1_star),(M2_star)- - for i = 1:length(radius)
M1_1f_star(i) = M_1f_y_star(i)*cos(twist(i) + st_pitch(i)) ...
- M_1f_z_star(i)*sin(twist(i) + st_pitch(i));
M2_1f_star(i) = M_1f_y_star(i)*sin(twist(i) + st_pitch(i)) ...
+ M_1f_z_star(i)*cos(twist(i) + st_pitch(i));
end
% - - - Curvatures (kappa1_star),(kappa2_star)- - for i = 1:length(radius)
kappa1_1f_star(i) = M1_1f_star(i)/stiffness_1(i);
kappa2_1f_star(i) = M2_1f_star(i)/stiffness_2(i);
end
% - - - Curvatures (kappay_star),(kappaz_star)- - for i = 1:length(radius)
kappa_1f_y_star(i) = kappa1_1f_star(i)*cos(twist(i) + st_pitch(i))...
+ kappa2_1f_star(i)*sin(twist(i) + st_pitch(i));
kappa_1f_z_star(i) = -kappa1_1f_star(i)*sin(twist(i) + st_pitch(i))...
+ kappa2_1f_star(i)*cos(twist(i) + st_pitch(i));
end
% - - - Angular Deformation (theta_y_star),(theta_z_star) - - theta_1f_y_star(1)=0;
theta_1f_z_star(1)=0;
for i=1:length(radius)-1
theta_1f_y_star(i+1)= theta_1f_y_star(i)+0.5*(kappa_1f_y_star(i+1) +
kappa_1f_y_star(i))...
*(radius(i+1)-radius(i));
theta_1f_z_star(i+1)= theta_1f_z_star(i)+0.5*(kappa_1f_z_star(i+1) +
kappa_1f_z_star(i))...
*(radius(i+1)-radius(i));
end
% - - - Deflection (w_y_star),(w_z_star) - - w_1f_z_star(1)=0;
w_1f_y_star(1)=0;
for i=1:length(radius)-1
w_1f_y_star(i+1)=w_1f_y_star(i) + theta_1f_z_star(i)*(radius(i+1)-radius(i))
+...
((1/6)*kappa_1f_z_star(i+1) + (1/3)*kappa_1f_z_star(i))*...
(radius(i+1)-radius(i))^2;
w_1f_z_star(i+1)=w_1f_z_star(i) - theta_1f_y_star(i)*(radius(i+1)-radius(i)) ...
8/10/09 16:32
4 of 12
((1/6)*kappa_1f_y_star(i+1) + (1/3)*kappa_1f_y_star(i))*...
(radius(i+1)-radius(i))^2;
end
% - - - Estimate Eigenfrequency (EF_1f)- - EF_1f = sqrt(p_1f_z_star(length(radius))/(mass(length(radius))*w_1f_z_star(length
(radius))));
%
EF_1f = sqrt(p_1f_y_star(length(radius))/(mass(length(radius))*w_1f_y_star(length
(radius))));
% - - - Check Change - - % The largest displacement occurs in the Z-axis, therefore the change
% is checked for this axis.
change=max(abs(p_1f_z_new_star - p_1f_z_star));
change=max(abs(p_1f_y_new_star - p_1f_y_star));
figure
plot(radius,w_1f_z_star)
hold all
plot(radius,w_1f_y_star)
plot(radius, zeros(1,length(radius)),'r--', 'LineWidth' ,2)
text(10,0.9,['Freq_{(1st Mode)} = ' num2str(EF_1f/(2*pi)) ' Hz'], 'BackgroundColor' ,[.7
.7 .7])
legend('First Flap_z', 'First Flap_y', 'Undeformed' ,'Location', 'Best')
grid on
xlabel('Radius \it{(m)}' )
%==========================================================================
8/10/09 16:32
5 of 12
8/10/09 16:32
6 of 12
- M_1e_z_star(i)*sin(twist(i) + st_pitch(i));
M2_1e_star(i) = M_1e_y_star(i)*sin(twist(i) + st_pitch(i)) ...
+ M_1e_z_star(i)*cos(twist(i) + st_pitch(i));
end
% - - - Curvatures (kappa1_star),(kappa2_star)- - for i = 1:length(radius)
kappa1_1e_star(i) = M1_1e_star(i)/stiffness_1(i);
kappa2_1e_star(i) = M2_1e_star(i)/stiffness_2(i);
end
% - - - Curvatures (kappay_star),(kappaz_star)- - for i = 1:length(radius)
kappa_1e_y_star(i) = kappa1_1e_star(i)*cos(twist(i) + st_pitch(i))...
+ kappa2_1e_star(i)*sin(twist(i) + st_pitch(i));
kappa_1e_z_star(i) = -kappa1_1e_star(i)*sin(twist(i) + st_pitch(i))...
+ kappa2_1e_star(i)*cos(twist(i) + st_pitch(i));
end
% - - - Angular Deformation (theta_y_star),(theta_z_star) - - theta_1e_y_star(1)=0;
theta_1e_z_star(1)=0;
for i=1:length(radius)-1
theta_1e_y_star(i+1)= theta_1e_y_star(i)+0.5*(kappa_1e_y_star(i+1) +
kappa_1e_y_star(i))...
*(radius(i+1)-radius(i));
theta_1e_z_star(i+1)= theta_1e_z_star(i)+0.5*(kappa_1e_z_star(i+1) +
kappa_1e_z_star(i))...
*(radius(i+1)-radius(i));
end
% - - - Deflection (w_z_star) - - w_z_star(1)=0;
w_y_star(1)=0;
for i=1:length(radius)-1
w_y_star(i+1)=w_y_star(i) + theta_1e_z_star(i)*(radius(i+1)-radius(i)) +...
((1/6)*kappa_1e_z_star(i+1) + (1/3)*kappa_1e_z_star(i))*...
(radius(i+1)-radius(i))^2;
w_z_star(i+1)=w_z_star(i) - theta_1e_y_star(i)*(radius(i+1)-radius(i)) -...
((1/6)*kappa_1e_y_star(i+1) + (1/3)*kappa_1e_y_star(i))*...
(radius(i+1)-radius(i))^2;
end
% - - - Constant (w_z_star) - - a_1e = 0;
for i=1:length(radius)-1
a_1e = a_1e + 0.5*( w_1f_z_star(i)*mass(i)*w_z_star(i) + w_1f_z_star(i+1)*mass
(i+1)*w_z_star(i+1) )*(radius(i+1)-radius(i))+...
0.5*( w_1f_y_star(i)*mass(i)*w_y_star(i) + w_1f_y_star(i+1)*mass(i+1)
*w_y_star(i+1) )*(radius(i+1)-radius(i));
end
8/10/09 16:32
7 of 12
const_1e = a_1e/b_1e;
% - - - Deflection Modified (w_1e_y_star),(w_1e_z_star) - - w_1e_y_star = w_y_star - const_1e*w_1f_y_star;
w_1e_z_star = w_z_star - const_1e*w_1f_z_star;
% - - - Estimate Eigenfrequency (EF_1e)- - EF_1e = sqrt(p_1e_y_star(length(radius))/(mass(length(radius))*w_1e_y_star(length
(radius))));
%
EF_1e = sqrt(p_1e_z_star(length(radius))/(mass(length(radius))*w_1e_z_y_star
(length(radius))));
% - - - Update Inertial Loads - - % - - - Normalize Deflection (Max Deflection = 1) - - w_1e_y_star=w_1e_y_star/sqrt(w_1e_y_star(length(radius))^2 + w_1e_z_star(length
(radius))^2);
w_1e_z_star=w_1e_z_star/sqrt(w_1e_y_star(length(radius))^2 + w_1e_z_star(length
(radius))^2);
for i=1:length(radius)
p_1e_y_new_star(i)=EF_1e^2*mass(i)*w_1e_y_star(i);
p_1e_z_new_star(i)=EF_1e^2*mass(i)*w_1e_z_star(i);
end
% - - - Check Change - - % The largest displacement occurs in the Y-axis, therefore the change
% is checked for this axis.
change=max(abs(p_1e_y_new_star - p_1e_y_star));
change=max(abs(p_1e_z_new_star - p_1e_z_star));
8/10/09 16:32
8 of 12
disp(a_1e)
else
disp('The Orthogonality constrain is not fulfilled' )
end
figure
plot(radius,w_1e_z_star)
hold all
plot(radius,w_1e_y_star)
plot(radius, zeros(1,length(radius)),'r--', 'LineWidth' ,2)
text(10,0.9,['Freq_{(2nd Mode)} = ' num2str(EF_1e/(2*pi)) ' Hz'], 'BackgroundColor' ,[.7
.7 .7])
legend('First Edge_z', 'First Edge_y', 'Undeformed' ,'Location', 'Best')
grid on
xlabel('Radius \it{(m)}' )
%==========================================================================
%------------------------- Third Eigenmode -------------------------------%==========================================================================
% Note:
% This Eigenmode is called: SECOND FLAPWISE (2f as stated below)
change=1;
tolerance=1e-7;
b_2f = 0;
for i=1:length(radius)-1
b_2f = b_2f + 0.5*( w_1e_z_star(i)*mass(i)*w_1e_z_star(i) + w_1e_z_star(i+1)*mass
(i+1)*w_1e_z_star(i+1) )*(radius(i+1)-radius(i))+...
0.5*( w_1e_y_star(i)*mass(i)*w_1e_y_star(i) + w_1e_y_star(i+1)*mass(i+1)
*w_1e_y_star(i+1) )*(radius(i+1)-radius(i));
end
% - - - Inertial Loads (p_y_star, p_z_star) - - % - - - Guess - - p_2f_y_star(1:length(radius))=1;
p_2f_z_star(1:length(radius))=1;
while change>tolerance
% - - - Shear Forces (Ty_star,Tz_star)- - T_2f_y_star(length(radius))=0;
T_2f_z_star(length(radius))=0;
for i=-length(radius):-2
T_2f_y_star(abs(i)-1)=T_2f_y_star(abs(i)) + 0.5*(p_2f_y_star(abs(i)-1)
+p_2f_y_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1));
T_2f_z_star(abs(i)-1)=T_2f_z_star(abs(i)) + 0.5*(p_2f_z_star(abs(i)-1)
+p_2f_z_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1));
end
% - - - Bending Moment (My_star),(Mz_star)- - % Bending Moment is always with respect an axis
M_2f_y_star(length(radius))=0;
M_2f_z_star(length(radius))=0;
8/10/09 16:32
9 of 12
for i=-length(radius):-2
M_2f_y_star(abs(i)-1)=M_2f_y_star(abs(i))-T_2f_z_star(abs(i))*(radius(abs(i)) radius(abs(i)-1))...
- ((1/6)*p_2f_z_star(abs(i)-1) + (1/3)*p_2f_z_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1))^2;
M_2f_z_star(abs(i)-1)=M_2f_z_star(abs(i))+T_2f_y_star(abs(i))*(radius(abs(i)) radius(abs(i)-1))...
+ ((1/6)*p_2f_y_star(abs(i)-1) + (1/3)*p_2f_y_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1))^2;
end
% - - - Bending Moment (M1_star),(M2_star)- - for i = 1:length(radius)
M1_2f_star(i) = M_2f_y_star(i)*cos(twist(i) + st_pitch(i)) ...
- M_2f_z_star(i)*sin(twist(i) + st_pitch(i));
M2_2f_star(i) = M_2f_y_star(i)*sin(twist(i) + st_pitch(i)) ...
+ M_2f_z_star(i)*cos(twist(i) + st_pitch(i));
end
% - - - Curvatures (kappa1_star),(kappa2_star)- - for i = 1:length(radius)
kappa1_2f_star(i) = M1_2f_star(i)/stiffness_1(i);
kappa2_2f_star(i) = M2_2f_star(i)/stiffness_2(i);
end
% - - - Curvatures (kappay_star),(kappaz_star)- - for i = 1:length(radius)
kappa_2f_y_star(i) = kappa1_2f_star(i)*cos(twist(i) + st_pitch(i))...
+ kappa2_2f_star(i)*sin(twist(i) + st_pitch(i));
kappa_2f_z_star(i) = -kappa1_2f_star(i)*sin(twist(i) + st_pitch(i))...
+ kappa2_2f_star(i)*cos(twist(i) + st_pitch(i));
end
% - - - Angular Deformation (theta_y_star),(theta_z_star) - - theta_2f_y_star(1)=0;
theta_2f_z_star(1)=0;
for i=1:length(radius)-1
theta_2f_y_star(i+1)= theta_2f_y_star(i)+0.5*(kappa_2f_y_star(i+1) +
kappa_2f_y_star(i))...
*(radius(i+1)-radius(i));
theta_2f_z_star(i+1)= theta_2f_z_star(i)+0.5*(kappa_2f_z_star(i+1) +
kappa_2f_z_star(i))...
*(radius(i+1)-radius(i));
end
% - - - Deflection (w_z_star) - - w_old_z_star(1)=0;
w_old_y_star(1)=0;
for i=1:length(radius)-1
w_old_y_star(i+1)=w_old_y_star(i) + theta_2f_z_star(i)*(radius(i+1)-radius(i))
+...
8/10/09 16:32
10 of 12
((1/6)*kappa_2f_z_star(i+1) + (1/3)*kappa_2f_z_star(i))*...
(radius(i+1)-radius(i))^2;
w_old_z_star(i+1)=w_old_z_star(i) - theta_2f_y_star(i)*(radius(i+1)-radius(i))
-...
((1/6)*kappa_2f_y_star(i+1) + (1/3)*kappa_2f_y_star(i))*...
(radius(i+1)-radius(i))^2;
end
a_1e = 0;
for i=1:length(radius)-1
a_1e = a_1e + 0.5*( w_1f_z_star(i)*mass(i)*w_old_z_star(i) + w_1f_z_star(i+1)
*mass(i+1)*w_old_z_star(i+1) )*(radius(i+1)-radius(i))+...
0.5*( w_1f_y_star(i)*mass(i)*w_old_y_star(i) + w_1f_y_star(i+1)*mass(i+1)
*w_old_y_star(i+1) )*(radius(i+1)-radius(i));
end
const_1e = a_1e/b_1e;
% - - - Deflection Modified (w_1e_y_star),(w_1e_z_star) - - w_new_y_star = w_old_y_star - const_1e*w_1f_y_star;
w_new_z_star = w_old_z_star - const_1e*w_1f_z_star;
% - - - Constant (w_z_star) - - a_2f = 0;
for i=1:length(radius)-1
a_2f = a_2f + 0.5*( w_1e_z_star(i)*mass(i)*w_new_z_star(i) + w_1e_z_star(i+1)
*mass(i+1)*w_new_z_star(i+1) )*(radius(i+1)-radius(i))+...
0.5*( w_1e_y_star(i)*mass(i)*w_new_y_star(i) + w_1e_y_star(i+1)*mass(i+1)
*w_new_y_star(i+1) )*(radius(i+1)-radius(i));
end
const_2f = a_2f/b_2f;
%
%
8/10/09 16:32
11 of 12
for i=1:length(radius)
p_2f_y_new_star(i)=EF_2f^2*mass(i)*w_2f_y_star(i);
p_2f_z_new_star(i)=EF_2f^2*mass(i)*w_2f_z_star(i);
end
% - - - Check Change - - % The largest displacement occurs in the Z-axis, therefore the change
% is checked for this axis.
change=max(abs(p_2f_y_new_star - p_2f_y_star));
change=max(abs(p_2f_z_new_star - p_2f_z_star));
8/10/09 16:32
12 of 12
8/10/09 16:33
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - clear all
close all
clc
%==========================================================================
%
%
SETTINGS
%
%==========================================================================
%------ GRAPHICS -----set(0,'DefaultAxesFontName', 'Times')
set(0,'DefaultAxesFontAngle', 'Normal' )
set(0,'DefaultAxesFontSize',12)
set(0,'DefaultTextFontName', 'Times')
set(0,'DefaultTextFontAngle', 'Normal' )
set(0,'DefaultTextFontSize',12)
disp('-----------------------------------------------------')
disp('TOWER MODE SHAPES' )
%==========================================================================
%
%
STRUCTURAL DATA
%
%==========================================================================
Structural_Data_w_zero_section % It contains the structural data for the W.T.
%-------------------------------------------------------------------------%
Tower Properties
%-------------------------------------------------------------------------radius= TOWER(:,1);
stiffness = E_tower*TOWER(:,3); % Note that the tower is circular, so Ix = Iy.
mass = TOWER(:,2);
1 of 4
8/10/09 16:33
2 of 4
twist = 0;
%==========================================================================
%
%
MODE SHAPE ANALYSIS
%
%==========================================================================
%------------------ EigenModes and Eigen Frequencies ---------------------% Note:
%
The tower is circular which means: Axis_1 = Axis_2 = Y_axis = Z_axis
%==========================================================================
%----------------------------- First Eigenmode ---------------------------%==========================================================================
% Note:
% This Eigenmode is called: FIRST TOWER MODE (1m).
change=1;
tolerance=1e-7;
% - - - Inertial Loads (p_z_star) - - % - - - Guess - - p_1m_z_star(1:length(radius))=1;
while change>tolerance
% - - - Shear Forces (Tz_star)- - T_1m_z_star(length(radius))=0;
for i=-length(radius):-2
T_1m_z_star(abs(i)-1)=T_1m_z_star(abs(i)) + 0.5*(p_1m_z_star(abs(i)-1)
+p_1m_z_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1));
end
% - - - Bending Moment (My_star)- - % Bending Moment is always with respect an axis
M_1m_y_star(length(radius))=0;
for i=-length(radius):-2
M_1m_y_star(abs(i)-1)=M_1m_y_star(abs(i))+T_1m_z_star(abs(i))*(radius(abs(i)) radius(abs(i)-1))...
+ ((1/6)*p_1m_z_star(abs(i)-1) + (1/3)*p_1m_z_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1))^2;
end
% - - - Bending Moment (M_1m_star)- - M_1m_star = M_1m_y_star;
% - - - Curvatures (kappa_1m_star)- - for i = 1:length(radius)
kappa_1m_star(i) = M_1m_star(i)/stiffness(i);
end
% - - - Curvatures (kappa_1m_z_star)- - -
8/10/09 16:33
3 of 4
kappa_1m_z_star = kappa_1m_star;
% - - - Angular Deformation (theta_1m_z_star) - - theta_1m_z_star(1)=0;
for i=1:length(radius)-1
theta_1m_z_star(i+1)= theta_1m_z_star(i)+0.5*(kappa_1m_z_star(i+1) +
kappa_1m_z_star(i))...
*(radius(i+1)-radius(i));
end
% - - - Deflection (w_1m_star) - - w_1m_star(1)=0;
for i=1:length(radius)-1
w_1m_star(i+1)=w_1m_star(i) + theta_1m_z_star(i)*(radius(i+1)-radius(i)) +...
((1/6)*kappa_1m_z_star(i+1) + (1/3)*kappa_1m_z_star(i))*...
(radius(i+1)-radius(i))^2;
end
% - - - Estimate Eigenfrequency (EF_1f)- - EF_1m = sqrt(p_1m_z_star(length(radius))/(mass(length(radius))*w_1m_star(length
(radius))));
8/10/09 16:33
4 of 4
end
theta_1m_star = theta_1m_z_star;
break
end
end
figure
plot(radius,w_1m_star,'-o')
hold all
plot(radius, zeros(1,length(radius)),'k--', 'LineWidth' ,2)
text(0.3,0.9,['Freq_{(1st Mode)} = ' num2str(EF_1m/(2*pi)) ' Hz' ], 'BackgroundColor' ,[.7
.7 .7])
legend('First Tower Mode','Undeformed' , 'Location' ,'Best')
axis([0 radius(end) 0 1])
grid on
%==========================================================================
%----------------------------- FINAL OUTPUTS -----------------------------%==========================================================================
%------ OUTPUT EIGENFREQUENCIES -----disp('TOWER NATURAL FREQUENCY' )
disp(['First Flapwise or Mode 1 = ' num2str(EF_1m/(2*pi))])
disp(['Angular deformation at the Tower Top: ' num2str(theta_1m_star(end)) ' rad.'])
%------ SAVING MODE SHAPES -----save modes_shapes_TOWER w_1m_star theta_1m_z_star EF_1m
8/10/09 16:35
%
Engineering, Technical University of Denmark DTU.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [GM11_tower,GM11_blade,GM11_nacelle,...
GM22_tower,GM22_blade,GM22_nacelle,...
GM21_blade,GM31,GM41,GM51,GM32,GM42,GM52,GM33,GM44,GM55,...
u_1flap_pitch,u_1edge_pitch,u_2flap_pitch]=GM_terms_tot(time,t,t_change,...
globalpitch,Gpitch,M_nacelle,hub,shaft,...
u_1tm,theta_1tm_star_y,theta_1tm_star_z,mass_tower,r_tower,...
modes_blades,mass,r,...
theta_cone,theta_yaw,theta_tilt,theta_wing_blades,nB,...
GM11_tower,GM11_blade,GM11_nacelle,GM21_blade,GM31,GM41,GM51,...
GM22_tower,GM22_blade,GM22_nacelle,GM32,GM42,GM52,...
GM33,GM44,GM55,u_1flap_pitch,u_1edge_pitch,u_2flap_pitch)
%-------------------------------------------------------------------------% t_change = time vector when pitch changes
if t_change == 0 && t == 1
Gpitch = globalpitch;
Gpitch= Gpitch * pi/180;
% -------- Calling the generalized_mass_terms Function -----------% This function calculates generalized mass terms per every
% section providing as outputs generalized mass vectors: gm11,
% gm31, gm41...; as well as mode shapes vectors "pitched" or
% referred to the rotor plane system.
% Note that this vectors will only change according to changes
% in global pitch.
[gm11_tower,gm11_blade,GM11_nacelle,gm21_blade,gm31,gm41,gm51, ...
gm22_tower,gm22_blade,GM22_nacelle,gm32,gm42,gm52, ...
1 of 3
8/10/09 16:35
gm33,gm44,gm55,...
u_1flap_pitch, u_1edge_pitch,u_2flap_pitch]=...
generalized_mass_terms(Gpitch,M_nacelle,hub,shaft, ...
u_1tm,theta_1tm_star_y,theta_1tm_star_z,mass_tower,r_tower,...
modes_blades,mass,r,...
theta_cone,theta_yaw,theta_tilt,theta_wing_blades,nB);
% --------- Calling the integrate_over_blade Function ------------% This function simply calculates the numerical integration
% along the length of the blade by using the mid-point-rule.
% Therefore, the terms GM31, GM41, ..., are scalars that will
% change if the global pitch changes so gm31, gm41..., change.
GM11_tower = integrate_mid_point_rule(gm11_tower,r_tower);
GM11_blade = integrate_mid_point_rule(gm11_blade,r);
GM21_blade = integrate_mid_point_rule(gm21_blade,r);
GM31 = integrate_mid_point_rule(gm31,r);
GM41 = integrate_mid_point_rule(gm41,r);
GM51 = integrate_mid_point_rule(gm51,r);
GM22_tower = integrate_mid_point_rule(gm22_tower,r_tower);
GM22_blade = integrate_mid_point_rule(gm22_blade,r);
GM32 = integrate_mid_point_rule(gm32,r);
GM42 = integrate_mid_point_rule(gm42,r);
GM52 = integrate_mid_point_rule(gm52,r);
GM33 = integrate_mid_point_rule(gm33,r);
GM44 = integrate_mid_point_rule(gm44,r);
GM55 = integrate_mid_point_rule(gm55,r);
elseif t_change ~= 0
for j=1:length(t_change)
if time(t) == 0
Gpitch = globalpitch(1);
Gpitch= Gpitch * pi/180;
% ------ Calling the generalized_mass_terms Function -----[gm11_tower,gm11_blade,GM11_nacelle,gm21_blade,gm31,gm41,gm51,...
gm22_tower,gm22_blade,GM22_nacelle,gm32,gm42,gm52, ...
gm33,gm44,gm55,...
u_1flap_pitch, u_1edge_pitch,u_2flap_pitch]=...
generalized_mass_terms(Gpitch,M_nacelle,hub,shaft, ...
u_1tm,theta_1tm_star_y,theta_1tm_star_z,mass_tower,r_tower,...
modes_blades,mass,r,...
theta_cone,theta_yaw,theta_tilt,theta_wing_blades,nB);
% ------- Calling the integrate_over_blade Function ------GM11_tower = integrate_mid_point_rule(gm11_tower,r_tower);
GM11_blade = integrate_mid_point_rule(gm11_blade,r);
GM21_blade = integrate_mid_point_rule(gm21_blade,r);
GM31 = integrate_mid_point_rule(gm31,r);
GM41 = integrate_mid_point_rule(gm41,r);
GM51 = integrate_mid_point_rule(gm51,r);
GM22_tower = integrate_mid_point_rule(gm22_tower,r_tower);
GM22_blade = integrate_mid_point_rule(gm22_blade,r);
GM32 = integrate_mid_point_rule(gm32,r);
GM42 = integrate_mid_point_rule(gm42,r);
GM52 = integrate_mid_point_rule(gm52,r);
GM33 = integrate_mid_point_rule(gm33,r);
GM44 = integrate_mid_point_rule(gm44,r);
2 of 3
8/10/09 16:35
GM55 = integrate_mid_point_rule(gm55,r);
break
elseif time(t) == t_change(j)
Gpitch = globalpitch(j+1);
Gpitch = Gpitch * pi/180;
% ------ Calling the generalized_mass_terms Function -----[gm11_tower,gm11_blade,GM11_nacelle,gm21_blade,gm31,gm41,gm51,...
gm22_tower,gm22_blade,GM22_nacelle,gm32,gm42,gm52, ...
gm33,gm44,gm55,...
u_1flap_pitch, u_1edge_pitch,u_2flap_pitch]=...
generalized_mass_terms(Gpitch,M_nacelle,hub,shaft, ...
u_1tm,theta_1tm_star_y,theta_1tm_star_z,mass_tower,r_tower,...
modes_blades,mass,r,...
theta_cone,theta_yaw,theta_tilt,theta_wing_blades,nB);
% ------- Calling the integrate_over_blade Function ------GM11_tower = integrate_mid_point_rule(gm11_tower,r_tower);
GM11_blade = integrate_mid_point_rule(gm11_blade,r);
GM21_blade = integrate_mid_point_rule(gm21_blade,r);
GM31 = integrate_mid_point_rule(gm31,r);
GM41 = integrate_mid_point_rule(gm41,r);
GM51 = integrate_mid_point_rule(gm51,r);
GM22_tower = integrate_mid_point_rule(gm22_tower,r_tower);
GM22_blade = integrate_mid_point_rule(gm22_blade,r);
GM32 = integrate_mid_point_rule(gm32,r);
GM42 = integrate_mid_point_rule(gm42,r);
GM52 = integrate_mid_point_rule(gm52,r);
GM33 = integrate_mid_point_rule(gm33,r);
GM44 = integrate_mid_point_rule(gm44,r);
GM55 = integrate_mid_point_rule(gm55,r);
end
end
else
GM11_tower = GM11_tower;
GM11_blade = GM11_blade;
GM11_nacelle = GM11_nacelle;
GM21_blade = GM21_blade;
GM31 = GM31;
GM41 = GM41;
GM51 = GM51;
GM22_tower = GM22_tower;
GM22_blade = GM22_blade;
GM22_nacelle = GM22_nacelle;
GM32 = GM32;
GM42 = GM42;
GM52 = GM52;
GM33 = GM33;
GM44 = GM44;
GM55 = GM55;
u_1flap_pitch = u_1flap_pitch;
u_1edge_pitch = u_1edge_pitch;
u_2flap_pitch = u_2flap_pitch;
end
3 of 3
8/10/09 16:36
%
Engineering, Technical University of Denmark DTU.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [gm11_tower,gm11_blade,GM11_nacelle,gm21_blade,gm31,gm41,gm51,...
gm22_tower,gm22_blade,GM22_nacelle,gm32,gm42,gm52,...
gm33,gm44,gm55,...
u_1flap_pitch, u_1edge_pitch,u_2flap_pitch]=...
generalized_mass_terms(Gpitch,M_nacelle,hub,shaft,...
u_1tm,theta_1tm_star_y,theta_1tm_star_z,mass_tower,r_tower,...
modes_blades,mass,r,...
theta_cone,theta_yaw,theta_tilt,theta_wing_blades,nB);
%-------------------------------------------------------------------------%==========================================================================
%
%
INPUTS
%
%==========================================================================
%-------------------------------------------------------------------------%
Transformation Matrices
%-------------------------------------------------------------------------%
-------From Coordinate System 3 to Coordinate System 4------a34=[cos(theta_cone) 0 -sin(theta_cone);...
0 1 0;...
sin(theta_cone) 0 cos(theta_cone)];
1 of 5
8/10/09 16:36
%
-------From Coordinate System 1 to Coordinate System 2------a1 =[1 0 0;...
0 cos(theta_yaw) sin(theta_yaw);...
0 -sin(theta_yaw) cos(theta_yaw)];
a2 =[cos(theta_tilt) 0 -sin(theta_tilt);...
0 1 0;...
sin(theta_tilt) 0 cos(theta_tilt)];
a3 =[1 0 0;...
0 1 0;...
0 0 1];
a12 = a3*a2*a1;
for b=1:nB
%
-------From Coordinate System 2 to Coordinate System 3------a23=[cos(theta_wing_blades(b)) sin(theta_wing_blades(b)) 0;...
-sin(theta_wing_blades(b)) cos(theta_wing_blades(b)) 0;...
0 0 1];
%
-------From Coordinate System 1 to Coordinate System 4------a14 = a34*a23*a12;
%---------------------------------------------------------------------%
"Pitched" Blade Mode Shapes
%---------------------------------------------------------------------for i=1:length(r)
% Correcting Mode Shapes from Pitched Blade to Rotor Plane
% ...First Flapwise...
% y_component
u_1flap_pitch(i,1) = modes_blades(i,3,1)*sin(Gpitch)...
+ modes_blades(i,2,1)*cos(Gpitch);
% z_component
u_1flap_pitch(i,2) = modes_blades(i,3,1)*cos(Gpitch)...
- modes_blades(i,2,1)*sin(Gpitch);
% ...First Edgewise...
% y_component
u_1edge_pitch(i,1) = modes_blades(i,3,2)*sin(Gpitch)...
+ modes_blades(i,2,2)*cos(Gpitch);
% z_component
u_1edge_pitch(i,2) = modes_blades(i,3,2)*cos(Gpitch)...
- modes_blades(i,2,2)*sin(Gpitch);
% ...Second Flapwise...
% y_component
u_2flap_pitch(i,1) = modes_blades(i,3,3)*sin(Gpitch)...
+ modes_blades(i,2,3)*cos(Gpitch);
% z_component
u_2flap_pitch(i,2) = modes_blades(i,3,3)*cos(Gpitch)...
- modes_blades(i,2,3)*sin(Gpitch);
end
%======================================================================
%
2 of 5
8/10/09 16:36
%
GENERALIZED MASS TERMS
%
%======================================================================
% Note:
% It is assumed unit displacements and accelerations to obtain the
% generalized mass terms.
%---------------------------------------------------------------------%
First Column
%---------------------------------------------------------------------%
........................
%-----------------------gm11,gm21,gm31,gm41,gm51----------------------%
........................
for j=1:length(r_tower)
%---------------------------gm11_tower----------------------------gm11_tower(j) = u_1tm(j)*mass_tower(j)*u_1tm(j);
end
for i=1:length(r)
%-----------------------gm11_blade--------------------------------% Inertial_Force_blade: Note that is referred to the nacelle
% coordinate system, i.e. system 2.
% Therefore, it is necessary transformation of coordinates
% systems.
blade_section = [r(i);0;0];
a24 = a34*a23; % From system 2 to system 4.
blade_position = shaft + a24'*blade_section; % In system 2.
gm11_inertial_force_blade = mass(i)*...
[-blade_position(2)*theta_1tm_star_z(end);...
blade_position(1)*theta_1tm_star_z(end) + 1;...
0];
u_blade_gm11 = [-blade_position(2)*theta_1tm_star_z(end);...
blade_position(1)*theta_1tm_star_z(end) + 1;...
0];
gm11_blade(i,b)=gm11_inertial_force_blade(1)*u_blade_gm11(1)+...
gm11_inertial_force_blade(2)*u_blade_gm11(2);
%-----------------------gm21_blade--------------------------------% Inertial_Force_blade: Note that is referred to the nacelle
% coordinate system, i.e. system 2.
% Therefore, it is necessary transformation of coordinates
% systems, but it is the same as before.
gm21_inertial_force_blade = gm11_inertial_force_blade;
u_blade_gm21 = [blade_position(3)*theta_1tm_star_y(end);...
0;...
-blade_position(1)*theta_1tm_star_y(end) + 1];
gm21_blade(i,b)=gm21_inertial_force_blade(1).*u_blade_gm21(1);
%---------------------gm31,gm41,gm51------------------------------% Inertial_Force_blade: Note that is referred to the nacelle
% coordinate system. i.e. system 2.
% Therefore, it is necessary transformation of coordinates
% systems. From system 2 to system 4.
% ...First Flapwise...
gm31_inertial_force_blade = a24*gm11_inertial_force_blade;
3 of 5
8/10/09 16:36
% ...First Edgewise...
gm41_inertial_force_blade = gm31_inertial_force_blade;
gm41(i,b) = gm41_inertial_force_blade(2)*u_1edge_pitch(i,1) + ...
gm41_inertial_force_blade(3)*u_1edge_pitch(i,2);
% ...Second Flapwise...
gm51_inertial_force_blade = gm31_inertial_force_blade;
gm51(i,b) = gm51_inertial_force_blade(2)*u_2flap_pitch(i,1) + ...
gm51_inertial_force_blade(3)*u_2flap_pitch(i,2);
end
GM11_nacelle = M_nacelle;
%---------------------------------------------------------------------%
Second Column
%---------------------------------------------------------------------%
...................
%--------------------------gm22,gm32,gm42,gm52--------------------------%
...................
%
% Note: gm11_tower = gm22_tower. Since the tower is circular.
gm22_tower = gm11_tower;
for i=1:length(r)
%-----------------------gm22_blade--------------------------------% Inertial_Force_blade: Note that it is referred to the nacelle
% coordinate system; therefore, it is necessary a transformation of
% coordinates systems:
blade_section = [r(i);0;0];
a24 = a34*a23; % From system 2 to system 4.
blade_position = shaft + a24'*blade_section; % In system 2.
gm22_inertial_force_blade = mass(i)*...
[blade_position(3)*theta_1tm_star_y(end);...
0;...
-blade_position(1)*theta_1tm_star_y(end)+1];
u_blade_gm22 = [blade_position(3)*theta_1tm_star_y(end);...
0;...
-blade_position(1)*theta_1tm_star_y(end)+1];
gm22_blade(i,b)=gm22_inertial_force_blade(1)*u_blade_gm22(1)+...
gm22_inertial_force_blade(3)*u_blade_gm22(3);
%-----------------------gm32,gm42,gm52----------------------------% Inertial_Force_blade1_4: Note that it is referred to the tower
% coordinate system. It is necessary transformation of coordinates
% systems, from 1 to 4.
% ...First Flapwise...
gm32_inertial_force_blade = a24*gm22_inertial_force_blade;
gm32(i,b) = gm32_inertial_force_blade(2)*u_1flap_pitch(i,1) + ...
gm32_inertial_force_blade(3)*u_1flap_pitch(i,2);
4 of 5
8/10/09 16:36
% ...First Edgewise...
gm42_inertial_force_blade = gm32_inertial_force_blade;
gm42(i,b) = gm42_inertial_force_blade(2)*u_1edge_pitch(i,1) + ...
gm42_inertial_force_blade(3)*u_1edge_pitch(i,2);
% ...Second Flapwise...
gm52_inertial_force_blade = gm32_inertial_force_blade;
gm52(i,b) = gm52_inertial_force_blade(2)*u_2flap_pitch(i,1) + ...
gm52_inertial_force_blade(3)*u_2flap_pitch(i,2);
end
GM22_nacelle = M_nacelle;
%---------------------------------------------------------------------%
Diagonal
%---------------------------------------------------------------------%
..............
%-----------------------------gm33,gm44,gm55--------------------------%
..............
for i=1:length(r)
% ...First Flapwise...
gm33(i) = u_1flap_pitch(i,1)*mass(i)*u_1flap_pitch(i,1) + ...
u_1flap_pitch(i,2)*mass(i)*u_1flap_pitch(i,2);
% ...First Edgewise...
gm44(i) = u_1edge_pitch(i,1)*mass(i)*u_1edge_pitch(i,1) + ...
u_1edge_pitch(i,2)*mass(i)*u_1edge_pitch(i,2);
% ...Second Flapwise...
gm55(i) = u_2flap_pitch(i,1)*mass(i)*u_2flap_pitch(i,1) + ...
u_2flap_pitch(i,2)*mass(i)*u_2flap_pitch(i,2);
end
end
5 of 5
9/10/09 11:56
- - - - - - - - - -
numerical
multiplies by the
- - - - - - - - - -
1 of 1
8/10/09 16:42
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [F_tower]=...
tower_aero_calc(t,density,g,r_tower,mass_tower,...
V0,wind_shear,...
hub,a_hub,a_change,a_bottom,...
transition_height,...
SB_Tower_vel_L,SB_Tower_acc_L,...
SB_Tower_vel_T,SB_Tower_acc_T,...
SB_Tower_vel_V,SB_Tower_acc_V,...
Velocity,u_1tm)
%-------------------------------------------------------------------------F_tower = zeros(length(r_tower),3);
Vrel_tower=zeros(2,length(r_tower));
%----------------------Tower Section Loop
--------------------for i=1:length(r_tower)
%-------------------------------------------------------------% 1. Calculate Wind Speed seen by the Tower.
%
(Including wind shear)
%-------------------------------------------------------------position_tower = r_tower(i);
%
Taking into account wind shear.
V0y_shear = V0(1)*(position_tower/hub(1))^wind_shear;
V0z_shear = V0(2)*(position_tower/hub(1))^wind_shear;
% Taking y and z component and calculate the modulus
Vwind_tower = [V0y_shear; V0z_shear];
1 of 3
8/10/09 16:42
2 of 3
8/10/09 16:42
Faero_tower = [0;Fd_tower_y;Fd_tower_z];
%
%
%
end %-------------------
------------------
3 of 3
8/10/09 16:40
1 of 1
8/10/09 16:43
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [Fn,Ft,M_tot,THRUST,THRUST_2,M_flap_total,M_edge_total,a34,a12]=...
blade_aero_calc...
(t,nB,g,density,data_blade,r,mass,chord,thickness,...
theta,theta_yaw,theta_tilt,theta_cone,theta_wing_blades,...
V0,wind_shear,...
hub,shaft,a_hub,a_change,a_bottom,...
transition_height,height_cone,tower_flag,...
SB_Blade_vel_L,SB_Blade_acc_L,...
SB_Blade_vel_T,SB_Blade_acc_T,...
SB_Blade_vel_V,SB_Blade_acc_V,...
theta_1tm_star_y,theta_1tm_star_z,...
Velocity,u_1flap_pitch,u_1edge_pitch,u_2flap_pitch)
%-------------------------------------------------------------------------%-------------------------------------------------------------------------% INITIALIZING VARIABLES
%-------------------------------------------------------------------------Vrel = zeros(2,length(r),nB);
cn = zeros(length(r),nB);
ct = zeros(length(r),nB);
Fn = zeros(length(r),nB);
Ft = zeros(length(r),nB);
thrust = zeros(length(r),nB);
count = 0; % To track each blade in the SB vel and acceleration.
%-------------------------------------------------------------------------% CALCULATION OF FORCES ON THE BLADES
%--------------------------------------------------------------------------
1 of 6
8/10/09 16:43
Blade Loop
-----------------------
2 of 6
8/10/09 16:43
3 of 6
8/10/09 16:43
%
%
%
%
------------------
4 of 6
8/10/09 16:43
Fn(length(r),b)=0;
Ft(length(r),b)=0;
thrust(length(r),b)=0;
%-------------------------------------------------------------% 15. Count for SB velocities and accelerations
%-------------------------------------------------------------count = count + (length(r));
end
%-------------------------
-----------------------
% Vrel_blade1 = Vrel(:,end,1);
5 of 6
8/10/09 16:43
-----------------
%---------------------------------------------------------% D) Torque and Thrust for all sections at each time step
%
T_tot and M_tot
%---------------------------------------------------------% Each Blade
M_tot(b)=sum(M_sec(:,b));
T_tot(b)=sum(T_sec(:,b));
%--------------------------------------% E) Total Flap and Edgewise Moments
%--------------------------------------M_flap_total(b) = sum(M_flap(:,b));
M_edge_total(b) = sum(M_edge(:,b));
end %----------------------
-----------------------
6 of 6
8/10/09 16:44
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [velocity_4 a34 a23 a12 a14 a24 blade_pos_2] = ...
wind_speed(theta_yaw,theta_tilt,theta_cone,theta_wing, ...
V0,wind_shear,hub,shaft,section,...
a_hub,a_change,a_bottom,transition_height,height_cone,tower_flag);
%-------------------------------------------------------------------------%==========================================================================
%
%
INPUTS
%
%==========================================================================
%-------------------------------------------------------------------------%
Transformation Matrices
%-------------------------------------------------------------------------%
-------From Coordinate System 1 to Coordinate System 2------%To go from coordinate system 1 to coordinate system 2 we have two
%rotations. One is about the first x axis (yaw) and the second is about the
%first y axis (tilt). For this we must create a transformation matrix.
a1=[1 0 0;...
0 cos(theta_yaw) sin(theta_yaw);...
0 -sin(theta_yaw) cos(theta_yaw)];
a2=[cos(theta_tilt) 0 -sin(theta_tilt);...
1 of 4
8/10/09 16:44
0 1 0;...
sin(theta_tilt) 0 cos(theta_tilt)];
a3=[1 0 0;...
0 1 0;...
0 0 1];
a12=a3*a2*a1;
%
-------From Coordinate System 2 to Coordinate System 3------a23=[cos(theta_wing) sin(theta_wing) 0;...
-sin(theta_wing) cos(theta_wing) 0;...
0 0 1];
%
-------From Coordinate System 3 to Coordinate System 4------a34=[cos(theta_cone) 0 -sin(theta_cone);...
0 1 0;...
sin(theta_cone) 0 cos(theta_cone)];
%
-------From Coordinate System 1 to Coordinate System 4------a14=a34*a23*a12;
%
-------From Coordinate System 2 to Coordinate System 4------a24=a34*a23;
%-------------------------------------------------------------------------%
Blade Position
%-------------------------------------------------------------------------% The section on the blade seen by System 1.
position = hub + a12'*shaft + a14'*section;
%==========================================================================
%
%
WIND VELOCITY SEEN BY THE BLADES
%
%==========================================================================
%-------------------------------------------------------------------------%
1.- Calculate velocity in System 1, taking into account wind shear.
%-------------------------------------------------------------------------V0y_notower=V0(1)*(position(1)/hub(1))^wind_shear;
V0z_notower=V0(2)*(position(1)/hub(1))^wind_shear;
%-------------------------------------------------------------------------%
2.- Calculate velocity in System 1, taking into account tower effect.
%-------------------------------------------------------------------------if tower_flag == 1
if position(1)<= hub(1) && position(1)>=transition_height
r = sqrt(position(2)^2 + position(3)^2);
cos_theta = position(3)/r;
sin_theta = -position(2)/r;
slope = (a_change - a_hub)/(hub(1)-transition_height);
a = (hub(1) - position(1))*slope + a_hub;
Vr = V0z_notower*(1 - (a/r)^2)*cos_theta + ...
V0y_notower*(1 - (a/r)^2)*sin_theta;
Vtheta = -V0z_notower*(1 + (a/r)^2)*sin_theta + ...
2 of 4
8/10/09 16:44
-V0y_notower*(1 + (a/r)^2)*cos_theta;
Vy = -Vr*sin_theta - Vtheta*cos_theta;
Vz = Vr*cos_theta - Vtheta*sin_theta;
velocity_1=[0;Vy;Vz];
elseif position(1)<=transition_height
r = sqrt(position(2)^2 + position(3)^2);
cos_theta = position(3)/r;
sin_theta = -position(2)/r;
slope = (a_bottom - a_change)/transition_height;
a = (transition_height - position(1))*slope + a_change;
Vr = V0z_notower*(1 - (a/r)^2)*cos_theta + ...
V0y_notower*(1 - (a/r)^2)*sin_theta;
Vtheta = -V0z_notower*(1 + (a/r)^2)*sin_theta + ...
-V0y_notower*(1 + (a/r)^2)*cos_theta;
Vy = -Vr*sin_theta - Vtheta*cos_theta;
Vz = Vr*cos_theta - Vtheta*sin_theta;
velocity_1=[0;Vy;Vz];
elseif position(1) <= (hub(1) + height_cone) && position(1) > hub(1)
r = sqrt(position(2)^2 + position(3)^2);
cos_theta = position(3)/r;
sin_theta = -position(2)/r;
slope = (a_hub)/(height_cone);
a = (hub(1) + height_cone - position(1))*slope;
Vr = V0z_notower*(1 - (a/r)^2)*cos_theta+ ...
V0y_notower*(1 - (a/r)^2)*sin_theta;
Vtheta = -V0z_notower*(1 + (a/r)^2)*sin_theta + ...
-V0y_notower*(1 + (a/r)^2)*cos_theta;
Vy = -Vr*sin_theta - Vtheta*cos_theta;
Vz = Vr*cos_theta - Vtheta*sin_theta;
velocity_1=[0;Vy;Vz];
else
velocity_1=[0;V0y_notower;V0z_notower];
end
else
velocity_1=[0;V0y_notower;V0z_notower];
end
%-------------------------------------------------------------------------%
3.- Transform to System 4
%-------------------------------------------------------------------------velocity_4 = a34*a23*a12*velocity_1;
3 of 4
8/10/09 16:44
%-------------------------------------------------------------------------%
4.- Blade position in System 2.
%-------------------------------------------------------------------------blade_pos_2 = shaft + a24'*section;
4 of 4
8/10/09 16:46
1 of 2
8/10/09 16:46
cl = interp1q([18;24],[cl_18;cl_24],thickness_section);
cd = interp1q([18;24],[cd_18;cd_24],thickness_section);
elseif thickness_section >= 24 && thickness_section < 30
cl_24 = interp1q(data_blade{3}(:,1),data_blade{3}(:,2),alpha);
cd_24 = interp1q(data_blade{3}(:,1),data_blade{3}(:,3),alpha);
cl_30 = interp1q(data_blade{4}(:,1),data_blade{4}(:,2),alpha);
cd_30 = interp1q(data_blade{4}(:,1),data_blade{4}(:,3),alpha);
cl = interp1q([24;30],[cl_24;cl_30],thickness_section);
cd = interp1q([24;30],[cd_24;cd_30],thickness_section);
elseif thickness_section >= 30 && thickness_section < 51
cl_30 = interp1q(data_blade{4}(:,1),data_blade{4}(:,2),alpha);
cd_30 = interp1q(data_blade{4}(:,1),data_blade{4}(:,3),alpha);
cl_51 = interp1q(data_blade{5}(:,1),data_blade{5}(:,2),alpha);
cd_51 = interp1q(data_blade{5}(:,1),data_blade{5}(:,3),alpha);
cl = interp1q([30;51],[cl_30;cl_51],thickness_section);
cd = interp1q([30;51],[cd_30;cd_51],thickness_section);
elseif thickness_section >= 51 && thickness_section < 100
cl_51 = interp1q(data_blade{5}(:,1),data_blade{5}(:,2),alpha);
cd_51 = interp1q(data_blade{5}(:,1),data_blade{5}(:,3),alpha);
cl_100 = interp1q(data_blade{6}(:,1),data_blade{6}(:,2),alpha);
cd_100 = interp1q(data_blade{6}(:,1),data_blade{6}(:,3),alpha);
cl = interp1q([51;100],[cl_51;cl_100],thickness_section);
cd = interp1q([51;100],[cd_51;cd_100],thickness_section);
else
cl = interp1q(data_blade{6}(:,1),data_blade{6}(:,2),alpha);
cd = interp1q(data_blade{6}(:,1),data_blade{6}(:,3),alpha);
end
2 of 2
8/10/09 16:48
%
Engineering, Technical University of Denmark DTU.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [Displacement, Velocity, Acceleration] = rungekutta...
(Displacement, Velocity,dt,...
nB,theta_wing_blades,a34,a12,r,r_tower,hub,shaft,...
u_1tm,theta_1tm_star_y,theta_1tm_star_z,EF_1m,...
u_1flap_pitch,u_1edge_pitch,u_2flap_pitch,EF_1f,EF_1e,EF_2f,...
F_tower,Ft,Fn,...
GM11_tower,GM11_blade,GM11_nacelle,...
GM22_tower,GM22_blade,GM22_nacelle,...
GM21_blade,GM31,GM41,GM51,GM32,GM42,GM52,GM33,GM44,GM55,...
blade_log_decrem_1,blade_log_decrem_2,blade_log_decrem_3,...
fore_aft_log_decrem,SB_PS_log_decrem)
%--------------------------------------------------------------------------
%==========================================================================
%
%
GENERATE VELOCITY AND DISPLACEMENTS
%
%==========================================================================
X = Displacement;
X_D = Velocity;
%==========================================================================
%
1 of 7
8/10/09 16:48
%
GENERALIZED FORCE TERMS
%
%==========================================================================
%-------------------------------------------------------------------------%
Initialize Force Vector
%-------------------------------------------------------------------------GF = zeros(11,1);
%-------------------------------------------------------------------------%
External Forces on the Blades seen by System 1
%-------------------------------------------------------------------------for b=1:nB
% -------From Coordinate System 2 to Coordinate System 3------a23=[cos(theta_wing_blades(b)) sin(theta_wing_blades(b)) 0;...
-sin(theta_wing_blades(b)) cos(theta_wing_blades(b)) 0;...
0 0 1];
% -------From Coordinate System 1 to Coordinate System 4------a14 = a34*a23*a12;
% -------From Coordinate System 2 to Coordinate System 4------a24 = a34*a23;
for i=1:length(r)
P_blade = [0;Ft(1,i,b);Fn(1,i,b)];
P_blade2(:,i,b)= a24'*P_blade; % System 2
end
end
%-------------------------------------------------------------------------%
GF_1
%-------------------------------------------------------------------------%----------------------------Blades
--------------------------for b=1:nB
% -------From Coordinate System 2 to Coordinate System 3------a23=[cos(theta_wing_blades(b)) sin(theta_wing_blades(b)) 0;...
-sin(theta_wing_blades(b)) cos(theta_wing_blades(b)) 0;...
0 0 1];
% -------From Coordinate System 2 to Coordinate System 4------a24 = a34*a23;
for i=1:length(r)
bl_sec = [r(i);0;0];
bl_pos = shaft + a24'*bl_sec; % System 2
u_blade_gf1(:,i,b) = [(-bl_pos(2)*theta_1tm_star_z(end));...
bl_pos(1)*theta_1tm_star_z(end)+1;...
0];
end
end
gf1_blade = P_blade2(:,:,1).*u_blade_gf1(:,:,1) +...
P_blade2(:,:,2).*u_blade_gf1(:,:,2) + ...
P_blade2(:,:,3).*u_blade_gf1(:,:,3);
% Only x and y components.
GF1_blade = integrate_mid_point_rule(gf1_blade',r);
%-----------------------------
Tower
% Blade 1
% Blade 2
% Blade 3
---------------------------
2 of 7
8/10/09 16:48
% Only y-component.
gf1_tower = F_tower(1,:,2)'.*u_1tm(:);
GF1_tower = integrate_mid_point_rule(gf1_tower,r_tower);
%----------------------------Total
--------------------------GF(1) = GF1_tower + GF1_blade(1) + GF1_blade(2);
%-------------------------------------------------------------------------%
GF_2
%-------------------------------------------------------------------------%----------------------------Blades
--------------------------for b=1:nB
% -------From Coordinate System 2 to Coordinate System 3------a23=[cos(theta_wing_blades(b)) sin(theta_wing_blades(b)) 0;...
-sin(theta_wing_blades(b)) cos(theta_wing_blades(b)) 0;...
0 0 1];
% -------From Coordinate System 2 to Coordinate System 4------a24 = a34*a23;
for i=1:length(r)
bl_sec = [r(i);0;0];
bl_pos = shaft + a24'*bl_sec; % System 2
u_blade_gf2(:,i,b) = [(bl_pos(3)*theta_1tm_star_y(end));...
0;-bl_pos(1)*theta_1tm_star_y(end)+1];
end
end
gf2_blade = P_blade2(:,:,1).*u_blade_gf2(:,:,1) +...
P_blade2(:,:,2).*u_blade_gf2(:,:,2) + ...
P_blade2(:,:,3).*u_blade_gf2(:,:,3);
% Only x and z components.
GF2_blade = integrate_mid_point_rule(gf2_blade',r);
% Blade 1
% Blade 2
% Blade 3
%----------------------------Tower
--------------------------% Only z-component.
gf2_tower = F_tower(1,:,3)'.*u_1tm(:);
GF2_tower = integrate_mid_point_rule(gf2_tower,r_tower);
%----------------------------Total
--------------------------GF(2) = GF2_tower + GF2_blade(1) + GF2_blade(3);
%-------------------------------------------------------------------------%
GF_3, GF_4, GF_5, GF_6, GF_7, and GF_8
%-------------------------------------------------------------------------%----------------------------Blade 1
--------------------------gf3 = Ft(1,:,1)'.*u_1flap_pitch(:,1) + Fn(1,:,1)'.*u_1flap_pitch(:,2);
gf4 = Ft(1,:,1)'.*u_1edge_pitch(:,1) + Fn(1,:,1)'.*u_1edge_pitch(:,2);
gf5 = Ft(1,:,1)'.*u_2flap_pitch(:,1) + Fn(1,:,1)'.*u_2flap_pitch(:,2);
GF(3) = integrate_mid_point_rule(gf3,r);
GF(4) = integrate_mid_point_rule(gf4,r);
GF(5) = integrate_mid_point_rule(gf5,r);
%----------------------------Blade 2
--------------------------gf6 = Ft(1,:,2)'.*u_1flap_pitch(:,1) + Fn(1,:,2)'.*u_1flap_pitch(:,2);
3 of 7
8/10/09 16:48
gf7 =
gf8 =
GF(6)
GF(7)
GF(8)
Ft(1,:,2)'.*u_1edge_pitch(:,1) + Fn(1,:,2)'.*u_1edge_pitch(:,2);
Ft(1,:,2)'.*u_2flap_pitch(:,1) + Fn(1,:,2)'.*u_2flap_pitch(:,2);
= integrate_mid_point_rule(gf6,r);
= integrate_mid_point_rule(gf7,r);
= integrate_mid_point_rule(gf8,r);
%----------------------------Blade 3
--------------------------gf9 = Ft(1,:,3)'.*u_1flap_pitch(:,1) + Fn(1,:,3)'.*u_1flap_pitch(:,2);
gf10 = Ft(1,:,3)'.*u_1edge_pitch(:,1) + Fn(1,:,3)'.*u_1edge_pitch(:,2);
gf11 = Ft(1,:,3)'.*u_2flap_pitch(:,1) + Fn(1,:,3)'.*u_2flap_pitch(:,2);
GF(9) = integrate_mid_point_rule(gf9,r);
GF(10) = integrate_mid_point_rule(gf10,r);
GF(11) = integrate_mid_point_rule(gf11,r);
%==========================================================================
%
%
GENERALIZED MASS TERMS
%
%==========================================================================
%-------------------------------------------------------------------------%
Initialize Force Vector
%-------------------------------------------------------------------------GM = zeros(11,11);
%-------------------------------------------------------------------------%
First Column
%-------------------------------------------------------------------------%----------------------------Tower
--------------------------GM(1,1) = GM11_tower + GM11_blade(1) + GM11_blade(2) + GM11_blade(3)...
+ GM11_nacelle;
GM(2,1) = GM21_blade(1) + GM21_blade(2)
%----------------------------Blade
GM(3,1) = GM31(1) + GM31(2) + GM31(3);
GM(4,1) = GM41(1) + GM41(2) + GM41(3);
GM(5,1) = GM51(1) + GM51(2) + GM51(3);
%----------------------------Blade
GM(6,1) = GM(3,1);
GM(7,1) = GM(4,1);
GM(8,1) = GM(5,1);
%----------------------------Blade
GM(9,1) = GM(3,1);
GM(10,1) = GM(4,1);
GM(11,1) = GM(5,1);
+ GM21_blade(3);
1
---------------------------
---------------------------
---------------------------
%-------------------------------------------------------------------------%
Second Column
%-------------------------------------------------------------------------%----------------------------Tower
--------------------------GM(2,2) = GM22_tower +...
GM22_blade(1) + GM22_blade(2) + GM22_blade(3) ...
+ GM22_nacelle;
%----------------------------Blade 1
---------------------------
4 of 7
8/10/09 16:48
---------------------------
---------------------------
%-------------------------------------------------------------------------%
Diagonal
%-------------------------------------------------------------------------%----------------------------Blade 1
--------------------------GM(3,3)=GM33;
GM(4,4)=GM44;
GM(5,5)=GM55;
%----------------------------Blade 2
--------------------------GM(6,6)=GM33;
GM(7,7)=GM44;
GM(8,8)=GM55;
%----------------------------Blade 3
--------------------------GM(9,9)=GM33;
GM(10,10)=GM44;
GM(11,11)=GM55;
for i = 1:2
for j = 3:11
GM(i,j)= GM(j,i);
end
end
%==========================================================================
%
%
GENERALIZED STIFFNESS TERMS
%
%==========================================================================
%-------------------------------------------------------------------------%
Initialize Force Vector
%-------------------------------------------------------------------------GK = zeros(11,11);
%-------------------------------------------------------------------------%
Diagonal
%-------------------------------------------------------------------------GK(1,1)=EF_1m^2*GM11_tower;
GK(2,2)=EF_1m^2*GM22_tower;
GK(3,3)=EF_1f^2*GM33;
GK(4,4)=EF_1e^2*GM44;
GK(5,5)=EF_2f^2*GM55;
5 of 7
8/10/09 16:48
GK(6,6)=GK(3,3);
GK(7,7)=GK(4,4);
GK(8,8)=GK(5,5);
GK(9,9)=GK(3,3);
GK(10,10)=GK(4,4);
GK(11,11)=GK(5,5);
%==========================================================================
%
%
GENERALIZED DAMPING TERMS
%
%==========================================================================
%-------------------------------------------------------------------------%
Initialize Force Vector
%-------------------------------------------------------------------------GC = zeros(11,11);
%-------------------------------------------------------------------------%
Diagonal
%-------------------------------------------------------------------------GC(1,1)=EF_1m*GM11_tower*fore_aft_log_decrem/pi;
GC(2,2)=EF_1m*GM22_tower*SB_PS_log_decrem/pi;
GC(3,3)=EF_1f*GM33*blade_log_decrem_1/pi;
GC(4,4)=EF_1e*GM44*blade_log_decrem_2/pi;
GC(5,5)=EF_1e*GM44*blade_log_decrem_3/pi;
GC(6,6)=GC(3,3);
GC(7,7)=GC(4,4);
GC(8,8)=GC(5,5);
GC(9,9)=GC(3,3);
GC(10,10)=GC(4,4);
GC(11,11)=GC(5,5);
%==========================================================================
%
%
RUNGE-KUTTA-NYSTRM INTEGRATION SCHEME
%
%==========================================================================
%-------------------------------------------------------------------------% 1.- Calculate Acceleration at time step
%-------------------------------------------------------------------------X_DD = gc(GF, X, X_D, GM, GK, GC);
%-------------------------------------------------------------------------% 2.- Calculate Displacement and Velocities for next time step
%-------------------------------------------------------------------------%-------------RUNGE-KUTTA-NYSTROM TIME INTEGRATION
---------------A = dt/2*X_DD;
b = dt/2*(X_D + 0.5*A);
B = dt/2 * gc(GF, X + b, X_D + A, GM, GK, GC);
6 of 7
8/10/09 16:48
7 of 7
8/10/09 16:49
1 of 1
8/10/09 16:50
- - - - -
at all the
program).
in the
- - - - -
%-------------------------------------------------------------------------function [Displac_Turbine_X,Displac_Turbine_Y,Displac_Turbine_Z]=...
displac_turbine(Displacement,u_1tm,...
u_1flap_pitch,u_1edge_pitch,u_2flap_pitch,...
a34,theta_wing_blades,r,shaft,hub,r_tower);
%-------------------------------------------------------------------------%-------------------------------------------------------------------------%
Calculate Displacement for each direction
%-------------------------------------------------------------------------%--------------------------- X-direction ---------------------------------Displac_Tower_x = sqrt(r_tower'.^2 - Displacement(1)*u_1tm(:).^2 - ...
- Displacement(2)*u_1tm(:).^2);
%--------------------------- Y-direction ---------------------------------Displac_Tower_y = Displacement(1)*u_1tm(:);
Displac_Blade1_y = Displacement(3)*u_1flap_pitch(:,1)+...
Displacement(4)*u_1edge_pitch(:,1) + ...
Displacement(5)*u_2flap_pitch(:,1);
Displac_Blade2_y = Displacement(6)*u_1flap_pitch(:,1)+...
Displacement(7)*u_1edge_pitch(:,1) + ...
Displacement(8)*u_2flap_pitch(:,1);
Displac_Blade3_y = Displacement(9)*u_1flap_pitch(:,1)+...
Displacement(10)*u_1edge_pitch(:,1) + ...
Displacement(11)*u_2flap_pitch(:,1);
%--------------------------- Z-direction ---------------------------------Displac_Tower_z = Displacement(2)*u_1tm(:);
1 of 3
8/10/09 16:50
Displac_Blade1_z = Displacement(3)*u_1flap_pitch(:,2)+...
Displacement(4)*u_1edge_pitch(:,2);
Displac_Blade2_z = Displacement(6)*u_1flap_pitch(:,2)+...
Displacement(7)*u_1edge_pitch(:,2)+...
Displacement(8)*u_2flap_pitch(:,2);
Displac_Blade3_z = Displacement(9)*u_1flap_pitch(:,2)+...
Displacement(10)*u_1edge_pitch(:,2)+...
Displacement(11)*u_2flap_pitch(:,2);;
%-------------------------------------------------------------------------%
Transfor from System 4 to System 2 for the Blades
%-------------------------------------------------------------------------%
... BLADE #1 ...
for i = 1:length(r)
% -------From Coordinate System 2 to Coordinate System 3------a23=[cos(theta_wing_blades(1)) sin(theta_wing_blades(1)) 0;...
-sin(theta_wing_blades(1)) cos(theta_wing_blades(1)) 0;...
0 0 1];
% -------From Coordinate System 2 to Coordinate System 4------a24 = a34*a23;
Displac_Blade1_temp(:,i) =a24'*...
[r(i);Displac_Blade1_y(i);Displac_Blade1_z(i)];
end
Displac_Blade1_x_S2 = Displac_Blade1_temp(1,:)';
Displac_Blade1_y_S2 = Displac_Blade1_temp(2,:)';
Displac_Blade1_z_S2 = Displac_Blade1_temp(3,:)';
%
... BLADE #2 ...
for i = 1:length(r)
% -------From Coordinate System 2 to Coordinate System 3------a23=[cos(theta_wing_blades(2)) sin(theta_wing_blades(2)) 0;...
-sin(theta_wing_blades(2)) cos(theta_wing_blades(2)) 0;...
0 0 1];
% -------From Coordinate System 1 to Coordinate System 4------a24 = a34*a23;
Displac_Blade2_temp(:,i) = a24'*...
[r(i);Displac_Blade2_y(i);Displac_Blade2_z(i)];
end
Displac_Blade2_x_S2 = Displac_Blade2_temp(1,:)';
Displac_Blade2_y_S2 = Displac_Blade2_temp(2,:)';
Displac_Blade2_z_S2 = Displac_Blade2_temp(3,:)';
%
... BLADE #3 ...
for i = 1:length(r)
% -------From Coordinate System 2 to Coordinate System 3------a23=[cos(theta_wing_blades(3)) sin(theta_wing_blades(3)) 0;...
-sin(theta_wing_blades(3)) cos(theta_wing_blades(3)) 0;...
0 0 1];
% -------From Coordinate System 1 to Coordinate System 4------a24 = a34*a23;
2 of 3
8/10/09 16:50
Displac_Blade3_temp(:,i) = a24'*...
[r(i);Displac_Blade3_y(i);Displac_Blade3_z(i)];
end
Displac_Blade3_x_S2 = Displac_Blade3_temp(1,:)';
Displac_Blade3_y_S2 = Displac_Blade3_temp(2,:)';
Displac_Blade3_z_S2 = Displac_Blade3_temp(3,:)';
%-------------------------------------------------------------------------%
ASSEMBLING
%-------------------------------------------------------------------------Displac_Turbine_Y=[Displac_Tower_y;...
Displac_Blade1_y_S2;...
Displac_Blade2_y_S2;Displac_Blade3_y_S2];
Displac_Turbine_Z=[Displac_Tower_z;...
Displac_Blade1_z_S2;...
Displac_Blade2_z_S2;Displac_Blade3_z_S2];
Displac_Turbine_X = [Displac_Tower_x;...
Displac_Blade1_x_S2;...
Displac_Blade2_x_S2;Displac_Blade3_x_S2];
3 of 3
8/10/09 16:52
1 of 1