You are on page 1of 430

Master Thesis

Sea Transport Analysis of Upright Wind Turbines

Jos Miguel Simn Donaire


MEK-FM-EP-2009-14
October 2009

Sea Transport Analysis of Upright Wind


Turbines

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

Jrgen Juncher Jensen


Dep. Coastal Engineering
Technical University of Denmark

Denmark Technical University


Mechanical Engineering Department
Kongens Lyngby, Denmark

Sea Transport Analysis of Upright Wind Turbines

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!!

Sea Transport Analysis of Upright Wind Turbines

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

Sea Transport Analysis of Upright Wind Turbines

TABLE OF CONTENTS
Acknowledgments ........................................................................................................................ i
Executive Summary .................................................................................................................... ii
List of figures and tables............................................................................................................. v
Nomenclature............................................................................................................................ viii
1

Introduction ......................................................................................................................... 1
1.1

Offshore Wind Energy ................................................................................................ 1

1.2

Transport and Installation of Offshore Wind Turbines .......................................... 4

1.3

Objective ...................................................................................................................... 9

1.4

Report Outline ............................................................................................................. 9

Background ........................................................................................................................ 12
2.1

Background for the Ship Part .................................................................................. 12

2.2

Background for the Wind Turbine Part ................................................................. 17

Modeling............................................................................................................................. 24
3.1

Required inputs by the barge program ................................................................... 28

3.2

Required inputs by the sea transport program (WT) ............................................ 29

3.3

Coordinate Systems ................................................................................................... 30

3.4

Aeroelastic response of the WT................................................................................ 33

3.4.1

Considerations in the structural model ................................................................ 33

3.4.2

Shape functions adopted...................................................................................... 35

3.4.3

Considerations in the aerodynamic model .......................................................... 37

3.4.4

Loads on the WTs ............................................................................................... 40

Barge Stability ................................................................................................................... 41


4.1

Viking Barge stability analysis ................................................................................. 43

iii

Table of Contents

Model Validation ............................................................................................................... 46


5.1

Barge Program Validation ....................................................................................... 46

5.2

Sea Transport (WT) Program Validation ............................................................... 46

Sea Transport Analysis ..................................................................................................... 50


6.1

Wave-induced motions MPL calculations............................................................ 52

6.2

Sea transport analysis results ................................................................................... 58

Conclusions ................................................................................................................................ 62
Future Development.................................................................................................................. 63
References .................................................................................................................................. 64
A.

Appendix. List of Offshore Wind Farms......................................................................... 67

B.

Appendix. Ship basic theory ............................................................................................. 72

C.

Appendix. Wind Turbine Theory .................................................................................... 89

D.

Appendix. Generalized terms ........................................................................................... 99

E.

Appendix. Roll period calculations ................................................................................ 115

F.

Appendix. Hydrostatic Stability..................................................................................... 117

G. Results of the Model Validation ..................................................................................... 122


H. Results of the Sea Transport Analysis ........................................................................... 184
I.

Matlab Code .................................................................................................................... 194

iv

Sea Transport Analysis of Upright Wind Turbines

LIST OF FIGURES AND TABLES


FIGURES
Figure 1.1 Lynn and Inner Dowsing Offshore Wind Farm. .......................................................... 3
Figure 1.2 Assembly yard, UK...................................................................................................... 5
Figure 1.3 Cargo Positions stowed on Viking Barge. ................................................................... 6
Figure 1.4 MPI Resolution Jack-up vessel .................................................................................... 6
Figure 1.5 Bunny ear configuration .............................................................................................. 7
Figure 1.6. The Castoro Vento vessel ........................................................................................... 8
Figure 1.7. The TIB concept ......................................................................................................... 8
Figure 1.8. The Aquilo Concept .................................................................................................... 9
Figure 1.9 Report outline ............................................................................................................ 11

Figure 2.1 Ship Motion Definitions ............................................................................................ 12


Figure 2.2. Wind Turbine Blade.................................................................................................. 18
Figure 2.3 Wind velocity shear ................................................................................................... 20
Figure 2.4 The presence of the tower .......................................................................................... 20

Figure 3.1 Sketch of WT - barge configuration .......................................................................... 24


Figure 3.2 Coordinate System WT-barge ................................................................................... 31
Figure 3.3. A point on the blade described by vectors ................................................................ 33
Figure 3.4 Shape Function SB PS ............................................................................................... 36
Figure 3.5 Shape Function fore-aft ............................................................................................. 37

List of Figures and Tables

Figure 4.1 Hydrostatic stability ................................................................................................... 41


Figure 4.2 Definition of Metacentric height................................................................................ 42
Figure 4.3 Stability at large angles of inclination ....................................................................... 42
Figure 4.4 Ballasts of Viking Barge ............................................................................................ 44
Figure 4.5 GZ Curve: One upright WT with ballasts , departure ................................................ 45

Figure 5.1 Wind Shear, case of only wind speed ........................................................................ 48


Figure 5.2 Comparison of the tower top deflections in the fore aft direction under 15 m/s ....... 48

Figure 6.1 Overestimate in the heave response ........................................................................... 53


Figure 6.2 Overestimate in the pitch response ............................................................................ 54
Figure 6.3 Heave frequency response function ........................................................................... 54
Figure 6.4 Roll frequency response function .............................................................................. 55
Figure 6.5 Pitch frequency response function ............................................................................. 56
Figure 6.6 JONSWAP Wave Spectrum, Hs = 5 m...................................................................... 57
Figure 6.7 MPL of the pitch response. ........................................................................................ 57
Figure 6.8 Comparison between Kaimal spectrum and simulated spectrum. ............................. 59
Figure 6.9 Wind fluctuations for a mean wind speed of 14.4 m/s............................................... 60
Figure 6.10 Time series of the long. acceleration at the nacelle , Hs = 5 m, V0 = 14.4 m/s ....... 61

vi

Sea Transport Analysis of Upright Wind Turbines

TABLES
Table 5.1 Fore-aft tower top deflection mean values at the steady state. .................................... 49

Table 6.1 Required inputs for the barge program ....................................................................... 52


Table 6.2 Required inputs for the WT program .......................................................................... 59
Table 6.3 Sea transport simulations ............................................................................................ 60
Table 6.4 MPL of the longitudinal accelerations at the nacelle .................................................. 61

vii

Nomenclature

NOMENCLATURE
Acronyms
AP

Aft Perpendicular

AR4

Fourth Assessment Report

BEM

Blade Element Momentum Method

BWEA

British Wind Energy Association

CL

Center Line

COG

Center of Gravity

DOF

Degree of Freedom

EWEA

European Wind Energy Association

FRF

Frequency Response Function

GHG

Greenhouse Gasses

IPCC

Intergovernmental Panel on Climate Change

MPL

Most Probable Largest Value

OWF

Offshore Wind Farm

OWT

Offshore Wind Turbine

PSD

Power Spectra Density

PVW

Principle of Virtual Work

SB-PS

Starboard Port side

T&I

Transport and Installation

WT

Wind Turbine

viii

Sea Transport Analysis of Upright Wind Turbines

Symbols and variables ship part

Displacement Volume

Weight

Response amplitude or FRF.

Heading angle

Parameter in roll calculations

Phase angle

Parameter for the heave and pitch FRFs

Roll

Smith Correction Factor

Pitch

Frequency of encounter

Wave Frequency

Parameter in the pitch and heave FRFs

AL, AT, AV

Longitudinal, Transverse and Vertical cargo acceleration

B44

Hydrodynamic damping

BMt

Transverse metacentric height of bouyancy

B0

Breadth

C44

Restoring moment coefficient

Cb

Block Coefficient

CWP

Water Plane coefficient


ix

Nomenclature

CRS

Remaining stability coefficient

Ship Height

Forcing function

Forcing function

GMt

Metacentric Height

GZ

Righting lever

Hs

Significant wave height

Mass moment of Inertia

KB

Height of the center of buoyancy above the keel

KG

Height of COG above keel

Ship Length

Lpp

Length between perpendiculars

Excitation Moment

Number of points

Response (heave, pitch, roll, displacements, velocites or accelerations)

Spectrum

Draft

Tn

Roll Period

Tz

Zero upcrossing wave period

UL, UT, UV

Longitudinal, Transverse and Vertical cargo displacement

Forward Speed

VL, VT, VV

Longitudinal, Transverse and Vertical cargo velocities

Fourier Transform Gaussian complex

Sea Transport Analysis of Upright Wind Turbines

Wave amplitude

dt

time increment

Wave number

Heave

Symbols and variables WT part

Weight

Angle of attack

Blade twist

Flow angle

Amount of wind shear

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

Generalized damping matrix

GFg

Generalized force vector

GK

Generalized stiffness matrix

GM

Generalized mass matrix

& , and GX
&&
GX, GX

Generalized deflections, velocities and accelerations

Mass moment of Inertia

Stiffness matrix

Mass matrix

Number of points

Spectrum

SB

Stiff Body

Thrust

Mean Wind speed

V(t)

Wind Fluctuations

V0

Undisturbed wind Speed

Vrel

Relative Velocity

Vr, V

Polar wind components

VST

Structural Velocities

xii

Sea Transport Analysis of Upright Wind Turbines

Vy, Vz

Cartesian wind components

& , and X
&&
X, X

Deflections, velocities and accelerations

Tower radius

a12, a23, a34

Transformation matrices

aL, aT, aV

fore-aft, SB-PS and Vertical Acceleration

Chord length

dt

Time increment

Frequency

Gravity

Dimensionless frequency

Length (blade or tower)

u*

Friction velocity

u, u& ,

Deflection, velocities, and acceleration

u1f, u1e, u2f

Blade mode shapes: first flap, first edge, and second flap.

ut1, ut2

Tower mode shapes: fore-aft, SB-PS.

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.

1.1 Offshore Wind Energy


Already in 1998, the British Wind Energy Association believed that of all renewable energy
technologies, offshore wind energy has possibly the most favorable combination of the key
attributes of resource, energy cost and risk (BWEA, 1998 Ref. [2]). Even though, this
affirmation might sound daring, it is no-longer under discussion the tremendous potential of
Europes offshore wind energy resource.
In January 2008, the 20 20 by 2020 Communication by the European Commission launched
two key targets: (i) a reduction of at least 20% in greenhouse gasses (GHG) by 2020, and (ii) a
20% share of renewable energies in EU energy consumption by 2020 (Ref. [3]). The European
1

Sea Transport Analysis of Upright 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.

With permission from Siemens Wind Power A/S

Figure 1.1 Lynn and Inner Dowsing Offshore Wind Farm.

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

Sea Transport Analysis of Upright Wind Turbines

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.

1.2 Transport and Installation of Offshore Wind Turbines


The transport and installation (T&I) of 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. With the increasing number of OWFs per
year, there is a need for new equipment, but the industry cannot commit long term relationships,
and the lack of availability of vessels is patent (Ref. [33]).
The design of new ways of transporting and installing WTs less sensitive to the weather
conditions and requiring simple vessels may contribute the development of more cost
competitive OWFs.
The idea of transporting fully assembled WTs is not new. Until September 2009, the Beatrice
OWF is the only OWF which WTs were completely assembled onshore and transported directly
to the offshore site vertically on a barge. This OWF has the capacity of 10 MW provided by two
4

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

With permission from Siemens Wind Power A/S

Figure 1.2 Assembly yard, UK

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.

Sea Transport Analysis of Upright Wind Turbines

With permission from Siemens Wind Power A/S

Figure 1.3 Cargo Positions stowed on Viking Barge.

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.

With permission from Siemens Wind Power A/S

Figure 1.4 MPI Resolution Jack-up vessel

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.

With permission from Siemens Wind Power A/S

Figure 1.5 Bunny-ear configuration

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.

Sea Transport Analysis of Upright Wind Turbines

Courtesy from Ref [27]

Figure 1.6. The Castoro Vento 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.

Courtesy from Ref [4]

Figure 1.7. The TIB concept

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.

Courtesy from Ref [23]

Figure 1.8. The Aquilo Concept

Further information is found in Ref. [23].


In conclusion, the problem concerning the T&I of OWTs has been presented; as well as the high
interest of companies in improving/changing the present way of T&I with the aim of an ideal
serial assembly at the quay wall (Ref. [21]).

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.

1.4 Report Outline


This master thesis follows the sequential learning process of achieving the objective of the
project. Thus, a background of the theory is firstly presented in Chapter 2. It has been divided
into the ship on the one hand, and the WT on the other hand.
Once the theoretical principles are introduced, the modeling of the system barge/WT is
described in Chapter 3. The required inputs for both modules, i.e. ship and WT, are given; the
9

Sea Transport Analysis of Upright Wind Turbines

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)

Sea Transport Analysis


(The results of the sea
transport and the
discussion are presented)

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.)

Sea Transport (WT) Program

Barge response spectrum:


(Response amplitudes of waveinduced motions)

WT inputs:
(WT struct and aero data, WT
angles, wind, etc..)

Sea State and Wave Spectrum


(Hs, wave period and heading)

Wind State
(Mean wind speed, wind direction,
and wind shear)

Barge response time series


(Stiffbody motions of the barge)

Wind time series


(stochastic part of the wind included)

WT response time series


(results of the sea transport
analyses)

Conclusions and Future


Development

In Conclusions
In Future Development

Figure 1.9 Report outline

11

Sea Transport Analysis of Upright Wind Turbines

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.

2.1 Background for the Ship Part


The wave-induced motions of any ship is described by 6 six degrees of freedom (DOFs). From
these motions, the displacements, velocities and accelerations at any point (or cargo position) on
the ship can be derived. Figure 2.1 shows a sketch of the wave-induced motions.
Heave

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-

wave problem in regular waves:


Heave : 2
Pitch : 2

kT
2

&& +
w

A2
kB 3

w& + w = aF cos( t )

kT &&
A2 &
+
+ = aG sin( t )
2
kB 3

(2.1)

Roll :

TN

C 44 && + B44 & + C 44 = M


2

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:

Heave : w(t ) = a w ( ) cos t + Total ( )

Pitch : (t ) = a ( ) cos t

w
Total
+

( )

Roll : (t ) = a ( ) cos t + Total ( )

Jensen et al. [17] proposed a series of expressions to calculate the response amplitudes:

13

(2.3)

Sea Transport Analysis of Upright Wind Turbines

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 ( )

Transverse Disp. : u T = 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]

at the center line.

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)

+ 2 y0 w ( ) ( ) cos Total ( ) Total ( )

UV =
Total
Total

( ) ( )
2 x0 w ( ) ( ) cos
w

2 x0 y 0 ( ) ( ) cos Total ( ) Total ( )

[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

Sea Transport Analysis of Upright Wind Turbines

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.:

Ship motions: heave w, pitch and roll .

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.

2.2 Background for the Wind Turbine Part


The wind turbine (WT) aeroelastic model theory is briefly presented in this section. Note that
Appendix C describes more in detail the theory behind the WT part.
The aeroelastic model of the WT is indeed the coupling between the structural model and the
aerodynamic model. The structural model calculates the deflections, velocities, and
accelerations of the structure; while the aerodynamic model calculates the aerodynamic loads.
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 by this means, the relative velocity and the angle of attack change; and so,
again the loads; this implies an iterative method.

17

Sea Transport Analysis of Upright Wind Turbines

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.

With permission from the Author (Ref. [11])

Figure 2.2. Wind Turbine Blade

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

Sea Transport Analysis of Upright Wind Turbines

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.

With permission from the Author (Ref. [11])

Figure 2.3 Wind velocity shear

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.

With permission from the Author (Ref. [11])

Figure 2.4 The presence of the tower

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

where the following relations can be used:


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)

Then, the angle of attack is calculated by:


=

(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

acceleration vectors of the structure for a set of degree of freedoms (DOGs).

21

Sea Transport Analysis of Upright Wind Turbines

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

depend on instantaneous geometry of the structure specified by GX .


The acceleration of every relevant point in the structure is calculated in the same manner;
nevertheless, there may be also contributions to the point accelerations from the rotational
speeds as defined by GX& (centrifugal, coriolis and gyroscopic effects).
Formal finite element methods can be applied to solve the equation of motion, but for the
purpose of this project, the simple principle of virtual works is enough. The principle of virtual
work is a method that helps in setting up the correct mass, stiffness, and damping matrices for
a multi-body system (Hansen 2008, 126 Ref. [11]).
Essentially, knowing the time dependent loads and appropriate conditions for the velocities and
deformations, the equation of motion (see equation (2.26) above) can be solved for the
accelerations, from which the velocities and deformations can be estimated for the next time
step. A Runge-Kutta-Nystrm time integration scheme is used. Appendix C introduces some
consideration with respect the time integration scheme and the numerical damping.

23

Sea Transport Analysis of Upright Wind Turbines

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

Figure 3.1 Sketch of WT - barge configuration


Barge Dimensions: Length = 91.44 m, Breadth = 27.43 m, Height = 6.096 m.
WT Dimensions: Hub Height = 63.84 m, Blade length = 45 m.

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

Fore - Aft Direction

aTmax
aVmax

SB - PS Direction

< 0.8 g = 7.5 m / s

< 0.7 g = 6.8 m / s 2

(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

Sea Transport Analysis of Upright Wind Turbines

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)

Note that for l = N/2 , f = fN = fS / 2 = 1 / 2dt.


Once the Kaimal spectrum is calculated, the wind fluctuations are generated using the inverse of
the Fourier Transform. The Fourier Transform (Xl,T) is first created as complex Gaussian with
zero mean (X = 0), and variance equal to 2X = S xx ( ) t max .
Xl,T is calculated by means of random variables, a and b, with mean zero and standard deviation

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

Sea Transport Analysis of Upright Wind Turbines

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.

3.1 Required inputs by the barge program


The barge model requires a few inputs:

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.

Additional damping: there is no proper method to calculate the desired additional


damping that accounts the viscous component of the hydrodynamic damping. The
additional damping is selected manually as a percentage of the critical damping. Further
information is found in Appendix B.

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.

3.2 Required inputs by the sea transport program (WT)


The WT model requires the following inputs:

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

Sea Transport Analysis of Upright Wind Turbines

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).

Gravity and air density of 1.225 kg/m3.

3.3 Coordinate Systems


The barge/WT system has six coordinate systems. All of these are right-hand coordinate
systems. Figure 3.2 below shows a sketch of the coordinate systems used in the calculations.
To calculate the wave-induced motions two coordinate systems are used: a global coordinate
system and a reference coordinate system. The global coordinate system will be placed at the
AP (aft perpendicular) and bottom of the ship, whereas the reference coordinate system will be
situated at the COG of the barge. The global coordinate system is denoted by the subscript G
while the reference system utilizes the subscript 0. The cargo position will be referred to the
global coordinate system taking into account that the motions are relative to the reference
coordinate system. It is noted that the closed-form semi-analytical expressions by Jensen et al.
[17]

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

Figure 3.2 Coordinate System WT-barge

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

Sea Transport Analysis of Upright Wind Turbines

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)

Combinations of the previous matrices provide transformations between different coordinate


systems, e.g. the transformation from system 1 to system 4 is given by a14 as
a14 = a 34 a 23 a12

(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.

With permission from the Author (Ref. [11])

Figure 3.3. A point on the blade described by vectors

Thus the point P can be expressed as


xp

r = y p = rt + rs + rb

zp

(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.

3.4 Aeroelastic response of the WT.


3.4.1 Considerations in the structural model
The generalized coordinate vector GX is described as:

33

(3.16)

Sea Transport Analysis of Upright Wind Turbines

xt1 { Tower first mode in the lateral direction (SB - PS)}

x
{ Tower first mode in the longitudinal 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}

GX = x1blf2 { Blade 2, first flapwise}

x bl 2 { Blade 2, first edgewise}


1e

x bl 2 { Blade 2, second flapwise}


2f

bl 3
x1 f { Blade 3, first flapwise}

x1ble3 { Blade 3, first edgewise}

x 2blf3 { Blade 3, second 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

u t1 ( x ) Tower mode shape SB - PS u t1 ( x ) = u t y

u t2 ( x ) Tower mode shape fore - aft u t2 (x ) = 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 ( x ) Blade 1st. Flap. mode shape u1 f (x ) = u 1y f

u1 f
z

1e
u1e ( x ) Blade 1st. Edge. mode shape u 1e ( x ) = u y
1e
u y
0

u 2 f (x ) Blade 2nd. Flap mode shape u 2 f (x ) = u 2y f


2 f
u y

(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)

3.4.2 Shape functions adopted


As it was explained in the previous Chapter 2 section 2.2 , a set of appropriate shapes functions
is required in the structural model. For the deflections of the tower and blades, it is efficient to
select the mode shapes or eigenmodes as shape functions. The expressions for the deflections
for the tower and blade were previously given in equations (3.18) and (3.20).
It is noted that when the tower deflects, the blade undergoes a translation and a rotation (rigid
body motions from the tower top), a shape function is thereby needed. There are two different
shape functions for the blade depending on the direction of the tower bending:

Starboard portside direction

For - aft direction

Starboard Portside Direction

35

Sea Transport Analysis of Upright Wind Turbines

Xt1

0
= 0
z

xp
r

r = yp

X1
Y1
Z1

Figure 3.4 Shape Function SB PS

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.

Fore Aft Direction

36

Chapter 3 Modeling.

xp
r= 0

Xt2

zp

0
= y
0
( y = z )

X1
Z1
Y1

Figure 3.5 Shape Function fore-aft

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.

3.4.3 Considerations in the aerodynamic model


The aerodynamic model must account for the structural response as well as the stiff body
motions from the barge.
Tower
The relative velocity seen by the tower (system 1, see previous section 3.3) must take into
account the structural velocity from the tower vibration

37

Sea Transport Analysis of Upright Wind Turbines

tower
tower
Vrel
= V tower V ST
0

tower V tower

STy
Vrel y V y

Vrel = tower tower


V
z V

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)

where the aerodynamic forces on the tower are

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

Sea Transport Analysis of Upright Wind Turbines

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

u& bl tow (t , p ) = x& t1 (t ) + x p const z x& t1 (t )

x& t (t ) x p const y x& t (t )

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.

3.4.4 Loads on the WTs


Once the external forces are calculated for both tower and blades, different loads can be
calculated on the WT. For example, the thrust force acting on the tower top (or in the shaft) can
be calculated from the normal forces on the blades; the torque at the shaft can be calculated
from the tangential forces; the flap and edgewise bending moments at the blades root can be
derived from the normal and tangential forces of the blades, respectively; the bending moment
at the tower bottom can be solved from the thrust at the tower top, tilt moment and yaw
moments at the nacelle, gravity-load from the rotor, as well as external forces on the tower.
It is noted that the external forces of the tower and blades are forces per length; therefore
numerical integration must be performed considering linear variation between one section and
the next.

40

Chapter 4 Barge Stability

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

Small heeled state

Figure 4.1 Hydrostatic stability

41

Sea Transport Analysis of Upright Wind Turbines

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)

The distance GM or GMt is called the metacentric height calculated by


GMt = KB + BMt KG

(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

Figure 4.2 Definition of Metacentric height

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]

Figure 4.3 Stability at large angles of inclination

42

Chapter 4 Barge Stability

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.1 Viking Barge stability analysis


The stability analysis of the Viking Barge vessel is carried for the case of one upright WT. The
calculation of 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:
D T
MAX = tan 1
Bo T

(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

Sea Transport Analysis of Upright Wind Turbines

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.

With permission from Siemens Wind Power A/S, Ref [15]

Figure 4.4 Ballasts of Viking Barge

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

Chapter 4 Barge Stability

Rightling lever, GZ

5
4
3
2
1
0

Angle (deg)

10

15

Figure 4.5 GZ Curve: One upright WT with ballasts , departure

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

Sea Transport Analysis of Upright Wind Turbines

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.

5.1 Barge Program Validation


The simplified closed-form semi-analytical expressions to calculate the wave-induced motions
in the frequency domain have been compared with the results by Jensen et al. [17]. The frequency
response functions for the heave, pitch, and roll, as well as the vertical acceleration at the
forward perpendicular are compared with those by Jensen et al.

[17]

for the TMV114 vessel.

Fairly good results are found.


The seakeeping analysis of the Viking Barge vessel is carried out for the case of 6 unassembled
WT and compared with the results provided by Vuyk Engineering Rotterdam (Ref [34]). The
frequency response functions for the heave, pitch and roll are tested. The most probable largest
values for the heave, pitch, roll as well as the longitudinal, transverse and vertical acceleration
of the cargo are calculated and compared with those by Vuyk Engineering Rotterdam (Vuyk
E.R.). Some limitations in the simplified closed-form expressions are found but a general good
agreement is found.
Finally, the generation of the time series for the different wave-induced responses is also
checked. Even though, there have not been provided results by external companies or found
reference articles, simples checks in the procedure of generating times series cam be done, and
good results are obtained.

5.2 Sea Transport (WT) Program Validation


The different parts of the sea transport (WT) program are checked. First the natural frequencies
and mode shapes are checked; the natural frequencies are compared with those given by
Siemenss data. Simple visual checks of the shapes functions are also given to check that the
46

Chapter 5 Model Validation

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

Sea Transport Analysis of Upright Wind Turbines

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

Fore-aft tower top deflection (m)

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)

Sea Transp. Program

200

240

Siemens BHawC code

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

Chapter 5 Model Validation

Sea Transport Program

Siemens BHawC code

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

Sea Transport Analysis of Upright Wind Turbines

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.

6 SEA TRANSPORT ANALYSIS


One upright WT is loaded on the deck of Viking Barge. The center of the tower is placed
aligned with the COG of the vessel. The blades are in the bunny-ear position, i.e. one blade is
pointing downwards aligned with the tower. The rotor is facing the fore (see Figure 3.1 in
previous Chapter 3). Both ballasts and fuel (departure) are considered in the barge, and thus an
appropriate draft around 2.5 m is used. The COG of the system WT/barge is calculated based on
the weight and COG of each of the components, i.e. WT, barge, ballasts, and fuel. It is
appropriate that the barge maintains zero-heel as initial loading; since the WT is placed at the
CL and the ballast are selected to be symmetric, it is expected that the COG of the system is
located at the CL as well.
It is noted that the COG of the system varies slightly from the COG of the barge (roughly 2
meters).The shape of the barge is included to calculate the length of the ship; thus, depending on
the displacement volume and the particular draft associated, the length can be calculated.
The WT is discretized in a series of sections for both the tower and the blades. These sections
are the same as those adopted for the aeroelastic response of the WT. The tower is discretized
into 23 sections, while each blade is discretized into 24 sections. Therefore, 95 (23 + 3x24)
positions are given to the barge program.
The metacentric height GMt is calculated and the barge stability tested accordingly (see
previous Chapter 4). The moment of inertia and radii of gyration are used to obtain the roll
period (further information is found in Appendix E).
Zero forward speed is chosen and head sea conditions selected (i.e. 180 heading angle).
From Appendix G section G.1., it was checked that an additional damping of 2% of the critical
damping provides a good approximation to the results given by Vuyk E.R. in the case of
unassembled WTs. Despite a better method to approximate the additional damping, it is adopted
the same value for the sea transport calculations.

50

Chapter 6 Sea Transport Analysis

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

Sea Transport Analysis of Upright Wind Turbines

6.1 Wave-induced motions MPL calculations


One upright WT is loaded on the deck, and the center of the tower is aligned with the COG of
the ship. This section tackles the seakeeping analysis. Table 6.1 summarizes the required inputs
by the barge program.
Configuration
Siemens WT 2.3 MW B45 63.84.

Viking Barge Vessel

Location: at the CL, tower center aligned


with the COG of the barge

Ballast and
considered.

Discretization: 95 sections (23 for the


tower and 24 for each blade)

Zero heel is designed.

fuel for departure is

COG of the system [Xg,Yg,Zg]


47.17 m

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)

JONSWAP Wave Spectrum.

= 3.3

Amount wave energy spread. (sweep, deg)

Energy Spreading

cos4

Forward Speed V (kn)

Time Series / Time Increm. (dt)

Series of Headings

0.5 h./ 0.03 sec

Series of Zero-upcrossing Periods

FRFs

series of headings with ~9 of


increment step.

MPLs

0, 45, 65, 90, 115, 135, 180, 225,


245, 270, 295, 315

Tz
(sec)

4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5,


10, 11,12, 13.
DNV Guidelines: Recommendation 5 to
13 sec

Series of Significant Wave Heights


Hs

1m

2m

3m

4m

5m

Table 6.1 Required inputs for the barge program

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

Chapter 6 Sea Transport Analysis

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

Port Side Bow


Quartering Sea
180 < < 270

= 99

= 261
Port Side
Beam Sea
= 270

Beam Sea
= 90
= 81

= 279

Port Side Stern


Quartering Sea
270 < < 360

Stardboard Stern
Quartering Sea
0 < < 90

Following Sea
= 0

Overestimated heave response

Figure 6.1 Overestimate in the heave response

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

Sea Transport Analysis of Upright Wind Turbines

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

Port Side Stern


Quartering Sea
270 < < 360

Stardboard Stern
Quartering Sea
0 < < 90

Following Sea
= 0

Overestimated pitch response

Figure 6.2 Overestimate in the pitch response

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

Figure 6.3 Heave frequency response function

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

Chapter 6 Sea Transport Analysis

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

Figure 6.4 Roll frequency response function

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

Sea Transport Analysis of Upright Wind Turbines

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

Figure 6.5 Pitch frequency response function

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

Chapter 6 Sea Transport Analysis

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

Figure 6.6 JONSWAP Wave Spectrum, Hs = 5 m

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

Figure 6.7 MPL of the pitch response.

57

Hs = 5 m
= 45
Hs = 5 m
= 180

Sea Transport Analysis of Upright Wind Turbines

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.

6.2 Sea transport analysis results


Once the wave-induced motions are calculated and their corresponding time series generated,
the aeroelastic response of the WT can be calculated during sailing. A simulation time of 30 min
is selected, since it is known that stable values are obtained after 20 min. The WT is discretized
into 95 sections, 23 for the tower and 24 for each blade. Further information regarding the WT
model is found in previous Chapter 3.
The next table summarizes the inputs requires for the WT aeroelastic program.
Wind Turbine data
Siemens WT 2.3 MW B45 63.84.

Discretization: 95 sections (23 for the


tower and 24 for each blade)

Pitched regulated WT

Pitch Angle, parked

Mode Shapes, using static deflection shape

Blade: mode shapes for the first flap,


first edge, and second flapwise.

method (see Appendix C)

(deg)

82

Tower: mode shapes of the two


directions of bending, i.e. SB-PS and
fore-aft.

Angles. Turbine operation


Yaw

(deg)

Tilt

(deg)

Cone

(deg)

Wing

(deg)

180

Wind Turbine operational parameters


Wind shear amount
Density

(kg/m )

0.11

Tower passage effect considered

1.225

Gravity

(m/s2)

9.81

(sec)

0.03

Simulation Time
Max Time

(sec)

1800

Time increment (dt)

Wind Speed
Mean Wind Vel.

(m/s)

2.1

3.6

58

5.7

8.8

11.3

14.4

Chapter 6 Sea Transport Analysis

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

Table 6.2 Required inputs for the WT program

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

Smoothed simulated spectrum


0

10

-5

10

-4

10

-3

10

-2

-1

10
10
10
Spectrum Frequencies, f

Kaimal Spectrum

10

10

Simulated Spectrum

Figure 6.8 Comparison between Kaimal spectrum and 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

Sea Transport Analysis of Upright Wind Turbines

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

Wind Speed (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

Mean Wind Vel .(m/s)

2.1

3.6

5.7

Hs = 2 m

Mean Wind Vel .(m/s)

2.1

3.6

5.7

8.8

11.3

Hs = 3 m

Mean Wind Vel .(m/s)

5.7

8.8

11.3

14.4

Hs = 4 m

Mean Wind Vel .(m/s)

8.8

11.3

14.4

Hs = 5 m

Mean Wind Vel .(m/s)

11.3

14.4

Table 6.3 Sea transport simulations

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

Chapter 6 Sea Transport Analysis

0.6
0.4

aL Nacelle (m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

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

Table 6.4 MPL of the longitudinal accelerations at the nacelle

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

Sea Transport Analysis of Upright Wind Turbines

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

Sea Transport Analysis of Upright Wind Turbines

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

Sea Transport Analysis of Upright Wind Turbines

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

Sea Transport Analysis of Upright Wind Turbines

[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

Appendix A List of Offshore Wind Farms

Chapter Appendixes
A. APPENDIX. LIST OF OFFSHORE WIND FARMS
Table of Contents
A.

Appendix. List of Offshore Wind Farms......................................................................... 67


A.1

Wind Farms in Operation ........................................................................................ 67

A.2

Wind Farms under construction .............................................................................. 69

A.3

Proposed Wind Farms .............................................................................................. 70

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])

A.1 Wind Farms in Operation


Wind farm
Alpha Ventus

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

Barrow Off. Wind

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

5 x NEG Micon 550 kW

1998

67

Sea Transport Analysis of Upright Wind Turbines

Burbo Bank

90

UK

25 x Siemens 3.6-107

2007

Egmond aan Zee

108

Netherlands

36 x Vestas V90-3MW

2006

Frederikshavn

10.6

Denmark

2 x Vestas, 1 x Bonus and

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

91 x Siemens SWP 2.3-93

2009

Irene Vorrink

16.8

Netherlands

28 x NEG Micon 600 kW

1996

Kemi Ajos I + II

30

Finland

10 x WinWinD 3MW

2008

Kentish Flats

90

UK

30 x Vestas V90-3MW

2005

Lely

Netherlands

4 x NEG Micon 500 kW

1994

Lillgrund

110

Sweden

48 x Siemens 2.3MW

2007

Lynn and Inner


Dowsing

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

Nysted Wind Farm

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

Appendix A List of Offshore Wind Farms

1750 MW

Total

8 countries

728 WTs

1991-2009

Table A.1 Wind farms in operation (Updated to Sep 2009)

A.2 Wind Farms under construction


Wind farm

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

140 x Siemens 3.6-107

2011

Gunfleet Sands I+II

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

100 x Vestas V90-3MW

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

Sea Transport Analysis of Upright Wind Turbines

A.3 Proposed Wind Farms


Wind farm

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

Gode Wind Farm

800

Germany

Great Lakes Array

1600

Canada

Gwynt Mr

750

UK

Innogy Nordsee I

960

Germany

Korsnas

600

Finland

Liepaja Offshore

900

Latvia

Lincs Wind Farm

250

UK

London Array

1000

UK

Neart Na Gaoithe

420

UK

Oriel Wind Farm

330

Ireland

Race bank Wind


Farm

620

UK

70

N. Turbines x model

Year.

Appendix A List of Offshore Wind Farms

Shell Flat

180

UK

Superior Array

650

Canada

Trillium Power I

710

Canada

Trillium Power II

740

Canada

Triton Knoll Wind


Farm

1200

UK

Walney Wind Farm

450

UK

Wasatch Wind

4400

Canada/USA

West Duddon
Wind Farm

500

UK

22000 MW

8 countries

Total

Table A.3 Proposed Offshore Wind Farms (Updated Jan. 2009)

71

Sea Transport Analysis of Upright Wind Turbines

B. APPENDIX. SHIP BASIC THEORY


Table of Contents
B.

Appendix. Ship basic theory ............................................................................................. 72


B.1

Introduction ............................................................................................................... 72

B.2

Linear Equation of Motion in Regular Waves ....................................................... 73

B.3

Description of ship motions using closed-form expressions .................................. 75

B.4

Description of the expressions for the displacement, velocities and accelerations

of the cargo............................................................................................................................. 81
B.5

Description of short terms predictions .................................................................... 83

B.6

Assumptions in the method ...................................................................................... 87

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

Appendix B Ship Basic Theory

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.

B.2 Linear Equation of Motion in Regular Waves


The ship motion is described by a combination of three linear and three angular displacements.
These displacements are defined using right handed axis system. The table below shows these
displacements with their notation and units:
Motion

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

Table B.1. General Ship Displacements

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:

&& + b44 & + c44


a 42 &s& + b42 s& + (I 44 + a44 )
+ a46 && + b46 & + c46 = Fwave4 sin t + Total

(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

Sea Transport Analysis of Upright Wind Turbines

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:

Heave : w(t ) = a w ( ) cos t + Total ( )

Pitch : (t ) = a ( ) cos t

w
Total
+

( )

(B.2)

Roll : (t ) = a ( ) cos t + Total ( )

The response amlitudes are named also frequency response functions. By introducing a
complex representation into the solutions yields a relationship between the response amplitudes

R and the complex transfer functions KR( ):


Heave : w ( ) = K w ( )
Pitch : ( ) = K ( )
Roll :

( ) = 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

Appendix B Ship Basic Theory

B.3 Description of ship motions using closed-form


expressions
Closed-form semi-analytical expressions for the frequency response functions for the heave,
pitch and roll of monohull ships are employed based on the equations derived in Jensen et al.
[17]

. This simple method uses a few inputs:

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 forward speed (V) and the heading angle ().

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

C 44 && + B44 & + C 44 = M


2

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)

Sea Transport Analysis of Upright Wind Turbines

It is referred to Jensen et al.

[17]

for further information about the method and its expressions.

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)

where A is defined as the sectional hydrodynamic damping through the approximation:


1

A = 2 sin kB 2 exp( kT 2 )
2

(B.8)

The parameter is defined in term of the Froude number Fn = V

gL as:

= 1 Fn kL cos

(B.9)

The forcing functions are given by:


F = f

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)

where k e = k cos is the effective wave number and


f =

(1 kT )

A2
+
kB 3

(B.11)

The Smith correction factor 1 is approximated by


= exp ( kT )

(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

Appendix B Ship Basic Theory

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)

Therefore the total hydrodynamic damping is calculated as


B44 = B44 _ inv + B44 _ visc = B44 _ inv + B44 _ cr

(B.15)

where is the specified percentage of the critical damping.


The inviscid damping B44_inv is given by

B44 _ inv = Lb44 ,0 + ~ 2 (1 )

(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

Sea Transport Analysis of Upright Wind Turbines

b44 ,0 =

A0 B0 2
B0
2g

a(B0 / T ) exp b(B0 / T ) 1.3 d (B0 / T )

(B.18)

b44 ,1 =

A1 B1
B1
2g

a(B1 / T ) exp b(B1 / T ) 1.3 d (B1 / T )

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]

a(B / T ) = 0.256 B 0.286

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

Appendix B Ship Basic Theory

[Rectangular Section Approximation for beams]

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)

Finally, the excitation moment M is found


M = sin

g 2 2
ke

b44 ,0 sin 2 (0.5Lk e ) + ~ 2 sin 2 (0.5(1 )Lk e )

(B.21)

+ 2 ~ sin(0.5Lk e ) sin(0.5(1 )Lk e ) cos(0.5Lk e )}

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

Sea Transport Analysis of Upright Wind Turbines

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

Appendix B Ship Basic Theory

E = b44 ,0 {sin(kL cos ) + 2 ~ cos(0.5(1 + )kL cos ) sin(0.5(1 + )kL cos )}


[cos(kL cos ) 1] +

H = b44 ,0 ~

2 sin(0.5(1 + )kL cos ) sin(0.5( 1)kL cos )

(B.26)

B.4 Description of the expressions for the displacement,


velocities and accelerations of the cargo
The frequency response functions for displacements, velocities, and accelerations induced by
the ship motion can be calculated at any position based on the frequency response functions for
heave, pitch and roll for any type of vessel. These positions must be referred to the center of
gravity of the system, COG.
The expression for the frequency response function for the vertical motion is explained in
Jensen et al.[17], however; this expression only considers heave and pitch, since it is only given
for any position at the center line (CL). In order to consider any position on the ship, a new
expression must be derived. This expression considers heave, pitch and roll as well as the phase
angles. The longitudinal, transverse and vertical displacements are found as:
Longitudinal Disp. : u L = z 0 = z 0 a ( ) cos t + Total ( )

Transverse Disp. : u T = z 0 = z 0 a ( ) cos t + Total ( )

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

Sea Transport Analysis of Upright Wind Turbines

Longitudinal Disp. :
u L = z 0 a ( ) cos t + Total ( ) = a U L ( ) cos t + Total ( )

Transverse Disp. :

u T = z 0 a ( ) cos t + Total ( ) = a UT ( ) cos t + Total ( )

Vertical Disp. :

(B.28)

uV = a w ( ) cos t + Total ( )
w

x0 a ( ) cos t + Total ( )

+ y 0 a ( ) cos t + Total ( ) = a UV ( ) 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)

+ 2 y0 w ( ) ( ) cos Total ( ) Total ( )


w

UV =
2 x0 w ( ) ( ) cos Total ( ) Total ( )

2 x0 y 0 ( ) ( ) cos Total ( ) Total ( )

[m m]

The expressions for the frequency response functions for the velocities and accelerations are
straight forward:

82

Appendix B Ship Basic Theory

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)

B.5 Description of short terms predictions


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
well-known as 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 surface elevation in the open sea during a short period of time can be consider as a
Stationary Stochastic Process with a probability distribution close to a normal or Gaussian
distribution and a relatively narrow-banded spectral density, i.e. zero mean and variance equal

to S ( )d . This Gaussian process is completely described by the spectral density S() often
0

called Wave Spectrum (Jensen 2001, 43-94 Ref. [16]).


The limited time lies on the interval between half hour and a maximum of ten hours. In the
literature, this is often referred to as a short-term description of the sea (Faltinsen 1995, 23 Ref.
[9]). The limited time is normally set to three hours.
The 17th ITTC recommended the JONSWAP wave spectrum (Joint North Sea WAve Project)
(Faltinsen 1995, 25 Ref. [9]). This wave spectrum is also used in Jensen et al.[17], formulated as
function of wave frequency, the significant wave height HS, the mean period TS and the peak
enhancement factor .
Thus, the generalized JONSWAP wave spectrum is calculated as:

83

Sea Transport Analysis of Upright Wind Turbines

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)

where SPM(,HS,TS) is the Pierson-Moskowitch wave spectrum


4

S PM (, H S ,TS ) = 173 H 2 TS (TS )5 e 692(TS )


S

(B.33)

The coefficients F1 and F2 depend linearly on as shown below:


1 2 : F1 = 0.24 + 0.76 ; F2 = 0.05 + 1.05
2 3 : F1 = 0.22 + 0.80; F2 = 0.02 + 0.99
3 4 : F1 = 0.20 + 0.86 ; F2 = 0.02 + 0.99
4 5 : F1 = 0.20 + 0.86 ; F2 = 0.01 + 0.99

(B.34)

4 5 : F1 = 0.20 + 0.86 ; F2 = 0.01 + 0.95


5 6 : F1 = 0.18 + 0.96 ; F2 = 0.01 + 0.95

whereas
= 0.07

if 0.206 F2TS 1

= 0.09

if 0.206 F2TS > 1

(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

relation is appropriated (Ref. [17]):


TS = TZ

(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

Appendix B Ship Basic Theory

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)

The spreading function f() must satisfy

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)

Thereby, the standard deviation R of a linear wave-induced response R for a short-crested


seaway is given as:

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

Sea Transport Analysis of Upright Wind Turbines

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

Appendix B Ship Basic Theory

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

Figure B.2 Terminology for short-crested seaways

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.

B.6 Assumptions in the method


The frequency response functions are derived analytically by the linear strip theory due to the
following assumptions:

The vessel is described by a barge approximation. The vessel is considered


homogeneously loaded box-shaped vessel and the amidship coincides with the center of
gravity (COG). Due to this barge approximation, there is a fore/aft symmetry that
implies zero pitch in beam seas, and a starboard/port symmetry that yields zero roll in
head seas.

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.

The heave and pitch are 90 out of phase.

A constant sectional added mass is equaled to the displaced water in the responses for
heave and pitch.
87

Sea Transport Analysis of Upright Wind Turbines

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.

A cosine expression is used as spreading function, neglecting those waves generated


opposite to the wind direction, i.e. out of the interval

2 , 2] .

Primary wave direction is aligned to the wind direction.

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

Appendix C Wind Turbine Theory

C.APPENDIX. WIND TURBINE THEORY


Table of Contents
C.

Appendix. Wind Turbine Theory .................................................................................... 89


C.1

Introduction ............................................................................................................... 89

C.2

Aerodynamic WT Model Theory ............................................................................. 90

C.3

Description of the estimation of Mode Shapes........................................................ 94

C.4

Considerations in the Runge-Kutta-Nystrm time integration scheme ............... 98

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

Sea Transport Analysis of Upright Wind Turbines

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]).

Figure C.1 Scheme of WT aeroelastic model

C.2

Aerodynamic WT Model Theory

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

Appendix C Wind Turbine Theory

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.

With permission from the Author (Ref. [11])

Figure C.2. Wind Turbine Blade

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

Sea Transport Analysis of Upright Wind Turbines

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

With permission from the Author (Ref. [11])

Figure C.3 Velocity triangle seen locally on a blade section

From the figure, the relative velocity forms an angle with the plane of rotation called flow angle

and it can be easily calculated as:


Vrel z
Vrel y

= 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

Appendix C Wind Turbine Theory

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

Sea Transport Analysis of Upright Wind Turbines

C.3 Description of the estimation of Mode Shapes


A method to obtain the mode shapes is presented. It is focused on the WT blades; note that the
same method can be applied for the tower.
A WT blade is a long slender structure that can be modeled as a cantilever beam with good
results. If the distribution of bending stiffness ( EI 1 and EI 2 ), twist , structural twist (referred
to first principal axis), and mass along the blade are known and it is assumed that the blade is
stiff in length direction and in torsion, the static deflection shape can be calculated. A method of
calculating the eigenmodes for the blades is available (Ref. [36]); however, if only the first 2-3
modes are needed, as it is the case of this project, a simpler iterative method can be employed
by using equations of bending moments and deflections from simple beam theory as explained
next.
Figure C.4 shows a sketch of an airfoil and the orientation of the principal axis.
2nd Principal Axis

Chord Line
Y

Blade Tip

1st Principal Axis

Figure C.4 Orientation of principal axis

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

Appendix C Wind Turbine Theory

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)

Therefore, the equations (C.12) and become:


dT y

= 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

Sea Transport Analysis of Upright Wind Turbines

2 =

p z (x N )
m( x N )u y ( x N )

(C.17)

and a new loading is computed for all discrete points as


p y ( xi ) = m(xi ) 2

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

Appendix C Wind Turbine Theory

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

Figure C.5 Pitched mode shapes

If the blade is pitched an angle p, the mode shapes take the expression

97

Sea Transport Analysis of Upright Wind Turbines

u ky ,R ( x ) = u zk,b (x ) sin p + u ky ,b (x ) cos p

(C.26)

u zk,R ( x ) = u zk,b (x ) cos p u ky ,b ( x ) sin p

(C.27)

C.4 Considerations in the Runge-Kutta-Nystrm time


integration scheme
The Runge-Kutta-Nystrm time integration scheme is selected to solve the equation of motion
as recommended method by Ref. [36]. Knowing the deflections GX , and the velocities GX& the
equation of motion can be solved for the accelerations as:

) (

GX&& = GM 1 GFg GC GX& GK GX = g GFg , GX , GX& , GM , GK , GC

(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)

and the final update:


1

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

Appendix D Generalized Terms

D. APPENDIX. GENERALIZED TERMS


Table of Contents
D.

Appendix. Generalized terms ........................................................................................... 99


D.1

Generalized Force Terms ......................................................................................... 99

D.2

Generalized Mass Terms ........................................................................................ 104

D.3

Generalized Stiffness Terms ................................................................................... 111

D.4

Generalized Damping Terms ................................................................................. 114

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

xt1 { Tower first mode in the lateral direction (SB - PS)}

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}

GX = x1blf2 { Blade 2, first flapwise}

x bl 2 { Blade 2, first edgewise}

1e

x bl 2 { Blade 2, second flapwise}

2f

bl 3

x1 f { Blade 3, first flapwise}

x1ble3 { Blade 3, first edgewise}

x 2blf3 { Blade 3, second flapwise}

The generalized terms include generalized forces, mass, stiffness, and damping terms.

D.1 Generalized Force Terms


The generalized force is found by the principle of virtual works (PVW) as the work done by
the external forces for a displacement of one of the generalized coordinates keeping the others
zero (Hansen 2008, 132 Ref. [11]). The external forces must be calculated including any
contributions from any inertia loads from centrifugal, coriolis and gyroscopic accelerations;

99

Sea Transport Analysis of Upright Wind Turbines

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

external loads are applied.


3. Finally, GFi is obtained as the work of the external loads P subjected to the shape function
ui (scalar product), both in the same coordinate system:
L

GFi gxi = 0 P1 u i + P 2 u i + etc.


----- GF1 -----

1. xt1 = 1;
2. Shape Functions:

Xt1

0
= 0
z

xp
r

r = yp

X1
Y1
Z1

100

Appendix D Generalized Terms

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

Blade : u blade ( x ) = xt1 u t y (N ) + x p *z = 1 + x p *z

0
0
{

144244

3 14243 traslation 14243


traslation
rotation

(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)

----- GF2 ----1. xt2 = 1;


2. Shape Functions:

xp
r= 0

Xt2

zp

0
= y
0
( y = z )

X1
Z1
Y1

101

Sea Transport Analysis of Upright Wind Turbines

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)

----- GF3 ----1. x1blf1 = 1;


2. Shape Functions:

Blade : u blade ( x ) = x1blf1 u 1 f ( x ) + x1ble1 u 1e ( x ) + x 2blf1 u 2 f (x ) = u 1y f

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.

----- GF4 ----1. x1ble1 = 1;


2. Shape Functions:

102

Appendix D Generalized Terms

bl 1
bl 1
bl 1
1e

Blade : u blade ( x ) = x1 f u 1 f ( x ) + x1e u 1e ( x ) + x 2 f u 2 f (x ) = u y

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.

----- GF5 ----1. x 2blf1 = 1;


2. Shape Functions:
0

Blade : u blade ( x ) = x1blf1 u 1 f ( x ) + x1ble1 u 1e ( x ) + x 2blf1 u 2 f ( x ) = u 2y f

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

Sea Transport Analysis of Upright Wind Turbines

D.2 Generalized Mass Terms


The ith column of the generalized mass matrix is obtained by evaluating the generalized force
from external forces corresponding to inertial forces for a unit acceleration of the ith generalized
coordinate.
The 11x11 generalized mass matrix is given below
GM 1,1
GM
2 ,1

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.

----- First Colum GMi,1 ----1. &x&t 1 = 1 & Inertia Forces.

104

Appendix D Generalized Terms

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

Nacelle : Pnacelle = M nacelle u&&nacelle = M nacelle

(D.15)

----- GM1,1 ----2. xt1 = 1; Generalized Force & Shape Function


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

Blade : u blade ( x ) = xt1 u t y (N ) + x p *z = 1 + x p *z

0
0
{

144244

3 14243 traslation 14243


traslation
rotation

(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

u tower + Pblade u blade + M nacelle


blade

----- GM2,1 ----2. xt2 = 1; Generalized Force & Shape Function

105

(D.17)

Sea Transport Analysis of Upright Wind Turbines

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

u tower + Pblade u blade + M nacelle

(D.19)

blade

----- GM3,1, ----2. x1blf1 = 1; Generalized Force & Shape Function

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

Identical expression are found for GM6,1, and GM9,1.


----- GM4,1 ----2. x1ble1 = 1; Generalized Force & Shape Function
0

Blade : u blade ( x ) = x1blf1 u 1 f ( x ) + x1ble1 u 1e ( x ) + x 2blf1 u 2 f (x ) = u 1ye

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

Identical expression are found for GM7,1, and GM10,1.


----- GM5,1 ----2. x 2blf1 = 1; Generalized Force & Shape Function

106

Appendix D Generalized Terms

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

Identical expressions are found for GM8,1, and GM11,1.

----- Second Colum GMi,2 ----1. &x&t 2 = 1 & Inertia Forces.

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

Nacelle : Pnacelle = M nacelle u&&nacelle = M nacelle


----- GM2,2 ----2. xt2 = 1; Generalized Force & Shape Function

107

(D.26)

Sea Transport Analysis of Upright Wind Turbines

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

u tower + Pblade u blade + M nacelle

(D.28)

blade

----- GM3,2, ----2. x1blf1 = 1; Generalized Force & Shape Function

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

Identical expression are found for GM6,2, and GM9,2.


----- GM4,2 ----2. x1ble1 = 1; Generalized Force & Shape Function
0

Blade : u blade ( x ) = x1blf1 u 1 f ( x ) + x1ble1 u 1e ( x ) + x 2blf1 u 2 f (x ) = u 1ye

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

Identical expression are found for GM7,2, and GM10,2.


----- GM5,2 ----2. x 2blf1 = 1; Generalized Force & Shape Function

108

Appendix D Generalized Terms

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

Identical expressions are found for GM8,2, and GM11,2.

----- Third Colum GMi,3 ----1. &x&1blf1 = 1 & Inertia Forces.

Blade : Pblade ( x )

= mb ( x ) u&&blade ( x ) = mb (x ) u 1y f

u1 f
z

(D.35)

----- GM3,3, ----2. x1blf1 = 1; Generalized Force & Shape Function


0

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

Identical expression are found for GM6,6, and GM9,9.

----- Fourth Colum GMi,4 ----1. &x&1ble1 = 1 & Inertia Forces.


0

Blade : Pblade ( x ) = mb ( x ) u&&blade (x ) = mb (x ) u 1ye

u 1e
z

----- GM4,4 ----2. x1ble1 = 1; Generalized Force & Shape Function

109

(D.38)

Sea Transport Analysis of Upright Wind Turbines

bl 1
bl 1
bl 1
1e

Blade : u blade ( x ) = x1 f u 1 f (x ) + x1e u1e ( x ) + x 2 f u 2 f ( x ) = u y

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

Identical expression are found for GM7,7, and GM10,10.

----- Fifth Colum GMi,5 ----1. &x&2blf1 = 1 & Inertia Forces.


0

Blade : Pblade ( x ) = mb (x ) u&&blade (x ) = mb (x ) u 2y f

u 2 f
z

(D.41)

----- GM5,5 ----2. x 2blf1 = 1; Generalized Force & Shape Function


0

Blade : u blade ( x ) = x1blf1 u 1 f ( x ) + x1ble1 u 1e ( x ) + x 2blf1 u 2 f ( x ) = u 2y f

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

Identical expressions are found for GM8,8, and GM11,11.


The pitch angle is maintained constant during the simulations. Note that the previous
generalized mass expressions depend on the mode shapes for the tower and blades; therefore, if
the mode shapes do not change, the generalized mass terms will not either.

110

Appendix D Generalized Terms

D.3 Generalized Stiffness Terms


Each column of the generalized stiffness matrix is obtained by evaluating the generalized force
necessary to obtain a unit displacement of the particular generalized coordinate.
The 11x11 generalized stiffness matrix is given below
GK 1,1
0

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.

----- First Colum GKi,1 ----1. xt 1 = 1 & External Forces.


ut
Tower : Ptower ( x ) = mt ( x ) t21 u t 1 (x ) = mt (x ) t21 y
0

(D.45)

----- GK1,1 ----2. xt1 = 1; Generalized Force & Shape Function


t

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)

Sea Transport Analysis of Upright Wind Turbines

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)

----- Second Colum GKi,2 ----1. xt 2 = 1 & External Forces.

0
Tower : Ptower ( x ) = mt ( x ) t22 u t 2 (x ) = mt ( x ) t22 t
u
z

(D.48)

----- GM2,2 ----2. xt2 = 1; Generalized Force & Shape Function


ut
Tower : u tower ( x ) = xt 1 u t 1 (x ) + xt 2 u t 2 (x ) = xt 1 y + xt 2
0

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)

----- Third Colum GKi,3 ----1. x1blf1 = 1 & External Forces.

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)

----- GK3,3, ----2. x1blf1 = 1; Generalized Force & Shape Function


0

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

Identical expression are found for GK6,6, and GK9,9.

112

= 2 GM
1f
1f

(D.53)

Appendix D Generalized Terms

----- Fourth Colum GKi,4 ----1. x1ble1 = 1 & External Forces.


0

2
2 1e
Blade : Pblade ( x ) = mb (x ) 1e u1e (x ) = mb (x ) 1e u y

u 1e
z

(D.54)

----- GM4,4 ----2. x1ble1 = 1; Generalized Force & Shape Function


0

Blade : u blade ( x ) = x1blf1 u 1 f (x ) + x1ble1 u1e ( x ) + x 2blf1 u 2 f ( x ) = u 1ye

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

GK 4 ,4 = Pblade u blade = 1e u y mb ( x ) u y = 12e GM 1e

blade
blade
u 1e
u 1e
z
z

(D.56)

Identical expression are found for GK7,7, and GK10,10.

----- Fifth Colum GKi,5 ----1. x 2blf1 = 1 & External Forces.


0

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)

----- GM5,5 ----2. x 2blf1 = 1; Generalized Force & Shape Function


0

Blade : u blade ( x ) = x1blf1 u 1 f ( x ) + x1ble1 u 1e ( x ) + x 2blf1 u 2 f ( x ) = u 2y f

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

Sea Transport Analysis of Upright Wind Turbines

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)

Identical expressions are found for GK8,8, and GK11,11.


The same reasoning is applied as in the generalized mass terms. The generalized stiffness terms
are constant if the pitch angle does not vary.

D.4 Generalized Damping Terms


Each column of the generalized damping matrix is obtained by evaluating the generalized force
necessary to obtain a unit velocity of the particular generalized coordinate.
Similar procedure is thereby applied. The logarithmic decrement associated with each mode
shape is included. The 11x11 generalized damping matrix is given below
GC1,1
0

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

Note that GC 3 ,3 = GC6 ,6 = GC 9 ,9 ; GC 4 ,4 = GC7 ,7 = GC10 ,10 ; and GC 5 ,5 = GC 8 ,8 = GC11,11

114

Appendix E Roll Period Calculations

E.APPENDIX. ROLL PERIOD CALCULATIONS


Table of Contents
E.

Appendix. Roll period calculations ................................................................................ 115


E.1

Description of Roll Period Calculations ................................................................ 115

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.

E.1 Description of Roll Period Calculations


Once the WT-configuration is selected, WT data such as weight , COG, and mass moment of
inertia I must be given. Note that the WT must be referred to the APP. The lightship, ballast and
fuel are also considered. The COG of the system is calculated by:
COG x =
COG y =
COG z =

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

Sea Transport Analysis of Upright Wind Turbines

(
)
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)

By definition, the roll period is calculated as follows:

TN =

2 kxxeTot

(E.6)

g GM t

A roll period of 60.56 sec is found for the selected configuration.

116

Appendix F Hydrostatic stability

F. APPENDIX. HYDROSTATIC STABILITY


Table of Contents
F.

Appendix. Hydrostatic Stability..................................................................................... 117


F.1

Results of hydrostatic stability of Viking Barge ................................................... 118

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

Sea Transport Analysis of Upright Wind Turbines

F.1 Results of hydrostatic stability of Viking Barge


Condition

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

Fuel Tank Full

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

Table F.1 Case: Typical ballast condition (empty deck)

3.5

Rightling lever, GZ

3
2.5
2
1.5
1
0.5
0

6
Angle (deg)

10

12

With permission from Siemens Wind Power A/S

Figure F.1 GZ Curve: Case Typical ballast condition (empty deck)

118

Appendix F Hydrostatic stability

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

Fuel Tank Full

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

Table F.2 Case: High module on deck, arrival

2.5

Rightling lever, GZ

1.5

0.5

6
8
Angle (deg)

10

12

14

With permission from Siemens Wind Power A/S

Figure F.2 GZ Curve: Case Case: High module on deck, arrival

119

Sea Transport Analysis of Upright Wind Turbines

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

Fuel Tank Full

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

Table F.3 Case: Medium high module on deck, arrival

1.6
1.4

Rightling lever, GZ

1.2
1
0.8
0.6
0.4
0.2
0

4
6
Angle (deg)

10

With permission from Siemens Wind Power A/S

Figure F.3 GZ Curve: Case Medium high module on deck, arrival

120

Appendix F Hydrostatic stability

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

Fuel Tank Full

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

Table F.4 Case: Large module on deck, arrival

2.5

Rightling lever, GZ

1.5

0.5

6
8
Angle (deg)

10

12

14

With permission from Siemens Wind Power A/S

Figure F.4 GZ Curve: Case Large module on deck, arrival

121

Sea Transport Analysis of Upright Wind Turbines

G. RESULTS OF THE MODEL VALIDATION


Table of Contents
G. Results of the Model Validation ..................................................................................... 122
G.1

Barge Program Validation ..................................................................................... 125

G.1.1

Results of Jensen et al.s vessels ....................................................................... 126

G.1.2

Results of Viking Barge .................................................................................... 132

G.1.3

Time Series Validation ...................................................................................... 150

G.2

Sea Transport Program (WT) Validation ............................................................. 151

G.2.1

Blade natural frequencies and mode shapes ...................................................... 151

G.2.2

Visual checks for the shapes functions.............................................................. 152

G.2.3

Comparisons with Siemens BHawC software ................................................. 154

G.3

Conclusions of the WT/Barge model validation ................................................... 183

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

Appendix G Results of the model validation

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

Sea Transport Analysis of Upright Wind Turbines

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

Appendix G Results of the model validation

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.

G.1 Barge Program Validation


In this section, the barge model program is validated. This section has been split up into three
parts:
(i) Subsection G.1.1 presents a comparison of the frequency response function (FRF)
calculations with respect Jensen et al.[17].
(ii) Subsection G.1.2 describes a comparison with the seakeeping analysis of Viking Barge by
Vuyk Engineering Rotterdam (Ref [34]); FRF calculations and the most probable largest value
(MPL) calculations of the program are thus compared with those by Vuyk Engineering
Rotterdam (Vuyk E.R.).
125

Sea Transport Analysis of Upright Wind Turbines

(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.

G.1.1 Results of Jensen et al.s vessels


Jensen et al.[17] contains the cornerstone of the barge program, i.e. the description of the method
used to calculate the ship motion, and cargo displacement and accelerations. The simplified
method is compared with experimental results from model tests and various strip theory
calculations for four different vessels. For convenience, only one of them, fast ferry TMV114, is
described here.
Jensen et al.

[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 heave response is too small for L > 1 .

The pitch response is too large around L = 1 for Froude numbers larger than 0.2.

Roll is too large around the resonance frequency.

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

Appendix G Results of the model validation

Ship Main Dimensions


L

(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

Table G.1 Fast Ferry TMV114 Specifications

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

Sea Transport Analysis of Upright Wind Turbines

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

Appendix G Results of the model validation

(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

Sea Transport Analysis of Upright Wind Turbines

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

With permission from the Author (Ref.[17])

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

Appendix G Results of the model validation

= 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

Sea Transport Analysis of Upright Wind Turbines

G.1.2 Results of Viking Barge


A motion analysis of Wind Turbine Generator Transport of Viking Barge is provided by Vuyk
E.R. (Ref. [34]). Firstly, the FRFs of the ship motions are calculated by the barge program;
these FRFs of the heave, pitch and roll are thus compared with those by Vuyk E.R.
Then, the irregular motions at the COG and irregular accelerations are described. These
irregular responses are presented by significant and maximum values. Vuyk E.R. described this
maximum to the maximum in 1000 oscillations and is a factor 1.86 higher than the significant
value (Ref. [34]). So that, the MPLs for the heave, the roll and pitch, as well as the
longitudinal, transverse, and vertical accelerations of the cargo by the barge program are
calculated and compared with those by Vuyk E.R.
Note that Vuyk E.R. use a sophisticated software; they calculate the motions by using both 3D
diffraction software AQUA as well as the 2D-strip theory program OCTOPUS Seaway (for part
of the points). The reason to perform the 2D-strip theory program runs is to determine a realistic
damping in the roll response to be added to AQUA, since this program does not include viscous
roll damping. The tuning of the damping was done for beam seas since this is the governing
direction in the roll and transverse acceleration responses.
It is noted that it is included the g*sin() component for the transverse and longitudinal of the
cargo, taking the proper phases into account. The barge program does not include this term..
Table G.2 shows Viking barge specifications provided by Vuyk E.R. It is noted that some of
them were determined by using simple general formulas for ship design as explained next.
Ship Main Dimensions

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

Table G.2 Viking barge Specifications

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

Appendix G Results of the model validation

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)

thus, a GMT value of 14.639 is found.


This vessel is loaded with 6 complete wind turbines broken up into different components
stowed into containers. Thus, the towers are split into two pieces: upper and lower tower, the
nacelles, the hubs, and blades stowed in two containers with a capacity for 9 blades each.
Figure G.5 below shows a sketch of the cargo positions stowed on Viking Barge provided by
Siemens Wind Power A/S.

With permission from Siemens Wind Power A/S

Figure G.5 Cargo Positions stowed on Viking Barge.

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

Sea Transport Analysis of Upright Wind Turbines

of wave energy spreading in the short-crested calculations. An additional damping of 2% of


critical damping, and zero wave energy of spreading are found to approximate the results by
Vuyk E.R.
General data
Additional damping (%critical damping)
Amount wave energy spread. (sweep)
Forward Speed V

2
0 deg.
0 kn

JONSWAP Wave Spectrum.

= 3.3

Energy Spreading

cos4

Time Frame

Series of Headings

Series of Zero-upcrossing Periods

FRFs

series of headings with ~9 of


increment step.

MPLs

0, 45, 65, 90, 115, 135, 180, 225,


245, 270, 295, 315

Item

3 hours

Tz
(sec)

4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5,


10, 13.
DNV Guidelines: Recommendation 5 to
13 sec

Cargo Positions

COG (m) (rel. to AP)


X

Upper Tower 1 COG

4.79

-3.49

23.70

Lower Tower 1 COG

4.79

-9.81

17.25

Upper Tower 6 COG

61.50

-3.49

23.70

Lower Tower 6 COG

61.50

-9.81

17.25

Blade Container 1 COG

18.07

10.80

12.16

Blade Container 2 COG

73.33

10.80

12.16

Blade Container 1 Outer Low. blade Tip

-19.50

14.20

8.20

Table G.3 Viking Barge data for calculations

134

Appendix G Results of the model validation

Frequency Response Functions (FRFs) of Viking Barge


The FRFs of the heave, pitch, and roll are compared to those given by Vuyk E.R. It is noted that the figures showing Vuyk E.R results are directly taken from their original
paper (Ref. [34]). The legend figures are thereby unaltered. Their notation Spectrum 1 refers to following sea or stern sea; Spectrum 3 corresponds to starboard stern
quartering sea; while Spectrum 5 refers to beam sea, an attached legend for these figures is provided to clarify reading the figures.
Figure G.6 shows the comparison between the FRFs of the heave. It is seen that the heave FRF variation with frequency by the barge program undergoes similar response
than this given by Vuyk E.R. An exception is found for beam sea, where the heave is somewhat overestimated with a peak value of 1.21 around 5 sec. In beam conditions,
Vuyk E.R. also predict a dynamic amplification of the heave response; but in this case, the peak is found at around 8 sec.
It is noted that Jensen et al.[17] already stated that the heave response was overestimated for some vessels in beam sea conditions. Therefore, it must be taken into account
this limitation as regards the heave response in beam sea.
For pitch, the results from the barge program and Vuyk E.R.s are given in Figure G.7. The variation with frequency is again well captured. However, the peak values are
somewhat underestimated. It was also checked in previous sections that when the new expression of the Smith correction factor is included, this yields smaller responses. It
is seen that the pitch response presents higher values in following sea, whilst Vuyk E.Rs does in starboard stern quartering sea. However, the differences are small
between this two sea states.
Comparisons with the roll response are given in Figure G.8. Vuyk E.R. explains in their report that an additional damping is included by using the 2D-strip theory program
OCTOPUS. Nevertheless, they do not say explicitly what value they are finally using. An additional damping of 2 % critical damping is used to calculate the roll response.
A fairly good agreement is found with respect to the variation of frequency. Although, the peaks are somewhat overestimated. In this case, both Vuyk E.Rs response and
the barge programs response present the highest response in beam sea.

135

Sea Transport Analysis of Upright Wind Turbines

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

Figure G.6 Heave Frequency Response Functions Comparison of Viking Barge


Left: Barge program results
Right: Vuyk E.R. results

136

= 45

= 90

Appendix G Results of the model validation

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

Figure G.7 Pitch Frequency Response Functions Comparison of Viking Barge


Left: Barge program results
Right: Vuyk E.R. results

137

= 45

Sea Transport Analysis of Upright Wind Turbines

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

Figure G.8 Roll Frequency Response Functions Comparison of Viking Barge


Left: Barge program results
Right: Vuyk E.R. results

138

= 90

Appendix G Results of the model validation

Most Probable Largest Value (MPLs) of Viking Barge


The MPLs of Viking Barge calculated using the barge program are compared to those given by Vuyk E.R.. A JONSWAP wave spectrum with energy spreading of cos4 is
used for a range of wave periods and 3.5 m of significant wave height. Vuyk E.R. state that the irregular responses have been calculated for 40 headings in the range of 0
deg. to 360 deg. But only 12 headings are presented in their report (Ref. [34]). It is assumed that they have not used any degree of wave energy spreading. Therefore, it
has been employed zero deg. of sweep angle or amount of wave energy spreading. All the results are presented in six wave directions: = 0, 45, 115, 225, 295, and 270.
The results of the MPLs of the heave, pitch and roll are compared in Figure G.9, Figure G.10, and Figure G.11 respectively, with the results taken from Vuyk E.R. The
results are conducted for a range of headings with respect to the variation with zero-upcrossing period. The following table summarizes the peak values in a sea state of 3.5
m of the MPL ship motions.
Motions

Barge Program

Vuyk Engineering Rotterdam

COG

TZ

COG

MPL heave (m)

3.111

90,270

> 9 sec.

3.200

90

MPL pitch (deg)

4,502

0,180

7.5 sec.

5.200

45

6.5 sec.

MPL roll (deg)

20.91

90,270

6 sec.

26.900

90

6 sec.

TZ
> 9 sec.

Table G.4 Comparison between MPLs of Viking barge at COG


3 hours-time frame. Hs = 3.5 m. Additional damping = 2 % Critical damping. Zero deg of amount of wave energy spreading.

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

Sea Transport Analysis of Upright Wind Turbines

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

With permission from Siemens Wind Power A/S

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

Appendix G Results of the model validation

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

With permission from Siemens Wind Power A/S

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

Sea Transport Analysis of Upright Wind Turbines

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

With permission from Siemens Wind Power A/S

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

Appendix G Results of the model validation

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

Sea Transport Analysis of Upright Wind Turbines

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

With permission from Siemens Wind Power A/S

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

Appendix G Results of the model validation

12

10

MPLaT (m/s 2)

10

11

12

13

Tz (s)

= 0

= 45,225

= 270

= 115,295

With permission from Siemens Wind Power A/S

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

Sea Transport Analysis of Upright Wind Turbines

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

With permission from Siemens Wind Power A/S

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

Appendix G Results of the model validation

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

Sea Transport Analysis of Upright Wind Turbines

MPLaV (m/s2)

10

11

12

13

Tz (s)

= 0

= 45

= 270

= 295

With permission from Siemens Wind Power A/S

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

Appendix G Results of the model validation

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

Vuyk Engineering Rotterdam

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

Sea Transport Analysis of Upright Wind Turbines

G.1.3 Time Series Validation


This last section takes care of the last module in the barge program, i.e. the generation of time
series for the wave-induced motions. Recalling, the spectrum for each response, i.e.: heave,
pitch, roll, and displacements, velocities and accelerations of the cargo, is calculated. The
spectrum is used to calculate the Fourier transform, generated as complex Gaussian. Then, the
inverse of the Fourier transform is used to generate the time series. A simple way to check this
procedure is to obtain the spectrum response from the time series. This spectrum is called
simulated spectrum and must match with the former spectrum response. Here, only the pitch
response is selected to show that the procedure is correct. Note that the time series procedure is
identical for any other response.
For convenience, the Viking barge vessel is selected with the cargo of unassembled WTs used
in the previous section G.1.2 as the scenario. The figure below shows the comparison between
the pitch spectrum response and the simulated spectrum from the time series of the pitch. A
good agreement is found.

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)

Pitch spectrum response

Simulated spectrum

Figure G.16 Comparison between pitch spectrums.


(Hs = 3.5 m. Tz = 4.5 sec)

Therefore, the procedure to obtain the time series for the wave-induced motions is consistent.

150

Chapter 5 Model Validation

G.2 Sea Transport Program (WT) Validation


The WT model must be validated before performing sea transport analyses. In the previous
section, the barge motion program was validated by comparing the results with reference cases.
In this section, the different parts of the WT program are checked. First the natural frequencies
and mode shapes are checked; the natural frequencies are compared with those given by
Siemenss data. Simple visual checks of the shapes functions are also given to check that the
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). The aerodynamic model and
structural model are finally validated by comparisons with the results from Siemens BHawC
software.

G.2.1 Blade natural frequencies and mode shapes


In Appendix C section C.3, the method employed to obtain the natural frequencies and mode
shapes was introduced. A simple iterative numerical algorithm can be applied to estimate the
first three modes and their associated natural frequencies. Table G.6 shows the comparison
between the mode frequencies and those given by Siemens Wind Power A/S.
First Flapwise

First Edgewise

Second Flapwise

Static Deflection Method

0.792 Hz.

1.206 Hz.

2.259 Hz.

Siemens Wind Power

0.770 Hz.

1.208 Hz.

2.086 Hz.

Table G.6. Mode Frequencies Comparison

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

Sea Transport Analysis of Upright Wind Turbines

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

Figure G.17 Blade Mode Shapes

G.2.2 Visual checks for the shapes functions


The shape functions are tested by simple visual checks. If the tower deflects, the rotor experiences a translation and a rotation, i.e. rigid body motions from the tower top. If
the blade is aligned with the tower, when the tower deflects in the SB-PS direction, this blade must be tangent to the tower top. On the other hand, when the tower deflects
in the fore-aft direction, the shaft must be perpendicular to the tower top, and the rotor must be also perpendicular to the shaft. Note that in this case the WT has zero cone
and tilt angles.

152

Appendix G Results of the model validation

100

100

80

80

60

60

40

40

20

20
0

0
- Starboard-Port side Direction -

- Fore-Aft Direction Deformed

Undeformed

Figure G.18 Shape function visual checks

In the next sections, the WT model is tested by comparing different load cases with the results by Siemens BHawC code.

153

Sea Transport Analysis of Upright Wind Turbines

G.2.3 Comparisons with Siemens BHawC software


Here, the aeroelastic model is finally validated. Three main cases are performed and compared
with the results given by Siemenss BHawC code: (i) only wind speed, (ii) only longitudinal
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 to provide steady state values.
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 frequency analyses
and dynamic simulations in the time domain. The WT structural model in BHawC is modeled
by use of the fully geometrical non-linear co-rotational 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.
Case 1: Only Wind Speed
Firstly, the WT is only subjected to wind loads; gravitational or any other external loads are set
to zero. A wind speed of 15 m/s coming perpendicular to the WT is selected. The wind is
aligned with the longitudinal z axis (i.e. fore-aft direction). The sketch below shows the WT and
the incoming wind speed.
100
80
60
15 m/s

40
20
0
SB - PS
fore - aft
Figure G.19 Wind Shear

154

Appendix G Results of the model validation

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)

Sea Transp. Program

200

240

Siemens BHawC code

Figure G.20 Thrust comparison at the nacelle under 15 m/s.

155

Sea Transport Analysis of Upright Wind Turbines

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

Fore-aft tower top deflection (m)

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)

Sea Transp. Program

200

240

Siemens BHawC code

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

Appendix G Results of the model validation

Sea Transport Program

Siemens BHawC code

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

Tower Displacement (m)

0.046
0.044
0.042
0.04
0.038
0.036
150

160

170

180

190 200
Time (sec)

Sea Transp. Program

210

220

230

240

Siemens BHawC code

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

Sea Transport Analysis of Upright Wind Turbines

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

Siemens BHawC code

Figure G.23 Spectral Analysis of the fore-aft tower top deflections.

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

Appendix G Results of the model validation

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)

Sea Transp. Program

Siemens BHawC code

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

Sea Transport Analysis of Upright Wind Turbines

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)

Sea Transp. Program

Siemens BHawC code

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

Appendix G Results of the model validation

13.8

13.8
Relative Difference = 2.2236 %

Relative Difference = 1.3832 %

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

Mid-span Section (at 30 m)

12.2
12

Tip Section (at 44 m)

12.2

50

100
150
Time (sec)

200

12

240

Sea Transp. Program

50

100
150
Time (sec)

200

240

Siemens BHawC code

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

Sea Transport Analysis of Upright Wind Turbines

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)

Sea Transp. Program

Siemens BHawC code

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

Appendix G Results of the model validation

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)

Sea Transp. Program

Siemens BHawC code

Figure G.28 Edgewise bending moment comparison for each blade at the rotor plane (or hub) under 15 m/s, Pitch 45.

163

Sea Transport Analysis of Upright Wind Turbines

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.

Case 2: Only Harmonic Excitation


The case with only harmonic excitation is now presented. The WT is only subjected to harmonic excitation at the tower top, a sinusoidal load of 30 kN amplitude and 1
rad/s force frequency. The rest of the loads are set to zero, i.e. wind, gravity or inertial loads. The dynamics of the structure under this loading is analyzed.
It must be taken into account that the structural models for both programs are different. While the structural model adopted here discretizes the WT into 11 DOF, and a
series of convenient shape functions are used to describe the deflection shape; BHawC uses a more formal finite element approach.
The shaft is not modeled in the structural model of the sea transport program; nacelle, shaft, and hub are modeled as point mass at the tower top. The rotor is located
roughly 5 m from the tower top. The structural damping is taken from Siemens data (Ref. [29]); nonetheless, the structural damping of the tower itself for the two bending
modes: SB-PS, and fore-aft, were not provided. It is assumed to be equal to the first two modes of the entire structure.
Lastly, the initial conditions for these simulations are different. BHawC has an initialization before the actual simulation starts; whereas the harmonic excitation acts on the
WT from the beginning in the sea transport program.
In conclusion, differences in the results are expected; nevertheless a perfect match between both codes is not sought. Figure G.29 below shows the comparison of the thrust
at the nacelle for the three different pitch angles: 0, 45, and 82.

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)

Appendix G Results of the model validation

-1

50

100
150
Time (sec)

200

240

45 Pitch

Sea Transp. Program

82 Pitch
Siemens BHawC code

Figure G.29 Thrust comparison at the nacelle under harmonic excitation

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

Sea Transport Analysis of Upright Wind Turbines

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)

Sea Transp. Program

Siemens BHawC code

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

Appendix G Results of the model validation

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

Siemens BHawC code

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

Sea Transport Analysis of Upright Wind Turbines

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

Appendix G Results of the model validation

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

Siemens BHawC code

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

Sea Transport Analysis of Upright Wind Turbines

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

Siemens BHawC code

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

Appendix G Results of the model validation

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

Sea Transp. Program

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

Sea Transport Analysis of Upright Wind Turbines

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

Siemens BHawC code

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

Appendix G Results of the model validation

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)

different cases of pitch angles: 0, 45 and 82.

-0.1

50

100
150
Time (sec)

200

240

45 Pitch

Sea Transp. Program

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

Sea Transport Analysis of Upright Wind Turbines

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.

PSD fore-aft deflect.

10

PSD fore-aft deflect.

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

Sea Transp. Program

Siemens BHawC code


Harm. F. Freq.

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

Appendix G Results of the model validation

Mode Frequency

Sea Transport Program

Siemens BHawC code

(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

Case 3: Combination of Wind Speed and Harmonic Excitation


Finally, the last case of the comparisons between BHawC and the sea transport program. This case is the combination of the previous two cases, 15 m/s wind speed aligned
with the fore-aft direction and harmonic excitation at the tower top are the only loads acting on the wind turbine; once again, gravitational or inertial loads are set to zero.
The amount of wind shear stress is set to 0.11. A wind speed of 15 m/s is referred to tower top. Note that the nacelle is tilted 6 deg. and the blades are also coned 2 deg.
The harmonic excitation is modeled as a sinusoidal load with 30 kN amplitude and 1 rad/s force frequency.
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 and the harmonic excitation at the first time step. Therefore, the transients to the
steady state in the sea transport program must be taken carefully.

175

Sea Transport Analysis of Upright Wind Turbines

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)

Sea Transp. Program

200

240

Siemens BHawC code

Figure G.39 Thrust comparison at the nacelle under 15 m/s and harmonic excitation.

176

Appendix G Results of the model validation

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

Siemens BHawC code

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

Sea Transport Analysis of Upright Wind Turbines

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

Sea Transp. Program

Siemens BHawC code


Harm. F. Freq.

Fore-aft Freq.

1st Flap Struct.

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

Appendix G Results of the model validation

0.15

0.1

0.05

-0.04

0.15

Tower Displacement (m)

Tower Displacement (m)

Tower Displacement fore-aft (m)

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

Sea Transp. Program

Siemens BHawC code

Figure G.41 Comparison of the tower top deflections in the fore aft direction under 15 m/s and harmonic excitation.

Sea Transport Program

Siemens BHawC code

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

Sea Transport Analysis of Upright Wind Turbines

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

Sea Transp. Program

Siemens BHawC code


Harm. F. Freq.

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

Appendix G Results of the model validation

(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)

Sea Transp. Program

Siemens BHawC code

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

Sea Transport Analysis of Upright Wind Turbines

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)

Sea Transp. Program

Siemens BHawC code

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

Appendix G Results of the Model Validation

G.3 Conclusions of the WT/Barge model validation


Each module of the program has been validated with reference cases. The FRF method is
consistent. The results of the FRFs are found in good agreement in most of the cases. However,
there are certain regions of heading angles where the program somewhat overestimates the
response for smaller wave periods in the heave and pitch responses. For the heave, the responses
are not well predicted in beam sea; and in the pitch, the responses are overestimated for 115 or
295 headings. With respect the roll, the selection of the additional damping has a high
influence in the results. 2% of critical damping is found in good agreement in the Viking barge
case.
The MPLs of the ship and cargo motions are simply derivations from the FRFs and the cargo
coordinates. Thereby, the heave and pitch MPL are also overpredicted for the same headings
stated for the FRFs at small wave periods. The MPL for the longitudinal and vertical
acceleration are also overpredicted, since they depend on the heave and pitch FRFs. Therefore,
these limitations in the method must be taken into consideration in the sea transport analyses.
The WT model shows good agreement in the natural frequencies for the first 3 modes, yielding
8% maximum relative difference for the second flapwise. The shape function expressions
illustrate expected results. The aeroelastic response of the WT is in general well predicted
compared with the results by BHawC, taking into account the differences that both programs
have by definition, i.e. initial conditions and different aeroelastic models.
Excellent 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.

183

Sea Transport Analysis of Upright Wind Turbines

H. RESULTS OF THE SEA TRANSPORT ANALYSIS


Table of Contents
H. Results of the Sea Transport Analysis ........................................................................... 184
H.1

Time series of the longitudinal accelerations ........................................................ 185

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

Appendix H Results of the Sea Transport Analyses

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.

H.1 Time series of the longitudinal accelerations


0.8
0.6
0.4

(m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

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

800 1000 1200 1400 1600 1800


Time (sec)

Figure H.2 Time series of the long.l acceleration at the nacelle , Hs = 1 m, V0 = 3.6 m/s.

185

Sea Transport Analysis of Upright Wind Turbines

0.8
0.6
0.4

(m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

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

800 1000 1200 1400 1600 1800


Time (sec)

Figure H.4 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 2.1 m/s.

186

Appendix H Results of the Sea Transport Analyses

0.8
0.6
0.4

(m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

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

800 1000 1200 1400 1600 1800


Time (sec)

Figure H.6 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 5.7 m/s.

187

Sea Transport Analysis of Upright Wind Turbines

0.8
0.6
0.4

(m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

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

800 1000 1200 1400 1600 1800


Time (sec)

Figure H.8 Time series of the long. acceleration at the nacelle , Hs = 2 m, V0 = 11.3 m/s.

188

Appendix H Results of the Sea Transport Analyses

0.8
0.6
0.4

(m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

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

800 1000 1200 1400 1600 1800


Time (sec)

Figure H.10 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 8.8 m/s.

189

Sea Transport Analysis of Upright Wind Turbines

0.8
0.6
0.4

(m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

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

800 1000 1200 1400 1600 1800


Time (sec)

Figure H.12 Time series of the long. acceleration at the nacelle , Hs = 3 m, V0 = 14.4 m/s.

190

Appendix H Results of the Sea Transport Analyses

0.8
0.6
0.4

(m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

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

800 1000 1200 1400 1600 1800


Time (sec)

Figure H.14 Time series of the long. acceleration at the nacelle , Hs = 4 m, V0 = 11.3 m/s.

191

Sea Transport Analysis of Upright Wind Turbines

0.8
0.6
0.4

(m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

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

800 1000 1200 1400 1600 1800


Time (sec)

Figure H.16 Time series of the long. acceleration at the nacelle , Hs = 5 m, V0 = 11.3 m/s.

192

Appendix H Results of the Sea Transport Analyses

0.8
0.6
0.4

(m/s )

0.2
0
-0.2
-0.4
-0.6
-0.8

200

400

600

800 1000 1200 1400 1600 1800


Time (sec)

Figure H.17 Time series of the long. acceleration at the nacelle , Hs = 5 m, V0 = 14.4 m/s.

193

Sea Transport Analysis of Upright Wind Turbines

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

Sea Transport Analysis of Upright Wind Turbines

HYDROSTATIC MODULE CODE

Chapter I Matlab Code.

9/10/09 11:40

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: Barge_Stability.m
%
% Description: This file calculates the stability of the barge by given
% W.T configurations
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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)
%==========================================================================
%
%
BARGE DATA. INPUTS
%
%==========================================================================
%-----------------------------VIKING BARGE DATA---------------------------% Length between perpendiculars, Lpp = L
Lpp = 91.440;
% Maximum Waterline Breadth, Bo (m)
Bo = 27.432;
% Height, D (m)
D = 6.096;
% Lightweight, Delta_barge (Tons)
Delta_barge = 1831;
% COG_barge (m)
COG_barge = [44.65,0,3.52];
% Radious of gyration, kiie = [kxxe,kyye,kzze]
kiie_barge = [10.97,22.86,0.00];
% Block Coefficient, Cb
Cb = 0.9588;
% Water Plane Aera Coef, Cwp

1 of 12

9/10/09 11:40

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

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

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

% 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];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + Delta_WT + Delta_fuel)/rho;
% ------------------------------------------------------------------------% 3.- Draft, T
% ------------------------------------------------------------------------% T = Vol/(L*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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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: One Upright-WT aligned with COG-barge, departure (w/o Ballasts) ' )

% ------------------------------------------------------------------------%
------- 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

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

COG_fuel = [14.89
kiie_fuel = [15.75

0.000
-5.200

4.300]; % (m)
3.750]; % (m)

%--------------------------------- Ballast ---------------------------------% Delta_ballast = 0;


% COG_ballast = 0;
% kiie_ballast = 0;
% Ballast tanks weight, Delta_ballast (Tons)
Delta_ballast = [234.85825, 234.46875, 235.02225, 234.82750,...
873.423,873.423,491.98975,484.3945];
% COGs of the ballast tanks, COG_ballast: [x y z;x2 y2 z2;...]
COG_ballast = [ 85.851 10.283
3.978;...
85.858 3.4180
3.976;...
85.850 -3.429
3.977;...
85.851 -10.28
3.978;...
51.435 10.284
3.050;...
51.435 -10.284
3.050;...
7.7330 3.4860
3.321;...
7.7970 -3.518
3.293]; % (m)
kiie_ballast = zeros(length(Delta_ballast),3);
% ------------------------------------------------------------------------% 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).
% 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_ballast*COG_ballast(:,1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + Delta_WT + sum(Delta_ballast)+ Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) + Delta_WT*COG_WT_APP(2) +...
Delta_ballast*COG_ballast(:,2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + Delta_WT + sum(Delta_ballast)+ Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) + Delta_WT*COG_WT_APP(3) +...
Delta_ballast*COG_ballast(:,3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + Delta_WT + sum(Delta_ballast)+ Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + Delta_WT + sum(Delta_ballast) + Delta_fuel)/rho;
% ------------------------------------------------------------------------% 3.- Draft, T
% ------------------------------------------------------------------------% T = Vol/(L*Bo*Cb);
[T,L]=draft(Vol,Bo,Lpp,Cb);
% -------------------------------------------------------------------------

5 of 12

9/10/09 11:40

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

6 of 12

% 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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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: One Upright-WT aligned with COG-barge, departure (with Ballasts) ' )

9/10/09 11:40

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

% ------------------------------------------------------------------------%
------- 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;

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% Position of WTs with respect the Barge Global Coord System
WT_position = [ 22.73
0
D;...
COG_barge(1)
0
D;...;
68.45
0
D]; %Place at the center line (CL).
% COG with New Coordinates for WT (i.e. with Barge Global C.S.)
COG_WT_APP = COG_WT + WT_position;

7 of 12

9/10/09 11:40

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

% 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 + sum(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 + sum(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 + sum(Delta_WT) + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + sum(Delta_WT) + Delta_fuel)/rho;
% ------------------------------------------------------------------------% 3.- Draft, T
% ------------------------------------------------------------------------% T = Vol/(L*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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 (w/o Ballasts) ')

% ------------------------------------------------------------------------%
------- 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

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

kxxe
kxxe

kyye
kyye

kzze; ...
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;
% Ballast tanks weight, Delta_ballast (Tons)
Delta_ballast = [234.85825, 234.46875, 235.02225, 234.82750, ...
873.423,873.423,491.98975,484.3945];
% COGs of the ballast tanks, COG_ballast: [x y z;x2 y2 z2;...]
COG_ballast = [ 85.851 10.283
3.978;...
85.858 3.4180
3.976;...
85.850 -3.429
3.977;...
85.851 -10.28
3.978;...
51.435 10.284
3.050;...
51.435 -10.284
3.050;...
7.7330 3.4860
3.321;...
7.7970 -3.518
3.293]; % (m)
kiie_ballast = zeros(length(Delta_ballast),3);

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% Position of WTs with respect the Barge Global Coord System
WT_position = [ 22.73
0
D;...
COG_barge(1)
0
D;...;
68.45
0
D]; %Place at the center line (CL).
% 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_ballast*COG_ballast(:,1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + sum(Delta_WT) + sum(Delta_ballast) + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) + Delta_WT*COG_WT_APP(:,2) + ...
Delta_ballast*COG_ballast(:,2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + sum(Delta_WT) + sum(Delta_ballast) + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) + Delta_WT*COG_WT_APP(:,3) + ...
Delta_ballast*COG_ballast(:,3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + sum(Delta_WT) + sum(Delta_ballast) + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% -------------------------------------------------------------------------

10 of 12

9/10/09 11:40

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

11 of 12

Vol = (Delta_barge + sum(Delta_WT) + sum(Delta_ballast) + Delta_fuel)/rho;


% ------------------------------------------------------------------------% 3.- Draft, T
% ------------------------------------------------------------------------% T = Vol/(L*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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% -------------------------------------------------------------------------

9/10/09 11:40

C:\Documents and Settings...\Barge_Stability_WTs_nosubmerged.m

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

C:\Documents and Settings\HP\Mis documentos\MSC WIND ...\draft.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: draft.m
%
% Description: This Function calculate the draft of the Viking Barge vessel
% for a given ship-cargo configuration.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function [T,L] = draft(Vol,Bo,Lpp,Cb)
%==========================================================================
%
%
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)
%==========================================================================
%
%
INPUTS
%
(Loading Manual: International Ship Consultants)
%
%==========================================================================
m_AP = 0.58990;
% Slope at AP
m_FP = 0.54178;
% Slope at FP
%

STUDY THE EFFECT OF Cb = 0.96!!!!!!

%==========================================================================
%
%
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

C:\Documents and Settings\HP\Mis documentos\MSC WIND ...\draft.m

draft_pos = (-B + sqrt(B^2 - 4*A*C))/(2*A);


draft_neg = (-B - sqrt(B^2 - 4*A*C))/(2*A);
if draft_pos > 0
T = draft_pos;
L = 82.44 - (3.596-T)/m_AP + T/m_FP;
elseif draft_neg > 0
T = draft_neg;
L = 82.44 - (3.596-T)/m_AP + T/m_FP;
else
disp('Both Positive values!')
end
elseif Vol > 8787 && Vol <= 12231
A = 1;
B = 82.44*m_FP;
C = -m_FP*Vol/(Cb*Bo);
draft_pos = (-B + sqrt(B^2 - 4*A*C))/(2*A);
draft_neg = (-B - sqrt(B^2 - 4*A*C))/(2*A);
if draft_pos > 0
T = draft_pos;
L = 82.44 + T/m_FP;
elseif draft_neg > 0
T = draft_neg;
L = 82.44 + T/m_FP;
else
disp('Both Positive values!')
end
else
T = Vol/(Cb*Bo*Lpp);
L = Lpp
end

2 of 2

9/10/09 11:44

C:\Documents and Settings\HP\Mis documentos\MSC...\roll_period.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: Roll_period.m
%
% Description: This Function calculate the roll period for a given
% ship-cargo configuration.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function [Tn] = roll_period...
(Delta_barge,Delta_cargo,Delta_ballast,Delta_fuel,...
COG_system,COG_barge,COG_cargo,COG_ballast,COG_fuel,...
kiie_barge,kiie_cargo,kiie_ballast,kiie_fuel,...
g,GMt)
%==========================================================================
%
%
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)
%==========================================================================
%
%
TOTAL MASS SYSTEM
%
%==========================================================================
Delta_system = Delta_barge + sum(Delta_cargo) + ...
sum(Delta_ballast) + Delta_fuel;

%==========================================================================
%
%
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

C:\Documents and Settings\HP\Mis documentos\MSC...\roll_period.m

Iyy_barge = kiie_barge(2)^2*Delta_barge + ...


(COG_barge(1)^2+COG_barge(3)^2)*Delta_barge;
Izz_barge = kiie_barge(3)^2*Delta_barge + ...
(COG_barge(1)^2+COG_barge(2)^2)*Delta_barge;
% Moment of Inertia_Cargo:
if Delta_cargo ~= 0
if length(Delta_cargo)>1
for i=1:length(Delta_cargo)
Ixx_cargo(i) = kiie_cargo(i,1)^2*Delta_cargo(i) + ...
(COG_cargo(i,2)^2+COG_cargo(i,3)^2)*Delta_cargo(i);
Iyy_cargo(i) = kiie_cargo(i,2)^2*Delta_cargo(i) + ...
(COG_cargo(i,1)^2+COG_cargo(i,3)^2)*Delta_cargo(i);
Izz_cargo(i) = kiie_cargo(i,3)^2*Delta_cargo(i) + ...
(COG_cargo(i,1)^2+COG_cargo(i,2)^2)*Delta_cargo(i);
end
Ixx_cargo = sum(Ixx_cargo);
Iyy_cargo = sum(Iyy_cargo);
Izz_cargo = sum(Izz_cargo);
else
Ixx_cargo = kiie_cargo(1)^2*Delta_cargo + ...
(COG_cargo(2)^2+COG_cargo(3)^2)*Delta_cargo;
Iyy_cargo = kiie_cargo(2)^2*Delta_cargo + ...
(COG_cargo(1)^2+COG_cargo(3)^2)*Delta_cargo;
Izz_cargo = kiie_cargo(3)^2*Delta_cargo + ...
(COG_cargo(1)^2+COG_cargo(2)^2)*Delta_cargo;
end
else
Ixx_cargo = 0;
Iyy_cargo = 0;
Izz_cargo = 0;
end
% Moment of Inertia_Ballast:
if Delta_ballast ~= 0
if length(Delta_ballast)>1
for i=1:length(Delta_ballast)
Ixx_ballast(i) = kiie_ballast(i,1)^2*Delta_ballast(i) + ...
(COG_ballast(i,2)^2+COG_ballast(i,3)^2)*Delta_ballast(i);
Iyy_ballast(i) = kiie_ballast(i,2)^2*Delta_ballast(i) + ...
(COG_ballast(i,1)^2+COG_ballast(i,3)^2)*Delta_ballast(i);
Izz_ballast(i) = kiie_ballast(i,3)^2*Delta_ballast(i) + ...
(COG_ballast(i,1)^2+COG_ballast(i,2)^2)*Delta_ballast(i);
end
Ixx_ballast = sum(Ixx_ballast);
Iyy_ballast = sum(Iyy_ballast);
Izz_ballast = sum(Izz_ballast);
else
Ixx_ballast = kiie_ballast(1)^2*Delta_ballast + ...
(COG_ballast(2)^2+COG_ballast(3)^2)*Delta_ballast;
Iyy_ballast = kiie_ballast(2)^2*Delta_ballast + ...
(COG_ballast(1)^2+COG_ballast(3)^2)*Delta_ballast;
Izz_ballast = kiie_ballast(3)^2*Delta_ballast + ...
(COG_ballast(1)^2+COG_ballast(2)^2)*Delta_ballast;
end
else

2 of 3

9/10/09 11:44

C:\Documents and Settings\HP\Mis documentos\MSC...\roll_period.m

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

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: Barge_Stability.m
%
% Description: This file calculates the stability of the barge by given
% loading configurations
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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)
%==========================================================================
%
%
BARGE DATA. INPUTS
%
%==========================================================================
%-----------------------------VIKING BARGE DATA---------------------------% Length between perpendiculars, Lpp = L
Lpp = 91.440;
% Maximum Waterline Breadth, Bo (m)
Bo = 27.432;
% Height, D (m)
D = 6.096;
% Lightweight, Delta_barge (Tons)
Delta_barge = 1831;
% COG_barge (m)
COG_barge = [44.65,0,3.52];
% Radious of gyration, kiie = [kxxe,kyye,kzze]
kiie_barge = [10.97,22.86,0.00];
% Block Coefficient, Cb
Cb = 0.9588;
% Water Plane Aera Coef, Cwp

1 of 19

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

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

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

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)

% ------------------------------------------------------------------------% 5.- Roll Period, Tn


% ------------------------------------------------------------------------Tn = roll_period(Delta_barge,Delta_cargo,Delta_ballast,Delta_fuel, ...
COG_system,COG_barge,COG_cargo,COG_ballast,COG_fuel,...
kiie_barge,kiie_cargo,kiie_ballast,kiie_fuel,...
g,GMt);
% Empirical Formula by Friis and Andersen (2000, pp203)
% Coefficient, C
C = 0.373 + 0.023*(Bo/T) - 0.043*(L/100);
% Tn
Tn_empirical = (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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 1: Lightship')
figure
axis([0 50 0 100])
text(0,90,...
'Case 1: Lightship' )
text(0,80,...
['Center of Gravity of the system: (m) [' num2str(COG_system) ']'])
text(0,70,...

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

['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 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)

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% NEW_COG: COG of the system
ballast = Delta_ballast*COG_ballast;
NEW_COG_X = (Delta_barge*COG_barge(1)+ballast(1)+Delta_fuel*COG_fuel(1))/...
(Delta_barge + sum(Delta_ballast) + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2)+ballast(2)+Delta_fuel*COG_fuel(2))/...
(Delta_barge + sum(Delta_ballast) + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3)+ballast(3)+Delta_fuel*COG_fuel(3))/...
(Delta_barge + sum(Delta_ballast) + Delta_fuel);

COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + sum(Delta_ballast) + Delta_fuel)/rho;
% ------------------------------------------------------------------------% 3.- Draft, T
% ------------------------------------------------------------------------% T = Vol/(Lpp*Bo*Cb);
[T,L]=draft(Vol,Bo,Lpp,Cb);

4 of 19

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

5 of 19

% ------------------------------------------------------------------------% 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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 2: Typical Ballast Condition (empty deck)')
figure
axis([0 50 0 100])
text(0,90,...
'Case 2: Typical Ballast Condition (empty deck)')
text(0,80,...
['Center of Gravity of the system: (m) [' num2str(COG_system) ']'])

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

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)

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% NEW_COG: COG of the system
ballast = Delta_ballast*COG_ballast;
NEW_COG_X = (Delta_barge*COG_barge(1) +...
Delta_module*COG_module(1) + ballast(1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + Delta_module + sum(Delta_ballast) + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) +...
Delta_module*COG_module(2) + ballast(2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + Delta_module + sum(Delta_ballast) + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) +...
Delta_module*COG_module(3) + ballast(3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + Delta_module + sum(Delta_ballast) + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + Delta_module + sum(Delta_ballast) + Delta_fuel)/rho;
% ------------------------------------------------------------------------% 3.- Draft, T
% -------------------------------------------------------------------------

6 of 19

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 3: High Module on Deck, Arrival')
figure
axis([0 50 0 100])
text(0,90,...

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

'Case 3: 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 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)

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% NEW_COG: COG of the system
ballast = Delta_ballast*COG_ballast;
NEW_COG_X = (Delta_barge*COG_barge(1) +...
Delta_module*COG_module(1) + ballast(1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + Delta_module + sum(Delta_ballast) + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) +...
Delta_module*COG_module(2) + ballast(2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + Delta_module + sum(Delta_ballast) + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) +...
Delta_module*COG_module(3) + ballast(3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + Delta_module + sum(Delta_ballast) + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + Delta_module + sum(Delta_ballast) + Delta_fuel)/rho

8 of 19

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

9 of 19

% ------------------------------------------------------------------------% 3.- Draft, T


% ------------------------------------------------------------------------% 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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 4: Medium High Module on Deck, Arrival')

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

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)

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% NEW_COG: COG of the system
NEW_COG_X = (Delta_barge*COG_barge(1) +...
Delta_module*COG_module(1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) +...
Delta_module*COG_module(2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) +...
Delta_module*COG_module(3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + Delta_module + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + Delta_module + Delta_fuel)/rho;

10 of 19

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

11 of 19

% ------------------------------------------------------------------------% 3.- Draft, T


% ------------------------------------------------------------------------% 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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 5: Large Module on Deck, Arrival')

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

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)

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% NEW_COG: COG of the system
NEW_COG_X = (Delta_barge*COG_barge(1) +...
Delta_module*COG_module(1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) +...
Delta_module*COG_module(2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) +...
Delta_module*COG_module(3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + Delta_module + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + Delta_module + Delta_fuel)/rho;
% ------------------------------------------------------------------------% 3.- Draft, T
% -------------------------------------------------------------------------

12 of 19

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 6: Larger Module on Deck, Arrival')
figure
axis([0 50 0 100])
text(0,90,...

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

'Case 6: Larger 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 7: Max. Uniform Deck Cargo, Arrival ------% ------------------------------------------------------------------------% ------------------------------------------------------------------------% 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.350];
% Fuel
Delta_fuel = 1; % (Tons)
COG_fuel = [14.89
0.000

2.000]; % (m)

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% NEW_COG: COG of the system
NEW_COG_X = (Delta_barge*COG_barge(1) +...
Delta_module*COG_module(1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) +...
Delta_module*COG_module(2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) +...
Delta_module*COG_module(3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + Delta_module + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + Delta_module + Delta_fuel)/rho;
% ------------------------------------------------------------------------% 3.- Draft, T
% ------------------------------------------------------------------------% T = Vol/(Lpp*Bo*Cb);
[T,L]=draft(Vol,Bo,Lpp,Cb);
% -------------------------------------------------------------------------

14 of 19

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

15 of 19

% 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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 7: Max. Uniform Deck Cargo, Arrival' )
figure
axis([0 50 0 100])
text(0,90,...
'Case 7: Max. Uniform Deck Cargo, Arrival' )
text(0,80,...
['Center of Gravity of the system: (m) [' num2str(COG_system) ']'])
text(0,70,...

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

['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 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)

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% NEW_COG: COG of the system
NEW_COG_X = (Delta_barge*COG_barge(1) +...
Delta_module*COG_module(1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) +...
Delta_module*COG_module(2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) +...
Delta_module*COG_module(3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + Delta_module + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + Delta_module + Delta_fuel)/rho;
% ------------------------------------------------------------------------% 3.- Draft, T
% ------------------------------------------------------------------------% 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

16 of 19

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 8: Max. Uniform Deck Cargo, Departure')
figure
axis([0 50 0 100])
text(0,90,...
'Case 8: Max. Uniform Deck Cargo, Departure' )
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.)' ])

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

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)

% ------------------------------------------------------------------------% 1.- Calculus of New COG:


% ------------------------------------------------------------------------% NEW_COG: COG of the system
NEW_COG_X = (Delta_barge*COG_barge(1) +...
Delta_module*COG_module(1) + Delta_fuel*COG_fuel(1))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Y = (Delta_barge*COG_barge(2) +...
Delta_module*COG_module(2) + Delta_fuel*COG_fuel(2))/...
(Delta_barge + Delta_module + Delta_fuel);
NEW_COG_Z = (Delta_barge*COG_barge(3) +...
Delta_module*COG_module(3) + Delta_fuel*COG_fuel(3))/...
(Delta_barge + Delta_module + Delta_fuel);
COG_system = [NEW_COG_X,NEW_COG_Y,NEW_COG_Z];

% ------------------------------------------------------------------------% 2.- Displacement Volumen, Vol


% ------------------------------------------------------------------------Vol = (Delta_barge + Delta_module + Delta_fuel)/rho;
% ------------------------------------------------------------------------% 3.- Draft, T
% ------------------------------------------------------------------------% 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

18 of 19

9/10/09 11:46

C:\Documents and Settings...\Barge_Stability_v01_nosubmerged.m

19 of 19

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

------------------------------------------------------------------------5.- Roll Period, Tn


------------------------------------------------------------------------Empirical Formula by Friis and Andersen (2000, pp203)
Coefficient, C
= 0.373 + 0.023*(Bo/T) - 0.043*(L/100);

% 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);

% ------------------------------------------------------------------------% 7.- Plot GZ Curve


% ------------------------------------------------------------------------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 9: Log Cargo, density 0.40 overall' )
figure
axis([0 50 0 100])
text(0,90,...
'Case 9: Log Cargo, density 0.40 overall' )
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

Sea Transport Analysis of Upright Wind Turbines

SHIP MODULE CODE

Chapter I Matlab Code

8/10/09 13:57

C:\Documents and Settings\HP\Mis documento...\offshore_program.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: offshore_program.m
% Description: Main Script file responsible of the Offshore Transportation
%Program.
%

. . . . . .

% A brief description of the offshore transportion program is given below:


%
%
%
%
%
%
%
%

The offshore transportation program calculates the ship motions of a


given ship in the frequency domain. These motions are calculated as
frequency response functions or response amplitudes in the frequency
domain.
Two categories of motions can be distinguised: (i) the motions
referred to the COG of the ship, i.e. heave, pitch and roll motions;
(ii) and the motions referred to the cargo, i.e. longitudinal, transverse
and vertical displacements and accelerations.

%
%
%
%

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.

%
%
%
%

Afterwards, the displacements and accelerations are calculated based on


the previous frequency response functions and phase angles for heave,
pitch and roll, and at different cargo positions. These displacements and
accelerations are also in the frequency domain.

% 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.

% Furthermore, the wave-induced motions are tranformed to the time domain.


% These time series are given as inputs for the sea transport program.

1 of 8

8/10/09 13:57
%

C:\Documents and Settings\HP\Mis documento...\offshore_program.m


. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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

C:\Documents and Settings\HP\Mis documento...\offshore_program.m

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

C:\Documents and Settings\HP\Mis documento...\offshore_program.m

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

C:\Documents and Settings\HP\Mis documento...\offshore_program.m

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

C:\Documents and Settings\HP\Mis documento...\offshore_program.m


ship_headings_ts,ship_headings_ts_plot,...
index_Tz_plot,Tz_ts(index_Tz_plot),response_label, ...
u_L_tot,num_fig,index_cargo,label_cargo)

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

C:\Documents and Settings\HP\Mis documento...\offshore_program.m

% --------------------------- Vel_V -------------------------------if flag_f9 == 1


disp('VERTICAL VEL. TIME SERIES...........' )
response_label = 'Vel_{V} (\it{m/s})' ;
num_fig = 900000;
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_V_tot,num_fig,index_cargo,label_cargo)
end
% --------------------------- Ac_L -------------------------------if flag_f10 == 1
disp('LONGITUDINAL ACC. TIME SERIES...........' )
response_label = 'a_{L} (\it{m/s^2})' ;
num_fig = 1000000;
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, ...
a_L_tot,num_fig,index_cargo,label_cargo)
end
% --------------------------- Ac_T -------------------------------if flag_f11 == 1
disp('TRANSVERSE ACC. TIME SERIES...........' )
response_label = 'a_{T} (\it{m/s^2})' ;
num_fig = 1100000;
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, ...
a_T_tot,num_fig,index_cargo,label_cargo)
end
% --------------------------- Ac_V -------------------------------if flag_f12 == 1
disp('VERTICAL ACC. TIME SERIES...........' )
response_label = 'a_{V} (\it{m/s^2})' ;
num_fig = 1200000;
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, ...
a_V_tot,num_fig,index_cargo,label_cargo)
end
end
end

7 of 8

8/10/09 13:57

C:\Documents and Settings\HP\Mis documento...\offshore_program.m

8 of 8

if flag_2 == 0 % ONLY TIME SERIES


save offshore_program_Thinlink phi_w phi_pitch phi_roll ...
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...
epsilon_w_tot epsilon_pitch_tot epsilon_roll_tot...
omega beta V k omega_bar N_beta L Bo T percentage lambda ...
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...
heave_tot pitch_tot roll_tot...
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
elseif flag_2 == 1 && flag_3 == 0 % ONLY MPLs SHIP MOTIONS (NOT CARGO!!!)
save offshore_program_Thinlink phi_w phi_pitch phi_roll ...
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...
epsilon_w_tot epsilon_pitch_tot epsilon_roll_tot...
omega beta V k omega_bar N_beta L Bo T percentage lambda ...
Sw wspectrum_legend ...
MPL_w MPL_pitch MPL_roll ...
Ts Tz
else % ALL, TIME SERIES AND MPLS FOR THE SHIP AND THE CARGO
save offshore_program_Thinlink phi_w phi_pitch phi_roll ...
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...
epsilon_w_tot epsilon_pitch_tot epsilon_roll_tot...
omega beta V k omega_bar N_beta L Bo T percentage lambda ...
Sw wspectrum_legend ...
MPL_w MPL_pitch MPL_roll ...
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...
Ts Tz ...
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...
heave_tot pitch_tot roll_tot...
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
end

8/10/09 14:08

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: Inputs_offshore_program.m
% Description: Main Script file that provides all the necessary inputs for
% the offshore transportation program.
%

. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

%-------------------------------------------------------------------------%==========================================================================
%
%
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

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

%-------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

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

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

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

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

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

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

6 of 10

% Type manually: (In degrees)


int_step = 9;
int_step = int_step*pi/180; %Transforming into radians
else
int_step = 0;
end

%---------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

7 of 10

%--------------------------PLOTTING WAVE SPECTRUM---------------------% Select if Wave Spectrum is plotted:


%
flag_2_plot1 = 0 -> No
%
flag_2_plot1 = 1 -> Yes
flag_2_plot1 = 0;
%-------------------------------PLOTTING SHIP MPLs--------------------% Select if MPLs of ship are plotted
%
flag_2_plot2 = 0 -> No
%
flag_2_plot2 = 1 -> Yes
flag_2_plot2 = 1;
if flag_2_plot2 == 1
% Select Headings to plot
ship_headings_MPL = [180];
N_ship_headings_MPL = length(ship_headings_MPL);
% Select if MPLs are plotted per heading angle or all in the same fig
%
flag_c = 1 ->All the headings are plotted in the same plot for each
%
MPL
%
flag_c = 0 ->Each heading is plotted in the diff. subplot for each
%
MPL
flag_c = 1;
if flag_c == 1
rows_mpl = 1;
columns_mpl = 1;
else
% Select Rows and Columns for the subplots
rows_mpl = 3;
columns_mpl = 1;
end
end

%-------------------------------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

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

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

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

%---------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis ...\Inputs_offshore_program.m

% spectrum response of each heading for all wave periods.


rows_ts = 1;
columns_ts = 1;
% Select a wave period:
index_Tz_plot = 1; %CHOOSE DEPENDING ON Tz_ts!!!!!!
% Select cargo position:
index_cargo = item_tower_top;
label_cargo = 'Tower Top' ;
% Select responses:
%
flag_f1 = 0/1 -> No/Yes Heave
flag_f1 = 0;
%
flag_f2 = 0/1 -> No/Yes Pitch
flag_f2 = 1;
%
flag_f3 = 0/1 -> No/Yes Roll
flag_f3 = 0;
%
flag_f4 = 0/1 -> No/Yes u_L
flag_f4 = 0;
%
flag_f5 = 0/1 -> No/Yes u_T
flag_f5 = 0;
%
flag_f6 = 0/1 -> No/Yes u_V
flag_f6 = 0;
%
flag_f7 = 0/1 -> No/Yes vel_L
flag_f7 = 0;
%
flag_f8 = 0/1 -> No/Yes vel_T
flag_f8 = 0;
%
flag_f9 = 0/1 -> No/Yes vel_V
flag_f9 = 0;
%
flag_f10 = 0/1 -> No/Yes a_L
flag_f10 = 1;
%
flag_f11 = 0/1 -> No/Yes a_T
flag_f11 = 0;
%
flag_f12 = 0/1 -> No/Yes a_V
flag_f12 = 0;
end

%---------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis doc...\ship_dimensions_Viking.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: ship_dimensions_Viking
% Description: General Script file that accounts for the main dimensions and
%paramenters of a given ship (based on an external file)
% Note: All dimensions must be in meters.
%

. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
% 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

C:\Documents and Settings\HP\Mis doc...\ship_dimensions_Viking.m

% 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

C:\Documents and Settings...\multi_cargo_positions_Viking_upWT.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
%
GENERAL COMMENTS
%
% Name of file: multi_cargo_position_Viking
% Description: Script file that asks for the cargo position where the
% motions and accelerations are calculated.
% Note: The coordinates of the particular cargo position must be referred
%to the Global Coord. System, situated at the AF and bottom of the ship.
%
% The Cargo selected correspond to Siemens WT: SIEMENS B45 - 2.3
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % clear all
% close all
% clc
%==========================================================================
%
%
INPUTS
%
%==========================================================================
% Loading Structural Data for Siemens 2.3MW
Structural_Data_w_zero_section
% COG of the system: barge-WT;
COG_system = CR;
% From Ship_dimensions_Viking file.
% Shaft Length, m
shaft = SHAFT_L;
% From Structural Data File - WT.
% Hub, m
hub=[TOWER(end,1);0;0];
% From Structural Data File - WT.
% ------------------------------------------------------------------------%
Angles. Turbine Operation
% ------------------------------------------------------------------------% - - - In Deg - - theta_yaw = 0;
theta_tilt = -6;
theta_cone = 2;
theta_wing_blade1 = 180;
% The W.T. is parked.
% - - - In Radians - - theta_yaw=theta_yaw*pi/180;
theta_tilt=theta_tilt*pi/180;
theta_cone=theta_cone*pi/180;

1 of 4

8/10/09 14:01

C:\Documents and Settings...\multi_cargo_positions_Viking_upWT.m

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

C:\Documents and Settings...\multi_cargo_positions_Viking_upWT.m

%
-------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

C:\Documents and Settings...\multi_cargo_positions_Viking_upWT.m

% 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

C:\Documents and Settings\HP\Mis documen...\sea_state_5_Viking.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
%
GENERAL COMMENTS
%
% Name of file: sea_state_(external_file)
% Description: General Script file that accounts for the following
%parameters depending on the sea state.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % clear all
% close all
% clc
%-------------------------------------------------------------------------%
1.- PARAMETERS
%-------------------------------------------------------------------------% Significant wave Height, Hs (m)
Hs = 5;
% Zero-Upcrossing Period, Tz (s)
Tz = [4:0.5:10 11 12 13];
% Tz = Tz';
% Peak Enhancement factor, peak_factor
peak = 3.3;
if peak == 3.3
disp('It is used Standard JONSWAP Wave Spectrum. ' )
end

1 of 1

8/10/09 14:11

C:\Documents and Settings\HP\Mis documen...\response_amplitude.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: response_amplitude
% Description: Script file that CALCULATES the frequency response functions
%for ship motions by using a barge approximation.

% 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:

Vol. 31, pp 61-85.

%
%

on Practical Design of Ships and Other Floating Structures, pp 577-585.


Luebeck-Travemuende. Germany.

%
%

ARJM Lloyd, Hampsire (United Kingdom).


. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis documen...\response_amplitude.m

%-----------------------------------------------------------------%-------------------------------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) ));

% Parameter Eta, eta


eta(j,i) = (sqrt( (1 - 2*k(i)*T*alpha(j,i)^2)^2 +...
(A(j,i)^2/(k(i)*B*alpha(j,i)^2))^2 ))^(-1);

%----------------------------------ROLL-------------------------------% RESTORING MOMENT COEFFICIENT, C44


% Volume of Displacement, displac
displac = Cb*L*Bo*T;
C44 = g*rho*displac*GMt;

% DETERMINATION OF B1, A0, AND A1


% Breadth Ratio, gamma
gamma = (Cwp-delta)/(1-delta);

2 of 8

8/10/09 14:11

C:\Documents and Settings\HP\Mis documen...\response_amplitude.m

% Breadth of the Prismatic Beam 1, B1


B1 = gamma*Bo;
% Submerged Sectional Area for the Prismatic Beam 0, A0
A0 = Cb*Bo*T/( delta + gamma*(1-delta) );
% Submerged Sectional Area for the Prismatic Beam 1, A1
A1 = gamma*A0;
%-----------------------------------------------------------------%
1.2.- CALCULATE DAMPING COEFFCIENT
%-----------------------------------------------------------------% DETERMINATION OF DAMPING COEFFICIENT,
%
B44 = B44_inviscid + B44_viscose
%------------------INVISCID DAMPING, B44_inviscid-----------------%Checking which expresions for a_BT, b_BT, and d_BT must be used:
if j == 1 && i == 1
if Cb <= 0.55 % EXPRESSION FOR TRIANGULAR SECTIONS
%Checking if functions a_BT, b_BT, and d_BT can be calculated.
if Bo/T >= 3 && Bo/T <= 6
a_BoT = 0.256*Bo/T - 0.286;
b_BoT = -0.11*Bo/T - 2.55;
d_BoT = 0.033*Bo/T - 1.419;
a_B1T = 0.256*B1/T - 0.286;
b_B1T = -0.11*B1/T - 2.55;
d_B1T = 0.033*B1/T - 1.419;
disp(['Damping Coefficient using expressions for triangular
sections. Cb = ' num2str(Cb) ' <= 0.55.' ])
Error1 = 0;
Error2 = 0;
Error3 = 0;
if a_BoT < 0
disp('Error!! Funcion a_BoT is negative. ' )
Error1 = 1;
break
end
if a_B1T < 0
disp('Error!! Funcion a_B1T is negative. ' )
Error2 = 1;
break
end
else
disp('Error!! Expressions (a_BoT,b_BoT,d_BoT) for Damping
Coefficient out of range. ')
break
end
else

% EXPRESSION FOR RECTANGULAR SECTIONS


%Checking if functions a_BT, b_BT, and d_BT can be solved.
if Bo/T > 3 && Bo/T < 5
ratio = 3;
a_BoT = -3.94*ratio + 13.69;
b_BoT = -2.12*ratio - 1.89;
d_BoT = 1.16*ratio - 7.97;
elseif Bo/T >= 5 && Bo/T < 10

3 of 8

8/10/09 14:11

C:\Documents and Settings\HP\Mis documen...\response_amplitude.m


a_BoT =
b_BoT =
d_BoT =
elseif Bo/T
a_BoT =
b_BoT =
d_BoT =
end

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

&& B1/T < 5


3;
-3.94*ratio + 13.69;
-2.12*ratio - 1.89;
1.16*ratio - 7.97;
>= 5 && B1/T < 10
21.358;
-7.9;
-8.516;
>= 10
41.407;
-7.867;
-6.161;

if Bo/T >= 1 && Bo/T <= 3


a_BoT = -3.94*Bo/T + 13.69;
b_BoT = -2.12*Bo/T - 1.89;
d_BoT = 1.16*Bo/T - 7.97;
a_B1T = -3.94*B1/T + 13.69;
b_B1T = -2.12*B1/T - 1.89;
d_B1T = 1.16*B1/T - 7.97;
disp(['Damping Coefficient using expressions for rectangular
sections. Cb = ' num2str(Cb) ' > 0.55.' ])
Error1 = 0;
Error2 = 0;
Error3 = 0;
if a_BoT < 0
disp('Error!! Funcion a_BoT is negative. ' )
Error1 = 1;
break
end
if a_B1T < 0
disp('Error!! Funcion a_B1T is negative. ' )
Error2 = 1;
break
end
%
else
%
disp('Error!! Expressions (a_BoT,b_BoT,d_BoT) for Damping
Coefficient out of range. ')
%
Error3 = 1;
%
break
end
end
end
% Sectional Damping Coefficient for the Prismatic Beam 0, b44_0

4 of 8

8/10/09 14:11

C:\Documents and Settings\HP\Mis documen...\response_amplitude.m

5 of 8

b44_0(j,i) = ( rho*A0*Bo^2/sqrt(Bo /(2*g)) )...


*a_BoT*exp( b_BoT*omega_bar(j,i)^(-1.3) )...
*omega_bar(j,i)^d_BoT + eps;
% Sectional Damping Coefficient for the Prismatic Beam 1, b44_1
b44_1(j,i) = ( rho*A1*B1^2/sqrt(B1 /(2*g)) )...
*a_B1T*exp( b_B1T*omega_bar(j,i)^(-1.3) )...
*omega_bar(j,i)^d_B1T + eps;
% Ratio sectional damping for the 2 beam elements, b44_ratio
% Note: the ratio sectional damping is defined already as square,
% i.e. b44_ratio = kappa^2 (see Eq(6.6) from Jensen et al. (2004))
b44_ratio(j,i) = b44_1(j,i)/b44_0(j,i);
% Inviscid Hydrodynamic Damping
B44_inviscid(j,i) = L*b44_0(j,i)* ...
( delta + b44_ratio(j,i)*(1 - delta) );

%----------------ADDITIONAL DAMPING, B44_viscous------------------% DETERMINATION OF ADDITIONAL DAMPING


% Critical Damping
B44_cr = C44*Tn/pi;
if j==1 && i == 1
if percentage == 0;
disp('(Calculations not include Additional Damping.')
disp('Only Inviscid Hydrodynamic Damping)' )
B44_viscose = 0;
B44(j,i) = B44_inviscid(j,i);
else
disp (['(Calculations include ' num2str(percentage) '% of Critical
Damping.'])
disp('Total Damping = Inviscid Hydrodynamic Damping + Viscose Roll
Damping)')
% Viscose Roll Damping
B44_viscose = (percentage/100)*B44_cr;
B44(j,i) = B44_inviscid(j,i) + B44_viscose;
end
else
B44(j,i) = B44_inviscid(j,i) + B44_viscose;
end
% DETERMINATION OF EXCITATION MOMENT
% Moment Amplitude (|M|), Moment_Amplitude
Moment_Amplitude(j,i) = abs(sin(beta(j)))*...
sqrt( rho*g^2/omega_bar(j,i) )*(2/ke(j,i))...
*sqrt(b44_0(j,i))*( (sin(0.5*delta*L*ke(j,i)))^2 +...
b44_ratio(j,i)*(sin(0.5*(1-delta)*L*ke(j,i)))^2 +...
2*sqrt(b44_ratio(j,i))*sin(0.5*delta*L*ke(j,i))...
*sin(0.5*(1-delta)*L*ke(j,i))*...
cos(0.5*L*ke(j,i)))^(1/2) + eps;

%-----------------------------------------------------------------%
1.3.- CALCULATE FREQ. RESP. FUNCTION FOR HEAVE (phi_w)
%-----------------------------------------------------------------phi_w(j,i)= eta(j,i)*F;

8/10/09 14:11

C:\Documents and Settings\HP\Mis documen...\response_amplitude.m

%-----------------------------------------------------------------%
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));

% B.-) PHASE ANGLE FOR ROLL EXCITATION MOMENT, epsilon_m


% Coefficients, E and H
E(j,i) = (b44_0(j,i))^(0.5).*( sin(delta*k(i)*L*cos(beta(j))) + ...

6 of 8

8/10/09 14:11

C:\Documents and Settings\HP\Mis documen...\response_amplitude.m

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));

% C.-) TOTAL PHASE ANGLE FOR ROLL, epsilon_roll_tot


epsilon_roll_tot(j,i) = epsilon_roll(j,i) + epsilon_m(j,i);
end

% End Loop Wave Frequencies

end % End Loop Heading Angles

%-------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis documen...\response_amplitude.m

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

C:\Documents and Settings\HP\Mis...\response_amplitude_reading.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: response_amplitude_reading
% Description: Script file that READS the frequency response functions of
%ship motions and total phase angles from a spreadsheet excel file.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------%
1.- CLEANING UP VARIABLES.
%-------------------------------------------------------------------------% When the excel file is created is required to clean up these variables
% since these variables are transformed into cell-array variables in the
% program.
if flag_1 == 1
clear phi_w phi_pitch phi_roll...
epsilon_w_tot epsilon_pitch_tot epsilon_roll_tot...
beta V k lambda omega omega_bar
end

%-------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis...\response_amplitude_reading.m

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

C:\Documents and Settings\HP\Mis documentos\MS...\ship_motions.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: ship_motions
% Description: Main Script file that CALCULATES the frequency response
%functions for displacements, velocities and accelerations at any cargo
%position in the ship based on the frequency response functions for heave,
%pitch and roll.
% NOTE: In the calculations are properly included the phase angles for the
%motion components.
% Outputs:
%
- Frequency response functions for ship motions and accelerations
%
+ Longitudinal Displacement (phi_u_L)
%
+ Transverse Displacement (phi_u_T)
%
+ Vertical Displacement (phi_u_V)
%
+ Longitudinal Velocity (phi_vel_L)
%
+ Transverse Velocity (phi_vel_T)
%
+ Vertical Velocity (phi_vel_V)
%
+ Longitudinal Acceleration (phi_a_L)
%
+ Transverse Acceleration (phi_a_T)
%
+ Vertical Acceleration (phi_a_V)
% References:

Vol. 31, pp 61-85.

%
%
%

on Practical Design of Ships and Other Floating Structures, pp 577-585.


Luebeck-Travemuende. Germany.
. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis documentos\MS...\ship_motions.m

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

C:\Documents and Settings\HP\Mis documentos\...\plotshipmotion.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: plotshipmotion
% Description: Function that plots the ship motion, i.e. heave, pitch and
% roll.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function plotshipmotion(flag_a,rows,columns,beta_plots,N_beta_plots,...
beta,omega,phi_w,phi_pitch,phi_roll,L,g,k,lambda)

% -----------FRFs are plotted in subplots for each heading------------beta = round(beta);


if flag_a == 0
for j=1:N_beta_plots
index_beta = find(beta == beta_plots(j));

%
%

%
---- 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

C:\Documents and Settings\HP\Mis documentos\...\plotshipmotion.m

%
%
%

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

% -----------FRFs are plotted for all headings in each figure---------else


for j=1:N_beta_plots
index_beta(j) = find(beta == beta_plots(j));
motion_legend{j} = ['\beta = ' num2str(beta_plots(j))];
%
---- HEAVE ---figure(1)
plot((omega(25:end)./(2*pi)).^(-1),phi_w{index_beta(j)}(25:end))
hold all
xlabel('Period \it{(s)}' )
ylabel('\phi_{w} \it{(m/m)}')
grid on
%
axis([0 1.5 0 1.5]);
%
---- PITCH ---figure(2)
plot(omega,(phi_pitch{index_beta(j)}.*180/pi))
hold all
xlabel('\omega \it{(rad/s)}')
ylabel('\phi_{pitch} \it{(deg/m)}')
grid on
%
---- ROLL ---figure(3)
plot((omega(25:end)./(2*pi)).^(-1),(phi_roll{index_beta(j)}(25:end).*180/pi))
hold all

8/10/09 14:36

C:\Documents and Settings\HP\Mis documentos\...\plotshipmotion.m

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

C:\Documents and Settings\HP\Mis documentos...\plotcargomotion.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION.GENERAL COMMENTS
%
% Name of file: plotcargomotion
% Description: Function that plots the cargo motion, i.e. displacements,
% velocities and accelerations.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function 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)
for i=1:length(sel_cargo)
cargo_legend{i}=['Cargo = ' num2str(sel_cargo(i))];
end

% -----------FRFs are plotted in subplots for each heading------------beta = round(beta);


if flag_b == 0
for j = 1:N_beta_plots_cargo
for i=1:length(sel_cargo)
index_cargo= find(item == sel_cargo(i));
index_beta = find(beta == beta_plots_cargo(j));
%
---- LONGITUDINAL DISPLACEMENT ---figure(4)
subplot(rows_c,columns_c,j)
plot(omega,phi_u_L{index_beta}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{uL} \it{(m/m)}' )
title(['\beta = ' num2str(beta_plots_cargo(j)) '' ])
grid on
%
---- TRANSVERSE DISPLACEMENT ---figure(5)
subplot(rows_c,columns_c,j)
plot(omega,phi_u_T{index_beta}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{uT} \it{(m/m)}' )
title(['\beta = ' num2str(beta_plots_cargo(j)) '' ])

1 of 5

8/10/09 14:37

C:\Documents and Settings\HP\Mis documentos...\plotcargomotion.m

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

C:\Documents and Settings\HP\Mis documentos...\plotcargomotion.m

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' )

% -----------FRFs are plotted for all headings in each figure---------else


for i = 1:length(sel_cargo)
index_cargo= find(item == sel_cargo(i));
for j = 1:N_beta_plots_cargo
index_beta(j) = find(beta == beta_plots_cargo(j));
motion_legend{j} = ['\beta = ' num2str(beta_plots_cargo(j))];
%
---- LONGITUDINAL DISPLACEMENT ---figure(4+12*(i-1))
plot(omega,phi_u_L{index_beta(j)}(index_cargo,:))
hold all
xlabel('\omega \it{(rad/s)}' )
ylabel('\phi_{uL} \it{(m/m)}' )
title(['Cargo = ' num2str(sel_cargo(i))])
grid on
%

---- TRANSVERSE DISPLACEMENT ----

3 of 5

8/10/09 14:37

C:\Documents and Settings\HP\Mis documentos...\plotcargomotion.m

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

C:\Documents and Settings\HP\Mis documentos...\plotcargomotion.m

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: short_terms_statistics
%
%
%
%

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)

% Scripts used (Inputs):


%
- ship_motions.m: It is found on the main program, i.e.
%
offshore_program.m
%
%
- wave_spectrum.m: This script calculates the Generalized JONSWAP
%
Wave Spectrum.
%
-> Output: Generalized JONSWAP Wave Spectrum, Sw(Tz,omega).
%
-> Inputs: Given in the script file sea_state.m. This
%
script can be found in the Inputs_offshore_program.m
% 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.

1 of 20

8/10/09 14:24
%

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m


. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------%
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
%
%
%
%
%

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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];

%---------------------2.- CALCULATE SPREADING FUNCTION--------------

4 of 20

8/10/09 14:24
%

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m


Dimensions: f_spread (1 x wind_wave_angle)

% The spreading function f_spread can be calculated by 2 different ways:


% 1.) cos_4
f_spread = (8/(3*pi))*cos(wind_wave_angle).^4 + eps;
disp('Spreading Function calculated by cos^4.')
% % 2.) cos_2
% f_spread = (2/pi)*cos(wind_wave_angle).^2;
% disp('Spreading Function calculated by cos^2.')

%---------------------3.- CALCULATE RELATIVE HEADINGS--------------%


Dimensions: beta_rel (ship_headings x wind_wave_angle)
%Initialized:
beta_rel = zeros(length(ship_headings),length(wind_wave_angle));
for j = 1:length(ship_headings)
for l = 1:length(wind_wave_angle)
beta_rel(j,l) = ship_headings(j) - wind_wave_angle(l);
% Taking into account that beta_rel takes values between [0:359]
if beta_rel(j,l) > 360*pi/180
beta_rel(j,l) = beta_rel(j,l) - 360*pi/180;
elseif beta_rel(j,l) < 0
beta_rel(j,l) = beta_rel(j,l) + 360*pi/180;
elseif beta_rel(j,l) == 360*pi/180
beta_rel(j,l) = 0;
end
end
end
%---------------------4.- 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:
values_1 = zeros(1,length(f_spread));
values_2 = zeros(1,length(f_spread));
values_3 = zeros(1,length(f_spread));
INTEGRATE_ANGLES_w = zeros(1,length(omega));
INTEGRATE_ANGLES_pitch = zeros(1,length(omega));
INTEGRATE_ANGLES_roll = zeros(1,length(omega));
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)
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);
% HEAVE
values_1(l) = RAO_w{index}(i)*f_spread(l);
% PITCH
values_2(l) = RAO_pitch{index}(i)*f_spread(l);

5 of 20

8/10/09 14:24

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m


% ROLL
values_3(l) = RAO_roll{index}(i)*f_spread(l);
end
% HEAVE
INTEGRATE = integrate_over_region(values_1,wind_wave_angle);
INTEGRATE_ANGLES_w(i) = INTEGRATE;
% PITCH
INTEGRATE = integrate_over_region(values_2,wind_wave_angle);
INTEGRATE_ANGLES_pitch(i) = INTEGRATE;
% ROLL
INTEGRATE = integrate_over_region(values_3,wind_wave_angle);
INTEGRATE_ANGLES_roll(i) = INTEGRATE;

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m


INTEGRATE_ANGLES_a_L(:,i) = INTEGRATE1;
% TRANSVERSE ACCELERATION
INTEGRATE1 = integrate_over_region(values_8,wind_wave_angle);
INTEGRATE_ANGLES_a_T(:,i) = INTEGRATE1;
% VERTICAL ACCELERATION
INTEGRATE1 = integrate_over_region(values_9,wind_wave_angle);
INTEGRATE_ANGLES_a_V(:,i) = INTEGRATE1;
% LONGITUDINAL VELOCITY
INTEGRATE1 = integrate_over_region(values_10,wind_wave_angle);
INTEGRATE_ANGLES_vel_L(:,i) = INTEGRATE1;
% TRANSVERSE VELOCITY
INTEGRATE1 = integrate_over_region(values_11,wind_wave_angle);
INTEGRATE_ANGLES_vel_T(:,i) = INTEGRATE1;
% VERTICAL VELOCITY
INTEGRATE1 = integrate_over_region(values_12,wind_wave_angle);
INTEGRATE_ANGLES_vel_V(:,i) = INTEGRATE1;

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m


INTEGRATE2 = integrate_over_region(values_120,omega);
var_vel_V{j}(c,p) = INTEGRATE2;

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

%........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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m


INTEGRATE2 = integrate_over_region(values_90,omega_bar_MPLs);
var_a_V{j}(c,p) = INTEGRATE2;
% LONGITUDINAL VELOCITY
values_100 = Sw(p,:).*RAO_vel_L{index}(c,:);
INTEGRATE2 = integrate_over_region(values_100,omega_bar_MPLs);
var_vel_L{j}(c,p) = INTEGRATE2;
% TRANSVERSE VELOCITY
values_110 = Sw(p,:).*RAO_vel_T{index}(c,:);
INTEGRATE2 = integrate_over_region(values_110,omega_bar_MPLs);
var_vel_T{j}(c,p) = INTEGRATE2;
% VERTICAL VELOCITY
values_120 = Sw(p,:).*RAO_vel_V{index}(c,:);
INTEGRATE2 = integrate_over_region(values_120,omega_bar_MPLs);
var_vel_V{j}(c,p) = INTEGRATE2;

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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;

% DISPLACEMENTS AND ACCELERATIONS


%
Dimensions: MPL_u_L {ship_headings}(N_cargo
%
Dimensions: MPL_u_T {ship_headings}(N_cargo
%
Dimensions: MPL_u_V {ship_headings}(N_cargo
%
Dimensions: MPL_a_L {ship_headings}(N_cargo
%
Dimensions: MPL_a_T {ship_headings}(N_cargo
%
Dimensions: MPL_a_V {ship_headings}(N_cargo
% Initialized:
MPL_u_L = cell(1,length(ship_headings));
MPL_u_T = cell(1,length(ship_headings));
MPL_u_V = cell(1,length(ship_headings));
MPL_a_L = cell(1,length(ship_headings));
MPL_a_T = cell(1,length(ship_headings));
MPL_a_V = cell(1,length(ship_headings));
MPL_vel_L = cell(1,length(ship_headings));
MPL_vel_T = cell(1,length(ship_headings));
MPL_vel_V = cell(1,length(ship_headings));

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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)]);

text44 = {'Ts' , 'MPL_w', 'MPL_pitch', 'MPL_roll' };


s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text44, 'MPL_COG' ,
['A' num2str(4+const1)]);
text55 = {'s' , 'm','deg' , 'deg'};
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'

8/10/09 14:24

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

14 of 20

num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text55, 'MPL_COG' ,


['A' num2str(5+const1)]);
MPLs = [Ts',MPL_w(j,:)',MPL_pitch(j,:)',MPL_roll(j,:)'];
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], MPLs, 'MPL_COG' ,[ 'A'
num2str(6+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, 'MPL_COG' ,
['A' num2str(6+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, 'MPL_COG' ,
['A' num2str(7+const1+N_Ts)]);
Ts_index_max_w = find(MPL_w(j,:) == max(MPL_w(j,:)));
max_MPL_w(j) = max(MPL_w(j,:)); % Saving for Summary
Ts_index_max_pitch = find(MPL_pitch(j,:) == max(MPL_pitch(j,:)));
max_MPL_pitch(j) = max(MPL_pitch(j,:)); % Saving for Summary
Ts_index_max_roll = find(MPL_roll(j,:) == max(MPL_roll(j,:)));
max_MPL_roll(j) = max(MPL_roll(j,:)); % Saving for Summary
maximums = [max(MPL_w(j,:)),max(MPL_pitch(j,:)),max(MPL_roll(j,:))];
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums, 'MPL_COG' ,
['B' num2str(6+const1+N_Ts)]);
Ts_assoc = [Ts(Ts_index_max_w),Ts(Ts_index_max_pitch),Ts(Ts_index_max_roll)];
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], Ts_assoc, 'MPL_COG' ,
['B' num2str(7+const1+N_Ts)]);

const1 = const1 + (N_Ts+6);


end

%------------------------CREATE MPL_CARGOS SHEETS--------------------------

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

16 of 20

Ts_index_max_u_T = find(MPL_u_T{j}(c,:) == max(MPL_u_T{j}(c,:)));


max_MPL_u_T(c,j) = max(MPL_u_T{j}(c,:)); % Saving for Summary
Ts_index_max_u_V = find(MPL_u_V{j}(c,:) == max(MPL_u_V{j}(c,:)));
max_MPL_u_V(c,j) = max(MPL_u_V{j}(c,:)); % Saving for Summary
Ts_index_max_vel_L = find(MPL_vel_L{j}(c,:) == max(MPL_vel_L{j}(c,:)));
max_MPL_vel_L(c,j) = max(MPL_vel_L{j}(c,:)); % Saving for Summary
Ts_index_max_vel_T = find(MPL_vel_T{j}(c,:) == max(MPL_vel_T{j}(c,:)));
max_MPL_vel_T(c,j) = max(MPL_vel_T{j}(c,:)); % Saving for Summary
Ts_index_max_vel_V = find(MPL_vel_V{j}(c,:) == max(MPL_vel_V{j}(c,:)));
max_MPL_vel_V(c,j) = max(MPL_vel_V{j}(c,:)); % Saving for Summary
Ts_index_max_a_L = find(MPL_a_L{j}(c,:) == max(MPL_a_L{j}(c,:)));
max_MPL_a_L(c,j) = max(MPL_a_L{j}(c,:)); % Saving for Summary
Ts_index_max_a_T = find(MPL_a_T{j}(c,:) == max(MPL_a_T{j}(c,:)));
max_MPL_a_T(c,j) = max(MPL_a_T{j}(c,:)); % Saving for Summary
Ts_index_max_a_V = find(MPL_a_V{j}(c,:) == max(MPL_a_V{j}(c,:)));
max_MPL_a_V(c,j) = max(MPL_a_V{j}(c,:)); % Saving for Summary
maximums_us_as = [max(MPL_u_L{j}(c,:)),max(MPL_u_T{j}(c,:)),max(MPL_u_V{j}
(c,:)),max(MPL_vel_L{j}(c,:)),max(MPL_vel_T{j}(c,:)),max(MPL_vel_V{j}(c,:)),max(MPL_a_L
{j}(c,:)),max(MPL_a_T{j}(c,:)),max(MPL_a_V{j}(c,:))];
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], maximums_us_as,
['Cargo_0' num2str(cargo_name)],[ 'B' num2str(7+const1+N_Ts)]);
Ts_assoc_us_as = [Ts(Ts_index_max_u_L),Ts(Ts_index_max_u_T),Ts
(Ts_index_max_u_V),Ts(Ts_index_max_vel_L),Ts(Ts_index_max_vel_T),Ts
(Ts_index_max_vel_V),Ts(Ts_index_max_a_L),Ts(Ts_index_max_a_T),Ts(Ts_index_max_a_V)];
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_'
num2str(int_step) '_damping_' num2str(floor(percentage)) '.xls'], Ts_assoc_us_as,
['Cargo_0' num2str(cargo_name)],[ 'B' num2str(8+const1+N_Ts)]);
const1 = const1 + (N_Ts+6);
end
end
%-------------------------CREATE MPL_SUMARY SHEET-------------------------% Summary for MPL heave, pitch ad roll for COG:
text1111 = { 'Summary','Motions' };
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text11, 'Summary' , 'A1' );
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text1111, 'Summary' , 'D3' );
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], text100, 'Summary' , 'A3' );
s = xlswrite([directory '\MPLs_excel_Files\' 'MPL_' num2str(name) '_sweep_' num2str
(int_step) '_damping_' num2str(floor(percentage)) '.xls'], percentage, 'Summary' , 'B3');

8/10/09 14:24

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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

C:\Documents and Settings\HP\Mis d...\short_terms_statistics.m

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

C:\Documents and Settings\HP\Mis documentos\M...\wave_spectrum.m

1 of 2

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: wave_spectrum
% Description: Script file that calculates the Generalized JONSWAP Wave
% Spectrum as a function of the sea state, i.e. the significant wave height
% (Hs), the zero upcrossing period (Tz) and peak enhancement factor (peak).
% NOTE: The Generalized JONSWAP Wave Spectrum is calculated for a constant
% Hs and a range of Tz according to a wave scatter diagram specified.
% Outputs:
%
- Generalized JONSWAP Wave Spectrum, Sw
% Scripts used (inputs):
%
- sea_state.m: This script provides the values for Hs, Tz and peak.
% References:

%
%

Vol. 31, pp 61-85.


. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis documentos\M...\wave_spectrum.m

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

C:\Documents and Settings\HP\Mis docu...\integrate_over_region.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of function: integrate_over_region.m
%
%
%
%

Description: Function to calculate a numerical integration. This function


uses the simplest form of numerical integration. Takes an average between
two points and multiplies by the distance between the two
points.

%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

C:\Documents and Settings\HP\Mis documen...\wave_spectrum_MPLs.m

1 of 2

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: wave_spectrum_MPLs
% Description: Function file that calculates the Generalized JONSWAP Wave
% Spectrum as a function of the sea state, i.e. the significant wave height
% (Hs), the zero upcrossing period (Tz) and peak enhancement factor (peak).
% NOTE: The Generalized JONSWAP Wave Spectrum is calculated for a constant
% Hs and a range of Tz according to a wave scatter diagram specified.
% Outputs:
%
- Generalized JONSWAP Wave Spectrum, Sw
% Scripts used (inputs):
%
- sea_state.m: This script provides the values for Hs, Tz and peak.
%
- Tz can be also specified individually.
% References:

%
%

Vol. 31, pp 61-85.


. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function [Sw,wspectrum_legend_ts,Ts_ts,omega_bar_MPLs] = wave_spectrum_MPLs...


(Tz_ts,ship_headings_MPLs,...
omega,g,V,...
peak,Hs)
%-------------------------------------------------------------------------%
1.- WAVE SPECTRUM CALCULATIONS FOR DIFFERENT
%
ZERO-UPCROSSING PERIODS AND WAVE FREQUENCIES
%-------------------------------------------------------------------------% NOTE: This wave spectrum must be calculated with respect the encounter
% frequecy, omega_bar:
%-------------------------------------------------------------------------% Wave Number, k
k = omega.^2/g;
% Lambda
lambda = 2*pi./k;
% Frequency of encounter, omega_bar
omega_bar_MPLs = abs(omega - k*V*cos(ship_headings_MPLs));
for j = 1:length(Tz_ts)
for i = 1:length(omega_bar_MPLs) % Calculate Transfer Functions for each wave freq.

8/10/09 14:32

C:\Documents and Settings\HP\Mis documen...\wave_spectrum_MPLs.m

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

C:\Documents and Settings\HP\Mis document...\plotMPLshipmotion.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION.GENERAL COMMENTS
%
% Name of file: plotshipmotion
% Description: Function that plots the MPL for the ship motion, i.e. heave,
% pitch and roll.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function plotMPLshipmotion(flag_c,rows_mpl,columns_mpl,...
ship_headings,ship_headings_MPL,N_ship_headings_MPL,...
Ts,Tz,MPL_w,MPL_pitch,MPL_roll)

% -----------FRFs are plotted in subplots for each heading------------ship_headings = ship_headings*180/pi;


ship_headings = round(ship_headings);
if flag_c == 0
for j=1:N_ship_headings_MPL
index_beta_MPL = find(ship_headings == ship_headings_MPL(j));
%
---- HEAVE ---figure(100)
subplot(rows_mpl,columns_mpl,j)
plot(Tz,MPL_w(index_beta_MPL,:),'-o')
ylabel('MPL_{W} \it{(m)}' )
xlabel('Tz \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL(j)) ''])
grid on
%
%
%
%
%
%
%

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

%
%
%
%
%
%
%

C:\Documents and Settings\HP\Mis document...\plotMPLshipmotion.m

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

% -----------FRFs are plotted for all headings in each figure---------else


for j=1:N_ship_headings_MPL
index_beta_MPL = find(ship_headings == ship_headings_MPL(j));
MPL_legend{j} = ['\beta = ' num2str(ship_headings_MPL(j))];
%
---- HEAVE ---figure(100)
plot(Tz,MPL_w(index_beta_MPL,:),'-o')
hold all
ylabel('MPL_{W} \it{(m)}' )
xlabel('Tz \it{(s)}')
grid on
%
axis([0 1.5 0 1.5]);
%
%
%
%
%
%

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

%
%
%
%
%
%

C:\Documents and Settings\HP\Mis document...\plotMPLshipmotion.m

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

C:\Documents and Settings\HP\Mis documen...\plotMPLcargomotion.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION.GENERAL COMMENTS
%
% Name of file: plotcargomotion
% Description: Function that plots the cargo motion, i.e. displacements and
% accelerations.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function 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)
for i=1:length(sel_cargo_MPL)
MPL_cargo_legend{i}=['Cargo = ' num2str(sel_cargo_MPL(i))];
end

% -----------MPLs are plotted in subplots for each heading------------ship_headings = ship_headings*180/pi;


ship_headings = round(ship_headings);
if flag_d == 0
for j = 1:N_ship_headings_MPL_cargo
for i = 1:length(sel_cargo_MPL)
index_cargo_MPL= find(item == sel_cargo_MPL(i));
index_beta_MPL_c = ...
find(ship_headings == ship_headings_MPL_cargo(j));
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%

%
%
%
%
%
%
%

---- LONGITUDINAL DISPLACEMENT ---figure(400)


subplot(rows_mpl_c,columns_mpl_c,j)
plot(Tz,MPL_u_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{uL} \it{(m)}')
xlabel('Tz \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on
figure(400)
subplot(rows_mpl_c,columns_mpl_c,j)
plot(Ts,MPL_u_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{uL} \it{(m)}')
xlabel('Ts \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])

1 of 8

8/10/09 14:43
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%

C:\Documents and Settings\HP\Mis documen...\plotMPLcargomotion.m


grid on
%

%
%
%
%
%
%
%

---- TRANSVERSE DISPLACEMENT ---figure(500)


subplot(rows_mpl_c,columns_mpl_c,j)
plot(Tz,MPL_u_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{uT} \it{(m)}')
xlabel('Tz \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on

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
%
%
%
%
%
%
%
%

---- VERTICAL DISPLACEMENT ---figure(600)


subplot(rows_mpl_c,columns_mpl_c,j)
plot(Tz,MPL_u_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{uV} \it{(m)}')
xlabel('Tz \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
%

%
%
%
%
%
%
%

---- LONGITUDINAL VELOCITY ---figure(700)


subplot(rows_mpl_c,columns_mpl_c,j)
plot(Tz,MPL_vel_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{vL} \it{(m/s)}')
xlabel('Tz \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
%
%
%

---- TRANSVERSE VELOCITY ---figure(800)


subplot(rows_mpl_c,columns_mpl_c,j)

2 of 8

8/10/09 14:43
%
%
%
%
%

C:\Documents and Settings\HP\Mis documen...\plotMPLcargomotion.m


plot(Tz,MPL_vel_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{vT} \it{(m/s)}')
xlabel('Tz \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on

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
%
%
%
%
%
%
%
%

---- VERTICAL VELOCITY ---figure(900)


subplot(rows_mpl_c,columns_mpl_c,j)
plot(Tz,MPL_a_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{aV} \it{(m/s^2)}')
xlabel('Tz \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
%
%
%
%
%
%
%
%

---- LONGITUDINAL ACCELERATION ---figure(1000)


subplot(rows_mpl_c,columns_mpl_c,j)
plot(Tz,MPL_a_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{aL} \it{(m/s^2)}')
xlabel('Tz \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
%
%
%
%
%
%
%
%

---- TRANSVERSE ACCELERATION ---figure(1100)


subplot(rows_mpl_c,columns_mpl_c,j)
plot(Tz,MPL_a_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{aT} \it{(m/s^2)}')
xlabel('Tz \it{(s)}')
title(['\beta = ' num2str(ship_headings_MPL_cargo(j)) ''])
grid on

3 of 8

8/10/09 14:43

C:\Documents and Settings\HP\Mis documen...\plotMPLcargomotion.m

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
%
%
%
%
%
%
%
%

---- VERTICAL ACCELERATION ---figure(1200)


subplot(rows_mpl_c,columns_mpl_c,j)
plot(Tz,MPL_a_V{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
ylabel('MPL_{aV} \it{(m/s^2)}')
xlabel('Tz \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')

% -----------MPLs are plotted for all headings in each figure---------else


for i = 1:length(sel_cargo_MPL)
index_cargo_MPL= find(item == sel_cargo_MPL(i));
for j = 1:N_ship_headings_MPL_cargo
index_beta_MPL_c = ...
find(ship_headings == ship_headings_MPL_cargo(j));
MPL_legend_c{j} = ...

4 of 8

8/10/09 14:43

C:\Documents and Settings\HP\Mis documen...\plotMPLcargomotion.m


['\beta = ' num2str(ship_headings_MPL_cargo(j))];

%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%

%
%
%
%
%
%
%

---- LONGITUDINAL DISPLACEMENT ---figure(400+12*(i-1))


plot(Tz,MPL_u_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{uL} \it{(m)}')
xlabel('Tz \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
figure(400+12*(i-1))
plot(Ts,MPL_u_L{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{uL} \it{(m)}')
xlabel('Ts \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on
%
---- TRANSVERSE DISPLACEMENT ---figure(500+12*(i-1))
plot(Tz,MPL_u_T{index_beta_MPL_c}(index_cargo_MPL,:),'-o')
hold all
ylabel('MPL_{uT} \it{(m)}')
xlabel('Tz \it{(s)}')
title(['Cargo = ' num2str(sel_cargo_MPL(i))])
grid on

%
%
%
%
%
%
%

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

C:\Documents and Settings\HP\Mis documen...\plotMPLcargomotion.m

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

C:\Documents and Settings\HP\Mis documen...\plotMPLcargomotion.m

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

C:\Documents and Settings\HP\Mis documen...\plotMPLcargomotion.m

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

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %%
GENERAL COMMENTS
%
%
% Name of file: time_series
% Description: Main Script file that CALCULATES the time series for linear
%wave-induced responses such as heave, pitch and roll, and
%displacement, velocities and accelerations for the cargo by considering
%different wave spectrums.
% NOTE: The time series for heave, pitch and roll are calculated regardless
%the cargo position, due to the fact that they are referred to the center
%of motion of the ship
% Outputs:
%
- Time series for
%
+ Heave (w)
%
+ Pitch (pitch)
%
+ Roll (roll)
%
%
%

+ Longitudinal Displacement (u_L)


+ Transverse Displacement (u_T)
+ Vertical Displacement (u_V)

%
%
%

+ Longitudinal Velocity (vel_L)


+ Transverse Velocity (vel_T)
+ Vertical Velocity (vel_V)

%
%
%

+ Longitudinal Acceleration (a_L)


+ Transverse Acceleration (a_T)
+ Vertical Acceleration (a_V)

% 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

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

%
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

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

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

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

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

%-------------------------------------% SIMULATING TIME SERIES...........


%-------------------------------------%-------------------------------------------------------------------------%
3.- INIZITIALIZING RESPONSES
%-------------------------------------------------------------------------heave_tot = cell(1,length(ship_headings_ts));
pitch_tot = cell(1,length(ship_headings_ts));
roll_tot = cell(1,length(ship_headings_ts));
u_L_tot = cell(length(ship_headings_ts),N_cargo);
u_T_tot = cell(length(ship_headings_ts),N_cargo);
u_V_tot = cell(length(ship_headings_ts),N_cargo);

4 of 10

8/10/09 15:02

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

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

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

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

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

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

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

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

end % End of Time Simulations Series

%-------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

9 of 10

%----------------------7.3.- CHECK SPECTRUMS: S_R & S_R_FFT----------for j=1:length(ship_headings_ts)


omega_bar_plot = omega_bar_func(ship_headings_ts(j),omega,g,V);
figure(109)
%---- PITCH ---subplot(rows_ts,columns_ts,j)
hold all %Plotting for the first Wave Period(Ts)
plot(omega,S_pitch{j}(1,:))
Area_S_pitch = integrate_over_region(S_pitch{j}(1,:),omega);
plot(omega,S_pitch_FFT{j}(1,2:N_points/2+1))
Area_S_pitch_FFT = integrate_over_region(S_pitch_FFT{j}(1,:),omega);
legend([ 'S(pitch)_{Response}. Area = ' num2str(Area_S_pitch)],[ 'S(pitch)_{FFT}.
Area = ' num2str(Area_S_pitch_FFT)])
title(['\beta = ' num2str(ship_headings_ts(j)) '. Ts = 6.5 \it{s}'])
grid on
if length(ship_headings_ts)==4 %Possibility to present the labels
if j==3 || j==4
% better but only for 4 ship_headings_ts
xlabel('\omega (\it{rad/s})')
end
if j==1 || j==3
ylabel('S_{pitch} (\it{rad^2s})' )
end
else
% General case of presenting labels
xlabel('\omega (\it{rad/s})' )
ylabel('S_{pitch} (\it{rad^2s})' )
end
end
%----------------------7.4.- CHECK TIME SERIES ---------------------------for j = 1:length(ship_headings_ts)
figure(110)
subplot(rows_ts,columns_ts,j)
plot(dt:dt:time, pitch{j}(1,:).*180/pi)
hold all
plot(dt:dt:time,pitch_check{j}(1,:).*180/pi)
legend('pitch_{Analitical}', 'pitch_{Check}')
title(['\beta = ' num2str(ship_headings_ts(j)) '. Ts = 6.5 \it{s}'])
grid on
if length(ship_headings_ts)==4 %Possibility to present the labels
if j==3 || j==4
% better but only for 4 ship_headings_ts
xlabel('Time (\it{s})')
end
if j==1 || j==3
ylabel('Pitch (\it{deg})' )
end
else
% General case of presenting labels
xlabel('Time (\it{s})')
ylabel('Pitch (\it{deg})' )
end
end
end

8/10/09 15:02

C:\Documents and Settings\HP\Mis documentos\M...\time_series.m

10 of 10

8/10/09 15:08

C:\Documents and Settings\HP\Mis documento...\wave_spectrum_ts.m

1 of 2

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: wave_spectrum_ts
% Description: Function file that calculates the Generalized JONSWAP Wave
% Spectrum as a function of the sea state, i.e. the significant wave height
% (Hs), the zero upcrossing period (Tz) and peak enhancement factor (peak).
% NOTE: The Generalized JONSWAP Wave Spectrum is calculated for a constant
% Hs and a range of Tz according to a wave scatter diagram specified.
% Outputs:
%
- Generalized JONSWAP Wave Spectrum, Sw
% Scripts used (inputs):
%
- sea_state.m: This script provides the values for Hs, Tz and peak.
%
- Tz can be also specified individually.
% References:

%
%

Vol. 31, pp 61-85.


. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function [Sw,wspectrum_legend_ts,Ts_ts] = wave_spectrum_ts ...


(Tz_ts,ship_headings_ts,...
omega,g,V,...
peak,Hs)
%-------------------------------------------------------------------------%
1.- WAVE SPECTRUM CALCULATIONS FOR DIFFERENT
%
ZERO-UPCROSSING PERIODS AND WAVE FREQUENCIES
%-------------------------------------------------------------------------% NOTE: This wave spectrum must be calculated with respect the encounter
% frequecy, omega_bar:
%-------------------------------------------------------------------------% Wave Number, k
k = omega.^2/g;
% Lambda
lambda = 2*pi./k;
% Frequency of encounter, omega_bar
omega_bar_ts = abs(omega - k*V*cos(ship_headings_ts*pi/180));
for j = 1:length(Tz_ts)
for i = 1:length(omega_bar_ts) % Calculate Transfer Functions for each wave freq.

8/10/09 15:08

C:\Documents and Settings\HP\Mis documento...\wave_spectrum_ts.m

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

C:\Documents and Settings\HP\Mis documento...\complex_gaussian.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION.GENERAL COMMENTS
%
% Name of file: complex_gaussian.m
% Description: Function to calculate the FFT for a given Spectrum for any
% ship motions, i.e. heave, pitch, roll.
% NOTE: If the Spectrum has been calculated according to an stochastic
% process, the FFT tends toward a normal distribution, i.e. gaussian
% distribution.
% NOTE2: The FFT must be calculated for at least double points that the
% specific Spectrum contains.
%INPUTS:
% S_R: Spectrum of the response from which the FFT is calculated.
% N: Number of points of our FFT. They are always double the
% length of the Spectrum.
% j, p: index for ship heading and wave period where the Spectrum was
% calculated.

%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

C:\Documents and Settings\HP\Mis documento...\complex_gaussian.m

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)];

% Creating Fourier Transfrm X_l_R


for l = 1:N % loop for different spectrum freq.
X_l(l) = a(l) + i*b(l);
end

2 of 2

8/10/09 15:13

C:\Documents and Settings\HP\Mis documentos\...\omega_bar_func.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION.GENERAL COMMENTS
%
% Name of file: wave_spectrum_ts
% Description: Function file that calculates the frequency of encounter for
% plotting.
% References:

%
%

Vol. 31, pp 61-85.


. . . . . .

%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function [omega_bar_plot] = omega_bar_func(ship_headings_ts,omega,g,V)


% Wave Number, k
k = omega.^2/g;
% Lambda
lambda = 2*pi./k;
% Frequency of encounter, omega_bar
omega_bar_plot = abs(omega - k*V*cos(ship_headings_ts));

1 of 1

8/10/09 15:14

C:\Documents and Settings\HP\Mis docum...\plotSpectrumResponse.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION.GENERAL COMMENTS
%
% Name of file: plotSpectrumResponse
% Description: Function that plots the Spectrum for any ship response, i.e.
% heave, pitch and roll.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function plotSpectrumResponse(flag_e1,flag_e2,rows_sr,columns_sr,...
ship_headings,ship_headings_sr_plot,...
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)
for i=1:length(Tz)
Tz_legend{i}=['Tz = ' num2str(Tz(i))];
end
if flag_e1 == 1
% ---- Spectrums of each heading are plotted for all wave periods ----for j=1:length(ship_headings_sr_plot)
index_beta_sr = find(ship_headings == ship_headings_sr_plot(j));
%-------------- HEAVE ---------------figure(10000)
subplot(rows_sr,columns_sr,j)
plot(omega,S_heave{index_beta_sr})
%
hold all
title(['\beta = ' num2str(ship_headings_sr_plot(j))])
xlabel('\omega (\it{rad/s})')
ylabel('S_{heave} (\it{m^2s})')
grid on

%-------------- PITCH ---------------figure(20000)


subplot(rows_sr,columns_sr,j)
plot(omega,S_pitch{index_beta_sr})
hold all
title(['\beta = ' num2str(ship_headings_sr_plot(j))])
xlabel('\omega (\it{rad/s})')
ylabel('S_{pitch} (\it{rad^2s})' )
grid on
%-------------- ROLL ----------------

1 of 2

8/10/09 15:14

C:\Documents and Settings\HP\Mis docum...\plotSpectrumResponse.m

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

C:\Documents and Settings\HP\Mis documentos...\plot_timeseries.m

1 of 1

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION.GENERAL COMMENTS
%
% Name of file: plot_timeseries
% Description: Function that plots the time series for any response, i.e.
% heave, pitch and roll.
%
. . . . . .
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function 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,ship_headings_ts_plot,...
index_Tz_plot,Tz_plot,response_label, ...
response,num_fig,index_cargo,label_cargo)
for j = 1:length(ship_headings_ts_plot)
index_beta_ts = find(ship_headings == ship_headings_ts_plot(j));
figure(num_fig)
subplot(rows_ts,columns_ts,j)
if flag_f2 == 1 || flag_f3 == 1
plot((dt:dt:N_simulation*time), response{j}(index_Tz_plot,:).*180/pi)
legend([ 'Tz = ' num2str(Tz_plot) ' s'])
elseif flag_f4 == 1 || flag_f5 == 1 || flag_f6 == 1 || flag_f7 == 1 || ...
flag_f8 == 1 || flag_f9 == 1 || flag_f10 == 1 || flag_f11 == 1 || flag_f12
== 1
plot((dt:dt:N_simulation*time), response{j,index_cargo}(index_Tz_plot,:))
legend([ 'Tz = ' num2str(Tz_plot) ' s. ' label_cargo])
else
plot((dt:dt:N_simulation*time), response{j}(index_Tz_plot,:))
legend([ 'Tz = ' num2str(Tz_plot) ' s'])
end
title (['\beta = ' num2str(ship_headings_ts_plot(j)) ''])
xlabel('time \it{(s)}')
ylabel(response_label)
grid on
end

Sea Transport Analysis of Upright Wind Turbines

SEA TRANSPORT MODULE CODE

Chapter I Matlab Code.

8/10/09 15:58

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
%
GENERAL COMMENTS
%
% Name of file: DOF11_Main_Program_BEM.m
%
% Description: Main Script file responsible of the Sea Transport Analysis
% of Upright WTs.
%
% Given a series of inputs, WT data, WT operational parameters,
% wave-induced motions, time parameters and wind speed, the aeroelastic
% response of the WT is calculated.
%
% References:

%
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

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

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;

%
%
%
%

Tower radius at the hub


Tower radius at transition
Tower radius at the bottom.
Set the height of the imaginary cone

%-------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

theta_wing_blade1 = 180;

% The W.T. is parked.

% - - - 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

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

% 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

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

% ------------------------------------------------------------------------%----------------------------- Y Direction -------------------------------if V0_mean(1) == 0;


V_fluc_y = zeros(1,tmax/dt);
else
V_fluc_y = stoc_wind(tmax,dt,V0_mean(1));
end
%----------------------------- Z Direction -------------------------------if V0_mean(2) == 0;
V_fluc_z = zeros(1,tmax/dt);
else
V_fluc_z = stoc_wind(tmax,dt,V0_mean(2));
end

% ------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

% and transverse motion


for i=1:length(x_cargo)
WT_u_L_tot(i,2:end)
WT_u_T_tot(i,2:end)
WT_u_V_tot(i,2:end)

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

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

% 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

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

8 of 10

%------ PLOTTING NORMAL AND TANGENTIAL FORCES -----figure(1)


plot(time_plot,Fn_plot(:,sect,1), '-b');
xlabel('Time')
ylabel('Normal Force')
legend([ 'Pitch = ' num2str(globalpitch)])
title(['Normal Force Time History. ' ' Section Selected = ' num2str(sect)])
figure(2)
plot(time_plot,Ft_plot(:,sect,1), '-r');
xlabel('Time')
ylabel('Tangential Force' )
legend([ 'Pitch = ' num2str(globalpitch)])
title(['Tangential Force Time History. ' ' Section Selected = ' num2str(sect)])
%------ PLOTTING THRUST -----figure(3)
plot(time_plot,THRUST_plot,'-b' )
xlabel('Time \it{(sec)}' )
ylabel('Thrust \it{(N)}' )
legend([ 'Pitch = ' num2str(globalpitch)])
title(['Average THRUST is ' num2str(mean(THRUST_plot(end-(5/dt):end)))]) %
Average over last 5 seconds
grid on
%------ PLOTTING ROTOR SHAFT TORQUE -----figure(4)
plot(time_plot,M_tot_plot)
legend('Blade 1' , 'Blade 2' , 'Blade 3' )
xlabel('Time')
ylabel('Rotor Shaft Torque')
title(['Pitch = ' num2str(globalpitch) '. Wind =' num2str(V0_vector(1)) ' {\it
m/s}'])
%------ PLOTTING FLAPWISE MOMENTS -----figure(5)
hold all
plot(time_plot,M_flap_total_plot, '-b')
xlabel('Time')
ylabel('Flapwise Moment (root)')
legend('Blade 1' ,'Blade 2', 'Blade 3' )
title(['Pitch = ' num2str(globalpitch) '. Wind =' num2str(V0_vector(1)) ' {\it
m/s}'])
%------ PLOTTING EDGEWISE MOMENTS -----figure(6)
plot(time_plot,M_edge_total_plot, '-r')
xlabel('Time')
ylabel('Edgewise moment (root)')
legend('Blade 1' ,'Blade 2', 'Blade 3' )
title(['Pitch = ' num2str(globalpitch) '. Wind =' num2str(V0_vector(1)) ' {\it
m/s}'])
%------ PLOTTING FORCES ON TOWER ------

8/10/09 15:58

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

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

C:\Documents and Settings\HP\Mis d...\DOF11_Main_Program_BEM.m

Displacement_Turbine_Z time theta_star_y theta_star_z...


Acceleration_Towertop_Y Acceleration_Towertop_Z time_plot...
a_L_MPL heading_time_series Hs Tz_time_series...
V0_mean V0_vector globalpitch...
THRUST_plot THRUST_plot_2 Fn_plot Ft_plot time_plot F_tower
% toc;
% t8 = toc;
% profile viewer

10 of 10

8/10/09 16:02

C:\Documents and Settings\HP\Mis documentos\MSC W...\stoc_wind.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: stoc_wind.m
%
% Description: Function that calculates the stochastic part of the wind,
% modeled as normal distributed and statistically independent of the wave
% loads. The spectral density is given by Kaimal.
%

%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------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.

%-----------% Calculate Spectrum Frequencies: spectr_freq


%-----------% Spectrum Frequencies: Range of frequencies that we will calculate
% their spectrum analysis
vector_l = 1:(N/2); % Vector of l number of Spec Freq.
spectr_freq = vector_l ./ (dt * N); % Spectrum Frequencies in Hertz

1 of 2

8/10/09 16:02

C:\Documents and Settings\HP\Mis documentos\MSC W...\stoc_wind.m

%-----------% Calculate Kaimal Spectrum


%-----------% Calculate Kaimal Spectrum
% Constants
u_ast = 1;
z = 63.84; % Tower Height
U = V0_mean;
n = spectr_freq*z/U;
% Kaimal Spectrum, (in Hertz)
S_Kaimal = u_ast^2*(52.2*z/U) ./ ( ( 1 + 33*n).^(5/3) );
%-----------% f) Generate Discrete Fourier Transform, X_l
%-----------for j = 1:(N/2)
% Calculate the var of X, using the Kaimal Spectrum.
var_X(j) = S_Kaimal(j)*T;
% 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(j)=sqrt(var_X(j)/2);
std_b(j)=std_a(j);
% Generate Gaussian complex components X_l = a + ib. a and b have
% mean zero and std deviation to generate std_X.
a(j) = std_a(j)*randn;
b(j) = std_b(j)*randn;
a(N+1-j) = a(j);
b(N+1-j) = -b(j);
end
% Force that first value and the N/2 value of X must be real, which
% means that b must be zero at those points.
b = [0 b(2:N/2-1) 0 b(N/2+1:N)];
% Creating Fourier Transfrm X_l
for j = 1:N % loop for different spectrum freq.
X_l(j) = a(j) + i*b(j);
end

%-----------% Calculate Simmulated Time Series, x


%-----------V_fluc=ifft(X_l, 'symmetric')*sample_freq;

2 of 2

8/10/09 16:04

C:\Documents and Settings\HP\Mis d...\Aeroelastic_Calculations.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: Aeroelastic_Calculations.m
%
% Description: Function that carries out the aeroelastic calculations of
% the system, i.e. WT + Barge.
%
% References:

%
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

C:\Documents and Settings\HP\Mis d...\Aeroelastic_Calculations.m

%-------------------------------------------------------------------------% Mode Shapes


%-------------------------------------------------------------------------%----------------------------Tower
--------------------------% Load the mode shapes
load modes_shapes_TOWER w_1m_star theta_1m_z_star EF_1m
u_1tm = w_1m_star(1:end);
theta_1tm_star_y = -theta_1m_z_star(1:end);
theta_1tm_star_z = theta_1m_z_star(1:end);
theta_star_y = theta_1tm_star_y(end);
% To save
theta_star_z = theta_1tm_star_z(end);
% To save
%----------------------------Blades
--------------------------load modes_shapes_BLADES w_1f_y_star w_1f_z_star...
w_1e_y_star w_1e_z_star...
w_2f_y_star w_2f_z_star...
EF_1f EF_1e EF_2f
u_1f_y = w_1f_y_star(1:end);
u_1f_z = w_1f_z_star(1:end);
u_1e_y = w_1e_y_star(1:end);
u_1e_z = w_1e_z_star(1:end);
u_2f_y = w_2f_y_star(1:end);
u_2f_z = w_2f_z_star(1:end);
% mode_blades: 3D matrix, where each page is 1f, 1e, and 2f. Each page
% contains: (blade_radius',mode_shape_y',mode_shape_z')
for i=1:3
if i==1
modes_blades(:,:,i) = [r',u_1f_y',u_1f_z'];
elseif i==2
modes_blades(:,:,i) = [r',u_1e_y',u_1e_z'];
else
modes_blades(:,:,i) = [r',u_2f_y',u_2f_z'];
end
end

%-------------------------------------------------------------------------% Time Vector


%-------------------------------------------------------------------------time=0:dt:tmax;

%==========================================================================
%
%
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

C:\Documents and Settings\HP\Mis d...\Aeroelastic_Calculations.m

GM11_tower = 0; GM11_blade = 0; GM11_nacelle = 0;


GM21_blade = 0; GM31 = 0; GM41 = 0; GM51 = 0;
GM22_tower = 0; GM22_blade = 0; GM22_nacelle = 0;
GM32 = 0; GM42 = 0; GM52 = 0;
GM33 = 0; GM44 = 0; GM55 = 0;
u_1flap_pitch = 0; u_1edge_pitch = 0; u_2flap_pitch = 0;
F_tower=zeros(length(time),length(r_tower),3);
Displacement_Turbine_X = zeros(length(r_tower)+3*length(r),length(time));
Displacement_Turbine_Y = zeros(length(r_tower)+3*length(r),length(time));
Displacement_Turbine_Z = zeros(length(r_tower)+3*length(r),length(time));
Acceleration_Towertop_Y = zeros(1,length(time));
Acceleration_Towertop_Z = zeros(1,length(time));
Fn = zeros(length(time),length(r),3);
Ft = zeros(length(time),length(r),3);
M_tot = zeros(length(time),3);
T_tot = zeros(length(time),3);
THRUST = zeros(1,length(time));
THRUST_2 = zeros(1,length(time));
M_flap_total = zeros(length(time),3);
M_edge_total = zeros(length(time),3);
% tic;
%-------------------------------------------------------------------------% 2. AEROELASTIC CALCULATIONS
%-------------------------------------------------------------------------%----------------------------Time Loop
---------------------------for t=1:length(time)
%---------------------------------------------------------------------% 2.1 Considering changes in Wind Speed
%---------------------------------------------------------------------%
% Setting conditions for changing wind speed
%
if t_change2 == 0 && t == 1
%
V0 = V0_vector;
%
elseif t_change2 ~= 0
%
for j=1:length(t_change2)
%
if time(t) == 0
%
V0 = V0_vector(:,1);
%
break
%
elseif time(t) == t_change2(j)
%
V0 = V0_vector(:,j+1);
%
end
%
end
%
end
V0 = V0_vector(:,t);
%---------------------------------------------------------------------% 2.2 Considering changes in Pitch Angle, theta = Gpitch + twist
%---------------------------------------------------------------------% Setting conditions for changing pitch angles
if t_change == 0 && t == 1

3 of 8

8/10/09 16:04

C:\Documents and Settings\HP\Mis d...\Aeroelastic_Calculations.m

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

C:\Documents and Settings\HP\Mis d...\Aeroelastic_Calculations.m

% Saving Variables at each time step.


F_tower(t,:,:)=P_tower(:,:);

% 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

C:\Documents and Settings\HP\Mis d...\Aeroelastic_Calculations.m

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;

%---------------------------------------------------------------------% 3.3 Calculate Acceleration of the Turbine (ONLY TOWER TOP)


%---------------------------------------------------------------------[Accel_Towertop_Y,Accel_Towertop_Z]=...
accel_turbine(Acceleration,u_1tm);
% Saving Variables at each time step.
Acceleration_Towertop_Y(t)=Accel_Towertop_Y;
Acceleration_Towertop_Z(t)=Accel_Towertop_Z;

%
%

toc;
t7 = toc + t7;

end
%--------------------------

End Time Loop

----------------------------

%-------------------------------------------------------------------------% 4. SPLITTING UP RESULTS TO PLOT: Fn_plot, Ft_plot, M_tot_plot,THRUST_plot


% and POWER_plot
%-------------------------------------------------------------------------% .......................CONSIDERING THE BLADE 1...........................
% tic
if t_change==0 % NO CHANGES IN PITCH
Ft_plot=Ft;
% Coord System 4
Fn_plot=Fn;
% Coord System 4
M_tot_plot=M_tot;
% Coord System 3
M_flap_total_plot = M_flap_total;
% Coord System 4
M_edge_total_plot = M_edge_total;
% Coord System 4
THRUST_plot=THRUST;
% Coord System 1
THRUST_plot_2=THRUST_2;
% Coord System 2

6 of 8

8/10/09 16:04

C:\Documents and Settings\HP\Mis d...\Aeroelastic_Calculations.m

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

C:\Documents and Settings\HP\Mis d...\Aeroelastic_Calculations.m

% 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

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
%
GENERAL COMMENTS
%
% Name of file: modes_shapes_BLADES.m
%
% Description: Script file responsible of the calculations of the blade
% mode shapes.
%
% References:

%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

stiffness_2 = E_blade*BLADE(:,4);
st_pitch = BLADE(:,5)*pi/180;
twist = BLADE(:,7)*pi/180;

2 of 12

% Stiffness of the second ppal axis


% Structural Pich (rad)
% Twist (rad)

%==========================================================================
%
%
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

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

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

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

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))));

% - - - Update Inertial Loads - - % - - - Normalize Deflection (Max Deflection = 1) - - w_1f_y_star=w_1f_y_star/sqrt(w_1f_y_star(length(radius))^2 + w_1f_z_star(length


(radius))^2);
w_1f_z_star=w_1f_z_star/sqrt(w_1f_y_star(length(radius))^2 + w_1f_z_star(length
(radius))^2);
for i=1:length(radius)
p_1f_y_new_star(i)=EF_1f^2*mass(i)*w_1f_y_star(i);
p_1f_z_new_star(i)=EF_1f^2*mass(i)*w_1f_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_1f_z_new_star - p_1f_z_star));
change=max(abs(p_1f_y_new_star - p_1f_y_star));

if change > tolerance


p_1f_y_star=p_1f_y_new_star;
p_1f_z_star=p_1f_z_new_star;
else
p_1f_y_star=p_1f_y_new_star;
p_1f_z_star=p_1f_z_new_star;
EF_1f = sqrt(p_1f_z_star(length(radius))/(mass(length(radius))*w_1f_z_star
(length(radius))));
break
end
end

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

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

5 of 12

%------------------------- Second Eigenmode ------------------------------%==========================================================================


% Note:
% This Eigenmode is called: FIRST EDGEWISE (1e as stated below)
change=1;
tolerance=1e-7;
b_1e = 0;
for i=1:length(radius)-1
b_1e = b_1e + 0.5*( w_1f_z_star(i)*mass(i)*w_1f_z_star(i) + w_1f_z_star(i+1)*mass
(i+1)*w_1f_z_star(i+1) )*(radius(i+1)-radius(i))+...
0.5*( w_1f_y_star(i)*mass(i)*w_1f_y_star(i) + w_1f_y_star(i+1)*mass(i+1)
*w_1f_y_star(i+1) )*(radius(i+1)-radius(i));
end
% - - - Inertial Loads (p_y_star, p_z_star) - - % - - - Guess - - p_1e_y_star(1:length(radius))=1;
p_1e_z_star(1:length(radius))=1;
while change>tolerance
% - - - Shear Forces (Ty_star,Tz_star)- - T_1e_y_star(length(radius))=0;
T_1e_z_star(length(radius))=0;
for i=-length(radius):-2
T_1e_y_star(abs(i)-1)=T_1e_y_star(abs(i)) + 0.5*(p_1e_y_star(abs(i)-1)
+p_1e_y_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1));
T_1e_z_star(abs(i)-1)=T_1e_z_star(abs(i)) + 0.5*(p_1e_z_star(abs(i)-1)
+p_1e_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_1e_y_star(length(radius))=0;
M_1e_z_star(length(radius))=0;
for i=-length(radius):-2
M_1e_y_star(abs(i)-1)=M_1e_y_star(abs(i))-T_1e_z_star(abs(i))*(radius(abs(i)) radius(abs(i)-1))...
- ((1/6)*p_1e_z_star(abs(i)-1) + (1/3)*p_1e_z_star(abs(i)))*...
(radius(abs(i)) - radius(abs(i)-1))^2;
M_1e_z_star(abs(i)-1)=M_1e_z_star(abs(i))+T_1e_y_star(abs(i))*(radius(abs(i)) radius(abs(i)-1))...
+ ((1/6)*p_1e_y_star(abs(i)-1) + (1/3)*p_1e_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_1e_star(i) = M_1e_y_star(i)*cos(twist(i) + st_pitch(i)) ...

8/10/09 16:32

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

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

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

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));

if change > tolerance


p_1e_y_star=p_1e_y_new_star;
p_1e_z_star=p_1e_z_new_star;
else
p_1e_y_star=p_1e_y_new_star;
p_1e_z_star=p_1e_z_new_star;
EF_1e = sqrt(p_1e_y_star(length(radius))/(mass(length(radius))*w_1e_y_star
(length(radius))));
break
end
end
% Checking orthogonality:
a_1e = 0;
for i=1:length(radius)-1
a_1e = a_1e + 0.5*( w_1f_z_star(i)*mass(i)*w_1e_z_star(i) + w_1f_z_star(i+1)*mass
(i+1)*w_1e_z_star(i+1) )*(radius(i+1)-radius(i))+...
0.5*( w_1f_y_star(i)*mass(i)*w_1e_y_star(i) + w_1f_y_star(i+1)*mass(i+1)
*w_1e_y_star(i+1))*(radius(i+1)-radius(i));
end
if a_1e < 1E-08
disp('The orthogonality constrain is fulfilled' )

8/10/09 16:32

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

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

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

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

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

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;

%
%

% - - - Deflection Modified (w_1e_y_star),(w_1e_z_star) - - w_2f_y_star = w_y_star - const_2f*(w_y_star - const_1e*w_1f_y_star);


w_2f_z_star = w_z_star - const_2f*(w_z_star - const_1e*w_1f_z_star);
w_2f_y_star = w_new_y_star - const_2f*w_1e_y_star;
w_2f_z_star = w_new_z_star - const_2f*w_1e_z_star;

% - - - Estimate Eigenfrequency (EF_2f)- - EF_2f = sqrt(p_2f_y_star(length(radius))/(mass(length(radius))*w_2f_y_star(length


(radius))));
%
EF_2f = sqrt(p_2f_z_star(length(radius))/(mass(length(radius))*w_2f_z_y_star
(length(radius))));
% - - - Update Inertial Loads - - % - - - Normalize Deflection (Max Deflection = 1) - - w_2f_y_star=w_2f_y_star/sqrt(w_2f_y_star(length(radius))^2 + w_2f_z_star(length
(radius))^2);
w_2f_z_star=w_2f_z_star/sqrt(w_2f_y_star(length(radius))^2 + w_2f_z_star(length
(radius))^2);

8/10/09 16:32

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

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));

if change > tolerance


p_2f_y_star=p_2f_y_new_star;
p_2f_z_star=p_2f_z_new_star;
else
p_2f_y_star=p_2f_y_new_star;
p_2f_z_star=p_2f_z_new_star;
EF_2f = sqrt(p_2f_z_star(length(radius))/(mass(length(radius))*w_2f_z_star
(length(radius))));
break
end
end
% Checking orthogonality:
a_2f = 0;
for i=1:length(radius)-1
a_2f = a_2f + 0.5*( w_1e_z_star(i)*mass(i)*w_2f_z_star(i) + w_1e_z_star(i+1)*mass
(i+1)*w_2f_z_star(i+1) )*(radius(i+1)-radius(i))+...
0.5*( w_1e_y_star(i)*mass(i)*w_2f_y_star(i) + w_1e_y_star(i+1)*mass(i+1)
*w_2f_y_star(i+1))*(radius(i+1)-radius(i));
end
if a_2f < 1E-10
disp('The orthogonality constrain is fulfilled' )
disp(a_2f)
else
disp('The Orthogonality constrain is not fulfilled' )
end
figure
plot(radius,w_2f_z_star)
hold all
plot(radius,w_2f_y_star)
plot(radius, zeros(1,length(radius)),'r--', 'LineWidth' ,2)
text(10,0.9,['Freq_{(3rd Mode)} = ' num2str(EF_2f/(2*pi)) ' Hz'], 'BackgroundColor' ,[.7
.7 .7])
legend('Second Flap_z', 'Second Flap_y', 'Undeformed', 'Location' , 'Best')
grid on
xlabel('Radius \it{(m)}' )
%==========================================================================
%----------------------------- FINAL OUTPUTS -----------------------------%==========================================================================
%------ OUTPUT EIGENFREQUENCIES ------

8/10/09 16:32

C:\Documents and Settings\HP\Mis docum...\mode_shapes_BLADES.m

disp('BLADE NATURAL FREQUENCIES' )


disp(['First Flapwise or Mode 1 = ' num2str(EF_1f/(2*pi))])
disp(['First Edgewise or Mode 2 = ' num2str(EF_1e/(2*pi))])
disp(['Second Flapwise or Mode 3 = ' num2str(EF_2f/(2*pi))])
%------ SAVING MODE SHAPES -----save modes_shapes_BLADES w_1f_y_star w_1f_z_star...
w_1e_y_star w_1e_z_star...
w_2f_y_star w_2f_z_star...
EF_1f EF_1e EF_2f

12 of 12

8/10/09 16:33

C:\Documents and Settings\HP\Mis document...\mode_shapes_TOWER.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
GENERAL COMMENTS
%
% Name of file: modes_shapes_TOWER.m
%
% Description: Script file responsible of the calculations of the tower
% mode shapes.
%
% References:

%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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

C:\Documents and Settings\HP\Mis document...\mode_shapes_TOWER.m

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

C:\Documents and Settings\HP\Mis document...\mode_shapes_TOWER.m

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))));

% - - - Update Inertial Loads - - % - - - Normalize Deflection (Max Deflection = 1) - - w_1m_star=w_1m_star/w_1m_star(length(radius));


for i=1:length(radius)
p_1m_z_new_star(i)=EF_1m^2*mass(i)*w_1m_star(i);
end
% - - - Check Change - - change=max(abs(p_1m_z_new_star - p_1m_z_star));
if change > tolerance
p_1m_z_star=p_1m_z_new_star;
else
p_1m_z_star=p_1m_z_new_star;
EF_1m = sqrt(p_1m_z_star(length(radius))/(mass(length(radius))*w_1m_star(length
(radius))));
for i = 1:length(radius)
kappa_1m_star(i) = M_1m_star(i)/stiffness(i);
end
% - - - Curvatures (kappa_1m_z_star)- - 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));

8/10/09 16:33

C:\Documents and Settings\HP\Mis document...\mode_shapes_TOWER.m

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

C:\Documents and Settings\HP\Mis documentos\MS...\GM_terms_tot.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: GM_terms_tot.m
%
% Description: Function that calculates the Generalized Mass Terms taking
% into account changes in the pitch angle.
%
% References:

%
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

C:\Documents and Settings\HP\Mis documentos\MS...\GM_terms_tot.m

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

C:\Documents and Settings\HP\Mis documentos\MS...\GM_terms_tot.m

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

C:\Documents and Settings\HP\Mis doc...\generalized_mass_terms.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: generalized_mass_terms.m
%
% Description: Function that calculates the generalized mass terms per
% every section providing as outputs generalized mass vectors; as well as
% the mode shapes vectors "pitched" or referred to the rotor plane system
% Note that this vectors will only change according to changes in global
% pitch.
%
% References:

%
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

C:\Documents and Settings\HP\Mis doc...\generalized_mass_terms.m

%
-------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

C:\Documents and Settings\HP\Mis doc...\generalized_mass_terms.m

%
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

C:\Documents and Settings\HP\Mis doc...\generalized_mass_terms.m

gm31(i,b) = gm31_inertial_force_blade(2)*u_1flap_pitch(i,1) + ...


gm31_inertial_force_blade(3)*u_1flap_pitch(i,2);

% ...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

C:\Documents and Settings\HP\Mis doc...\generalized_mass_terms.m

% ...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

C:\Documents and Settings\HP\Mis d...\integrate_mid_point_rule.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: integrate_mid_point_rule.m
%
% Description: This function uses the simplest form of
% integration. Takes an average between two points and
% distance between the two points.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - -

numerical
multiplies by the

- - - - - - - - - -

%-------------------------------------------------------------------------function VALUE = integrate_mid_point_rule(value,r)


%-------------------------------------------------------------------------size_check = size(value);
if size_check(1) == 1
VALUE = 0;
for i=1:length(r)-1
VALUE = VALUE + (r(i+1)-r(i))*(value(i+1)+value(i))/2;
end
else
VALUE = zeros(size_check(2),1);
for j=1:size_check(2)
for i=1:length(r)-1
VALUE(j) = VALUE(j) + (r(i+1)-r(i))*(value(i+1,j)+value(i,j))/2;
end
end
end

1 of 1

8/10/09 16:42

C:\Documents and Settings\HP\Mis documentos...\tower_aero_calc.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: tower_aero_calc.m
%
% Description: Function that calculates the tower forces at time step.
% These forces include the aerodynamic, gravitational, and inertial
% forces, as well as the elastic response.
%
% References:

%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------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

C:\Documents and Settings\HP\Mis documentos...\tower_aero_calc.m

%-------------------------------------------------------------% 2. Calculate Tower Structural Velocitites


%
Vstruct = Vstiff_body + Velastic
%-------------------------------------------------------------%---------------------------------------% A) Calculate Vstiff_body: V_SB_tower
%---------------------------------------% Vstiff_body = Velocity of the tower caused by the stiff body
% motion of the tower from the ship.
V_SB_tower_1 = [SB_Tower_vel_V(i,t);...
SB_Tower_vel_T(i,t);...
SB_Tower_vel_L(i,t)];
% In System 1
% Taking y and z component
V_SB_tower = [V_SB_tower_1(2); V_SB_tower_1(3)];
%-------------------------% B) Calculate Velastic
%-------------------------% Velastic = Velocity of the blade caused by the vibration of
% the blade in all three vibrational modes considered
Velastic_y = Velocity(1)*u_1tm(i);
Velastic_z = Velocity(2)*u_1tm(i);
Velastic_tower = [Velastic_y;Velastic_z];

%-----------------------------------% C) Calculate Vstruct = V_ST_tower


%------------------------------------V_ST_tower = V_SB_tower + Velastic_tower;

%-------------------------------------------------------------% 3. Calculate Tower Relative Velocity:


%
Vrel_tower = Vwind_tower - V_ST_tower
%-------------------------------------------------------------Vrel_tower(:,i) = Vwind_tower - V_ST_tower;

%-------------------------------------------------------------% 4. Calculate Tower Diameter


%-------------------------------------------------------------tower_diameter = find_tower_diameter(hub,r_tower(i),...
a_hub,a_change,a_bottom,transition_height);

%-------------------------------------------------------------% 5. Calculate Tower Drag Force, Fd_tower


%-------------------------------------------------------------cd_tower = 1;
Fd_tower_y = 0.5*density*Vrel_tower(1,i)^2*tower_diameter*cd_tower;
Fd_tower_z = 0.5*density*Vrel_tower(2,i)^2*tower_diameter*cd_tower;

2 of 3

8/10/09 16:42

C:\Documents and Settings\HP\Mis documentos...\tower_aero_calc.m

Faero_tower = [0;Fd_tower_y;Fd_tower_z];

%-------------------------------------------------------------% 6. Calculate Tower Gravitational Forces, Fgrav_tower


%-------------------------------------------------------------Fgrav_tower = [-mass_tower(i)*g; 0; 0];

%-------------------------------------------------------------% 7. Calculate Stiff-Body (SB) Forces in the Tower, FSB_tower


%-------------------------------------------------------------FSB_tower = [-mass_tower(i)*SB_Tower_acc_V(i,t);...
-mass_tower(i)*SB_Tower_acc_T(i,t);...
-mass_tower(i)*SB_Tower_acc_L(i,t)]; % In System 1

%
%
%

%-------------------------------------------------------------% 8. Calculate Total Tower Forcers


%-------------------------------------------------------------FSB_tower = [0;0;0];
Faero_tower = [0;0;0];
Fgrav_tower = [0;0;0];
F_tower(i,:) = Faero_tower + Fgrav_tower + FSB_tower;

end %-------------------

End Tower Section Loop

------------------

3 of 3

8/10/09 16:40

C:\Documents and Settings\HP\Mis docume...\find_tower_diameter.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: generalized_mass_terms.m
%
% Description: This function calculates the tower diameter by a given tower
% section.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [tower_diameter] = find_tower_diameter(hub,tower_section, ...
a_hub,a_change,a_bottom,transition_height)
%-------------------------------------------------------------------------%==========================================================================
%
%
INPUTS
%
%==========================================================================
%-------------------------------------------------------------------------%
Tower Position
%-------------------------------------------------------------------------position_tower = tower_section;
%==========================================================================
%
%
TOWER DIAMETER
%
%==========================================================================
if position_tower<= hub(1) && position_tower>=transition_height
slope = (a_change - a_hub)/(hub(1)-transition_height);
a = (hub(1) - position_tower)*slope + a_hub;
tower_diameter = a*2;
else
slope = (a_bottom - a_change)/transition_height;
a = (transition_height - position_tower)*slope + a_change;
tower_diameter = a*2;
end

1 of 1

8/10/09 16:43

C:\Documents and Settings\HP\Mis documentos...\blade_aero_calc.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: blade_aero_calc.m
%
% Description: Function that calculates the blade normal & tangent. forces,
% torque, thrust, and flapwise and edgewise moments for each time step.
% These forces include the aerodynamic, gravitational, and inertial
% forces, as well as the elastic response.
%
% References:

%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------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

C:\Documents and Settings\HP\Mis documentos...\blade_aero_calc.m

%----------------------------for b=1:nB % nB=num. Blades

Blade Loop

-----------------------

%--------------------Blade Section Loop


------------------for i=1:(length(r)-1)
% (excluding last element)
%-------------------------------------------------------------% 1. Calculate Wind Speed seen by the blade
%-------------------------------------------------------------%---------------------------------% A) Set the particular position
%---------------------------------section=[r(i);0;0]; % as vector in blade coordinate system (4)
%---------------------------------% B) Calling wind_speed Function
%---------------------------------% Calculate the Incoming Wind Speed refered to 4 Coordin.System
[velocity_4 a34 a23 a12 a14 a24 blade_pos_2] = ...
wind_speed(theta_yaw,theta_tilt,...
theta_cone,theta_wing_blades(b),V0,wind_shear, ...
hub,shaft,section,a_hub,a_change,a_bottom,...
transition_height,height_cone,tower_flag);
%---------------------% C) Calculate Vwind
%---------------------% Taking y and z component and calculate the modulus
Vwind = [velocity_4(2); velocity_4(3)];

%-------------------------------------------------------------% 2. Calculate Blade Structural Velocitites


%
Vstruct = Vstiff_body + Velastic
%-------------------------------------------------------------%---------------------------------------% A) Calculate Vstiff_body: V_SB_blade
%---------------------------------------%------------------------Blades
--------------------------% Vstiff_body = Velocity of the blade caused by the stiff body
% motion of the blade from the ship.
V_SB_blade_1 = [SB_Blade_vel_V(i+count,t);...
SB_Blade_vel_T(i+count,t);...
SB_Blade_vel_L(i+count,t)];
% In System 1
V_SB_blade_4 = a14*V_SB_blade_1;
% In System 4
% Taking y and z component
V_SB_blade = [V_SB_blade_4(2); V_SB_blade_4(3)];
%-------------------------% B) Calculate Velastic
%-------------------------%------------------------Blades
--------------------------% Velastic = Velocity of the blade caused by the vibration of
% the blade in the three vibrational modes.
Velastic = Velocity(b*3)*u_1flap_pitch(i,:) + ...
Velocity(b*3+1)*u_1edge_pitch(i,:) + ...
Velocity(b*3+2)*u_2flap_pitch(i,:);
Velastic = Velastic';
%------------------------Tower
---------------------------

2 of 6

8/10/09 16:43

C:\Documents and Settings\HP\Mis documentos...\blade_aero_calc.m

% Velastic = Velocity of the blade caused by the vibration of


% the tower. This is in system 2. So it is necessary to transform
% to the blade coordinate system, i.e. system 4.
const_y = theta_1tm_star_y(end);
const_z = theta_1tm_star_z(end);
Velastic_x = -const_z*Velocity(1)*blade_pos_2(2) + ...
const_y*Velocity(2)*blade_pos_2(3);
Velastic_y = const_z*Velocity(1)*blade_pos_2(1) + Velocity(1);
Velastic_z = -const_y*Velocity(2)*blade_pos_2(1) + Velocity(2);
Velastic_4 = a24*[Velastic_x;Velastic_y;Velastic_z];
Velastic_bl_tow = [Velastic_4(2);Velastic_4(3)];
%-----------------------------------% C) Calculate Vstruct = V_ST_blade
%-----------------------------------V_ST_blade = V_SB_blade + Velastic + Velastic_bl_tow;

%-------------------------------------------------------------% 3. Calculate Blade Relative Velocity:


%
Vrel = Vwind - V_ST_blade
%-------------------------------------------------------------Vrel(:,i,b) = Vwind - V_ST_blade;

%-------------------------------------------------------------% 4. Calculate Flow Angle


%-------------------------------------------------------------phi = atan2(Vrel(2,i,b),-Vrel(1,i,b));

%-------------------------------------------------------------% 5. Calculate Angle of Attack


%-------------------------------------------------------------alpha = phi + theta(i);
% Changing to degrees in order to look up properly in the data.
alpha = alpha * 180/pi;

%-------------------------------------------------------------% 6. Read corresponding Lift and Drag coefficients, Cl & Cd


%-------------------------------------------------------------if alpha < -180
alpha = alpha + 360;
elseif alpha > 180
alpha = alpha - 360;
end
[cl,cd]=find_cl_cd(data_blade,thickness,r,alpha,r(i));

%-------------------------------------------------------------% 7. Calculate Normal and Tangential Coefficients, Cn & Ct


%-------------------------------------------------------------cn(i,b) = cl * cos(phi) + cd * sin(phi);
ct(i,b) = cl * sin(phi) - cd * cos(phi);

3 of 6

8/10/09 16:43

C:\Documents and Settings\HP\Mis documentos...\blade_aero_calc.m

%-------------------------------------------------------------% 8. Calculate Modulus of Vrel


%-------------------------------------------------------------Mod_Vrel= sqrt(Vrel(1,i,b)^2+Vrel(2,i,b)^2);

%-------------------------------------------------------------% 9. Calculate Blade Aerodynamic Forces, Fn and Ft


%-------------------------------------------------------------Fn(i,b) = 0.5 * density * Mod_Vrel^2 * chord(i) * cn(i,b);
Ft(i,b) = 0.5 * density * Mod_Vrel^2 * chord(i) * ct(i,b);

%-------------------------------------------------------------% 10. Calculate Blade Gravitational Forces, Fgrav_4


%-------------------------------------------------------------Fgrav_1 = [-mass(i)*g; 0; 0];
Fgrav_4 = a14*Fgrav_1; % Seen by the blade

%-------------------------------------------------------------% 11. Calculate Stiff-Body (SB) Forces in the blade, FSB


%-------------------------------------------------------------FSB_1 = [-mass(i)*SB_Blade_acc_V(i+count,t);...
-mass(i)*SB_Blade_acc_T(i+count,t);...
-mass(i)*SB_Blade_acc_L(i+count,t)]; % In System 1
FSB_4 = a14*FSB_1;
% In System 4

%
%
%
%

%-------------------------------------------------------------% 12. Calculate New Tangential and Normal Forces


%-------------------------------------------------------------FSB_4 = [0;0;0];
Ft(t,i,b) = 0;
Fn(t,i,b) = 0;
Fgrav_4 = [0;0;0];
Ft(i,b) = Ft(i,b) + Fgrav_4(2) + FSB_4(2);
Fn(i,b) = Fn(i,b) + Fgrav_4(3) + FSB_4(3); % - Fcent(t,i,b);

%-------------------------------------------------------------% 13. Save thrust


%-------------------------------------------------------------% thrust is save from the normal force. Note that is given in
% coordinate system 4.
thrust(i,b) = Fn(i,b);
end
%-------------------

End Blade Section Loop

------------------

%-------------------------------------------------------------% 14. Completing Total Forces, Fn and Ft


%-------------------------------------------------------------% Completing the vector Ft, Fn in order to calculte Moments.

4 of 6

8/10/09 16:43

C:\Documents and Settings\HP\Mis documentos...\blade_aero_calc.m

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
%-------------------------

End Blade Loop

-----------------------

% Vrel_blade1 = Vrel(:,end,1);

%---------------------------------------------------------------------% 16. Initialization Variables


%---------------------------------------------------------------------A = zeros(1,length(r));
B = zeros(1,length(r));
AN = zeros(1,length(r));
BN = zeros(1,length(r));
M_sec = zeros(length(r),nB);% Torque at Shaft System (System 3) per section
T_sec = zeros(length(r),nB);% Thrust at Blade System (System 4) per sect.
M_tot = zeros(1,nB);
% Torque at Shaft System (System 3) per blade
T_tot = zeros(1,nB);
% Thrust at Blade System (System 4) per blade
AMF = zeros(1,length(r));
BMF = zeros(1,length(r));
AME = zeros(1,length(r));
BME = zeros(1,length(r));
M_flap = zeros(length(r),nB);% FlapM at Blade System (System 4) per section
M_edge = zeros(length(r),nB);% FlapM at Blade System (System 4) per section
M_flap_total = zeros(1,nB);
% FlapM at Blade System (System 4) per blade
M_edge_total = zeros(1,nB);
% FlapM at Blade System (System 4) per blade

%---------------------------------------------------------------------% 17. Calculate Thrust,Torque, Flap and Edgewise moments


%---------------------------------------------------------------------for b=1:nB %------------------Blade Loop
---------------------for i=1:(length(r)-1) %-------Blade Section Loop
---------% Excluding last element.
% Assuming that between forces there is a linear variation.
% Trapezoidal Numerical Integration.
%-------------------------------------------------% A) Torque at blade section and time step, M_sec
%-------------------------------------------------% The distance r from Ft to shaft is subjected to a cone angle.
A(i) = (Ft(i+1,b) - Ft(i,b))/ (r(i+1) - r(i));
B(i) = (Ft(i,b)*r(i+1) - Ft(i+1,b)*r(i)) / (r(i+1) - r(i));
M_sec(i,b) = 1/3 *A(i)*(r(i+1)*cos(theta_cone))^3 +...
1/2 * B(i) *(r(i+1)*cos(theta_cone))^2 -...
(1/3 *A(i)*(r(i)*cos(theta_cone))^3 +...
1/2*B(i)*(r(i)*cos(theta_cone))^2);

5 of 6

8/10/09 16:43

C:\Documents and Settings\HP\Mis documentos...\blade_aero_calc.m

%--------------------------------------------------% B) Thrust at blade section and time step, T_sec


%--------------------------------------------------AN(i) = (thrust(i+1,b) - thrust(i,b)) / (r(i+1) - r(i));
BN(i) = (thrust(i,b)*r(i+1) - thrust(i+1,b)*r(i)) /...
(r(i+1) - r(i));
T_sec(i,b) = (1/2*AN(i)*r(i+1)^2 + ...
BN(i)*r(i+1))-(1/2*AN(i)*r(i)^2 + BN(i)*r(i));
%------------------------------------------------% C) Flap and Edgewise Moment: M_flap & M_edge (At Coord. Syst. 4)
%------------------------------------------------% FLAPWISE MOMENT, M_flap
AMF(i) = (Fn(i+1,b) - Fn(i,b)) / (r(i+1) - r(i));
BMF(i) = (Fn(i,b)*r(i+1) - Fn(i+1,b)*r(i)) / (r(i+1) - r(i));
M_flap(i,b) = 1/3 *AMF(i)*r(i+1)^3 + ...
1/2 * BMF(i) *r(i+1)^2 - (1/3 *AMF(i)*...
r(i)^3 + 1/2 * BMF(i)*r(i)^2);
% EDGEWISE MOMENT, M_edge
AME(i) = (Ft(i+1,b) - Ft(i,b)) / (r(i+1) - r(i));
BME(i) = (Ft(i,b)*r(i+1) - Ft(i+1,b)*r(i)) / (r(i+1) - r(i));
M_edge(i,b) = 1/3 *AME(i)*r(i+1)^3 + ...
1/2 * BME(i) *r(i+1)^2 - (1/3 *AME(i)*...
r(i)^3 + 1/2 * BME(i)*r(i)^2);
end %---------------

End Blade Section Loop

-----------------

%---------------------------------------------------------% 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 %----------------------

End Blade Loop

-----------------------

%-----------------------------------------------------% F) Total Thrust (including all blades)


%-----------------------------------------------------% Tower System
THRUST = sum(T_tot(:))*cos(theta_cone)*cos(theta_tilt); % Coord.System 1
% Nacelle System
THRUST_2 = sum(T_tot(:))*cos(theta_cone);
% Coord.System 2

6 of 6

8/10/09 16:44

C:\Documents and Settings\HP\Mis documentos\MSC ...\wind_speed.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: generalized_mass_terms.m
%
% Description: This function will take a constant wind speed, let say
% from anemometer reading at the hub height, and determine the velocities
% including wind shear effects and tower shadow effects seen by the blade.
% This new velocity can then be used in the BEM code in order to have a
% proper estimation of the forces on the blades, vibrations, and power
% production of the turbine.
% Besides, it provides the position on the blade from system 2. This
% position will be used later in the calculations of the relative velocity.
%
% References:

%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------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

C:\Documents and Settings\HP\Mis documentos\MSC ...\wind_speed.m

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

C:\Documents and Settings\HP\Mis documentos\MSC ...\wind_speed.m

-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

C:\Documents and Settings\HP\Mis documentos\MSC ...\wind_speed.m

%-------------------------------------------------------------------------%
4.- Blade position in System 2.
%-------------------------------------------------------------------------blade_pos_2 = shaft + a24'*section;

4 of 4

8/10/09 16:46

C:\Documents and Settings\HP\Mis documentos\MSC ...\find_cl_cd.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: find_cl_cd.m
%
% Description: Function that look for the aerodynamics coefficients given a
% particular blade section.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [cl,cd]=find_cl_cd(data_blade,thickness,r,alpha,blade_section);
%-------------------------------------------------------------------------%==========================================================================
%
%
INPUTS
%
%==========================================================================
[index]=find(r == blade_section);
thickness_section = thickness(index);
%==========================================================================
%
%
FIND CL AND CD
%
%==========================================================================
if thickness_section >= 15 && thickness_section < 18
cl_15 = interp1q(data_blade{1}(:,1),data_blade{1}(:,2),alpha);
cd_15 = interp1q(data_blade{1}(:,1),data_blade{1}(:,3),alpha);
cl_18 = interp1q(data_blade{2}(:,1),data_blade{2}(:,2),alpha);
cd_18 = interp1q(data_blade{2}(:,1),data_blade{2}(:,3),alpha);
cl = interp1q([15;18],[cl_15;cl_18],thickness_section);
cd = interp1q([15;18],[cd_15;cd_18],thickness_section);
elseif thickness_section >= 18 && thickness_section < 24
cl_18 = interp1q(data_blade{2}(:,1),data_blade{2}(:,2),alpha);
cd_18 = interp1q(data_blade{2}(:,1),data_blade{2}(:,3),alpha);
cl_24 = interp1q(data_blade{3}(:,1),data_blade{3}(:,2),alpha);
cd_24 = interp1q(data_blade{3}(:,1),data_blade{3}(:,3),alpha);

1 of 2

8/10/09 16:46

C:\Documents and Settings\HP\Mis documentos\MSC ...\find_cl_cd.m

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

C:\Documents and Settings\HP\Mis documentos\MSC ...\rungekutta.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: rungekutta.m
%
% Description: This function calculate the dynamic response of the WT at a
% given time step. It is based on the time-integration scheme Runge-Kutta% Nystrm.
%
% References:

%
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

C:\Documents and Settings\HP\Mis documentos\MSC ...\rungekutta.m

%
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

C:\Documents and Settings\HP\Mis documentos\MSC ...\rungekutta.m

% 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)

C:\Documents and Settings\HP\Mis documentos\MSC ...\rungekutta.m

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

C:\Documents and Settings\HP\Mis documentos\MSC ...\rungekutta.m

GM(3,2) = GM32(1) + GM32(2) + GM32(3);


GM(4,2) = GM42(1) + GM42(2) + GM42(3);
GM(5,2) = GM52(1) + GM52(2) + GM52(3);
%----------------------------Blade 2
GM(6,2)=GM(3,2);
GM(7,2)=GM(4,2);
GM(8,2)=GM(5,2);
%----------------------------Blade 3
GM(9,2)=GM(3,2);
GM(10,2)=GM(4,2);
GM(11,2)=GM(5,2);

---------------------------

---------------------------

%-------------------------------------------------------------------------%
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

C:\Documents and Settings\HP\Mis documentos\MSC ...\rungekutta.m

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

C:\Documents and Settings\HP\Mis documentos\MSC ...\rungekutta.m

C = dt/2 * gc(GF, X + b, X_D + B, GM, GK, GC);


d = dt * (X_D + C);
D = dt/2 * gc(GF, X + d, X_D + 2*C, GM, GK, GC);
X = X + dt*(X_D + 1/3*(A+B+C));
X_D = X_D + 1/3*(A + 2*B + 2*C + D);

%-------------------------------------------------------------------------% 3.- Returning New Values


%-------------------------------------------------------------------------Displacement = X;
Velocity = X_D;
Acceleration = X_DD;

7 of 7

8/10/09 16:49

C:\Documents and Settings\HP\Mis documentos\MSC WIND ENE...\gc.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: gc.m
%
% Description: This function calculate the acceleration vector from the
% equation of motion.
%
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function X_DD = gc(GF,X,X_D,GM,GK,GC)


X_DD = inv(GM)*(GF-GK*X-GC*X_D);

1 of 1

8/10/09 16:50

C:\Documents and Settings\HP\Mis documentos...\displac_turbine.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: displac_turbine.m
%
% Description: Function that calculates the turbine displacement
% sections at a given time step. It is considered that:
%
- Tower Displacement is given in Coordinate System 1.
%
- Blade Displacement is given in Coordinate System 2.
%
(Only traslation, the rotation is added in the animation
%
% The Stiffbody displacements are added from the barge are added
% animation program.
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - -

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

C:\Documents and Settings\HP\Mis documentos...\displac_turbine.m

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

C:\Documents and Settings\HP\Mis documentos...\displac_turbine.m

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

C:\Documents and Settings\HP\Mis documentos\M...\accel_turbine.m

%-------------------------------------------------------------------------% DTU - SIEMENS WIND POWER


OCT 2009
%
%
MASTER THESIS
%
SEA TRANSPORT ANALYSIS OF UPRIGHT WIND TURBINE
%
%-------------------------------------------------------------------------%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
FUNCTION. GENERAL COMMENTS
%
% Name of file: accel_turbine.m
%
% Description: Function that may calculate the turbine acceleration at all
% the sections at a given time step. It is only implemented:
%
- longitudinal (z-component) and transverse (y-component) at the
%
tower top.
%
. . . . . .
%
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %-------------------------------------------------------------------------function [Accel_Towertop_Y,Accel_Towertop_Z]=...
accel_turbine(Acceleration,u_1tm)
%-------------------------------------------------------------------------%-------------------------------------------------------------------------%
Calculate Acceleration for each direction
%-------------------------------------------------------------------------%--------------------------- Y-direction ---------------------------------Accel_Towertop_Y = Acceleration(1)*u_1tm(end);
%--------------------------- Z-direction ---------------------------------Accel_Towertop_Z = Acceleration(2)*u_1tm(end);

1 of 1

DTU Mechanical Engineering


Section of Fluid Mechanics
Technical University of Denmark
Nils Koppels All, Bld. 403
DK- 2800 Kgs. Lyngby
Denmark
Phone (+45) 45 25 43 00
Fax (+45) 45 88 43 25
www.mek.dtu.dk