SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
WIND TURBINE TLP DESIGN PROJECT
Prepared By:
Group 7: Patrick Burnett, Dale Cressman, Oguzhan Kirikbas, Daniel Place, Jin Zhang
Graduate Students, Department of Naval Architecture and Marine Engineering
The University of Michigan
Prepared For:
Matthew Collette
Professor, Department of Naval Architecture and Marine Engineering
The University of Michigan
2
Table of Contents
List of Tables .................................................................................................................................. 3
List of Figures................................................................................................................................. 3
1.0 – Introduction............................................................................................................................ 4
2.0 – Problem Statement................................................................................................................. 5
2.1 - Design Methodology .......................................................................................................... 5
3.0 – Particle Swarm Optimization................................................................................................. 7
3.1 – Background........................................................................................................................ 7
3.2 - Implementation................................................................................................................... 8
4.0 – Hydrostatics ......................................................................................................................... 10
5.0 – Forces and Loads ................................................................................................................. 11
5.1 – Turbine Supplied Loads................................................................................................... 11
5.2 – Wind Induced Loads........................................................................................................ 11
5.3 – Current Induced Loads..................................................................................................... 12
6.0 – Stresses................................................................................................................................. 13
6.1 - Bending............................................................................................................................. 13
6.2 - Hoop ................................................................................................................................. 14
6.3 - Axial ................................................................................................................................. 14
6.4 - A-36 Steel and combined stresses .................................................................................... 14
6.5 – Tension Leg Support........................................................................................................ 14
7.0 – Seakeeping........................................................................................................................... 15
7.1 - Heave Natural Period........................................................................................................ 15
7.2 - Surge/Sway Natural Period .............................................................................................. 16
7.3 - Setdown ............................................................................................................................ 16
7.4 – Pitch Angle Calculations.................................................................................................. 17
8.0 – Cost Calculation................................................................................................................... 18
9.0 - Design Overview.................................................................................................................. 19
Works Cited .................................................................................................................................. 21
Appendix A – Particle Swarm Optimization Code....................................................................... 22
Appendix B – Hydrostatics Code ................................................................................................. 27
Appendix C – Load Calculations.................................................................................................. 30
Appendix D – Heave Natural Period Code................................................................................... 32
Appendix E – Pitch Calculation Code .......................................................................................... 33
Appendix F – Setdown Condition Analyzer................................................................................. 34
Appendix G – Surge Calculation Code......................................................................................... 36
Appendix H – Cost Calculation Code........................................................................................... 37
3
List of Tables
Table 1- NREL 5MW Turbine Properties [2]................................................................................. 5
Table 2 - Definition of the Design Variables.................................................................................. 6
Table 3 - Model of Testing & Design Constraints.......................................................................... 6
Table 4 - Final Design Dimensions .............................................................................................. 19
Table 5 - Final Design Properties ................................................................................................. 20
List of Figures
Figure 1 - Wind Resources in the United States [1] ....................................................................... 4
Figure 2 - The Design Process of the Floating TLP Platform Structure......................................... 7
Figure 3 - Power Curve for NREL 5 MW Turbine....................................................................... 11
Figure 4 - Drag Coefficients ......................................................................................................... 13
Figure 5 - Comparison of the System Natural Periods ................................................................. 15
Figure 6 - Free Body Diagram of Setdown................................................................................... 17
Figure 7 - Free Body Diagram of Pitched TLP............................................................................. 18
Figure 8 – Design Drawing - Overview........................................................................................ 39
Figure 9 – Design Drawing – Front View .................................................................................... 40
Figure 10 – Design Drawing – Base Dimensions......................................................................... 41
Figure 11 – Design Drawing – Side View.................................................................................... 42
4
1.0 – Introduction
Renewable wind energy is one of the most promising sources of clean power in the foreseeable
future. As technology progresses to improve the feasibility of the wind energy systems,
additional locations, such as offshore platforms become a reality to aid in the progress of
electricity generation. As suitable marine wind farm locations have been explored the distance
offshore has steadily increased, from the shallow waters of Denmark to depths of hundreds of
meters.
The original wind turbine platforms were in approximately 30 meters of water, but have steadily
increased to around 80 meters depth. The feasibility of the successful areas for wind farms was
severely limited to these water depths, as the platforms were required to be bottom fixed. [1]
Mono-pile platforms, consisting of a single support tower were anchored to the seabed for the
shallow water applications, while applications from 20-80 meters used a tripod design, also fixed
to the seabed. In order to exploit better wind farm locations that are further offshore, and thus in
deeper water, new technologies, often applied from the offshore oil industry, must be developed.
One of these technologies is the Tension Leg Platform (TLP), allowing for significantly greater
water depths, proposed up to 900 meters in depth. In the United States, much of the developable
areas for wind farms are farther offshore than depths of 80 meters, as shown in Figure 1. This
leads to the need to utilize tension leg platforms to successfully harness the winds power.
Figure 1 - Wind Resources in the United States [1]
5
2.0 – Problem Statement
The ability to utilize the areas of the United States that are suitable for wind energy development
requires a TLP is to be designed to support a 5 MW National Renewable Energy Lab (NREL)
Offshore Wind Turbine with a concrete gravity base for use in 200 meters of water. 100 turbines
are to make up the wind farm. Designing a TLP for use in 200 meters of depth requires
overcoming significant design challenges not faced in the design of a land based or bottom fixed
system. Details of the NREL 5 MW turbine are outlined in Table 1.
Table 1- NREL 5MW Turbine Properties [2]
In order to ensure the safety and operation of the installed wind turbine, the platforms are limited
to natural heave periods of less than 1.8 seconds, surge/sway periods of greater than 70 seconds,
tendon tension greater than zero, a maximum set-down of less than 1.2 meters in storm
conditions of 120 knots and 3 knots of current, and a 3 degree pitch limitation in storm survival
conditions. The objective was to produce a platform capable of meeting these criteria with the
minimum total cost.
2.1 - Design Methodology
The objective of the design process was to minimize the costs of the support structure for the
NREL 5 MW Wind Turbine. The design team started with real data from the given wind turbine
and the customer requirements as outlined above. Choosing variables to describe the structure
geometrically, a PSO was utilized to explore the design space.
The design variables describe the geometry of the supporting structure. Based on an initial
feasible design the design variables were reduced to: hull draft, hull diameter, arm length, arm
height, hull radius, arm thickness, tendon diameter and ballast height. The design variables and
their descriptions are indicated in Table 2.
6
Design Variables Definition
hull draft The distance from the bottom of the hull to the free surface
hull radius The distance from the center to the outer surface of the hull
arm length The horizontal dimension of the arm from the hull
arm height The vertical dimension of the arm
hull thickness The thickness of the steel A-36 for hull
arm thickness The thickness of the steel A-36 for arm
tendon diameter The diameter of the tendon
ballast height The vertical dimension of the ballast from the hull bottom
Table 2 - Definition of the Design Variables
The PSO checked the fitness based on the feasability of the three catagories shown in Table 3.
Those catagories were used to analyze the structure and apply penalties to the objective cost
function if the point designs violated any constraints. The objective of the design process was to
reduce the cost of the structure. The cost calculation was used as an evaluation function to obtain
the best group of design variables. The overall design process is described in Figure 2.
Catagory Analysis
Hydrodynamics Turbine Heave Natural Period Analyzer
Pitch Angle Analyzer (Under 25 m/s wind speed)
Setdown Condition Analyzer
Surge Period Analyzer
Hydrostatics Buoyant Forces Calculation
Structural Weight Calculation
Tendon Force Calculation
Loads/ Stress Bending Loads Testing
Wind Loads Testing
Stress Testing
Table 3 - Model of Testing & Design Constraints
7
Figure 2 - The Design Process of the Floating TLP Platform Structure
3.0 – Particle Swarm Optimization
Complex design problems containing a multitude of design variables and constraints are virtually
impossible to solve without the use of a rigorous optimization technique. Design problems
containing one objective function are much more simple that multi-objective problems because a
converged design can be obtained via optimization without having tradeoffs between conflicting
objectives. Many different optimization techniques can be applied to single objective
optimization problems but for a problem requiring strong global searching power, a particle
swam optimizer (PSO) may be the best choice.
3.1 – Background
A PSO employed for a design problem initially generates a population of “individuals” (point
designs) with random values for the independent variables governing the problem. These
independent point designs’ variables are then given random “velocities” which changes each
variable based on which initial random design was the “best” at satisfying the objective function
(cheapest design, strongest design, fastest design, etc.). Theses individual design “particles” are
then allowed to search around the design space with some degree of randomness, but at the same
time, they are updated with information about which individual design is the best and whether
their new “position” in the design space is better than the last. Specified coefficients determine
how fast the individuals converge to the best design found and to what degree they ignore the
current best solution and keep searching.
8
‫ݔ‬௝
௜ାଵ
= ‫ݔ‬௝
௜
+ ‫ݔ‬௝
௜ [1]
‫ݒ‬௝
௜ାଵ
= ‫ݓ‬௝‫ݒ‬௝
௜
+ ܿଵ‫ݎ‬ଵ௝
௜
൫ܲ௕௘௦௧,௝ − ‫ݔ‬௝
௜
൯ + ܿଶ‫ݎ‬ଶ௝
௜
൫‫ܩ‬௕௘௦௧,௝ − ‫ݔ‬௝
௜
൯ [2]
Equation 1 shows how the individuals’ positions (values) are updated with a velocity term.
Equation 2 shows how the velocity is calculated, where w is an inertia term, c1 and c2 are
individual and group learning rates, r1 and r2 are random numbers between zero and one, and
Pbest and Gbest are current personal and current group best designs. The simplicity of the code
made it a perfect option for applying to the problem of minimizing the cost of a wind turbine
supporting TLP.
The PSO allows the design variables to vary across the design space, however penalties must be
imposed to prevent constraints from being violated and designs from going into the infeasible
domain. Exterior penalty functions are useful because they allow the design space to remain
intact while penalizing the optimizer for attempting to choose designs outside of the feasible
domain. If a constraint “g” is violated, then equation 3 describes how the penalty term is
generated. The penalized objective function then becomes equation 4, which allows the
optimizer to realize which designs are the worst and best based on a value rk scaled by the sum of
each constraint violations raised to the q power.
݂݅ ݃ሺ‫ݔ‬ሻ > 0, ‫ݐ‬ℎ݁݊ ‫)ݔ(݌‬ = |݃ሺ‫ݔ‬ሻ|, p=0 otherwise [3]
‫)ݔ(݌‬ = ݂(‫)ݔ‬ + ‫ݎ‬௞ ෍ ‫)ݔ(݌‬௤ [4]
3.2 - Implementation
A PSO worked very well for optimizing the design of a TLP for a wind turbine because the
single objective was to minimize cost and the constraints were quantifiable and easily
determined based on the selected independent variables. The implementation of the raw PSO
code was performed with Matlab and required the use of a “while” loop to continue running the
PSO until the costs of all the individuals were less than one standard deviation.
It was initially believed this might cause the PSO to converge to similar costs for different
designs, however this was never the case. Occasionally, the PSO would get stuck converging on
an infeasible design and would not be able to improve the design, in which case it was necessary
to terminate the code and start the optimizer with a new random initial population.
The nature of a PSO is to allow the design variables to vary with some degree of randomness,
which allows a more global search of the design space. While this is a good technique for
searching power, it can also allow individuals to have a combination of variables which do not
make sense physically. Negative dimensions, steel thicknesses greater than member dimensions,
imaginary numbers, and negative costs were the main issues which needed to be addressed. It
was necessary to constrain the initial population to designs which made physical sense in order
to give the PSO a baseline from which to search in the feasible domain. Initially the optimizer
would converge on designs which had obtained negative costs which resulted from the code
considering and favoring zero or negative dimensions. This issue was solved by not allowing the
optimizer to chose a design with a negative cost as a personal or global best and penalizing the
9
objective function heavily (g(x) = 10 plus a normalized fraction of how negative the cost was).
Designs with negative dimensions were penalized with g(x) = n*1 where n is the number of
dimension violations. Penalty terms were normalized such that each term would cause a penalty
relative to the severity of the constraint violation (Formula 5).
݃ሺ‫ݔ‬ሻ =
‫݈ܾ݁ܽ݅ݎܽݒ‬ ‫݁ݑ݈ܽݒ‬ − ܿ‫ݐ݊݅ܽݎݐݏ݊݋‬ ‫݁ݑ݈ܽݒ‬
ܿ‫ݐ݊݅ܽݎݐݏ݊݋‬ ‫݁ݑ݈ܽݒ‬
[5]
Normalizing all the penalty terms to an order of 1-10 allowed none of the penalty terms to
dominate the others. The exception was for negative cost, which was heavily penalized as
discussed above. Dimension variable physically impossible, such as arm height exceeding the
hull draft were penalized. If the PSO did allow variables to become negative, this typically
resulted in formulas containing square roots to output imaginary numbers. Initially the PSO did
not know how to handle these numbers and would either get stuck or output an imaginary cost.
It was originally thought that the variables should be forced to remain in the feasible domain by
changing their values positive if they became negative but this actually created additional
problems and did not converge on any design. The final solution was to penalize a function not
only if a constraint was violated, but also if an imaginary value was calculated. This allowed the
PSO to have more freedom and searching power because these areas of the design space were
still able to be searched for feasible solutions. Any imaginary or negative values were eliminated
from the population within a few generations and the PSO never converged on any designs with
negative or imaginary dimensions or cost. Conditions where the objective function received a
penalty are listed below:
• Negative dimensions or cost
• Imaginary variables or cost
• Specified strength or dynamics requirements are not satisfied
• Hull radius is less than 5m diameter turbine column
• Steel plate is less than 3 mm or greater than 50 mm
• Twice the arm plate thickness is greater than the arm width
• Ballast height is greater than half the hull draft
Six subjective parameters required for the PSO were selected based on experience gained by
running the code and interpreting the behavior of the PSO and its results. The inertial term
dictates how fast a variable is allowed to change based on how much it changed during the
previous iteration. This was the most influential parameter for obtaining good results from the
PSO. Early on in the process, a value of w=0.5 was used. Different designs were converged
upon each time the optimizer ran, creating the illusion there were many different best design
choices. Increasing the inertia term to w=0.8 caused the optimizer to run at least three times
longer but the same design was converged upon virtually every time.
The number of point designs which are being used in a PSO is called the population size.
Increasing the population size allows more global searching power but also slows down the
optimizer substantially. A population size of 50 individuals was used to debug the code, which
only took ~20 seconds to run, but each time it ran the optimizer would converge on a design
10
different enough to warrant a greater search. A population of 200 individuals was used to
produce the final design for this project and the difference in the designs between runs was small
enough to be within construction error.
The group and personal learning rates scaled how much the global best design and the individual
particles best design influenced how the variables changed with each iteration. The individual
learning rate was set at c1=1.2 and the group learning rate was set at c2=1.5 forcing the optimizer
to have more preference on the best design found by the group rather than an individual’s best
design, while still allowing the individuals to search. Changing these values did not have a
significant effect on the results.
The penalty function parameter rk has the same units as the objective function, in this case cost.
It is scaled by the summation of all of the penalty terms and added to the cost function to form
the penalized objective function. Initially a value of rk=$106
was chosen but it was obvious that
the penalization was not sufficient because irrational designs were still being converged upon.
Increasing the penalty parameter to rk =$109
was enough to force the PSO to virtually only
converge on feasible designs. The penalty function also scaled each penalty term by g(x)r
where
typically r=2. This value not changed because increasing it would reduce the importance of any
penalty terms less than one.
4.0 – Hydrostatics
Primarily, the TLP must successfully support the weight of the entire wind turbine assembly,
tower, and housing. Much of the actual design variable calculations that ensure the safety and
feasibility of the design are computed from the hydrostatic calculations, ensuring the platform's
ability to float. With the random input variables that the PSO code produced the volume for the
hull and arms were calculated to produce a buoyant force according to the equation:
‫ܨ‬௕ = ∇ ∗ ߩௌ௪ [6]
Where:
‫ܨ‬௕ = ‫ݐ݊ܽݕ݋ݑܤ‬ ‫݁ܿݎ݋ܨ‬
∇ = ‫݀݁ݏݎ݁݉݉ܫ‬ ܸ‫݁݉ݑ݈݋‬
ߩ௦௪ = ݀݁݊‫ݕݐ݅ݏ‬ ‫݂݋‬ ‫ݐ݈ܽݏ‬ ‫ݎ݁ݐܽݓ‬
These dimensions were then used to compute the weight of the structure, including stiffeners, by
taking the volume multiplied by the density of steel and a 1.4 allowance for the stiffeners. The
total weight for the TLP platform was resolved by:
ܹ௧௢௧௔௟ = ܹ௛௨௟௟ + ܹ௧௢௧௔௟ ௢௙ ௔௥௠௦ + ܹ௥௢௧௢௥ + ܹ௧௢௪௘௥ + ܹ௡௔௖௘௟௟௘ [7]
Where, Wrotor = 111000 kg, Wtower = 347000kg, and Wnacelle = 240000 kg in accordance with the
National Renewable Energy Laboratory Technical Report NREL/TP-500-38060 [2]. Taking the
calculated weight and subtracting it from the buoyant force gave the net resultant buoyant force,
or the tendon pretension. Taking the tendon pretension and multiplying by the required factor of
safety of 1.5, gave a result for the required concrete foundation weight for the platform. The
11
following penalty terms were used to ensure convergence on a feasible design: hull diameter
larger than the tower diameter, positive hull draft, positive arm radius, positive hull and arm
thicknesses, and positive tendon diameter are all normalized to provide individual penalty terms
to the PSO program.
5.0 – Forces and Loads
5.1 – Turbine Supplied Loads
The TLP will experience different loading conditions which the structure must be able to handle.
Two of these loads are directly due to the power generation function of the turbine. The
generator and turbine produce forces and large moments as the blades spin and turn wind
velocity into rotational motion. Figure 3 is the power curve for the NREL 5 MW turbine.
Figure 3 - Power Curve for NREL 5 MW Turbine
Figure 3 provided two values used in the following force calculations, RotTorq and RotThrust.
The approximate maximum values for each, 4100 kNm and 900 kN occurring around 11.5 m/s,
were used because they represented the worst case scenario. As wind velocity increases the
turbine blades are designed to be pitch-regulated in order to prevent damage.
5.2 – Wind Induced Loads
The wind force was calculated using Equation 8.
ܹ݅݊݀‫݁ܿݎ݋ܨ‬ = ෍ ‫ܸܭ‬௜
ଶ
(‫ܥ‬௦)௜(‫ܥ‬ௌு)௜‫ܣ‬௜ ∗ 1000
௡
௜ୀଵ
[8]
Where:
K = units constant = 0.0000623 ts2
/m4
Vi = wind velocity at element center
CS = Shape factor of element
12
CSH = Shielding factor
Design criteria stipulated that the platform have 2m of freeboard so the wind was assumed to be
acting on only 3 “elements.” The three elements were the circular platform which was being
designed, the 90m tall tower of the wind turbine, and the generator located at the top of the
turbine. For the generator forces it was assumed that all the forces acting on the blades and
generator dimensions were accounted for in the RotThrust and RotTorq values. Equation 9 was
used to determine the wind velocity at each of the element’s centroid heights.
ܸ௜
ܸ௛
= (
‫ݖ‬௜
‫ܪ‬௛
)
ଵ
଼ [9]
Where i represents the value for velocity or height at the element centroid and h represents the
reference values. Two reference conditions were used; a storm condition of 61.733m/s at a
height 10m above the water surface and a pitch check condition of 25 m/s at the same 10m
height. The shape factor, CS, was .5 for both the tower and main hull cylinders. The shielding
factor was assumed to be 1.
5.3 – Current Induced Loads
The current loads were calculated in a similar manner to wind loads. However, it was assumed
the current was a constant 3 knots at all depths. With three legs each located 120° apart the
design team had to determine which current loading scenario presented the worst case. If angle
zero represents when the current is heading in a direction directly aligned with one of the
platform legs than it was determined the worst case current occurred at angle 0 degrees.
Equation 10 shows how the current force was calculated.
‫݁ܿݎ݋ܨݐ݊݁ݎݎݑܥ‬ = ෍
1
2
∗ ‫ܥ‬஽೔
∗ ‫ݎ‬ℎ‫݋‬ ∗ ܸ௜
ଶ
∗ ‫ܣ‬௖೔
௡
௜ୀଵ
[10]
Where:
CDi = Current drag coefficient
Ai = Normal area for element
Vi = Current velocity at element = 3 knots
rho = density of saltwater
13
The drag coefficient changed depending on the shape of the area. Figure 4 was used to write a
code which determined what the drag coefficient would be for the various dimensions which
were input.
Figure 4 - Drag Coefficients
6.0 – Stresses
6.1 - Bending
The turbine, wind, and current forces all created moments which acted upon the bottom of the
structure. In order to get the total moment acting on the structure a sum of each element force
multiplied by its distance from the bottom of the structure was computed. The sum of the
squares with RotTorq gave the largest total moment as shown in equation 11.
ܶ‫݈ܽݐ݋‬ ‫ݐ݊݁݉݋ܯ‬ = ඨ෍(‫ݐ݈݊݁݉݁ܧ‬ ‫ݏݐ݊݁݉݋ܯ‬
ଶ
) + ܴ‫ݍݎ݋ܶݐ݋‬ଶ
మ
[11]
The bending stress could then be calculated with the known moment of inertia. The equations
for both are given below.
14
ߪ௕௘௡ௗ௜௡௚ =
‫ܿܯ‬
‫ܫ‬
[12]
‫ܫ‬ =
గ
ସ
(ܴை
ସ
− ܴூ
ସ
) [13]
6.2 - Hoop
The hoop stress was calculated just like a thin-walled pressure vessel. In this case the pressure is
acting from the outside due to the hydrostatic water pressure. Equation 12 displays how the
hoop stress was calculated; where P is the pressure from the water, D is the diameter of the
cylinder, and t is the thickness of the cylinder.
ߪு௢௢௣ =
ܲ‫ܦ‬
2‫ݐ‬
[14]
6.3 - Axial
The final load which the design team used to test the structure was axial, or compressive, stress.
This stress only acted upon the bottom of the structure and was the result of buoyancy. It was
calculated using equation 15.
ߪ௔௫௜௔௟ =
ߨܴଶ
ܲ
‫ݐܦ‬
[15]
6.4 - A-36 Steel and combined stresses
As part of the design requirements, the team was required to use ASTM A-36 Steel. A-36 is a
standard carbon steel with yield strength of 250 MPa and elastic modulus of 207,000 MPa. The
three main stresses (bending, hoop, and axial) all interact with each other at the bottom of the
structure. In order to ensure that the A-36 steel did not yield under the stress, the Von Mises
yield criterion was checked. The design team used a safety factor of 1.5 in the below Von Mises
check.
ఙ೤೔೐೗೏
మ
ଵ.ହ
≥ (ߪ௕௘௡ௗ௜௡௚ + ߪ௔௫௜௔௟)ଶ
-(൫ߪ௕௘௡ௗ௜௡௚ + ߪ௔௫௜௔௟൯ ∗ ߪு௢௢௣) + ߪு௢௢௣
ଶ [16]
6.5 – Tension Leg Support
The other part of the structure which the stresses were analyzed in were the leg supports. It was
assumed that the legs acted as a cantilever beam of height “h” and width “b”. The stress would
therefore be the same as the bending stress expressed in equation 12, however the moment of
inertia changes to the following for a rectangular beam:
‫ܫ‬ =
1
12
ܾℎଷ [17]
15
Since the largest stress will occur at the bottom of the leg supports, using the parallel axis
theorem, the moment of inertia was changed to:
‫ܫ‬ே஺ ≈ 2
1
12
‫ݐ‬ℎଷ
+ 2‫(ݓݐ‬ℎ
2ൗ )ଶ [18]
For plate buckling we needed to calculate beta and use it to ensure the A-36 steel was strong
enough. Equations 15 and 16 show how beta and the buckling stress were calculated.
ߚ =
ܾ
‫ݐ‬
ට
ߪ௬௜௘௟ௗ
‫ܿ݅ݐݏ݈ܽܧ‬ ‫ݏݑ݈ݑ݀݋ܯ‬ [19]
ߪ௕௨௖௞௟௜௡௚ = ൬
2
ߚ
−
1
ߚଶ
൰ ∗ ߪ௬௜௘௟ௗ [20]
7.0 – Seakeeping
In order to avoid resonance with the wave exciting frequencies and vibration issues, the natural
heave and surge/sway periods were important design considerations in the preliminary design
stage of the TLP.
Figure 5 - Comparison of the System Natural Periods
7.1 - Heave Natural Period
As a design constraint, heave natural period has to be less than 1.8 seconds. The equation for
heave natural period is presented in Equation 19. The tradeoffs that can be made for decreasing
the heave natural period in order to operate the TLP out of the probable resonance range are
decreasing total weight of the platform, increasing the waterplane area or increasing the stiffness
of tethers. The calculated heave natural period for this design is T୬,୦ୣୟ୴ୣ = 1.8 seconds.
16
T୬,୦ୣୟ୴ୣ =
2π
ඥg
∙ ඨ
ሺ1 + A୸୸ሻ∆ + 0.33W୘
ρgA୵୮ + k୸୸
[19]
Where:
g= Acceleration due to gravity.
A୸୸ = Net added mass coefficient.
W୘ =Tether weight in air.
∆ =Dispacement.
k୸୸ =Tether stiffness in heave.
A୸୸ is calculated by using component-wise added mass formula:
෍ሺw୧ + wୟ୧ሻ = (1 + A୸୸)∆ [20]
7.2 - Surge/Sway Natural Period
Similar to heave, surge/sway motions have to be considered in the preliminary design stage due
to resonance related issues. Although satisfying the design constraint of 70 seconds is sufficient,
surge/sway natural periods of the design should be as large as possible, preferably around 100
seconds. The equation for sway period is shown in Equation 21. It is possible to increase
surge/sway natural period by decreasing the pretension of the tethers, increasing the total weight
of the platform, or increasing the length of tethers. It can be easily seen that there is a tradeoff
between surge/sway and heave natural period calculations. The final design has a 71.8 second
surge/sway natural period.
T୬,ୗ୳୰୥ୣ/ୗ୵ୟ୷ =
2π
ඥg
∙ ඨ
൫1 + A୶୶୷୷൯∆ + 0.23W୘
P୫/L
[21]
Where:
g= Acceleration due to gravity.
A୶୶୷୷ = Net added mass coefficient.
W୘ =Tether weight in air.
∆ =Dispacement.
P୫ = P୲ − 0.5 ∙ ሺsubmerged weight of the tetherሻ = Pretension in the middle
The added mass correction coefficients Kr and Ki values are obtained from the regression
curves.
7.3 - Setdown
A methodology that assumed a triangular geometry formed by a horizontally offset TLP due to
current and wind loads was used in order to perform setdown calculations. This geometry was
assumed to be independent from pitch calculations and take into account the elongation of the
tendons due the total force increment. This methodology provided an accurate calculation of
17
setdown. The set down of the optimized design was 0.331 meters which easily satisfied the
design constraint of 1.2 meters. A free body diagram of the setdown condition is presented below
as Figure 6.
T 1
T 2z
x
F
b u o y2
F
b u o y1
S E A B O T T O M
m gm g
H
F
h o rizo n ta l
L
te th e r
L tether +
dL
x
z
Q
Figure 6 - Free Body Diagram of Setdown
The stiffness coefficient of the tethers can be calculated by using Equation 22.
k୘ୣ୲୦ୣ୰ = ෍
AE
L୘ୣ୲୦ୣ୰
[22]
Setdown is determined by the Equation 23 where “z” is the setdown in meters.
ඨቆ
ሺሺFୌ୓ୖ୍୞୓୒.ሻଶ + (F୔ୖ୉୘୉୒ୗ୍୓୒ + ρπRଶzg)ଶሻ
kTether
ଶ − (L୲ୣ୲୦ୣ୰ − z)ଶቇ
(L୲ୣ୲୦ୣ୰ − z)
∙ (F୔ୖ୉୘୉୒ୗ୍୓୒ + ρπRଶ
zg) − Fୌ୓ୖ୍୞୓୒. = 0 [23]
7.4 – Pitch Angle Calculations
The pitch motion was another aspect analyzed during the preliminary design stage. The design
had a constraint of 1.5 degrees in 25m/s wind, and 3 degrees during storm survival. The
methodology used for pitch calculations assumed that these calculations are dependent from the
setdown case and all the loads are acting on a single point. Also, it was assumed that the
structure was in steady state and the heel angle was zero at the beginning. During calculations
18
elongation of the tether was under consideration. Additionally, the tension decrease due to the
reduction of tension in one tether is also calculated in order to ensure all tethers are always under
tension. The results for the pitch calculations are 0.07 degrees under 25 m/sec. wind condition
and 0.073 degrees for storm condition. A free body diagram for the pitched TLP is show below
in Figure 7.
L
tether
+dL
S E A B O T T O Mz
x
L
tether
-dL
F
p re te n s io n
M to ta l
Figure 7 - Free Body Diagram of Pitched TLP
The pitch calculation was performed by using Equation 24.
∅ = tanିଵ
൬
dL
Arm Radius
൰ ∙
180
π
(deg. ) [24]
8.0 – Cost Calculation
The objective of the design process was to minimize the cost of the structure. The cost
calculation was used as an objective function to obtain the best group of design variables. In the
hydrostatics section, the structural weight of each part was obtained. The technique used for cost
calculations assumed that these equations were dependant on the weight of each type of material.
The structural cost is obtained by using Equation 25.
Cost = ∑W୧ ∙ P୧ [25]
19
Where:
Wଵ = Wୱ୲ୣୣ୪, the weight of the steel ASTM A-36 with 40% additional weight for structure
Wଶ = Wୡ୭୬ୡ୰ୣ୲ୣ, the weight of the concrete used in the foundation and ballast
Wଷ = W୲ୣ୬ୢ୭୬, the weight of the tendon
Pଵ = Pୱ୲ୣୣ୪, the unit price of steel ASTM A-36, 800 USD / metric ton including fabrication
Pଶ = Pୡ୭୬ୡ୰ୣ୲ୣ, the unit price of concrete, 100 USD / metric ton including fabrication
Pଵ = P୲ୣ୬ୢ୭୬, the unit price of tendon, 8000 USD / metric ton
9.0 - Design Overview
The final design for a TLP capable of supporting a wind turbine as found by the PSO and
verified to pass all of the design requirements and constraints is tabulated in Table 4. The
optimizer found that the hull plating only needed to be about one third the thickness of the arm
plating. Separating these two plating thicknesses into two variables allowed the arms to be
strengthened while using minimal steel for the hull, minimizing the overall cost. It is also
interesting to note that the optimizer was given the option to include cement ballast to prevent
excess steel being used for buoyancy compensation, however the design always converged
where no ballast was needed.
Hull Radius 11.785 m
Hull Draft 17.560 m
Hull Depth 19.560 m
Hull Plating Thickness 9 mm
Arm Height 4.008 m
Arm Width 1.002 m
Arm Length 33.121 m
Arm Plating Thickness 29 mm
Tendon Diameter 0.216 m
Ballast Height 0.00 m
Table 4 - Final Design Dimensions
The properties of the design are tabulated in Table 5. It was found that the heave natural period
was the limiting constraint. Passing the maximum 1.8 second limit caused other constraints to be
passed many times over. For instance, the steady pitch limits needed to be less than 3 degrees in
the storm condition and less than 1.5 degrees in the regular operating condition; however tuning
the tendons to pass the heave constraint caused the maximum steady pitch of the TLP to be ~0.07
deg. Clearly some constraints dominated others in terms of which were more difficult to pass.
20
Total Weight 119.96 t
Total Buoyancy 842.24 t
Tendon Pretension 256.47 t
Current Force 438.36 kN
Foundation Weight 435.97 kN
Storm Wind Force 81.81 kN
Regular Wind Force 13.42 kN
Storm Total Moment 106248.20 kNm
Regular Total Moment 101957.51 kNm
Heave Natural Period 1.80 s
Surge Natural Period 71.80 s
Storm Steady Pitch 0.07 deg
Regular Steady Pitch 0.07 deg
Set Down 0.33 m
Stress, Axial 115.71 MPa
Stress, Bending 22.48 MPa
Stress, Combined 40668894217 MPa
Stress, Hoop 231.41 MPa
Stress, Leg 237.07 MPa
Table 5 - Final Design Properties
21
Works Cited
[1] Offshore Wind Energy. Environmental and Energy Study Institute. Oct. 2010. Web. 20 Mar.
2011. <http://www.eesi.org/files/offshore_wind_101310.pdf>.
[2] Jonkman, J., S. Butterfield, W. Musial, and G. Scott. Definition of a 5-MW Reference Wind
Turbine for Offshore System Development. National Renewable Energy Laboratory. Feb.
2009. Web. 17 Feb-25 Mar. 2011.
22
Appendix A – Particle Swarm Optimization Code
% 570 TLP Project
% Particle Swarm Optimization Main Program
% 03/08/2011
% =========================================================================
% =========================================================================
clear all
close all
clc
% =========================================================================
% Initialization
popsize = 200; % number of individuals
c1 = 1.2; % individual learning rate
c2 = 1.5; % group learning rate
w = 0.8; % velocity inertia coefficient
rk = 1000000000; % penalty scaling term based on cost of TLP
q = 2; % penalty exponent term
g = 9.81;
gen = 1; % initializing generation counter
numvars = 8;
% initialize population with random numbers and zero velocities
for i = 1:popsize
for j = 1:numvars
if j < 4
individuals(i,j) = rand(1)*50;
end
if j == 4
individuals(i,j) = rand(1)*50;
end
if j > 4
individuals(i,j) = rand(1)*1;
end
velocity(i,j) = 0;
end
if individuals(i,4) < individuals(i,6)
a = individuals(i,4);
individuals(i,4) = individuals(i,6);
individuals(i,6) = a;
end
if individuals(i,1) < individuals(i,8)
23
a = individuals(i,1);
individuals(i,1) = individuals(i,8);
individuals(i,8) = a;
end
end
startingvalues = individuals;
% assign named variables values from individuals matrix
hulldraft = individuals(:,1);
hullradius = individuals(:,2);
armlength = individuals(:,3);
armheight = individuals(:,4);
hullthickness = individuals(:,5);
armthickness = individuals(:,6);
tendondiameter = individuals(:,7);
ballastheight = individuals(:,8);
armradius = armlength+hullradius;
% calculate initial cost and cost penalty function
for i = 1:popsize
[gdimensions,gfloat,tendonforce,totalbuoyancy,totalweight,turbinetotalmass] =
tlpHydrostaticsballast(hulldraft(i), hullradius(i), armradius(i),
armheight(i), hullthickness(i),
armthickness(i),tendondiameter(i),ballastheight(i));
[gload,stressb,stressh,stressa,stressl,stressc,fwtotalstorm,fwtotalregular,fc
total,momentstotalstorm,momentstotalregular] =
tlpLoadcalcs(hullradius(i),hullthickness(i),hulldraft(i),armheight(i),armthic
kness(i),armradius(i),totalbuoyancy,tendonforce);
[gsetdown,setdown(i,gen),foundationweight] =
f_setdown(fctotal,fwtotalstorm,hulldraft(i),hullradius(i),tendonforce,tendond
iameter(i));
[gcost,cost(i,gen),armmass,hullmass] = tlpCost(hullradius(i),
hulldraft(i), hullthickness(i), armradius(i), armthickness(i), armheight(i),
tendondiameter(i), foundationweight,ballastheight(i));
[gpitch,pitch(i,gen)] =
f_pitch(fctotal,fwtotalstorm,fwtotalregular,tendonforce,hulldraft(i),hullradi
us(i),armradius(i),tendondiameter(i),momentstotalstorm,momentstotalregular);
[gsurge,surge(i,gen)] =
f_surge(armheight(i),armradius(i),armmass*g,hullradius(i),hullmass*g,hulldraf
t(i),turbinetotalmass*g,tendondiameter(i),tendonforce);
[gheave,heave(i,gen)] =
f_heave(armheight(i),armradius(i),hullradius(i),armmass*g,hullmass*g,turbinet
otalmass*g,hulldraft(i),tendondiameter(i));
stopcondition(i,gen) =
gload+gpitch+gsurge+gheave+gsetdown+gcost+gfloat+gdimensions;
24
gsum(i,gen) =
gload^q+gpitch^q+gsurge^q+gheave^q+gsetdown^q+gcost^q+gfloat^q+gdimensions^q;
pcost(i,gen) = cost(i,gen)+rk*(gsum(i,gen));
end
% iterates through designs until the costs converge
while std(cost(:,gen)) > 1 %&& sum(stopcondition(i,gen)) > 0
std(cost(:,gen))
% calculate best individual in generation and check if global best
for i = 1:popsize
if pcost(i,gen)>0
costpositive(i,gen) = pcost(i,gen);
else
costpositive(i,gen) = abs(pcost(i,gen))+10000000000;
end
end
[mincost(gen),gbest(gen)] = min(costpositive(:,gen));
[doesnt,matter,values] = find(individuals(gbest(gen),:)<0);
check = sum(values);
if gen == 1
globalbest = individuals(gbest(gen),:);
elseif min(costpositive(:,gen)) <= min(costpositive(:,gen-1)) && check
<= 0
globalbest = individuals(gbest(gen),:);
end
% determine if new individual is better than the previous generation
if gen == 1;
personalbest = individuals;
else
for i = 1:popsize
[doesnt,matter,values] = find(individuals(gbest(gen),:)<0);
check = sum(values);
if costpositive(i,gen) <= costpositive(i,gen-1) && check <= 0
personalbest(i,:) = individuals(i,:);
end
25
end
end
% NEW GENERATION
gen = gen+1
for i = 1:popsize
for j = 1:numvars
r1 = rand(1);
r2 = rand(1);
velocity(i,j) = w*velocity(i,j)+c1*r1*(personalbest(i,j)-
individuals(i,j))+c2*r2*(globalbest(j)-individuals(i,j));
individuals(i,j)= individuals(i,j)+velocity(i,j);
end
% reasigns individuals' variables to named variables
hulldraft = individuals(:,1);
hullradius = individuals(:,2);
armlength = individuals(:,3);
armheight = individuals(:,4);
hullthickness = individuals(:,5);
armthickness = individuals(:,6);
tendondiameter = individuals(:,7);
ballastheight = individuals(:,8);
armradius = armlength+hullradius;
% recalculates cost and penalty function
for i = 1:popsize
[gdimensions,gfloat,tendonforce,totalbuoyancy,totalweight,turbinetotalmass] =
tlpHydrostaticsballast(hulldraft(i), hullradius(i), armradius(i),
armheight(i), hullthickness(i),
armthickness(i),tendondiameter(i),ballastheight(i));
[gload,stressb,stressh,stressa,stressl,stressc,fwtotalstorm,fwtotalregular,fc
total,momentstotalstorm,momentstotalregular] =
tlpLoadcalcs(hullradius(i),hullthickness(i),hulldraft(i),armheight(i),armthic
kness(i),armradius(i),totalbuoyancy,tendonforce);
[gsetdown,setdown(i,gen),foundationweight] =
f_setdown(fctotal,fwtotalstorm,hulldraft(i),hullradius(i),tendonforce,tendond
iameter(i));
26
[gcost,cost(i,gen),armmass,hullmass] = tlpCost(hullradius(i),
hulldraft(i), hullthickness(i), armradius(i), armthickness(i), armheight(i),
tendondiameter(i), foundationweight,ballastheight(i));
[gpitch,pitch(i,gen)] =
f_pitch(fctotal,fwtotalstorm,fwtotalregular,tendonforce,hulldraft(i),hullradi
us(i),armradius(i),tendondiameter(i),momentstotalstorm,momentstotalregular);
[gsurge,surge(i,gen)] =
f_surge(armheight(i),armradius(i),armmass*g,hullradius(i),hullmass*g,hulldraf
t(i),turbinetotalmass*g,tendondiameter(i),tendonforce);
[gheave,heave(i,gen)] =
f_heave(armheight(i),armradius(i),hullradius(i),armmass*g,hullmass*g,turbinet
otalmass*g,hulldraft(i),tendondiameter(i));
stopcondition(i,gen) =
gload+gpitch+gsurge+gheave+gsetdown+gcost+gfloat+gdimensions;
gsum(i,gen) =
gload^q+gpitch^q+gsurge^q+gheave^q+gsetdown^q+gcost^q+gfloat^q+gdimensions^q;
pcost(i,gen) = cost(i,gen)+rk*(gsum(i,gen));
end
end
end
% =========================================================================
% =========================================================================
27
Appendix B – Hydrostatics Code
% Hydrostatics code
% all inputs are metric: m, kg
function [gdimensions,gfloat,F_tendon,FB_total,W_total,W_turbinetotal] =
tlpHydrostatics(hulldraft, hullradius, armradius, armheight, hullthickness,
armthickness,tendondiameter, ballastheight)
% required inputs:
armwidth = 0.25*armheight;
hulldepth = hulldraft+2;
%Definitions and known quantities
W_rotor = 111000;
W_nacelle = 240000;
W_tower = 347000;
W_turbinetotal = W_rotor+W_nacelle+W_tower;
rhosteel = 7800;
rhowater = 1025;
rhoconcrete = 2400;
%Volumes and center of gravity
Awp = pi*hullradius^2;
V_hull = Awp*hulldraft;
V_arm = (armradius-hullradius)*armwidth*armheight;
V_ballast = pi()* hullradius^2 * ballastheight;
V_total = V_hull+3*V_arm;
%calculate side projected areas for input to loading
Aproj_hull_water = hulldraft*2*hullradius;
Aproj_hull_air = 4*hullradius;
%Calculate buoyant forces
FB_total = V_total*rhowater;
%Calculate weights
W_hull = 1.4*(pi*2*hullradius*hullthickness*hulldepth +
2*Awp*hullthickness)*rhosteel;
W_arm = 1.4*(armheight*armwidth-(armheight-armthickness)*(armwidth-
armthickness))*(armradius-hullradius)*rhosteel+armheight*armwidth*rhosteel;
W_arm_total = 3*W_arm;
W_ballast = rhoconcrete*V_ballast;
W_total = W_hull + W_arm_total + W_rotor + W_tower + W_nacelle +
W_ballast;
%Calculate tendon force, required tendon size
F_tendon = (FB_total - W_total)/3;
28
% while sigma_tendon<sigma_allow_tendon;
% tendon_thickness = tendon_thickness-0.001;
% sigma_tendon = F_tendon/(pi()*(tendon_thickness/2)^2);
% end
% while sigma_tendon>=sigma_allow_tendon;
% tendon_thickness = tendon_thickness+.001;
% sigma_tendon = F_tendon/(pi()*(tendon_thickness/2)^2);
% end
%Center of gravity
CGv_tower = 66;
CGv_hull = hulldraft+2/2;
CGv_arm = armheight/2;
CG_total =
(CGv_tower*(W_tower+W_rotor+W_nacelle)+CGv_hull*W_hull+CGv_arm*W_arm_total)/(
W_tower+W_rotor+W_nacelle+W_hull+W_arm_total);
if W_total > FB_total
gfloat = abs(W_total-FB_total)/W_total;
else
gfloat = 0;
end
if hullradius < 5
ghullradius = 1;
else
ghullradius = 0;
end
if hulldraft < 0
ghulldraft = 1;
else
ghulldraft = 0;
end
if armradius < 0
garmradius = 1;
else
garmradius = 0;
end
if armheight < 0
garmheight = 1;
else
garmheight = 0;
end
if hullthickness < 0.003 || hullthickness > 0.05
ghullthickness = 1;
else
ghullthickness = 0;
29
end
if armthickness < 0.003 || armthickness > 0.05
garmthickness = 1;
else
garmthickness = 0;
end
if tendondiameter < 0
gtendondiameter = 1;
else
gtendondiameter = 0;
end
if 2*armthickness > armheight
garms = 1;
else
garms = 0;
end
if armheight > hulldraft
ghull = 1;
else
ghull = 0;
end
if ballastheight > hulldraft/2
gballast = (ballastheight-hulldraft)/hulldraft;
else
gballast = 0;
end
gdimensions =
ghullradius+ghulldraft+garmradius+garmheight+ghullthickness+garmthickness+gte
ndondiameter+garms+ghull+gballast;
end
% W_hull_submerged = (2*Awp*hullthickness+pi*hulldraft*(hullradius-
(hullradius-hullthickness))^2)*rhosteel;
% W_hull_air = pi*2*(hullradius-(hullradius-hullthickness))^2*rhosteel;
30
Appendix C – Load Calculations
% Loads Calculations
% required inputs
function
[gload,stressb,stressh,stressa,stressl,stressc,fwtotalstorm,fwtotalregular,fc
total,momentstotalstorm,momentstotalregular] =
tlpLoadcalcs(hullradius,hullthickness,hulldraft,armheight,armthickness,armrad
ius,totalbuoyancy,tendonforce)
rc = hullradius; % radius cylinder
thick = hullthickness; % cylinder thickness
d = hulldraft; % cylinder draft (to waterline)
lh = armheight; % leg height
lt = armthickness; % leg thickness
lr = armradius; % leg radius
b = totalbuoyancy; % NEED BUOYANCY
t = tendonforce; % NEED TENDON STRESS
% Constants
k=0.0000623; % Ts^2/m^4
rtorq=4100000; %N m
rthrust=900000; % N
rho=1025.9; % kg/m^3
g=9.81; %m/s^2
rhos=7800; % kg/m^3
yield=250000000;
elastic=207000000000;
% storm Calcs
fwcstorm=k*(46.29^2)*.5*(4*rc)*1000*g;
fwtstorm=k*(74.91^2)*.5*(450)*1000*g; % changed this
fwtotalstorm = fwcstorm+fwtstorm;
% regular
fwcregular=k*(18.75^2)*.5*(4*rc)*1000*g;
fwtregular=k*(30.34^2)*.5*(450)*1000*g; % changed this
fwtotalregular = fwcregular+fwtregular;
% Current Calcs
if d/rc<5
kl=.5+.1*(d/rc);
else
kl=1;
end
kb=1;
fcc=(.5)*(.7*kl)*(rho)*(1.54^2)*((2*rc)*d);
fcl=.5*(2*kl*kb)*rho*(1.54^2)*(lh*(lr-rc));
fctotal = fcc+fcl;
% Bending Loads
Inertia=(pi/4)*((rc^4)-((rc-thick)^4));
na=(1/2)*(d+2);
momentsstorm=(rthrust*(92+d))+(fwtstorm*(47+d))+(fwcstorm*(1+d))+(fcc*(.5*d))
+(fcl*(.5*lh));
31
% Storm
momentstotalstorm=((momentsstorm^2)+(rtorq^2))^(1/2);
stressb=(momentstotalstorm*na)/Inertia;
% Regular
momentsregular=(rthrust*(92+d))+(fwtregular*(47+d))+(fwcregular*(1+d))+(fcc*(
.5*d))+(fcl*(.5*lh));
momentstotalregular=((momentsregular^2)+(rtorq^2))^(1/2);
% if moments >= rtorq
%
% stressb=(moments*na)/Inertia;
%
% else
%
% stressb = (rtorq*na)/Inertia;
%
% end
stressh=(rho*g*d*2*rc)/(2*thick);
stressa=(pi*(rc^2)*rho*g*d)/(pi*2*rc*thick);
% Von Mises
stressc=((stressa+stressb)^2)-((stressa+stressb)*(stressh))+(stressh^2);
% Penalty check
if stressc>((yield^2)/1.5)
g1=(abs(stressc)-((yield^2)/1.5))/abs(stressc);
else
g1=0;
end
%-((b-(pi*(rc^2))-(2*((lh/4)*(lr-rc))))*.5*(lr-rc))+(rhos*(((lr-
rc)*(lh)*(lh/4))-((lr-rc)*(lh-(2*lt))*((lh/4)-(2*lt)))+(((lh^2)*lt)/4)))
% Leg loads
stressl=(t*(lr-rc))/((2/12)*(thick)*(lh^3)+2*(lh/4)*lt*((lh/2)^2));
beta=((lh/4)/lt)*(yield/elastic)^(1/2);
buckling=((2/beta)-(1/beta^2))*(yield);
% Penalty check
if abs(stressl)>abs(buckling)
g2=(abs(stressl)-abs(buckling)/1.5)/abs(stressl);
else
g2=0;
end
gload = g1+g2;
end
32
Appendix D – Heave Natural Period Code
%==========================================================================
% Wind Turbine Heave Natural Period Analyzer
%==========================================================================
function [hx,Theave] =
f_heave(Armheight,Armradius,Rc,Warm,Wcylinder,Wturbine,hulldraft,tendondiamet
er)
rhowater = 1025; %Density of water [kg/m^3]
rhosteel = 7.85*10^3;
g = 9.81; %Acceleration of gravity [m/s^2]
Ltether = 200-hulldraft;
Armwidth = Armheight/4;
Armlength = Armradius - Rc;
Wtether = pi*(tendondiameter/2)^2*Ltether*rhosteel*g;
%==========================================================================
% ARMS IN HEAVE
%==========================================================================
Ratio=Armlength/Armheight;
ki=1.50295-0.2865*log(Ratio); % Regression formula from Appendix F of the
coursepack
kr=1; % Because the rolling radius is zero in our case
deg=2*(Armlength*Armheight/pi)^(0.5);
Cm=ki*kr*(Armlength/deg)^2; % Added mass coefficient of Cylinder
Waddedarm=Cm*(Armwidth*Armheight*Armlength)*rhowater*g; % [N]
%==========================================================================
% CYLINDER IN HEAVE
%==========================================================================
Waddedcylinder=(4/3)*pi*Rc^3*rhowater*g; % [N]
Wtotal=(Waddedarm+Warm)*3+Waddedcylinder+Wcylinder+Wturbine; % [N]
% ktether=Fpretension/Ltether; % [N/m]
E = 207000000000;
A = pi*(tendondiameter/2)^2;
ktether = E*A/Ltether;
kzz=3*ktether; % [N/m]
Awp=pi*(Rc^2); % [m^2]
%==========================================================================
Theave=(2*pi/sqrt(g))*sqrt((Wtotal+0.33*Wtether*3)/(rhowater*Awp*g+kzz)); %
[s]
%==========================================================================
if Theave>1.8 && imag(Theave) == 0
hx=(Theave-1.8)/1.8; %Penalty term
elseif imag(Theave) ~= 0
hx=abs((imag(Theave)-1.8)/1.8);
else
hx=0; %Penalty term
end
33
Appendix E – Pitch Calculation Code
%==========================================================================
% Wind Turbine Pitch Angle Analyzer (Under 25 m/s wind speed)
%==========================================================================
function [gpitch,Pitchangle] =
f_pitch(Fc,Fw,Fw2,Fpretension,hulldraft,Rc,Armradius,tendondiameter,momentsto
talstorm,momentstotalregular)
Ltether = 200-hulldraft;
E = 207000000000;
A = pi*(tendondiameter/2)^2;
k = E*A/Ltether;
deltaL=(momentstotalstorm/Armradius)/k;
deltaL2=(momentstotalregular/Armradius)/k;
Pitchangle=(180/pi)*atan(deltaL/Armradius);
Pitchangle2=(180/pi)*atan(deltaL2/Armradius);
FTension2=Fpretension-(momentstotalstorm/Armradius);
if Pitchangle>3.0
yx=(Pitchangle-3.0)/3.0; %Penalty term
else
yx=0; %Penalty term
end
if FTension2>0
tx=0; %Penalty term
else
tx=abs((0-FTension2)/(Fpretension));
end
if Pitchangle2>1.5
qx=(Pitchangle2-1.5)/1.5; %Penalty term
else
qx=0; %Penalty term
end
gpitch = yx+tx+qx;
end
34
Appendix F – Setdown Condition Analyzer
%==========================================================================
% Wind Turbine Setdown Condition Analyzer
%==========================================================================
function [rx,z,foundationweight] =
f_setdown(fctotal,fwtotal,hulldraft,hullradius,tendonforce,tendondiameter)
rhowater = 1025; % Density of water [kg/m^3]
g = 9.81; % Acceleration of gravity [m/s^2]
z = 0.001; % "z" is the setdown in meters [m]
Ltether = 200-hulldraft;
Fhorizontal = fctotal + fwtotal; % Total force in horizontal direction due
to waves and wind
E = 207000000000;
A = pi*(tendondiameter/2)^2;
ktether = E*A/Ltether;
i = 1;
f = -1;
while f < 0
f =
(sqrt(((sqrt((tendonforce*3+rhowater*pi*hullradius^2*z*g)^2+(Fhorizontal)^2)-
tendonforce*3)/ktether+Ltether)^2-(Ltether-z)^2)/(Ltether-
z))*(tendonforce*3+rhowater*pi*hullradius^2*z*g)-Fhorizontal;
z = z+0.01;
i = i+1;
end
Yieldstress=(sqrt((tendonforce*3+rhowater*pi*hullradius^2*z*g)^2+(Fhorizontal
)^2)/((tendondiameter/2)^2*pi))*1.5;
foundationweight =
sqrt((tendonforce*3+rhowater*pi*hullradius^2*z*g)^2+(Fhorizontal)^2)*1.5/3;
if z > 1.2
kx=(z-1.2)/1.2; % Penalty term
else
kx=0;
end
if Yieldstress > 400000000
wx=(Yieldstress-400000000)/400000000;
else
wx=0;
end
35
rx=kx+wx;
end
36
Appendix G – Surge Calculation Code
%==========================================================================
% Wind Turbine Surge Period Analyzer
%==========================================================================
function [gx,Tsurge] =
f_surge(Armheight,Armradius,Warm,Rc,Wcylinder,hulldraft,Wturbine,tendondiamet
er,Fpretension)
rhowater=1025; %Density of water [kg/m^3]
g=9.81; %Acceleration of gravity [m/s^2]
Ltether = 200-hulldraft;
Rt = tendondiameter/2;
Wtether = pi*(tendondiameter/2)^2*Ltether*7.85*10^3*g;
Armwidth = Armheight/4;
Armlength = Armradius - Rc;
%==========================================================================
% ARMS IN SURGE/SWAY
%==========================================================================
Ratio1=Armwidth/Armheight;
kiarm=1.50295-0.2865*log(Ratio1); % Regression formula from Appendix F of the
coursepack
krarm=1; % Because the rolling radius is zero in our case
degarm=2*(Armwidth*Armheight/pi)^(0.5);
Cmarm=kiarm*krarm*(Armwidth/degarm)^2; % Added mass coefficient of Cylinder
Waddedarm=Cmarm*(2*Armlength*Armwidth*Armheight*cos(30*pi/180))*rhowater*g;
%==========================================================================
% CYLINDER IN SURGE/SWAY
%==========================================================================
Ratio2=hulldraft/(2*Rc);% Lengtgh to Diameter Ratio
Cmcylinder=-0.00008*Ratio2^4+0.0169*Ratio2^3-
0.1332*Ratio2^2+0.4739*Ratio2+0.2147;
% Added mass coefficient for cylinder (Valid for 0.6<Ratio<6)
% Regression formula from Appendix E of the coursepack
Waddedcylinder=Cmcylinder*(4/3)*pi*Rc^3*rhowater*g;
%==========================================================================
% TETHERS IN SURGE/SWAY
%==========================================================================
Waddedtethers=rhowater*pi*g*(Rt)^2*(Ltether)*3; % Rt=Tether radius
%==========================================================================
Wtotal=Waddedarm+(Warm)*3+Waddedcylinder+Wcylinder+Wturbine+Waddedtethers+Wte
ther*3;
Pm=Fpretension*3-0.5*((Wtether-(pi*Rt^2*Ltether*rhowater*g)*3));
%==========================================================================
Tsurge=(2*pi/sqrt(g))*sqrt((Wtotal+0.23*3*Wtether)/(Pm/Ltether));
%==========================================================================
if Tsurge<70 && imag(Tsurge) == 0
gx=(70-Tsurge)/Tsurge; %Penalty term
elseif imag(Tsurge) ~= 0
gx=abs((70-imag(Tsurge))/imag(Tsurge)); %Penalty term
else
gx=0; %Penalty term
end
37
Appendix H – Cost Calculation Code
%Calcularmthicknesse the cost of the TLP
% Steel 800 USD/ton
% Concrete 100 USD/ton
% Tendons 800 USD/ton
% Density of Steel 7.85*10^3 kg/m^3
function [gcost,cost,armmass,hullmass] = tlpCost(hullradius, hulldraft,
hullthickness, armradius, armthickness, armheight, tendondiameter,
foundationweight,ballastheight)
rhosteel = 7.85*10^3; % kg/m^3
costconcrete = 100/1000; % USD/kg %changed per tonne to per kilogram
costtendon = 8000/1000; % USD/kg
coststeel = 800/1000; % USD/kg
g = 9.81; % m/s^2
waterdepth = 200; % m
hulldepth = hulldraft+2;
armwidth = armheight/4;
foundationmass = foundationweight/g;
% mass of hull hm:
hullmass = 1.4*(pi*2*hullradius*hullthickness*hulldepth +
2*pi*hullradius^2*hullthickness)*rhosteel; % recalcularmthicknessed hull mass
% mass of armradiusm am
armmass = (armheight*armwidth-(armheight-armthickness)*(armwidth-
armthickness))*(armradius-hullradius)*rhosteel+armheight*armwidth*rhosteel;
%recalcularmthicknessed
% length of each tendon tl
tendonlength = waterdepth-hulldraft;
% mass of tendon tm
tendonmass = tendonlength*tendondiameter^2/4*rhosteel;
% mass of ballast
ballastmass = pi*hullradius^2*ballastheight;
% cost of the TLP
cost =
(hullmass+3*armmass)*coststeel+3*tendonmass*costtendon+3*foundationmass*costc
oncrete+ballastmass*costconcrete;
if cost < 0;
gcost = abs((abs(cost)-100000)/abs(cost))+10;
cost = 0;
else
38
gcost = 0;
end
end
% hm = 1.4*(pi*2*hullradius*hullthickness+
2*pi*hullradius^2*hullthickness)*hulldepth*7.85*10^3;
% am=1.4*2*armthickness*(armheight+armwidth)*(armradius-
hullradius)*7.85*10^3; %subtracted armradiusm hull radius from armradiusm
radius
39
Appendix I – Drawings of Final Design.
Figure 8 – Design Drawing - Overview
40
Figure 9 – Design Drawing – Front View
41
Figure 10 – Design Drawing – Base Dimensions
42
Figure 11 – Design Drawing – Side View

Weitere ähnliche Inhalte

Ähnlich wie TLP_ProjectReport

Small Hydropower for KNUST Campus
Small Hydropower for KNUST CampusSmall Hydropower for KNUST Campus
Small Hydropower for KNUST Campus
Tettey22
 
MECE4240U-Project-Report-Group-6-Final
MECE4240U-Project-Report-Group-6-FinalMECE4240U-Project-Report-Group-6-Final
MECE4240U-Project-Report-Group-6-Final
Tushar Karanwal
 
Environmentally friendly turbine design concepts
Environmentally friendly turbine design conceptsEnvironmentally friendly turbine design concepts
Environmentally friendly turbine design concepts
Jitendra Rajora
 
AT SUBSEA VESSEL OPERATIONS CONFERENCE, OSLO (YEAR 2013)
AT SUBSEA VESSEL OPERATIONS CONFERENCE, OSLO (YEAR 2013)AT SUBSEA VESSEL OPERATIONS CONFERENCE, OSLO (YEAR 2013)
AT SUBSEA VESSEL OPERATIONS CONFERENCE, OSLO (YEAR 2013)
coderweb
 
Sector Summary - Subsea
Sector Summary - SubseaSector Summary - Subsea
Sector Summary - Subsea
Thomas Burke
 
Cost Estimating for Offshore Oil & Gas Facility Decommissioning
Cost Estimating for Offshore Oil & Gas Facility DecommissioningCost Estimating for Offshore Oil & Gas Facility Decommissioning
Cost Estimating for Offshore Oil & Gas Facility Decommissioning
Donnie Miller
 

Ähnlich wie TLP_ProjectReport (20)

Design And Analysis Of Stirling Engine For Underwater Application
Design And Analysis Of Stirling Engine For Underwater ApplicationDesign And Analysis Of Stirling Engine For Underwater Application
Design And Analysis Of Stirling Engine For Underwater Application
 
Concentrated Solar Power for the Entrepreneur by Himadri Banerji
Concentrated Solar Power for the Entrepreneur by Himadri BanerjiConcentrated Solar Power for the Entrepreneur by Himadri Banerji
Concentrated Solar Power for the Entrepreneur by Himadri Banerji
 
Small Hydropower for KNUST Campus
Small Hydropower for KNUST CampusSmall Hydropower for KNUST Campus
Small Hydropower for KNUST Campus
 
Design and Stress Analysis of High Pressure Accumulator
Design and Stress Analysis of High Pressure AccumulatorDesign and Stress Analysis of High Pressure Accumulator
Design and Stress Analysis of High Pressure Accumulator
 
Subsea Field Development for an ideal Green field.
Subsea Field Development for an ideal Green field.Subsea Field Development for an ideal Green field.
Subsea Field Development for an ideal Green field.
 
MECE4240U-Project-Report-Group-6-Final
MECE4240U-Project-Report-Group-6-FinalMECE4240U-Project-Report-Group-6-Final
MECE4240U-Project-Report-Group-6-Final
 
Rotor Resistance Control of Wound Rotor Induction Generator (WRIG) using PSCA...
Rotor Resistance Control of Wound Rotor Induction Generator (WRIG) using PSCA...Rotor Resistance Control of Wound Rotor Induction Generator (WRIG) using PSCA...
Rotor Resistance Control of Wound Rotor Induction Generator (WRIG) using PSCA...
 
Repowering and Used Wind Turbines
Repowering and Used Wind TurbinesRepowering and Used Wind Turbines
Repowering and Used Wind Turbines
 
Environmentally friendly turbine design concepts
Environmentally friendly turbine design conceptsEnvironmentally friendly turbine design concepts
Environmentally friendly turbine design concepts
 
Tasintu_Paturat.pdf
Tasintu_Paturat.pdfTasintu_Paturat.pdf
Tasintu_Paturat.pdf
 
AT SUBSEA VESSEL OPERATIONS CONFERENCE, OSLO (YEAR 2013)
AT SUBSEA VESSEL OPERATIONS CONFERENCE, OSLO (YEAR 2013)AT SUBSEA VESSEL OPERATIONS CONFERENCE, OSLO (YEAR 2013)
AT SUBSEA VESSEL OPERATIONS CONFERENCE, OSLO (YEAR 2013)
 
Sector Summary - Subsea
Sector Summary - SubseaSector Summary - Subsea
Sector Summary - Subsea
 
Aerodynamics of Horizontal Axis Wind Turbine
Aerodynamics of Horizontal Axis Wind TurbineAerodynamics of Horizontal Axis Wind Turbine
Aerodynamics of Horizontal Axis Wind Turbine
 
IRJET- Design and Thermal Analysis of Steam Turbine Blade
IRJET- Design and Thermal Analysis of Steam Turbine BladeIRJET- Design and Thermal Analysis of Steam Turbine Blade
IRJET- Design and Thermal Analysis of Steam Turbine Blade
 
IRJET- Certain Investigation on Induction Motor Performance with Variable Fre...
IRJET- Certain Investigation on Induction Motor Performance with Variable Fre...IRJET- Certain Investigation on Induction Motor Performance with Variable Fre...
IRJET- Certain Investigation on Induction Motor Performance with Variable Fre...
 
Cost Estimating for Offshore Oil & Gas Facility Decommissioning
Cost Estimating for Offshore Oil & Gas Facility DecommissioningCost Estimating for Offshore Oil & Gas Facility Decommissioning
Cost Estimating for Offshore Oil & Gas Facility Decommissioning
 
Facilities Engineering Coursework
Facilities Engineering CourseworkFacilities Engineering Coursework
Facilities Engineering Coursework
 
Em 1110 2-3102
Em 1110 2-3102Em 1110 2-3102
Em 1110 2-3102
 
Geotech designstandardminreq
Geotech designstandardminreqGeotech designstandardminreq
Geotech designstandardminreq
 
Project Management Tools & Techniques Assignment 1
Project Management Tools & Techniques Assignment 1Project Management Tools & Techniques Assignment 1
Project Management Tools & Techniques Assignment 1
 

TLP_ProjectReport

  • 1. WIND TURBINE TLP DESIGN PROJECT Prepared By: Group 7: Patrick Burnett, Dale Cressman, Oguzhan Kirikbas, Daniel Place, Jin Zhang Graduate Students, Department of Naval Architecture and Marine Engineering The University of Michigan Prepared For: Matthew Collette Professor, Department of Naval Architecture and Marine Engineering The University of Michigan
  • 2. 2 Table of Contents List of Tables .................................................................................................................................. 3 List of Figures................................................................................................................................. 3 1.0 – Introduction............................................................................................................................ 4 2.0 – Problem Statement................................................................................................................. 5 2.1 - Design Methodology .......................................................................................................... 5 3.0 – Particle Swarm Optimization................................................................................................. 7 3.1 – Background........................................................................................................................ 7 3.2 - Implementation................................................................................................................... 8 4.0 – Hydrostatics ......................................................................................................................... 10 5.0 – Forces and Loads ................................................................................................................. 11 5.1 – Turbine Supplied Loads................................................................................................... 11 5.2 – Wind Induced Loads........................................................................................................ 11 5.3 – Current Induced Loads..................................................................................................... 12 6.0 – Stresses................................................................................................................................. 13 6.1 - Bending............................................................................................................................. 13 6.2 - Hoop ................................................................................................................................. 14 6.3 - Axial ................................................................................................................................. 14 6.4 - A-36 Steel and combined stresses .................................................................................... 14 6.5 – Tension Leg Support........................................................................................................ 14 7.0 – Seakeeping........................................................................................................................... 15 7.1 - Heave Natural Period........................................................................................................ 15 7.2 - Surge/Sway Natural Period .............................................................................................. 16 7.3 - Setdown ............................................................................................................................ 16 7.4 – Pitch Angle Calculations.................................................................................................. 17 8.0 – Cost Calculation................................................................................................................... 18 9.0 - Design Overview.................................................................................................................. 19 Works Cited .................................................................................................................................. 21 Appendix A – Particle Swarm Optimization Code....................................................................... 22 Appendix B – Hydrostatics Code ................................................................................................. 27 Appendix C – Load Calculations.................................................................................................. 30 Appendix D – Heave Natural Period Code................................................................................... 32 Appendix E – Pitch Calculation Code .......................................................................................... 33 Appendix F – Setdown Condition Analyzer................................................................................. 34 Appendix G – Surge Calculation Code......................................................................................... 36 Appendix H – Cost Calculation Code........................................................................................... 37
  • 3. 3 List of Tables Table 1- NREL 5MW Turbine Properties [2]................................................................................. 5 Table 2 - Definition of the Design Variables.................................................................................. 6 Table 3 - Model of Testing & Design Constraints.......................................................................... 6 Table 4 - Final Design Dimensions .............................................................................................. 19 Table 5 - Final Design Properties ................................................................................................. 20 List of Figures Figure 1 - Wind Resources in the United States [1] ....................................................................... 4 Figure 2 - The Design Process of the Floating TLP Platform Structure......................................... 7 Figure 3 - Power Curve for NREL 5 MW Turbine....................................................................... 11 Figure 4 - Drag Coefficients ......................................................................................................... 13 Figure 5 - Comparison of the System Natural Periods ................................................................. 15 Figure 6 - Free Body Diagram of Setdown................................................................................... 17 Figure 7 - Free Body Diagram of Pitched TLP............................................................................. 18 Figure 8 – Design Drawing - Overview........................................................................................ 39 Figure 9 – Design Drawing – Front View .................................................................................... 40 Figure 10 – Design Drawing – Base Dimensions......................................................................... 41 Figure 11 – Design Drawing – Side View.................................................................................... 42
  • 4. 4 1.0 – Introduction Renewable wind energy is one of the most promising sources of clean power in the foreseeable future. As technology progresses to improve the feasibility of the wind energy systems, additional locations, such as offshore platforms become a reality to aid in the progress of electricity generation. As suitable marine wind farm locations have been explored the distance offshore has steadily increased, from the shallow waters of Denmark to depths of hundreds of meters. The original wind turbine platforms were in approximately 30 meters of water, but have steadily increased to around 80 meters depth. The feasibility of the successful areas for wind farms was severely limited to these water depths, as the platforms were required to be bottom fixed. [1] Mono-pile platforms, consisting of a single support tower were anchored to the seabed for the shallow water applications, while applications from 20-80 meters used a tripod design, also fixed to the seabed. In order to exploit better wind farm locations that are further offshore, and thus in deeper water, new technologies, often applied from the offshore oil industry, must be developed. One of these technologies is the Tension Leg Platform (TLP), allowing for significantly greater water depths, proposed up to 900 meters in depth. In the United States, much of the developable areas for wind farms are farther offshore than depths of 80 meters, as shown in Figure 1. This leads to the need to utilize tension leg platforms to successfully harness the winds power. Figure 1 - Wind Resources in the United States [1]
  • 5. 5 2.0 – Problem Statement The ability to utilize the areas of the United States that are suitable for wind energy development requires a TLP is to be designed to support a 5 MW National Renewable Energy Lab (NREL) Offshore Wind Turbine with a concrete gravity base for use in 200 meters of water. 100 turbines are to make up the wind farm. Designing a TLP for use in 200 meters of depth requires overcoming significant design challenges not faced in the design of a land based or bottom fixed system. Details of the NREL 5 MW turbine are outlined in Table 1. Table 1- NREL 5MW Turbine Properties [2] In order to ensure the safety and operation of the installed wind turbine, the platforms are limited to natural heave periods of less than 1.8 seconds, surge/sway periods of greater than 70 seconds, tendon tension greater than zero, a maximum set-down of less than 1.2 meters in storm conditions of 120 knots and 3 knots of current, and a 3 degree pitch limitation in storm survival conditions. The objective was to produce a platform capable of meeting these criteria with the minimum total cost. 2.1 - Design Methodology The objective of the design process was to minimize the costs of the support structure for the NREL 5 MW Wind Turbine. The design team started with real data from the given wind turbine and the customer requirements as outlined above. Choosing variables to describe the structure geometrically, a PSO was utilized to explore the design space. The design variables describe the geometry of the supporting structure. Based on an initial feasible design the design variables were reduced to: hull draft, hull diameter, arm length, arm height, hull radius, arm thickness, tendon diameter and ballast height. The design variables and their descriptions are indicated in Table 2.
  • 6. 6 Design Variables Definition hull draft The distance from the bottom of the hull to the free surface hull radius The distance from the center to the outer surface of the hull arm length The horizontal dimension of the arm from the hull arm height The vertical dimension of the arm hull thickness The thickness of the steel A-36 for hull arm thickness The thickness of the steel A-36 for arm tendon diameter The diameter of the tendon ballast height The vertical dimension of the ballast from the hull bottom Table 2 - Definition of the Design Variables The PSO checked the fitness based on the feasability of the three catagories shown in Table 3. Those catagories were used to analyze the structure and apply penalties to the objective cost function if the point designs violated any constraints. The objective of the design process was to reduce the cost of the structure. The cost calculation was used as an evaluation function to obtain the best group of design variables. The overall design process is described in Figure 2. Catagory Analysis Hydrodynamics Turbine Heave Natural Period Analyzer Pitch Angle Analyzer (Under 25 m/s wind speed) Setdown Condition Analyzer Surge Period Analyzer Hydrostatics Buoyant Forces Calculation Structural Weight Calculation Tendon Force Calculation Loads/ Stress Bending Loads Testing Wind Loads Testing Stress Testing Table 3 - Model of Testing & Design Constraints
  • 7. 7 Figure 2 - The Design Process of the Floating TLP Platform Structure 3.0 – Particle Swarm Optimization Complex design problems containing a multitude of design variables and constraints are virtually impossible to solve without the use of a rigorous optimization technique. Design problems containing one objective function are much more simple that multi-objective problems because a converged design can be obtained via optimization without having tradeoffs between conflicting objectives. Many different optimization techniques can be applied to single objective optimization problems but for a problem requiring strong global searching power, a particle swam optimizer (PSO) may be the best choice. 3.1 – Background A PSO employed for a design problem initially generates a population of “individuals” (point designs) with random values for the independent variables governing the problem. These independent point designs’ variables are then given random “velocities” which changes each variable based on which initial random design was the “best” at satisfying the objective function (cheapest design, strongest design, fastest design, etc.). Theses individual design “particles” are then allowed to search around the design space with some degree of randomness, but at the same time, they are updated with information about which individual design is the best and whether their new “position” in the design space is better than the last. Specified coefficients determine how fast the individuals converge to the best design found and to what degree they ignore the current best solution and keep searching.
  • 8. 8 ‫ݔ‬௝ ௜ାଵ = ‫ݔ‬௝ ௜ + ‫ݔ‬௝ ௜ [1] ‫ݒ‬௝ ௜ାଵ = ‫ݓ‬௝‫ݒ‬௝ ௜ + ܿଵ‫ݎ‬ଵ௝ ௜ ൫ܲ௕௘௦௧,௝ − ‫ݔ‬௝ ௜ ൯ + ܿଶ‫ݎ‬ଶ௝ ௜ ൫‫ܩ‬௕௘௦௧,௝ − ‫ݔ‬௝ ௜ ൯ [2] Equation 1 shows how the individuals’ positions (values) are updated with a velocity term. Equation 2 shows how the velocity is calculated, where w is an inertia term, c1 and c2 are individual and group learning rates, r1 and r2 are random numbers between zero and one, and Pbest and Gbest are current personal and current group best designs. The simplicity of the code made it a perfect option for applying to the problem of minimizing the cost of a wind turbine supporting TLP. The PSO allows the design variables to vary across the design space, however penalties must be imposed to prevent constraints from being violated and designs from going into the infeasible domain. Exterior penalty functions are useful because they allow the design space to remain intact while penalizing the optimizer for attempting to choose designs outside of the feasible domain. If a constraint “g” is violated, then equation 3 describes how the penalty term is generated. The penalized objective function then becomes equation 4, which allows the optimizer to realize which designs are the worst and best based on a value rk scaled by the sum of each constraint violations raised to the q power. ݂݅ ݃ሺ‫ݔ‬ሻ > 0, ‫ݐ‬ℎ݁݊ ‫)ݔ(݌‬ = |݃ሺ‫ݔ‬ሻ|, p=0 otherwise [3] ‫)ݔ(݌‬ = ݂(‫)ݔ‬ + ‫ݎ‬௞ ෍ ‫)ݔ(݌‬௤ [4] 3.2 - Implementation A PSO worked very well for optimizing the design of a TLP for a wind turbine because the single objective was to minimize cost and the constraints were quantifiable and easily determined based on the selected independent variables. The implementation of the raw PSO code was performed with Matlab and required the use of a “while” loop to continue running the PSO until the costs of all the individuals were less than one standard deviation. It was initially believed this might cause the PSO to converge to similar costs for different designs, however this was never the case. Occasionally, the PSO would get stuck converging on an infeasible design and would not be able to improve the design, in which case it was necessary to terminate the code and start the optimizer with a new random initial population. The nature of a PSO is to allow the design variables to vary with some degree of randomness, which allows a more global search of the design space. While this is a good technique for searching power, it can also allow individuals to have a combination of variables which do not make sense physically. Negative dimensions, steel thicknesses greater than member dimensions, imaginary numbers, and negative costs were the main issues which needed to be addressed. It was necessary to constrain the initial population to designs which made physical sense in order to give the PSO a baseline from which to search in the feasible domain. Initially the optimizer would converge on designs which had obtained negative costs which resulted from the code considering and favoring zero or negative dimensions. This issue was solved by not allowing the optimizer to chose a design with a negative cost as a personal or global best and penalizing the
  • 9. 9 objective function heavily (g(x) = 10 plus a normalized fraction of how negative the cost was). Designs with negative dimensions were penalized with g(x) = n*1 where n is the number of dimension violations. Penalty terms were normalized such that each term would cause a penalty relative to the severity of the constraint violation (Formula 5). ݃ሺ‫ݔ‬ሻ = ‫݈ܾ݁ܽ݅ݎܽݒ‬ ‫݁ݑ݈ܽݒ‬ − ܿ‫ݐ݊݅ܽݎݐݏ݊݋‬ ‫݁ݑ݈ܽݒ‬ ܿ‫ݐ݊݅ܽݎݐݏ݊݋‬ ‫݁ݑ݈ܽݒ‬ [5] Normalizing all the penalty terms to an order of 1-10 allowed none of the penalty terms to dominate the others. The exception was for negative cost, which was heavily penalized as discussed above. Dimension variable physically impossible, such as arm height exceeding the hull draft were penalized. If the PSO did allow variables to become negative, this typically resulted in formulas containing square roots to output imaginary numbers. Initially the PSO did not know how to handle these numbers and would either get stuck or output an imaginary cost. It was originally thought that the variables should be forced to remain in the feasible domain by changing their values positive if they became negative but this actually created additional problems and did not converge on any design. The final solution was to penalize a function not only if a constraint was violated, but also if an imaginary value was calculated. This allowed the PSO to have more freedom and searching power because these areas of the design space were still able to be searched for feasible solutions. Any imaginary or negative values were eliminated from the population within a few generations and the PSO never converged on any designs with negative or imaginary dimensions or cost. Conditions where the objective function received a penalty are listed below: • Negative dimensions or cost • Imaginary variables or cost • Specified strength or dynamics requirements are not satisfied • Hull radius is less than 5m diameter turbine column • Steel plate is less than 3 mm or greater than 50 mm • Twice the arm plate thickness is greater than the arm width • Ballast height is greater than half the hull draft Six subjective parameters required for the PSO were selected based on experience gained by running the code and interpreting the behavior of the PSO and its results. The inertial term dictates how fast a variable is allowed to change based on how much it changed during the previous iteration. This was the most influential parameter for obtaining good results from the PSO. Early on in the process, a value of w=0.5 was used. Different designs were converged upon each time the optimizer ran, creating the illusion there were many different best design choices. Increasing the inertia term to w=0.8 caused the optimizer to run at least three times longer but the same design was converged upon virtually every time. The number of point designs which are being used in a PSO is called the population size. Increasing the population size allows more global searching power but also slows down the optimizer substantially. A population size of 50 individuals was used to debug the code, which only took ~20 seconds to run, but each time it ran the optimizer would converge on a design
  • 10. 10 different enough to warrant a greater search. A population of 200 individuals was used to produce the final design for this project and the difference in the designs between runs was small enough to be within construction error. The group and personal learning rates scaled how much the global best design and the individual particles best design influenced how the variables changed with each iteration. The individual learning rate was set at c1=1.2 and the group learning rate was set at c2=1.5 forcing the optimizer to have more preference on the best design found by the group rather than an individual’s best design, while still allowing the individuals to search. Changing these values did not have a significant effect on the results. The penalty function parameter rk has the same units as the objective function, in this case cost. It is scaled by the summation of all of the penalty terms and added to the cost function to form the penalized objective function. Initially a value of rk=$106 was chosen but it was obvious that the penalization was not sufficient because irrational designs were still being converged upon. Increasing the penalty parameter to rk =$109 was enough to force the PSO to virtually only converge on feasible designs. The penalty function also scaled each penalty term by g(x)r where typically r=2. This value not changed because increasing it would reduce the importance of any penalty terms less than one. 4.0 – Hydrostatics Primarily, the TLP must successfully support the weight of the entire wind turbine assembly, tower, and housing. Much of the actual design variable calculations that ensure the safety and feasibility of the design are computed from the hydrostatic calculations, ensuring the platform's ability to float. With the random input variables that the PSO code produced the volume for the hull and arms were calculated to produce a buoyant force according to the equation: ‫ܨ‬௕ = ∇ ∗ ߩௌ௪ [6] Where: ‫ܨ‬௕ = ‫ݐ݊ܽݕ݋ݑܤ‬ ‫݁ܿݎ݋ܨ‬ ∇ = ‫݀݁ݏݎ݁݉݉ܫ‬ ܸ‫݁݉ݑ݈݋‬ ߩ௦௪ = ݀݁݊‫ݕݐ݅ݏ‬ ‫݂݋‬ ‫ݐ݈ܽݏ‬ ‫ݎ݁ݐܽݓ‬ These dimensions were then used to compute the weight of the structure, including stiffeners, by taking the volume multiplied by the density of steel and a 1.4 allowance for the stiffeners. The total weight for the TLP platform was resolved by: ܹ௧௢௧௔௟ = ܹ௛௨௟௟ + ܹ௧௢௧௔௟ ௢௙ ௔௥௠௦ + ܹ௥௢௧௢௥ + ܹ௧௢௪௘௥ + ܹ௡௔௖௘௟௟௘ [7] Where, Wrotor = 111000 kg, Wtower = 347000kg, and Wnacelle = 240000 kg in accordance with the National Renewable Energy Laboratory Technical Report NREL/TP-500-38060 [2]. Taking the calculated weight and subtracting it from the buoyant force gave the net resultant buoyant force, or the tendon pretension. Taking the tendon pretension and multiplying by the required factor of safety of 1.5, gave a result for the required concrete foundation weight for the platform. The
  • 11. 11 following penalty terms were used to ensure convergence on a feasible design: hull diameter larger than the tower diameter, positive hull draft, positive arm radius, positive hull and arm thicknesses, and positive tendon diameter are all normalized to provide individual penalty terms to the PSO program. 5.0 – Forces and Loads 5.1 – Turbine Supplied Loads The TLP will experience different loading conditions which the structure must be able to handle. Two of these loads are directly due to the power generation function of the turbine. The generator and turbine produce forces and large moments as the blades spin and turn wind velocity into rotational motion. Figure 3 is the power curve for the NREL 5 MW turbine. Figure 3 - Power Curve for NREL 5 MW Turbine Figure 3 provided two values used in the following force calculations, RotTorq and RotThrust. The approximate maximum values for each, 4100 kNm and 900 kN occurring around 11.5 m/s, were used because they represented the worst case scenario. As wind velocity increases the turbine blades are designed to be pitch-regulated in order to prevent damage. 5.2 – Wind Induced Loads The wind force was calculated using Equation 8. ܹ݅݊݀‫݁ܿݎ݋ܨ‬ = ෍ ‫ܸܭ‬௜ ଶ (‫ܥ‬௦)௜(‫ܥ‬ௌு)௜‫ܣ‬௜ ∗ 1000 ௡ ௜ୀଵ [8] Where: K = units constant = 0.0000623 ts2 /m4 Vi = wind velocity at element center CS = Shape factor of element
  • 12. 12 CSH = Shielding factor Design criteria stipulated that the platform have 2m of freeboard so the wind was assumed to be acting on only 3 “elements.” The three elements were the circular platform which was being designed, the 90m tall tower of the wind turbine, and the generator located at the top of the turbine. For the generator forces it was assumed that all the forces acting on the blades and generator dimensions were accounted for in the RotThrust and RotTorq values. Equation 9 was used to determine the wind velocity at each of the element’s centroid heights. ܸ௜ ܸ௛ = ( ‫ݖ‬௜ ‫ܪ‬௛ ) ଵ ଼ [9] Where i represents the value for velocity or height at the element centroid and h represents the reference values. Two reference conditions were used; a storm condition of 61.733m/s at a height 10m above the water surface and a pitch check condition of 25 m/s at the same 10m height. The shape factor, CS, was .5 for both the tower and main hull cylinders. The shielding factor was assumed to be 1. 5.3 – Current Induced Loads The current loads were calculated in a similar manner to wind loads. However, it was assumed the current was a constant 3 knots at all depths. With three legs each located 120° apart the design team had to determine which current loading scenario presented the worst case. If angle zero represents when the current is heading in a direction directly aligned with one of the platform legs than it was determined the worst case current occurred at angle 0 degrees. Equation 10 shows how the current force was calculated. ‫݁ܿݎ݋ܨݐ݊݁ݎݎݑܥ‬ = ෍ 1 2 ∗ ‫ܥ‬஽೔ ∗ ‫ݎ‬ℎ‫݋‬ ∗ ܸ௜ ଶ ∗ ‫ܣ‬௖೔ ௡ ௜ୀଵ [10] Where: CDi = Current drag coefficient Ai = Normal area for element Vi = Current velocity at element = 3 knots rho = density of saltwater
  • 13. 13 The drag coefficient changed depending on the shape of the area. Figure 4 was used to write a code which determined what the drag coefficient would be for the various dimensions which were input. Figure 4 - Drag Coefficients 6.0 – Stresses 6.1 - Bending The turbine, wind, and current forces all created moments which acted upon the bottom of the structure. In order to get the total moment acting on the structure a sum of each element force multiplied by its distance from the bottom of the structure was computed. The sum of the squares with RotTorq gave the largest total moment as shown in equation 11. ܶ‫݈ܽݐ݋‬ ‫ݐ݊݁݉݋ܯ‬ = ඨ෍(‫ݐ݈݊݁݉݁ܧ‬ ‫ݏݐ݊݁݉݋ܯ‬ ଶ ) + ܴ‫ݍݎ݋ܶݐ݋‬ଶ మ [11] The bending stress could then be calculated with the known moment of inertia. The equations for both are given below.
  • 14. 14 ߪ௕௘௡ௗ௜௡௚ = ‫ܿܯ‬ ‫ܫ‬ [12] ‫ܫ‬ = గ ସ (ܴை ସ − ܴூ ସ ) [13] 6.2 - Hoop The hoop stress was calculated just like a thin-walled pressure vessel. In this case the pressure is acting from the outside due to the hydrostatic water pressure. Equation 12 displays how the hoop stress was calculated; where P is the pressure from the water, D is the diameter of the cylinder, and t is the thickness of the cylinder. ߪு௢௢௣ = ܲ‫ܦ‬ 2‫ݐ‬ [14] 6.3 - Axial The final load which the design team used to test the structure was axial, or compressive, stress. This stress only acted upon the bottom of the structure and was the result of buoyancy. It was calculated using equation 15. ߪ௔௫௜௔௟ = ߨܴଶ ܲ ‫ݐܦ‬ [15] 6.4 - A-36 Steel and combined stresses As part of the design requirements, the team was required to use ASTM A-36 Steel. A-36 is a standard carbon steel with yield strength of 250 MPa and elastic modulus of 207,000 MPa. The three main stresses (bending, hoop, and axial) all interact with each other at the bottom of the structure. In order to ensure that the A-36 steel did not yield under the stress, the Von Mises yield criterion was checked. The design team used a safety factor of 1.5 in the below Von Mises check. ఙ೤೔೐೗೏ మ ଵ.ହ ≥ (ߪ௕௘௡ௗ௜௡௚ + ߪ௔௫௜௔௟)ଶ -(൫ߪ௕௘௡ௗ௜௡௚ + ߪ௔௫௜௔௟൯ ∗ ߪு௢௢௣) + ߪு௢௢௣ ଶ [16] 6.5 – Tension Leg Support The other part of the structure which the stresses were analyzed in were the leg supports. It was assumed that the legs acted as a cantilever beam of height “h” and width “b”. The stress would therefore be the same as the bending stress expressed in equation 12, however the moment of inertia changes to the following for a rectangular beam: ‫ܫ‬ = 1 12 ܾℎଷ [17]
  • 15. 15 Since the largest stress will occur at the bottom of the leg supports, using the parallel axis theorem, the moment of inertia was changed to: ‫ܫ‬ே஺ ≈ 2 1 12 ‫ݐ‬ℎଷ + 2‫(ݓݐ‬ℎ 2ൗ )ଶ [18] For plate buckling we needed to calculate beta and use it to ensure the A-36 steel was strong enough. Equations 15 and 16 show how beta and the buckling stress were calculated. ߚ = ܾ ‫ݐ‬ ට ߪ௬௜௘௟ௗ ‫ܿ݅ݐݏ݈ܽܧ‬ ‫ݏݑ݈ݑ݀݋ܯ‬ [19] ߪ௕௨௖௞௟௜௡௚ = ൬ 2 ߚ − 1 ߚଶ ൰ ∗ ߪ௬௜௘௟ௗ [20] 7.0 – Seakeeping In order to avoid resonance with the wave exciting frequencies and vibration issues, the natural heave and surge/sway periods were important design considerations in the preliminary design stage of the TLP. Figure 5 - Comparison of the System Natural Periods 7.1 - Heave Natural Period As a design constraint, heave natural period has to be less than 1.8 seconds. The equation for heave natural period is presented in Equation 19. The tradeoffs that can be made for decreasing the heave natural period in order to operate the TLP out of the probable resonance range are decreasing total weight of the platform, increasing the waterplane area or increasing the stiffness of tethers. The calculated heave natural period for this design is T୬,୦ୣୟ୴ୣ = 1.8 seconds.
  • 16. 16 T୬,୦ୣୟ୴ୣ = 2π ඥg ∙ ඨ ሺ1 + A୸୸ሻ∆ + 0.33W୘ ρgA୵୮ + k୸୸ [19] Where: g= Acceleration due to gravity. A୸୸ = Net added mass coefficient. W୘ =Tether weight in air. ∆ =Dispacement. k୸୸ =Tether stiffness in heave. A୸୸ is calculated by using component-wise added mass formula: ෍ሺw୧ + wୟ୧ሻ = (1 + A୸୸)∆ [20] 7.2 - Surge/Sway Natural Period Similar to heave, surge/sway motions have to be considered in the preliminary design stage due to resonance related issues. Although satisfying the design constraint of 70 seconds is sufficient, surge/sway natural periods of the design should be as large as possible, preferably around 100 seconds. The equation for sway period is shown in Equation 21. It is possible to increase surge/sway natural period by decreasing the pretension of the tethers, increasing the total weight of the platform, or increasing the length of tethers. It can be easily seen that there is a tradeoff between surge/sway and heave natural period calculations. The final design has a 71.8 second surge/sway natural period. T୬,ୗ୳୰୥ୣ/ୗ୵ୟ୷ = 2π ඥg ∙ ඨ ൫1 + A୶୶୷୷൯∆ + 0.23W୘ P୫/L [21] Where: g= Acceleration due to gravity. A୶୶୷୷ = Net added mass coefficient. W୘ =Tether weight in air. ∆ =Dispacement. P୫ = P୲ − 0.5 ∙ ሺsubmerged weight of the tetherሻ = Pretension in the middle The added mass correction coefficients Kr and Ki values are obtained from the regression curves. 7.3 - Setdown A methodology that assumed a triangular geometry formed by a horizontally offset TLP due to current and wind loads was used in order to perform setdown calculations. This geometry was assumed to be independent from pitch calculations and take into account the elongation of the tendons due the total force increment. This methodology provided an accurate calculation of
  • 17. 17 setdown. The set down of the optimized design was 0.331 meters which easily satisfied the design constraint of 1.2 meters. A free body diagram of the setdown condition is presented below as Figure 6. T 1 T 2z x F b u o y2 F b u o y1 S E A B O T T O M m gm g H F h o rizo n ta l L te th e r L tether + dL x z Q Figure 6 - Free Body Diagram of Setdown The stiffness coefficient of the tethers can be calculated by using Equation 22. k୘ୣ୲୦ୣ୰ = ෍ AE L୘ୣ୲୦ୣ୰ [22] Setdown is determined by the Equation 23 where “z” is the setdown in meters. ඨቆ ሺሺFୌ୓ୖ୍୞୓୒.ሻଶ + (F୔ୖ୉୘୉୒ୗ୍୓୒ + ρπRଶzg)ଶሻ kTether ଶ − (L୲ୣ୲୦ୣ୰ − z)ଶቇ (L୲ୣ୲୦ୣ୰ − z) ∙ (F୔ୖ୉୘୉୒ୗ୍୓୒ + ρπRଶ zg) − Fୌ୓ୖ୍୞୓୒. = 0 [23] 7.4 – Pitch Angle Calculations The pitch motion was another aspect analyzed during the preliminary design stage. The design had a constraint of 1.5 degrees in 25m/s wind, and 3 degrees during storm survival. The methodology used for pitch calculations assumed that these calculations are dependent from the setdown case and all the loads are acting on a single point. Also, it was assumed that the structure was in steady state and the heel angle was zero at the beginning. During calculations
  • 18. 18 elongation of the tether was under consideration. Additionally, the tension decrease due to the reduction of tension in one tether is also calculated in order to ensure all tethers are always under tension. The results for the pitch calculations are 0.07 degrees under 25 m/sec. wind condition and 0.073 degrees for storm condition. A free body diagram for the pitched TLP is show below in Figure 7. L tether +dL S E A B O T T O Mz x L tether -dL F p re te n s io n M to ta l Figure 7 - Free Body Diagram of Pitched TLP The pitch calculation was performed by using Equation 24. ∅ = tanିଵ ൬ dL Arm Radius ൰ ∙ 180 π (deg. ) [24] 8.0 – Cost Calculation The objective of the design process was to minimize the cost of the structure. The cost calculation was used as an objective function to obtain the best group of design variables. In the hydrostatics section, the structural weight of each part was obtained. The technique used for cost calculations assumed that these equations were dependant on the weight of each type of material. The structural cost is obtained by using Equation 25. Cost = ∑W୧ ∙ P୧ [25]
  • 19. 19 Where: Wଵ = Wୱ୲ୣୣ୪, the weight of the steel ASTM A-36 with 40% additional weight for structure Wଶ = Wୡ୭୬ୡ୰ୣ୲ୣ, the weight of the concrete used in the foundation and ballast Wଷ = W୲ୣ୬ୢ୭୬, the weight of the tendon Pଵ = Pୱ୲ୣୣ୪, the unit price of steel ASTM A-36, 800 USD / metric ton including fabrication Pଶ = Pୡ୭୬ୡ୰ୣ୲ୣ, the unit price of concrete, 100 USD / metric ton including fabrication Pଵ = P୲ୣ୬ୢ୭୬, the unit price of tendon, 8000 USD / metric ton 9.0 - Design Overview The final design for a TLP capable of supporting a wind turbine as found by the PSO and verified to pass all of the design requirements and constraints is tabulated in Table 4. The optimizer found that the hull plating only needed to be about one third the thickness of the arm plating. Separating these two plating thicknesses into two variables allowed the arms to be strengthened while using minimal steel for the hull, minimizing the overall cost. It is also interesting to note that the optimizer was given the option to include cement ballast to prevent excess steel being used for buoyancy compensation, however the design always converged where no ballast was needed. Hull Radius 11.785 m Hull Draft 17.560 m Hull Depth 19.560 m Hull Plating Thickness 9 mm Arm Height 4.008 m Arm Width 1.002 m Arm Length 33.121 m Arm Plating Thickness 29 mm Tendon Diameter 0.216 m Ballast Height 0.00 m Table 4 - Final Design Dimensions The properties of the design are tabulated in Table 5. It was found that the heave natural period was the limiting constraint. Passing the maximum 1.8 second limit caused other constraints to be passed many times over. For instance, the steady pitch limits needed to be less than 3 degrees in the storm condition and less than 1.5 degrees in the regular operating condition; however tuning the tendons to pass the heave constraint caused the maximum steady pitch of the TLP to be ~0.07 deg. Clearly some constraints dominated others in terms of which were more difficult to pass.
  • 20. 20 Total Weight 119.96 t Total Buoyancy 842.24 t Tendon Pretension 256.47 t Current Force 438.36 kN Foundation Weight 435.97 kN Storm Wind Force 81.81 kN Regular Wind Force 13.42 kN Storm Total Moment 106248.20 kNm Regular Total Moment 101957.51 kNm Heave Natural Period 1.80 s Surge Natural Period 71.80 s Storm Steady Pitch 0.07 deg Regular Steady Pitch 0.07 deg Set Down 0.33 m Stress, Axial 115.71 MPa Stress, Bending 22.48 MPa Stress, Combined 40668894217 MPa Stress, Hoop 231.41 MPa Stress, Leg 237.07 MPa Table 5 - Final Design Properties
  • 21. 21 Works Cited [1] Offshore Wind Energy. Environmental and Energy Study Institute. Oct. 2010. Web. 20 Mar. 2011. <http://www.eesi.org/files/offshore_wind_101310.pdf>. [2] Jonkman, J., S. Butterfield, W. Musial, and G. Scott. Definition of a 5-MW Reference Wind Turbine for Offshore System Development. National Renewable Energy Laboratory. Feb. 2009. Web. 17 Feb-25 Mar. 2011.
  • 22. 22 Appendix A – Particle Swarm Optimization Code % 570 TLP Project % Particle Swarm Optimization Main Program % 03/08/2011 % ========================================================================= % ========================================================================= clear all close all clc % ========================================================================= % Initialization popsize = 200; % number of individuals c1 = 1.2; % individual learning rate c2 = 1.5; % group learning rate w = 0.8; % velocity inertia coefficient rk = 1000000000; % penalty scaling term based on cost of TLP q = 2; % penalty exponent term g = 9.81; gen = 1; % initializing generation counter numvars = 8; % initialize population with random numbers and zero velocities for i = 1:popsize for j = 1:numvars if j < 4 individuals(i,j) = rand(1)*50; end if j == 4 individuals(i,j) = rand(1)*50; end if j > 4 individuals(i,j) = rand(1)*1; end velocity(i,j) = 0; end if individuals(i,4) < individuals(i,6) a = individuals(i,4); individuals(i,4) = individuals(i,6); individuals(i,6) = a; end if individuals(i,1) < individuals(i,8)
  • 23. 23 a = individuals(i,1); individuals(i,1) = individuals(i,8); individuals(i,8) = a; end end startingvalues = individuals; % assign named variables values from individuals matrix hulldraft = individuals(:,1); hullradius = individuals(:,2); armlength = individuals(:,3); armheight = individuals(:,4); hullthickness = individuals(:,5); armthickness = individuals(:,6); tendondiameter = individuals(:,7); ballastheight = individuals(:,8); armradius = armlength+hullradius; % calculate initial cost and cost penalty function for i = 1:popsize [gdimensions,gfloat,tendonforce,totalbuoyancy,totalweight,turbinetotalmass] = tlpHydrostaticsballast(hulldraft(i), hullradius(i), armradius(i), armheight(i), hullthickness(i), armthickness(i),tendondiameter(i),ballastheight(i)); [gload,stressb,stressh,stressa,stressl,stressc,fwtotalstorm,fwtotalregular,fc total,momentstotalstorm,momentstotalregular] = tlpLoadcalcs(hullradius(i),hullthickness(i),hulldraft(i),armheight(i),armthic kness(i),armradius(i),totalbuoyancy,tendonforce); [gsetdown,setdown(i,gen),foundationweight] = f_setdown(fctotal,fwtotalstorm,hulldraft(i),hullradius(i),tendonforce,tendond iameter(i)); [gcost,cost(i,gen),armmass,hullmass] = tlpCost(hullradius(i), hulldraft(i), hullthickness(i), armradius(i), armthickness(i), armheight(i), tendondiameter(i), foundationweight,ballastheight(i)); [gpitch,pitch(i,gen)] = f_pitch(fctotal,fwtotalstorm,fwtotalregular,tendonforce,hulldraft(i),hullradi us(i),armradius(i),tendondiameter(i),momentstotalstorm,momentstotalregular); [gsurge,surge(i,gen)] = f_surge(armheight(i),armradius(i),armmass*g,hullradius(i),hullmass*g,hulldraf t(i),turbinetotalmass*g,tendondiameter(i),tendonforce); [gheave,heave(i,gen)] = f_heave(armheight(i),armradius(i),hullradius(i),armmass*g,hullmass*g,turbinet otalmass*g,hulldraft(i),tendondiameter(i)); stopcondition(i,gen) = gload+gpitch+gsurge+gheave+gsetdown+gcost+gfloat+gdimensions;
  • 24. 24 gsum(i,gen) = gload^q+gpitch^q+gsurge^q+gheave^q+gsetdown^q+gcost^q+gfloat^q+gdimensions^q; pcost(i,gen) = cost(i,gen)+rk*(gsum(i,gen)); end % iterates through designs until the costs converge while std(cost(:,gen)) > 1 %&& sum(stopcondition(i,gen)) > 0 std(cost(:,gen)) % calculate best individual in generation and check if global best for i = 1:popsize if pcost(i,gen)>0 costpositive(i,gen) = pcost(i,gen); else costpositive(i,gen) = abs(pcost(i,gen))+10000000000; end end [mincost(gen),gbest(gen)] = min(costpositive(:,gen)); [doesnt,matter,values] = find(individuals(gbest(gen),:)<0); check = sum(values); if gen == 1 globalbest = individuals(gbest(gen),:); elseif min(costpositive(:,gen)) <= min(costpositive(:,gen-1)) && check <= 0 globalbest = individuals(gbest(gen),:); end % determine if new individual is better than the previous generation if gen == 1; personalbest = individuals; else for i = 1:popsize [doesnt,matter,values] = find(individuals(gbest(gen),:)<0); check = sum(values); if costpositive(i,gen) <= costpositive(i,gen-1) && check <= 0 personalbest(i,:) = individuals(i,:); end
  • 25. 25 end end % NEW GENERATION gen = gen+1 for i = 1:popsize for j = 1:numvars r1 = rand(1); r2 = rand(1); velocity(i,j) = w*velocity(i,j)+c1*r1*(personalbest(i,j)- individuals(i,j))+c2*r2*(globalbest(j)-individuals(i,j)); individuals(i,j)= individuals(i,j)+velocity(i,j); end % reasigns individuals' variables to named variables hulldraft = individuals(:,1); hullradius = individuals(:,2); armlength = individuals(:,3); armheight = individuals(:,4); hullthickness = individuals(:,5); armthickness = individuals(:,6); tendondiameter = individuals(:,7); ballastheight = individuals(:,8); armradius = armlength+hullradius; % recalculates cost and penalty function for i = 1:popsize [gdimensions,gfloat,tendonforce,totalbuoyancy,totalweight,turbinetotalmass] = tlpHydrostaticsballast(hulldraft(i), hullradius(i), armradius(i), armheight(i), hullthickness(i), armthickness(i),tendondiameter(i),ballastheight(i)); [gload,stressb,stressh,stressa,stressl,stressc,fwtotalstorm,fwtotalregular,fc total,momentstotalstorm,momentstotalregular] = tlpLoadcalcs(hullradius(i),hullthickness(i),hulldraft(i),armheight(i),armthic kness(i),armradius(i),totalbuoyancy,tendonforce); [gsetdown,setdown(i,gen),foundationweight] = f_setdown(fctotal,fwtotalstorm,hulldraft(i),hullradius(i),tendonforce,tendond iameter(i));
  • 26. 26 [gcost,cost(i,gen),armmass,hullmass] = tlpCost(hullradius(i), hulldraft(i), hullthickness(i), armradius(i), armthickness(i), armheight(i), tendondiameter(i), foundationweight,ballastheight(i)); [gpitch,pitch(i,gen)] = f_pitch(fctotal,fwtotalstorm,fwtotalregular,tendonforce,hulldraft(i),hullradi us(i),armradius(i),tendondiameter(i),momentstotalstorm,momentstotalregular); [gsurge,surge(i,gen)] = f_surge(armheight(i),armradius(i),armmass*g,hullradius(i),hullmass*g,hulldraf t(i),turbinetotalmass*g,tendondiameter(i),tendonforce); [gheave,heave(i,gen)] = f_heave(armheight(i),armradius(i),hullradius(i),armmass*g,hullmass*g,turbinet otalmass*g,hulldraft(i),tendondiameter(i)); stopcondition(i,gen) = gload+gpitch+gsurge+gheave+gsetdown+gcost+gfloat+gdimensions; gsum(i,gen) = gload^q+gpitch^q+gsurge^q+gheave^q+gsetdown^q+gcost^q+gfloat^q+gdimensions^q; pcost(i,gen) = cost(i,gen)+rk*(gsum(i,gen)); end end end % ========================================================================= % =========================================================================
  • 27. 27 Appendix B – Hydrostatics Code % Hydrostatics code % all inputs are metric: m, kg function [gdimensions,gfloat,F_tendon,FB_total,W_total,W_turbinetotal] = tlpHydrostatics(hulldraft, hullradius, armradius, armheight, hullthickness, armthickness,tendondiameter, ballastheight) % required inputs: armwidth = 0.25*armheight; hulldepth = hulldraft+2; %Definitions and known quantities W_rotor = 111000; W_nacelle = 240000; W_tower = 347000; W_turbinetotal = W_rotor+W_nacelle+W_tower; rhosteel = 7800; rhowater = 1025; rhoconcrete = 2400; %Volumes and center of gravity Awp = pi*hullradius^2; V_hull = Awp*hulldraft; V_arm = (armradius-hullradius)*armwidth*armheight; V_ballast = pi()* hullradius^2 * ballastheight; V_total = V_hull+3*V_arm; %calculate side projected areas for input to loading Aproj_hull_water = hulldraft*2*hullradius; Aproj_hull_air = 4*hullradius; %Calculate buoyant forces FB_total = V_total*rhowater; %Calculate weights W_hull = 1.4*(pi*2*hullradius*hullthickness*hulldepth + 2*Awp*hullthickness)*rhosteel; W_arm = 1.4*(armheight*armwidth-(armheight-armthickness)*(armwidth- armthickness))*(armradius-hullradius)*rhosteel+armheight*armwidth*rhosteel; W_arm_total = 3*W_arm; W_ballast = rhoconcrete*V_ballast; W_total = W_hull + W_arm_total + W_rotor + W_tower + W_nacelle + W_ballast; %Calculate tendon force, required tendon size F_tendon = (FB_total - W_total)/3;
  • 28. 28 % while sigma_tendon<sigma_allow_tendon; % tendon_thickness = tendon_thickness-0.001; % sigma_tendon = F_tendon/(pi()*(tendon_thickness/2)^2); % end % while sigma_tendon>=sigma_allow_tendon; % tendon_thickness = tendon_thickness+.001; % sigma_tendon = F_tendon/(pi()*(tendon_thickness/2)^2); % end %Center of gravity CGv_tower = 66; CGv_hull = hulldraft+2/2; CGv_arm = armheight/2; CG_total = (CGv_tower*(W_tower+W_rotor+W_nacelle)+CGv_hull*W_hull+CGv_arm*W_arm_total)/( W_tower+W_rotor+W_nacelle+W_hull+W_arm_total); if W_total > FB_total gfloat = abs(W_total-FB_total)/W_total; else gfloat = 0; end if hullradius < 5 ghullradius = 1; else ghullradius = 0; end if hulldraft < 0 ghulldraft = 1; else ghulldraft = 0; end if armradius < 0 garmradius = 1; else garmradius = 0; end if armheight < 0 garmheight = 1; else garmheight = 0; end if hullthickness < 0.003 || hullthickness > 0.05 ghullthickness = 1; else ghullthickness = 0;
  • 29. 29 end if armthickness < 0.003 || armthickness > 0.05 garmthickness = 1; else garmthickness = 0; end if tendondiameter < 0 gtendondiameter = 1; else gtendondiameter = 0; end if 2*armthickness > armheight garms = 1; else garms = 0; end if armheight > hulldraft ghull = 1; else ghull = 0; end if ballastheight > hulldraft/2 gballast = (ballastheight-hulldraft)/hulldraft; else gballast = 0; end gdimensions = ghullradius+ghulldraft+garmradius+garmheight+ghullthickness+garmthickness+gte ndondiameter+garms+ghull+gballast; end % W_hull_submerged = (2*Awp*hullthickness+pi*hulldraft*(hullradius- (hullradius-hullthickness))^2)*rhosteel; % W_hull_air = pi*2*(hullradius-(hullradius-hullthickness))^2*rhosteel;
  • 30. 30 Appendix C – Load Calculations % Loads Calculations % required inputs function [gload,stressb,stressh,stressa,stressl,stressc,fwtotalstorm,fwtotalregular,fc total,momentstotalstorm,momentstotalregular] = tlpLoadcalcs(hullradius,hullthickness,hulldraft,armheight,armthickness,armrad ius,totalbuoyancy,tendonforce) rc = hullradius; % radius cylinder thick = hullthickness; % cylinder thickness d = hulldraft; % cylinder draft (to waterline) lh = armheight; % leg height lt = armthickness; % leg thickness lr = armradius; % leg radius b = totalbuoyancy; % NEED BUOYANCY t = tendonforce; % NEED TENDON STRESS % Constants k=0.0000623; % Ts^2/m^4 rtorq=4100000; %N m rthrust=900000; % N rho=1025.9; % kg/m^3 g=9.81; %m/s^2 rhos=7800; % kg/m^3 yield=250000000; elastic=207000000000; % storm Calcs fwcstorm=k*(46.29^2)*.5*(4*rc)*1000*g; fwtstorm=k*(74.91^2)*.5*(450)*1000*g; % changed this fwtotalstorm = fwcstorm+fwtstorm; % regular fwcregular=k*(18.75^2)*.5*(4*rc)*1000*g; fwtregular=k*(30.34^2)*.5*(450)*1000*g; % changed this fwtotalregular = fwcregular+fwtregular; % Current Calcs if d/rc<5 kl=.5+.1*(d/rc); else kl=1; end kb=1; fcc=(.5)*(.7*kl)*(rho)*(1.54^2)*((2*rc)*d); fcl=.5*(2*kl*kb)*rho*(1.54^2)*(lh*(lr-rc)); fctotal = fcc+fcl; % Bending Loads Inertia=(pi/4)*((rc^4)-((rc-thick)^4)); na=(1/2)*(d+2); momentsstorm=(rthrust*(92+d))+(fwtstorm*(47+d))+(fwcstorm*(1+d))+(fcc*(.5*d)) +(fcl*(.5*lh));
  • 31. 31 % Storm momentstotalstorm=((momentsstorm^2)+(rtorq^2))^(1/2); stressb=(momentstotalstorm*na)/Inertia; % Regular momentsregular=(rthrust*(92+d))+(fwtregular*(47+d))+(fwcregular*(1+d))+(fcc*( .5*d))+(fcl*(.5*lh)); momentstotalregular=((momentsregular^2)+(rtorq^2))^(1/2); % if moments >= rtorq % % stressb=(moments*na)/Inertia; % % else % % stressb = (rtorq*na)/Inertia; % % end stressh=(rho*g*d*2*rc)/(2*thick); stressa=(pi*(rc^2)*rho*g*d)/(pi*2*rc*thick); % Von Mises stressc=((stressa+stressb)^2)-((stressa+stressb)*(stressh))+(stressh^2); % Penalty check if stressc>((yield^2)/1.5) g1=(abs(stressc)-((yield^2)/1.5))/abs(stressc); else g1=0; end %-((b-(pi*(rc^2))-(2*((lh/4)*(lr-rc))))*.5*(lr-rc))+(rhos*(((lr- rc)*(lh)*(lh/4))-((lr-rc)*(lh-(2*lt))*((lh/4)-(2*lt)))+(((lh^2)*lt)/4))) % Leg loads stressl=(t*(lr-rc))/((2/12)*(thick)*(lh^3)+2*(lh/4)*lt*((lh/2)^2)); beta=((lh/4)/lt)*(yield/elastic)^(1/2); buckling=((2/beta)-(1/beta^2))*(yield); % Penalty check if abs(stressl)>abs(buckling) g2=(abs(stressl)-abs(buckling)/1.5)/abs(stressl); else g2=0; end gload = g1+g2; end
  • 32. 32 Appendix D – Heave Natural Period Code %========================================================================== % Wind Turbine Heave Natural Period Analyzer %========================================================================== function [hx,Theave] = f_heave(Armheight,Armradius,Rc,Warm,Wcylinder,Wturbine,hulldraft,tendondiamet er) rhowater = 1025; %Density of water [kg/m^3] rhosteel = 7.85*10^3; g = 9.81; %Acceleration of gravity [m/s^2] Ltether = 200-hulldraft; Armwidth = Armheight/4; Armlength = Armradius - Rc; Wtether = pi*(tendondiameter/2)^2*Ltether*rhosteel*g; %========================================================================== % ARMS IN HEAVE %========================================================================== Ratio=Armlength/Armheight; ki=1.50295-0.2865*log(Ratio); % Regression formula from Appendix F of the coursepack kr=1; % Because the rolling radius is zero in our case deg=2*(Armlength*Armheight/pi)^(0.5); Cm=ki*kr*(Armlength/deg)^2; % Added mass coefficient of Cylinder Waddedarm=Cm*(Armwidth*Armheight*Armlength)*rhowater*g; % [N] %========================================================================== % CYLINDER IN HEAVE %========================================================================== Waddedcylinder=(4/3)*pi*Rc^3*rhowater*g; % [N] Wtotal=(Waddedarm+Warm)*3+Waddedcylinder+Wcylinder+Wturbine; % [N] % ktether=Fpretension/Ltether; % [N/m] E = 207000000000; A = pi*(tendondiameter/2)^2; ktether = E*A/Ltether; kzz=3*ktether; % [N/m] Awp=pi*(Rc^2); % [m^2] %========================================================================== Theave=(2*pi/sqrt(g))*sqrt((Wtotal+0.33*Wtether*3)/(rhowater*Awp*g+kzz)); % [s] %========================================================================== if Theave>1.8 && imag(Theave) == 0 hx=(Theave-1.8)/1.8; %Penalty term elseif imag(Theave) ~= 0 hx=abs((imag(Theave)-1.8)/1.8); else hx=0; %Penalty term end
  • 33. 33 Appendix E – Pitch Calculation Code %========================================================================== % Wind Turbine Pitch Angle Analyzer (Under 25 m/s wind speed) %========================================================================== function [gpitch,Pitchangle] = f_pitch(Fc,Fw,Fw2,Fpretension,hulldraft,Rc,Armradius,tendondiameter,momentsto talstorm,momentstotalregular) Ltether = 200-hulldraft; E = 207000000000; A = pi*(tendondiameter/2)^2; k = E*A/Ltether; deltaL=(momentstotalstorm/Armradius)/k; deltaL2=(momentstotalregular/Armradius)/k; Pitchangle=(180/pi)*atan(deltaL/Armradius); Pitchangle2=(180/pi)*atan(deltaL2/Armradius); FTension2=Fpretension-(momentstotalstorm/Armradius); if Pitchangle>3.0 yx=(Pitchangle-3.0)/3.0; %Penalty term else yx=0; %Penalty term end if FTension2>0 tx=0; %Penalty term else tx=abs((0-FTension2)/(Fpretension)); end if Pitchangle2>1.5 qx=(Pitchangle2-1.5)/1.5; %Penalty term else qx=0; %Penalty term end gpitch = yx+tx+qx; end
  • 34. 34 Appendix F – Setdown Condition Analyzer %========================================================================== % Wind Turbine Setdown Condition Analyzer %========================================================================== function [rx,z,foundationweight] = f_setdown(fctotal,fwtotal,hulldraft,hullradius,tendonforce,tendondiameter) rhowater = 1025; % Density of water [kg/m^3] g = 9.81; % Acceleration of gravity [m/s^2] z = 0.001; % "z" is the setdown in meters [m] Ltether = 200-hulldraft; Fhorizontal = fctotal + fwtotal; % Total force in horizontal direction due to waves and wind E = 207000000000; A = pi*(tendondiameter/2)^2; ktether = E*A/Ltether; i = 1; f = -1; while f < 0 f = (sqrt(((sqrt((tendonforce*3+rhowater*pi*hullradius^2*z*g)^2+(Fhorizontal)^2)- tendonforce*3)/ktether+Ltether)^2-(Ltether-z)^2)/(Ltether- z))*(tendonforce*3+rhowater*pi*hullradius^2*z*g)-Fhorizontal; z = z+0.01; i = i+1; end Yieldstress=(sqrt((tendonforce*3+rhowater*pi*hullradius^2*z*g)^2+(Fhorizontal )^2)/((tendondiameter/2)^2*pi))*1.5; foundationweight = sqrt((tendonforce*3+rhowater*pi*hullradius^2*z*g)^2+(Fhorizontal)^2)*1.5/3; if z > 1.2 kx=(z-1.2)/1.2; % Penalty term else kx=0; end if Yieldstress > 400000000 wx=(Yieldstress-400000000)/400000000; else wx=0; end
  • 36. 36 Appendix G – Surge Calculation Code %========================================================================== % Wind Turbine Surge Period Analyzer %========================================================================== function [gx,Tsurge] = f_surge(Armheight,Armradius,Warm,Rc,Wcylinder,hulldraft,Wturbine,tendondiamet er,Fpretension) rhowater=1025; %Density of water [kg/m^3] g=9.81; %Acceleration of gravity [m/s^2] Ltether = 200-hulldraft; Rt = tendondiameter/2; Wtether = pi*(tendondiameter/2)^2*Ltether*7.85*10^3*g; Armwidth = Armheight/4; Armlength = Armradius - Rc; %========================================================================== % ARMS IN SURGE/SWAY %========================================================================== Ratio1=Armwidth/Armheight; kiarm=1.50295-0.2865*log(Ratio1); % Regression formula from Appendix F of the coursepack krarm=1; % Because the rolling radius is zero in our case degarm=2*(Armwidth*Armheight/pi)^(0.5); Cmarm=kiarm*krarm*(Armwidth/degarm)^2; % Added mass coefficient of Cylinder Waddedarm=Cmarm*(2*Armlength*Armwidth*Armheight*cos(30*pi/180))*rhowater*g; %========================================================================== % CYLINDER IN SURGE/SWAY %========================================================================== Ratio2=hulldraft/(2*Rc);% Lengtgh to Diameter Ratio Cmcylinder=-0.00008*Ratio2^4+0.0169*Ratio2^3- 0.1332*Ratio2^2+0.4739*Ratio2+0.2147; % Added mass coefficient for cylinder (Valid for 0.6<Ratio<6) % Regression formula from Appendix E of the coursepack Waddedcylinder=Cmcylinder*(4/3)*pi*Rc^3*rhowater*g; %========================================================================== % TETHERS IN SURGE/SWAY %========================================================================== Waddedtethers=rhowater*pi*g*(Rt)^2*(Ltether)*3; % Rt=Tether radius %========================================================================== Wtotal=Waddedarm+(Warm)*3+Waddedcylinder+Wcylinder+Wturbine+Waddedtethers+Wte ther*3; Pm=Fpretension*3-0.5*((Wtether-(pi*Rt^2*Ltether*rhowater*g)*3)); %========================================================================== Tsurge=(2*pi/sqrt(g))*sqrt((Wtotal+0.23*3*Wtether)/(Pm/Ltether)); %========================================================================== if Tsurge<70 && imag(Tsurge) == 0 gx=(70-Tsurge)/Tsurge; %Penalty term elseif imag(Tsurge) ~= 0 gx=abs((70-imag(Tsurge))/imag(Tsurge)); %Penalty term else gx=0; %Penalty term end
  • 37. 37 Appendix H – Cost Calculation Code %Calcularmthicknesse the cost of the TLP % Steel 800 USD/ton % Concrete 100 USD/ton % Tendons 800 USD/ton % Density of Steel 7.85*10^3 kg/m^3 function [gcost,cost,armmass,hullmass] = tlpCost(hullradius, hulldraft, hullthickness, armradius, armthickness, armheight, tendondiameter, foundationweight,ballastheight) rhosteel = 7.85*10^3; % kg/m^3 costconcrete = 100/1000; % USD/kg %changed per tonne to per kilogram costtendon = 8000/1000; % USD/kg coststeel = 800/1000; % USD/kg g = 9.81; % m/s^2 waterdepth = 200; % m hulldepth = hulldraft+2; armwidth = armheight/4; foundationmass = foundationweight/g; % mass of hull hm: hullmass = 1.4*(pi*2*hullradius*hullthickness*hulldepth + 2*pi*hullradius^2*hullthickness)*rhosteel; % recalcularmthicknessed hull mass % mass of armradiusm am armmass = (armheight*armwidth-(armheight-armthickness)*(armwidth- armthickness))*(armradius-hullradius)*rhosteel+armheight*armwidth*rhosteel; %recalcularmthicknessed % length of each tendon tl tendonlength = waterdepth-hulldraft; % mass of tendon tm tendonmass = tendonlength*tendondiameter^2/4*rhosteel; % mass of ballast ballastmass = pi*hullradius^2*ballastheight; % cost of the TLP cost = (hullmass+3*armmass)*coststeel+3*tendonmass*costtendon+3*foundationmass*costc oncrete+ballastmass*costconcrete; if cost < 0; gcost = abs((abs(cost)-100000)/abs(cost))+10; cost = 0; else
  • 38. 38 gcost = 0; end end % hm = 1.4*(pi*2*hullradius*hullthickness+ 2*pi*hullradius^2*hullthickness)*hulldepth*7.85*10^3; % am=1.4*2*armthickness*(armheight+armwidth)*(armradius- hullradius)*7.85*10^3; %subtracted armradiusm hull radius from armradiusm radius
  • 39. 39 Appendix I – Drawings of Final Design. Figure 8 – Design Drawing - Overview
  • 40. 40 Figure 9 – Design Drawing – Front View
  • 41. 41 Figure 10 – Design Drawing – Base Dimensions
  • 42. 42 Figure 11 – Design Drawing – Side View