diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 6e835579..3c4a2479 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-07-15T14:37:05","documenter_version":"1.5.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-08-05T17:18:30","documenter_version":"1.5.0"}} \ No newline at end of file diff --git a/dev/FramesOfReference/index.html b/dev/FramesOfReference/index.html index e3440a8b..e7ea4859 100644 --- a/dev/FramesOfReference/index.html +++ b/dev/FramesOfReference/index.html @@ -1,2 +1,2 @@ -Frames of Reference · OWENS.jl

OWENS X is outwards on blade, y is trailing edge always

Struts, CCW, z is inwards, y trailing, and CW z is outwards

Aerodyn

if CW z is up, y is trailing (root at bottom) blades, z is outwards and y is towards trailing edge. If struts have asymmetric, then you need to align your desired suction side with the x-vector, which means you might have to invert your airfoil lookup tables for struts that the suction side isn’t where you want it.

Aerodyn if CCW, root is at top and z is down, y is trailing edge, for struts, z is outwards, and y is trailing edge.

Hub is rotated such that the axis of rotation is x. So for a VAWT hub-x points up, and hawt hub-x point in x.

{width="4.917280183727034in" height="4.585993000874891in"}{width="5.469136045494313in" height="5.071805555555556in"}Meet porcupine the OWENS element orientation helper. It is comprised of a tower, horizonal struts, and blades that have both curved and vertical sections. Let's start with all of the orientations set to 0. We can see that the 1,0,0 norm is in the positive x direction, and likewise for the y and z norms.

Now, let's turn on just the yaw orientation, (psi in OWENS). The top blade gets a -90 degree yaw shift (like the other blades), and the other blades' yaw is additionally rotated to match the global blade orientation around the turbine axis of rotation. Yes the initial 90 degree shift is confusing, but it is the convention in the structural solver – is seems that the z-norm of the blade is intended to be eventually pointing away from the axis of rotation.

{width="5.595138888888889in" height="4.875694444444444in"}{width="5.737141294838145in" height="5.283430664916885in"}

If we add 30 degrees of rotation to the yaw, this is what it looks like.

{width="4.91704615048119in" height="4.992732939632546in"}

Ok, let's now turn on roll (in addition to yaw), which is the blade slope, or theta in OWENS. Now, the z norm is no longer always vertical, but now aligned with the blade slope.

{width="4.382957130358705in" height="4.783430664916885in"}{width="5.226388888888889in" height="4.833333333333333in"}

{width="4.406944444444444in" height="3.9298611111111112in"}If we add 30 degrees of roll, this is what it looks like:

{width="5.124857830271216in" height="4.771802274715661in"}

{width="4.45625in" height="4.469444444444444in"}Now, the blade pitch, also angle of attack, is generally 0, but can be offset similarly to the yaw, but the rotation is truly in a blade angle of attack frame of reference. Here it is with 30 degrees offset.

{width="4.095165135608049in" height="4.388081802274716in"}

In all, these are the rotation matrices were used to create the plots: Twist/aoa about the x-axis, slope/theta about the y-axis, and psi/yaw about the z axis.

# apply the twist rotation, which is about the x (1) axis

myvec = myvec*[1.0 0.0 0.0

0.0 cosd(Twistdel) sind(Twistdel)

0.0 -sind(Twistdel) cosd(Twistdel)]

# apply theta rotation, which is the tilt angle, or about the y (2) axis in global

myvec = myvec*[cosd(Thetadel) 0.0 -sind(Thetadel)

0.0 1.0 0.0

sind(Thetadel) 0.0 cosd(Thetadel)]

# apply Psi rotation, which is about Z (3) axis in global

myvec = myvec*[cosd(Psidel) sind(Psidel) 0.0

-sind(Psidel) cosd(Psidel) 0.0

0.0 0.0 1.0]

+Frames of Reference · OWENS.jl

OWENS X is outwards on blade, y is trailing edge always

Struts, CCW, z is inwards, y trailing, and CW z is outwards

Aerodyn

if CW z is up, y is trailing (root at bottom) blades, z is outwards and y is towards trailing edge. If struts have asymmetric, then you need to align your desired suction side with the x-vector, which means you might have to invert your airfoil lookup tables for struts that the suction side isn’t where you want it.

Aerodyn if CCW, root is at top and z is down, y is trailing edge, for struts, z is outwards, and y is trailing edge.

Hub is rotated such that the axis of rotation is x. So for a VAWT hub-x points up, and hawt hub-x point in x.

{width="4.917280183727034in" height="4.585993000874891in"}{width="5.469136045494313in" height="5.071805555555556in"}Meet porcupine the OWENS element orientation helper. It is comprised of a tower, horizonal struts, and blades that have both curved and vertical sections. Let's start with all of the orientations set to 0. We can see that the 1,0,0 norm is in the positive x direction, and likewise for the y and z norms.

Now, let's turn on just the yaw orientation, (psi in OWENS). The top blade gets a -90 degree yaw shift (like the other blades), and the other blades' yaw is additionally rotated to match the global blade orientation around the turbine axis of rotation. Yes the initial 90 degree shift is confusing, but it is the convention in the structural solver – is seems that the z-norm of the blade is intended to be eventually pointing away from the axis of rotation.

{width="5.595138888888889in" height="4.875694444444444in"}{width="5.737141294838145in" height="5.283430664916885in"}

If we add 30 degrees of rotation to the yaw, this is what it looks like.

{width="4.91704615048119in" height="4.992732939632546in"}

Ok, let's now turn on roll (in addition to yaw), which is the blade slope, or theta in OWENS. Now, the z norm is no longer always vertical, but now aligned with the blade slope.

{width="4.382957130358705in" height="4.783430664916885in"}{width="5.226388888888889in" height="4.833333333333333in"}

{width="4.406944444444444in" height="3.9298611111111112in"}If we add 30 degrees of roll, this is what it looks like:

{width="5.124857830271216in" height="4.771802274715661in"}

{width="4.45625in" height="4.469444444444444in"}Now, the blade pitch, also angle of attack, is generally 0, but can be offset similarly to the yaw, but the rotation is truly in a blade angle of attack frame of reference. Here it is with 30 degrees offset.

{width="4.095165135608049in" height="4.388081802274716in"}

In all, these are the rotation matrices were used to create the plots: Twist/aoa about the x-axis, slope/theta about the y-axis, and psi/yaw about the z axis.

# apply the twist rotation, which is about the x (1) axis

myvec = myvec*[1.0 0.0 0.0

0.0 cosd(Twistdel) sind(Twistdel)

0.0 -sind(Twistdel) cosd(Twistdel)]

# apply theta rotation, which is the tilt angle, or about the y (2) axis in global

myvec = myvec*[cosd(Thetadel) 0.0 -sind(Thetadel)

0.0 1.0 0.0

sind(Thetadel) 0.0 cosd(Thetadel)]

# apply Psi rotation, which is about Z (3) axis in global

myvec = myvec*[cosd(Psidel) sind(Psidel) 0.0

-sind(Psidel) cosd(Psidel) 0.0

0.0 0.0 1.0]

diff --git a/dev/OWENS_Dev_Guide/index.html b/dev/OWENS_Dev_Guide/index.html index 84b7bdf9..3465312d 100644 --- a/dev/OWENS_Dev_Guide/index.html +++ b/dev/OWENS_Dev_Guide/index.html @@ -1,2 +1,2 @@ -Developer Guide · OWENS.jl

author:

  • Kevin R. Moore

bibliography:

  • ac_sources.bib

title: Offshore Wind Energy Simulator (OWENS) Glue Code Basic Theory, Frames of Reference, and Inter-Module Coupling Methods –-

Introduction

The Offshore Wind Energy Simulator (OWENS) Code is a floating turbine-platform code capable of steady, unsteady, and modal analysis. It is comprised of, or coupled to many modules for aerodynamics, hydrodynamics, mooring dynamics, and finite element formulations.

How many of these items are used is not straightforward or a-priori and can easily lead to confusion or mistake (like how the aerodynamics uses inflow data; is it just simple based on the mean hub velocity, or in the rotating blade frame of reference? If the latter, what is that frame of reference so that we make sure we don't incorrectly map the vectors?) This document is intended as a developers guide for the intent of clearing up the relative ambiguity between the many moving and modular pieces. It is not a full theory document or users guide. For theory and use, please see the theory and user guides respectively. Within this document, we give enough detail about the operations of the \"glue\" code, the frames of reference, and coupling methods to aid further development.

Contributing

Please make all feature changes and bug fixes as branches and then create pull requests against the dev branch. The dev branch will be periodically pulled into master.

Glue Code Basic Theory

Due to the nonlinearity and non-closed-form nature of the floating turbine problem in both the design and temporal space, OWENS uses many types of iterative solution methods, specific to the physics involved. Loose or Gauss-Seidel iteration is used for the coupling between the modules. gives an overview of the general code structure for transient analysis, with the main equations being solved and the relative location of the iteration loops.

::: algorithm ::: spacing 1.18

::: algorithmic Initialize simulation (all module parameters, meshing, composite properties, etc) Initialize displacements and forces as 0

Get driveshaft displacement from generator torque Get rotor speed, rotational displacement from generator torque, aero torque, and turbine inertia Get aero forces from rotor speed, position Get structural displacements and reaction forces from aero forces Update displacements$_\text{guess}$ with the calculated displacements ::: :::

[]{#alg:Transient label="alg:Transient"} :::

Global Frame of Reference

Thanks to some legacy VAWT frames of reference where wind was originally coming from the top down, and then from the left right, the convention was to simply rotate the axes instead of properly redefining the global frame of reference to match standard math convention again. Therefore, an azimuth angle of 0, or yaw angle for standard VAWT frame of reference is top dead center. Therefore, blade 1 of a vawt should also be top dead center, i.e. aligned with the y+ axis as shown below.

Global Frame of Reference. Wind comes in from the left in the direction of the positive X-axis, the positive Y-axis is 90 degrees counter-clockwise to the X-axis. Z-axis is vertical. Positive rotations follow right hand rule. Note that the turbine is modeled in the rotating frame of reference. Therefore, the turbine stays stationary in its initial meshed position, excepting deformations, and inertial effects are calculated. The developer must use the calculated rotational position to map to the other models as necessary.{#fig:ac_velocities width="60%"}

InflowWind and TurbSim Velocity Inflow

This is how it is defined in the manual, despite inverting the positive direction of rotation compared to standard notation.

Wind frame of reference is the same as global. However, the angle follows TurbSim and [InflowWind](https://github.com/old-NWTC/InflowWind) notation Wind propagation angle is zero when aligned with the positive X-axis and clockwise positive, in the direction of the negative negative Y-axis.{#fig:ac_velocities width="50%"}

OWENSAero Aerodynamics (AC and DMS)

VAWT 2D section looking downwards with induced velocity \$w\$ vector broken into \$u\$ and \$v\$ components depicted by arrows. Airfoils show example blade locations with dots aligning to the circumferential discretization. Aero frame of reference is the same as global, however a blade is at 0 degrees azimuth when it is aligned with the Y-axis. If an aero module is 2D, it is made quasi-3D by stacking slices from lower to higher in the Z-axis.{#fig:ac_velocities width="50%"}

Note: CACTUS, does not fully follow this scheme and differs from the global frame of reference by switching the Y and Z axes for a VAWT. Also, be careful with the geometry inputs; if the blade 1 starts out at the \"south\" position, as opposed to the north, then it will behave as though it were a north starting blade rotating clockwise, and a symmetric gust velocity will match (if the simple iec uniform gust is used). All else for CACTUS follows the description above.

Aerodynamics forces are radial inward positive and tangential in direction of rotation positive. So, the blade local accelerations in the radial will be outward positive and in the tangential will be in the opposite direction of rotation for a CCW rotor. CW rotors are still in work and would need to have the local frame of reference rotation verified. Therefor, for the added mass equations, the forces should be negated.

OWENSFEA Structures

Yaw is equivalent to the global azimuth angle as above, and is denoted in the code as Psi. Zero is top dead center, right hand rule positive rotation. The subscript D indicates degrees. Theta is the element slope, or delta, and

The rotation sequence is a Roll (Rx) - Pitch (Ry) - Yaw (Rz) sequence in OWENSFEA (R = Rz * Ry *Rx in multiplication order). This corresponds to Twist - Theta - Psi angle ordering. In the matrix multiplication this is R = $R_{psi}$ * $R_{theta}$ * $R_{twist}$, which is a [3,2,1] matrix ordering.

::: center Name Rotation Axis OWENS Angle Names –––- –––––––- –––––––––- Roll about X Twist Pitch about Y Theta Yaw about Z Psi

: Module Level of Detail in This Document :::

We apply these in order of Roll, then Pitch, then Yaw, which is R = Rz * Ry * Rx (application is from right to left in rotations) for a rotation of vector x by R. i.e R(x) = Rz * Ry * Rx * x.

In the code I now have ang = [ort.Psid[idx], ort.Thetad[idx],ort.Twistd[idx]+180,-90]; DCM = CH2G * createGeneralTransformationMatrix(ang,[3,2,1,2]); Where I have an additional rotation by -90 about the Y axis to align Z with X before applying the other rotation sequences. This is due to AD15 using the IEC conventions with +Z along the blade, but the beam solver using the more typical beam formulation of +X along the beam.

This is almost consistent between blades and struts (have a +90 rotation on struts for some reason that I haven't sorted out yet).

Rotating Frame of Reference, 6 DOF where 1 = turbine vertical force, 2 = turbine 2D slice tangential force, 3 = turbine 2D slice normal force, 4 = blade M25 twisting moment, 5 = blade curvature twisting moment, 6 = blade sweep moment.

The Mesh matches the global frame of reference of x, y, and z. Element length is the length along the element.

The mesh itself is comprised only of components. For example, a tower, two blades, and four struts. The element number is sequential. There are overlapping points where each component connects. The mesh has a connectivity vector, which has rows corresponding to each element, column 1 corresponds to the \"master\" node, and column 2 corresponds to the \"slave\" node. The element connection in the mesh is only intra-component. I.e. there is no connectivity between components - that is defined in the joint matrix, which has columns for: Joint Number, Joint Master Node, Joint Slave Node, Joint Type, Joint Mass, Not Used, PsiD, ThetaD. The D indicates angle in degrees. Joint types are: (0 = weld(fixed), 1=pinned, 2 = hinge joint with axis about slave node element's e2 axis, 3 = hinge joint axis about slave node element's e1 axis, 4 = hinge joint axis about slave node element's e3 axis). The Psi and Theta are of the slave node (or its closest neighbor of the same component due to the gaps in element mesh connectivity). The not used column is just filled with zeros. The \"flapwise\" normal vector of an element is forced to be away from the machine for consistency. During the meshing process, the component type need to be known in order to get this right: Mesh Type: 0-blade 1-tower 2-strut.

Composites

Hydrodynamics

Mooring

Coupling Methods

Inflow - Aero

Direct: Aero module supplies an x-y-z and time coordinate, inflow returns x-y-z velocity. This is repeated for all blade discrete points as per the aero formulation.

Aero - Turbine Structure

Loose Iteration: Structure provides blade local radius, twist, sweep, and 6 DOF velocities, aero returns forces, moments. This is iterated on until convergence. It is preferred to change this to a N-dimensional root solver and pass gradients to the root solver to increase performance.

Specifically, from the meshing process, the starting and ending node numbers for the blades are known and the aerodynamic loads mapped to the elements between those nodes.

Turbine Structure - Platform Structure

Same as Aero-Structure

Hydro - Platform Structure - Mooring

Same as Aero-Structure

Structures - Composites

Initialization is Direct: Structures provides macro geometry, Composites provide sectional properties. Composite Failure is Direct: Structure provides strains, composites provides failure. Buckling is also calculated.

Controllers - Control Elements

Direct: Controllers provide reactionary inputs to control inputs in real time based on dynamics.

+Developer Guide · OWENS.jl

author:

  • Kevin R. Moore

bibliography:

  • ac_sources.bib

title: Offshore Wind Energy Simulator (OWENS) Glue Code Basic Theory, Frames of Reference, and Inter-Module Coupling Methods –-

Introduction

The Offshore Wind Energy Simulator (OWENS) Code is a floating turbine-platform code capable of steady, unsteady, and modal analysis. It is comprised of, or coupled to many modules for aerodynamics, hydrodynamics, mooring dynamics, and finite element formulations.

How many of these items are used is not straightforward or a-priori and can easily lead to confusion or mistake (like how the aerodynamics uses inflow data; is it just simple based on the mean hub velocity, or in the rotating blade frame of reference? If the latter, what is that frame of reference so that we make sure we don't incorrectly map the vectors?) This document is intended as a developers guide for the intent of clearing up the relative ambiguity between the many moving and modular pieces. It is not a full theory document or users guide. For theory and use, please see the theory and user guides respectively. Within this document, we give enough detail about the operations of the \"glue\" code, the frames of reference, and coupling methods to aid further development.

Contributing

Please make all feature changes and bug fixes as branches and then create pull requests against the dev branch. The dev branch will be periodically pulled into master.

Glue Code Basic Theory

Due to the nonlinearity and non-closed-form nature of the floating turbine problem in both the design and temporal space, OWENS uses many types of iterative solution methods, specific to the physics involved. Loose or Gauss-Seidel iteration is used for the coupling between the modules. gives an overview of the general code structure for transient analysis, with the main equations being solved and the relative location of the iteration loops.

::: algorithm ::: spacing 1.18

::: algorithmic Initialize simulation (all module parameters, meshing, composite properties, etc) Initialize displacements and forces as 0

Get driveshaft displacement from generator torque Get rotor speed, rotational displacement from generator torque, aero torque, and turbine inertia Get aero forces from rotor speed, position Get structural displacements and reaction forces from aero forces Update displacements$_\text{guess}$ with the calculated displacements ::: :::

[]{#alg:Transient label="alg:Transient"} :::

Global Frame of Reference

Thanks to some legacy VAWT frames of reference where wind was originally coming from the top down, and then from the left right, the convention was to simply rotate the axes instead of properly redefining the global frame of reference to match standard math convention again. Therefore, an azimuth angle of 0, or yaw angle for standard VAWT frame of reference is top dead center. Therefore, blade 1 of a vawt should also be top dead center, i.e. aligned with the y+ axis as shown below.

Global Frame of Reference. Wind comes in from the left in the direction of the positive X-axis, the positive Y-axis is 90 degrees counter-clockwise to the X-axis. Z-axis is vertical. Positive rotations follow right hand rule. Note that the turbine is modeled in the rotating frame of reference. Therefore, the turbine stays stationary in its initial meshed position, excepting deformations, and inertial effects are calculated. The developer must use the calculated rotational position to map to the other models as necessary.{#fig:ac_velocities width="60%"}

InflowWind and TurbSim Velocity Inflow

This is how it is defined in the manual, despite inverting the positive direction of rotation compared to standard notation.

Wind frame of reference is the same as global. However, the angle follows TurbSim and [InflowWind](https://github.com/old-NWTC/InflowWind) notation Wind propagation angle is zero when aligned with the positive X-axis and clockwise positive, in the direction of the negative negative Y-axis.{#fig:ac_velocities width="50%"}

OWENSAero Aerodynamics (AC and DMS)

VAWT 2D section looking downwards with induced velocity \$w\$ vector broken into \$u\$ and \$v\$ components depicted by arrows. Airfoils show example blade locations with dots aligning to the circumferential discretization. Aero frame of reference is the same as global, however a blade is at 0 degrees azimuth when it is aligned with the Y-axis. If an aero module is 2D, it is made quasi-3D by stacking slices from lower to higher in the Z-axis.{#fig:ac_velocities width="50%"}

Note: CACTUS, does not fully follow this scheme and differs from the global frame of reference by switching the Y and Z axes for a VAWT. Also, be careful with the geometry inputs; if the blade 1 starts out at the \"south\" position, as opposed to the north, then it will behave as though it were a north starting blade rotating clockwise, and a symmetric gust velocity will match (if the simple iec uniform gust is used). All else for CACTUS follows the description above.

Aerodynamics forces are radial inward positive and tangential in direction of rotation positive. So, the blade local accelerations in the radial will be outward positive and in the tangential will be in the opposite direction of rotation for a CCW rotor. CW rotors are still in work and would need to have the local frame of reference rotation verified. Therefor, for the added mass equations, the forces should be negated.

OWENSFEA Structures

Yaw is equivalent to the global azimuth angle as above, and is denoted in the code as Psi. Zero is top dead center, right hand rule positive rotation. The subscript D indicates degrees. Theta is the element slope, or delta, and

The rotation sequence is a Roll (Rx) - Pitch (Ry) - Yaw (Rz) sequence in OWENSFEA (R = Rz * Ry *Rx in multiplication order). This corresponds to Twist - Theta - Psi angle ordering. In the matrix multiplication this is R = $R_{psi}$ * $R_{theta}$ * $R_{twist}$, which is a [3,2,1] matrix ordering.

::: center Name Rotation Axis OWENS Angle Names –––- –––––––- –––––––––- Roll about X Twist Pitch about Y Theta Yaw about Z Psi

: Module Level of Detail in This Document :::

We apply these in order of Roll, then Pitch, then Yaw, which is R = Rz * Ry * Rx (application is from right to left in rotations) for a rotation of vector x by R. i.e R(x) = Rz * Ry * Rx * x.

In the code I now have ang = [ort.Psid[idx], ort.Thetad[idx],ort.Twistd[idx]+180,-90]; DCM = CH2G * createGeneralTransformationMatrix(ang,[3,2,1,2]); Where I have an additional rotation by -90 about the Y axis to align Z with X before applying the other rotation sequences. This is due to AD15 using the IEC conventions with +Z along the blade, but the beam solver using the more typical beam formulation of +X along the beam.

This is almost consistent between blades and struts (have a +90 rotation on struts for some reason that I haven't sorted out yet).

Rotating Frame of Reference, 6 DOF where 1 = turbine vertical force, 2 = turbine 2D slice tangential force, 3 = turbine 2D slice normal force, 4 = blade M25 twisting moment, 5 = blade curvature twisting moment, 6 = blade sweep moment.

The Mesh matches the global frame of reference of x, y, and z. Element length is the length along the element.

The mesh itself is comprised only of components. For example, a tower, two blades, and four struts. The element number is sequential. There are overlapping points where each component connects. The mesh has a connectivity vector, which has rows corresponding to each element, column 1 corresponds to the \"master\" node, and column 2 corresponds to the \"slave\" node. The element connection in the mesh is only intra-component. I.e. there is no connectivity between components - that is defined in the joint matrix, which has columns for: Joint Number, Joint Master Node, Joint Slave Node, Joint Type, Joint Mass, Not Used, PsiD, ThetaD. The D indicates angle in degrees. Joint types are: (0 = weld(fixed), 1=pinned, 2 = hinge joint with axis about slave node element's e2 axis, 3 = hinge joint axis about slave node element's e1 axis, 4 = hinge joint axis about slave node element's e3 axis). The Psi and Theta are of the slave node (or its closest neighbor of the same component due to the gaps in element mesh connectivity). The not used column is just filled with zeros. The \"flapwise\" normal vector of an element is forced to be away from the machine for consistency. During the meshing process, the component type need to be known in order to get this right: Mesh Type: 0-blade 1-tower 2-strut.

Composites

Hydrodynamics

Mooring

Coupling Methods

Inflow - Aero

Direct: Aero module supplies an x-y-z and time coordinate, inflow returns x-y-z velocity. This is repeated for all blade discrete points as per the aero formulation.

Aero - Turbine Structure

Loose Iteration: Structure provides blade local radius, twist, sweep, and 6 DOF velocities, aero returns forces, moments. This is iterated on until convergence. It is preferred to change this to a N-dimensional root solver and pass gradients to the root solver to increase performance.

Specifically, from the meshing process, the starting and ending node numbers for the blades are known and the aerodynamic loads mapped to the elements between those nodes.

Turbine Structure - Platform Structure

Same as Aero-Structure

Hydro - Platform Structure - Mooring

Same as Aero-Structure

Structures - Composites

Initialization is Direct: Structures provides macro geometry, Composites provide sectional properties. Composite Failure is Direct: Structure provides strains, composites provides failure. Buckling is also calculated.

Controllers - Control Elements

Direct: Controllers provide reactionary inputs to control inputs in real time based on dynamics.

diff --git a/dev/VAWTGenUserGuide/index.html b/dev/VAWTGenUserGuide/index.html index cecdf44e..08950e33 100644 --- a/dev/VAWTGenUserGuide/index.html +++ b/dev/VAWTGenUserGuide/index.html @@ -1,2 +1,2 @@ -Legacy VAWTGen Guide · OWENS.jl

All of this has been automated, but the option to create and load these legacy files has been preserved. TODO: show how to do this and condense and modernize this text.

Version 1.0 User Guide

Brian C. Owens

Wind Energy Technologies

Sandia National Laboratories

November 7, 2013

Contents

Introduction 1

Overview of VAWTGen Mesh Generator 1

Demonstration 3

Conventions Employed in Creating a Model with VAWTGen 5

Structural and aerodynamic description of components 5

Caveats of creating a VAWT configuration in VAWTGen 7

Coordinate system 7

Tower component 7

Blade component 7

Blade component 8

VAWTGen Input File 9

VAWTGen Command Line Execution 10

VAWTGen Graphical Output 11

VAWTGen Output Files 15

OWENS Main Input File (.owens) 15

Mesh File (.mesh) 16

Element Property File (.el) 16

Element Orientation File (.ort) 17

Joint File (.jnt) 17

Boundary Conditions File (.bc) 17

Blade Data File (.bld) 18

Output File (.out) 18

Future Versions 18

References 19

Introduction

This user guide presents instructions for using the VAWTGen vertical-axis wind turbine (VAWT) mesh generator. This generator is intended to be utilized with the Offshore Wind ENergy Simulation (OWENS) analysis tool [1]. The input files for this mesh generator are discussed in detail. Turbine components (tower, blades, and struts) are described using existing National Renewable Energy Laboratory (NREL) file formats [2]. A simple input file sizes these basic components and positions them in a hub fixed coordinate frame at arbitrary distances from the origin with arbitrary orientation. VAWTGen generates a mesh of a VAWT consisting of Timoshenko beam elements along with other files describing properties of the VAWT. These files serve as inputs to the OWENS analysis tool. VAWTGen also visualizes the VAWT assembly and mesh to provide a visual confirmation that the VAWT is constructed correctly. Furthermore, VAWTGen can visualize the modal and transient results output by the OWENS analysis tool.

Overview of VAWTGen Mesh Generator

A VAWT rotor primarily consists of a tower and blade components. The blades may be affixed to the tower at their ends as in the Darrieus and V-VAWT configurations or via struts as in the H-VAWT configuration. Struts may also provide a connection between the tower and blades at any position along the tower and blade spans. The VAWTGen mesh generator is capable of generating VAWTs of arbitrary geometry, including H-type, V-type, and Darrieus configurations shown in Figure 1. The VAWT configuration is discretized from continuous structural components into a finite number of beam elements. Elements span between discrete points in the mesh, known as nodes. Finite element analysis examines the motions of nodes as dictated by the deformation of the beam elements under prescribed boundary conditions. This collection of nodes and elements forms the mesh of the VAWT configuration.

{width="2.5990562117235347in" height="1.453332239720035in"}

[]{#_bookmark2 .anchor}Figure 1 Illustrations of V, H, and Darrieus VAWT configurations

VAWTGen accepts data files containing the basic geometry of tower, blade, and strut components. Other crucial configuration information is specified such as the elevation of the blade root from the tower root, as well as the radial distance the blade root is positioned from the tower. An arbitrary number of blades may be specified for the configuration. VAWTGen positions the blade roots with equal azimuth spacing about the tower axis. The blades may be rotated into an arbitrary orientation per a sequence of Euler angles input by the user. If required, struts may be inserted between the tower and a

blade by specifying a fraction of the tower span and the blade span the strut will span. VAWTGen will insert a straight strut of the appropriate length between the tower and blade components. The geometry of the strut component is specified by a file containing geometric data.

With these relatively minimal set of inputs (as illustrated in Figure 2) a VAWT of arbitrary configuration may be created. Therefore, a separate tool is not required for the various types of configurations. VAWTGen provides a convenient means to visualize the VAWT turbine in a wireframe or rendered format. This serves as a quick check for the user to ensure the VAWT has been constructed as intended, and shows the actual turbine configuration that the mesh of beam elements represents. VAWTGen also visualizes the finite element mesh once it is created. VAWTGen identifies points of intersection between the various components and inserts nodes accordingly. These node pairs at points of intersection (i.e. strut to tower, blade to strut, blade to tower) are recorded so appropriate constraint conditions at these joints may be imposed. The orientation of the finite elements in the mesh is also visualized to ensure the elements are positioned and oriented as intended.

C:\\\\Users\\\\bcowens\\\\Desktop\\\\meshGenFlow.png{width="4.016800087489064in" height="2.6266666666666665in"}

[]{#_bookmark3 .anchor}Figure 2 Input and output of VAWTGen mesh generator

Output includes a mesh file is generated that will be used by the analysis software. By default, the mesh is discretized in the same manner as the geometric description of components as specified in the component data files. The user may further subdivide the mesh by specifying an integer factor to further discretize the geometric data into elements. An elemental data file is also created, containing the structural properties of elements. An orientation file is generated containing the Euler angles representing the orientation of the elements. VAWTGen requires data files be supplied to describe the geometry of the primary turbine components (blades, towers, and struts). A joint file is also generated containing nodal information about joint locations. This file is used to specify general constraints between structural components. A blade file is also generated that contains aerodynamic data and

provides information needed for mapping aerodynamic loads to nodal locations on the structural model, as well as supplying geometry to aerodynamic data and geometry to external aerodynamic modules.

The format of the structural component data files is the same as the component files for NREL's FAST code [2]. These files describe the geometry and aerodynamic properties of general turbine components, and there is nothing that restricts their use to horizontal-axis wind turbines (HAWTs) specifically. For example, even though a Darrieus blade is not likely be installed on a HAWT, it is easily described by the NREL's FAST blade geometry file format. This allows existing wind energy design tools to be interfaced with the VAWT analysis tool without the need to consider new file formats. NREL's FAST separates geometrical/structural properties of a blade and aerodynamic properties of a blade into two files and the same approach is employed in the VAWTGen mesh generator.

Demonstration

This section demonstrates the capabilities of the VAWTGen mesh generator. First a two bladed V-VAWT configuration is considered. Figure 3 shows the wireframe visualization of this VAWT. The red line within the wireframe represents the beam flexural axis upon which the actual finite element mesh is created. Note that the blades may be positioned at any orientation. The blades and top of the tower share a common point and can be joined together via a constraint relationship that appropriately models the joint. Next, a three bladed H-VAWT with multiple strut connections is considered. Figure 4 shows the wireframe visualization and mesh for the H-VAWT configuration. The blades are oriented at an arbitrary orientation, and two strut connections per blade are specified. Finally, Darrieus type turbine configurations with swept and strutted blades are considered as shown in Figure 5 and Figure 6 respectively.

C:\\\\Users\\\\bcowens\\\\Desktop\\\\export_fig\\\\Vvawt.png{width="1.8892694663167104in" height="3.2266666666666666in"} C:\\\\Users\\\\bcowens\\\\Desktop\\\\export_fig\\\\hvawt.png{width="1.3600043744531933in" height="3.2133333333333334in"}

[]{#bookmark5 .anchor}Figure 3 Wireframe of V-VAWT []{#bookmark6 .anchor}Figure 4 Wireframe of H-VAWT

C:\\\\Users\\\\bcowens\\\\Desktop\\\\export_fig\\\\dar3swept.png{width="1.02086176727909in" height="3.3866666666666667in"}C:\\\\Users\\\\bcowens\\\\Desktop\\\\export_fig\\\\dar3strut.png{width="0.8588167104111986in" height="3.3866666666666667in"}

+–––––––––––––––––+–––––––––––––––––-+ | > []{#bookmark7 | > []{#bookmark8 .anchor}Figure | | > .anchor}Figure 5 Wireframe | > 6 Wireframe of Strutted | | > of Swept Darrieus VAWT** | > Darrieus VAWT** | +==================================+===================================+ +–––––––––––––––––+–––––––––––––––––-+

Conventions Employed in Creating a Model with VAWTGen

This section describes some specific conventions and caveats of creating a mesh of a VAWT using the VAWTGen mesh generator. First, the files use to describe the structural and aerodynamic properties of files are discussed

Structural and aerodynamic description of components

Structural and aerodynamic descriptions of components are specified through NREL FAST file format using the blade .dat files and Aerodyn .ipt files. For structural description (using the .dat file), only the lines highlighted in red are considered by VAWTGen.

+––––––+–––+–––––-+–-+–––+–-+–––-+–––-+––+ | > (-) | * | > | | > | | > * | > ** | ** | | > (-) | *(de | (kg/m) | | **( | | *(Nm\ | (N) | (- | | | g)** | > | | Nm\^ | | ^2)** | | ** | | | | (Nm\^2)** | | 2)** | | | | | +============+======+===========+===+======+===+=======+=======+====+ | > ) (kg | > | **(m) | * | ( | > | > ** | | | | > m) (kg | m) | | * | m) | | (m)** | | | | | > ( | | ( | | * | | | | | | m)** | | m | | * | | | | | | | | ) | | ( | | | | | | | | * | | m | | | | | | | | * | | ) | | | | | | | | | | * | | | | | | | | | | * | | | | +––––––+–––+–––––-+–-+–––+–-+–––-+–––-+––+

+––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | 0. | ** | > **9.163e+009 | > * | > ** | > | | **0 | | 000 | 353. | > 9.163e+009** | *6.8042 | 8.211e | * | | .00 | | | 43** | | e+009** | +009** | *0 | | 000 | | | | | | | .0 | | > 0 | | | | | | | 00 | | .20 | | | | | | | ** | | 0** | | | | | | | | +=====+====+=======+======+=================+=========+========+====+ | > | | > | > * | > 0.000 0.0 | > ** | | | | ** | | **0. | *0.0 | > 0.000 | 0.000** | | | | 316 | | 000** | 00** | | | | | | .71 | | | | | | | | | > | | | | | | | | | 31 | | | | | | | | | 6.7 | | | | | | | | | 1** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | 0. | ** | **9.163e+009 | > * | ** | * | | **0 | | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | .05 | | | 43** | | e+009** | +009** | .0 | | > 0 | | | | | | | 00 | | .20 | | | | | | | ** | | 0** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | > | > * | > 0.000 0.0 | > ** | | | | ** | | **0. | *0.0 | > 0.000 | 0.000** | | | | 316 | | 000** | 00** | | | | | | .71 | | | | | | | | | > | | | | | | | | | 31 | | | | | | | | | 6.7 | | | | | | | | | 1** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | 0. | ** | **9.163e+009 | > * | ** | * | | ** | | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 0.1 | | | 43** | | e+009** | +009** | .0 | | > 0 | | | | | | | 00 | | .20 | | | | | | | ** | | 0** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | > | > * | > 0.000 0.0 | > ** | | | | ** | | **0. | *0.0 | > 0.000 | 0.000** | | | | 316 | | 000** | 00** | | | | | | .71 | | | | | | | | | > | | | | | | | | | 31 | | | | | | | | | 6.7 | | | | | | | | | 1** | | | | | | | | | > | | | | | | | | | > | | | | | | | | | ** | | | | | | | | | .. | | | | | | | | | .** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | > | 0. | ** | **9.163e+009 | > * | ** | * | | *0. | * | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 8** | *0 | | 43** | | e+009** | +009** | .0 | | | .2 | | | | | | 00 | | | 00 | | | | | | ** | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | > | 0. | ** | **9.163e+009 | > * | ** | * | | ** | * | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 0.8 | *0 | | 43** | | e+009** | +009** | .0 | | 5** | .2 | | | | | | 00 | | | 00 | | | | | | ** | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | > | 0. | ** | **9.163e+009 | > * | ** | * | | *0. | * | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 9** | *0 | | 43** | | e+009** | +009** | .0 | | | .2 | | | | | | 00 | | | 00 | | | | | | ** | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | > | 0. | ** | **9.163e+009 | > * | ** | * | | ** | * | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 0.9 | *0 | | 43** | | e+009** | +009** | .0 | | 5** | .2 | | | | | | 00 | | | 00 | | | | | | ** | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | > | 0. | ** | > **9.163e+009 | > * | > ** | > | | ** | * | 000 | 353. | > 9.163e+009** | *6.8042 | 8.211e | * | | 1.0 | *0 | | 43** | | e+009** | +009** | *0 | | 000 | .2 | | | | | | .0 | | 0** | 00 | | | | | | 00 | | | ** | | | | | | ** | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+

Caveats of blade structural description in VAWTGen are described below.

  • {width="4.046369203849519e-3in" height="0.15120188101487314in"}The alpha column describing bend-twist coupling is not currently employed in the analysis.{width="4.046369203849519e-3in" height="0.15120188101487314in"}

  • For blades, the reference axis is assumed to pass through the quarter chord. The blade may be shaped by using the PrecrvRef and PreswpRef parameters.

  • VAWTGen creates a counter clockwise rotating turbine. A positive PreswpRef parameter sweeps a blade away from the direction of rotation. A positive PrecrvRef will shape a blade outward from the machine center.

  • Edgewise elastic axis and mass center offsets are positive towards the trailing edge of the blade section.

  • Flapwise elastic axis and mass center offsets are positive in the direction outward from the machine center.

  • Under these assumptions, positive structural twist twists the leading edge inwards towards the machine center.

  • All other structural properties are the same as that specified in the FAST manual[1].

The aerodynamic description of a component is accomplished via the Aerodyn .ipt file format. As with the blade properties (.dat) file, only certain parts of this file are used by VAWTGen. Specifically, the parts used by VAWTGen are highlighted in red in the example file below.

Note that the DRNodes and PrnElm columns are not used by VAWTGen but must remain in the file for successful reading of the .ipt file. As with the conventional use of the file, RNodes denotes a point by a physical distance along a blade span from the root. AeroTwst is the aerodynamic twist angle in degrees such that a positive twist angle rotates the leading edge of the blade inwards towards machine center. Chord is used as an aerodynamic property and also for a wireframe visualization of a VAWT design. N{width="4.046369203849519e-3in" height="0.15120188101487314in"}Foil gives an airfoil ID to a section. For wireframe visualization purposes the following thickness to chord ratios for an elliptical cross-section are specified by the NFoil integer: 1 – 1.0, 2 – 0.6, 3 - 0.3, all other –

0.2. These thickness to chord ratios are only employed for visualization purposes and do not affect VAWTGen output.

+––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > | 11.10 | > | 1 | * | **NOPRINT | | 2.85833 | | 2.21667 | .22** | *2** | | +=============+===========+=============+=======+======+==============+ | > | 11.10 | > | 1 | * | **NOPRINT | | 5.07500 | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > | 11.10 | > | 1 | * | **NOPRINT | | 7.29167 | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > | 10.41 | > | 1 | * | **NOPRINT | | 9.50833 | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 8.38 | > | 1 | * | **NOPRINT | | *11.72500** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 6.35 | > | 1 | * | **NOPRINT | | *13.94167** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 4.33 | > | 1 | * | **NOPRINT | | *16.15833** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 2.85 | > | 1 | * | **NOPRINT | | *18.37500** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 2.22 | > | 1 | * | **NOPRINT | | *20.59167** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 1.58 | > | 1 | * | **NOPRINT | | *22.80833** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.95 | > | 1 | * | **NOPRINT | | *25.02500** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.53 | > | 1 | * | **NOPRINT | | *27.24167** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.38 | > | 1 | * | **NOPRINT | | *29.45833** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.23 | > | 1 | * | **NOPRINT | | *31.67500** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.08 | > | 1 | * | **NOPRINT | | *33.89167** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+

Caveats of creating a VAWT configuration in VAWTGen

The previous sections discussed the files for describing the various components (blades, tower, struts) of a VAWT. This section provides details for creating consistent VAWT models using VAWTGen and illustrates input parameters.

Coordinate system

The following coordinate system z-axis is along the tower axis, and x- and y-axes are in the plane of rotation.

Tower component

The primary input for the tower component is the tower length or height. With this specification, VAWTGen positions the tower vertically along the h~3~ axis with the root of the tower at the origin of the coordinate system. A straight tower is assumed. Any PrecrvRef or PreswpRef specified in the .dat file for the tower is ignored.

Blade component

The blade components are positioned using the following input parameters:

  • Number of blades

  • Blade length

  • Blade root elevation from tower base elevation (z= 0)

  • Blade root radial offset from z-axis (this positions the root of the blade at the appropriate x and y coordinates depending on the azimuth location of the blade)

  • Blade theta orientation a (degrees, rotation about the y-axis)

  • Blade sweep angle (degrees, rotation about an intermediate "2-axis" a positive angle sweeps the blade away from the direction of rotation)

Notes:

  • The blade "theta" orientation angle should be negative so that the root is at a lower elevation (z-coordinate). A warning message is output if blade tip elevation is lower than blade root elevation.

  • Blades will be positioned with equal azimuth spacing of the blade root dictated by the specified number of blades.

  • Under this convention the root of "Blade 1" will always be positioned at 180 degrees (the x-axis being at 0 degrees azimuth). From this position blades are numbered in ascending order counter clockwise.

  • This convention of blade placement will also produce element orientations with tangential vectors along the trailing edge of a cross section and normal vectors outward from the machine center.

[]{#_bookmark15 .anchor}Strut component

The strut components (which can provide a structural component between the tower and blade connection) are positioned using the following input parameters:

  • Fraction of tower span for strut placement

  • Fraction of blade span for strut placement

VAWTGen will automatically determine the strut length and insert the component based off of these two parameters. VAWTGen inserts a straight strut with the discretization described in the .dat file for the strut. Any PrecrvRef or PreswpRef specified in this file is ignored.

VAWTGen will also insert nodes as needed to provide connections between the structural components.

VAWTGen Input File

As mentioned before, the structural component (tower, blade, and struts) are described by the NREL file formats [1] and will not be discussed here. The main input file for VAWTGen is described below. This example input file is for a three bladed VAWT with struts, but without swept blades. The commented input file shown below is sufficient for explanation and will not be discussed further.

VAWTGen Command Line Execution

VAWTGen is written using the MATLAB programming language. The VAWTGen source code directory should be added to the MATLAB path, and VAWTGen should be executed from a job directory containing the component data files (.dat and .ipt NREL formats), and the VAWTGen input file described in the following section. The command line input should be executed in the MATLAB command window as:

vawtGen(inputFile,outputFileRootName,renderBool,zeroTolerance);

For example:

vawtGen('snl34m.in','snl34m',true,1.0e-5);

Results in execution with "snl34m.in" as the main VAWTGen input file. Resulting output files would have the root "snl34m", such as "snl34m.mesh", "snl34m.el", etc. The renderBool produces a rendered surface plot of the turbine if set to true, and no rendered view if set to "false". The zeroTolerance variable specifies a tolerance to be considered numerical zero when searching for coincident points in the configuration for identifying locations where joints are to be specified. If excluded from the command line input a default value of 1.0e-6 is used.

Command line output from VAWTGen consists of a set of minimum element length ratios to the length of the actual structural component. This allows the user to ensure that element lengths are not too small to cause problems with the structural dynamics simulation. The located joints in the model are also displayed with information of the master and slave node numbers and component types.

A variety of examples are available in the "sampleJobs" directory distributed with VAWTGen. They may be executed by adding the VAWTGen directory to the MATLAB path and running the "generateMesh.m" scripts in the example job directory.

A sample command line output is shown below:

+––––+––––––––+––––––––––––––––––––––+ | > \>\> | | | | > vawt | | | | Gen(\' | | | | ideal3 | | | | 4m.in\ | | | | ',\'id | | | | eal34m | | | | \',0); | | | | > | | | | > * | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | | | | | - | | | | SNL | | | | V | | | | AWTGen | | | | | | | | V1.0 | | | | * | | | | | | | | - | | | | Dev | | | | eloped | | | | by | | | | | | | | Sandia | | | | Na | | | | tional | | | | | | | | Labora | | | | tories | | | | | | | | Wind | | | | | | | | Energy | | | | | | | | Techno | | | | logies | | | | * | | | | | | | | - | | | | See | | | | | | | | licen | | | | se.txt | | | | | | | | for | | | | | | | | disc | | | | laimer | | | | | | | | infor | | | | mation | | | | * | | | | | | | | > * | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | > Zero | | | | > tol | | | | erance | | | | > set | | | | > to | | | | > d | | | | efault | | | | > of | | | | > | | | | 1.0e-6 | | | | > | | | | > M | | | | inimum | | | | > e | | | | lement | | | | > to | | | | > com | | | | ponent | | | | > | | | | length | | | | > r | | | | atios: | | | | > Com | | | | ponent | | | | > 1 : | | | | > 0. | | | | 050000 | | | | > | | | | > Com | | | | ponent | | | | > 2 : | | | | > 0. | | | | 050000 | | | | > | | | | > Com | | | | ponent | | | | > 3 : | | | | > 0. | | | | 050000 | | | | > | | | | > 4 | | | | > | | | | Joints | | | | > lo | | | | cated: | | | +========+================+============================================+ | > | > Master - | > Component Type T Component Type B | | Joint | > Node #1, | | | > 1: | > Slave - Node | | | | > #22, | | +––––+––––––––+––––––––––––––––––––––+ | > | > Master - | > Component Type T Component Type B | | Joint | > Node #1, | | | > 2: | > Slave - Node | | | | > #43, | | +––––+––––––––+––––––––––––––––––––––+ | > | > Master - | > Component Type T Component Type B | | Joint | > Node #21, | | | > 3: | > Slave - Node | | | | > #42, | | +––––+––––––––+––––––––––––––––––––––+ | > | > Master - | > Component Type T Component Type B | | Joint | > Node #21, | | | > 4: | > Slave - Node | | | | > #63, | | +––––+––––––––+––––––––––––––––––––––+

VAWTGen Graphical Output

VAWTGen has various graphical outputs after creating a mesh of a VAWT configuration. First, a wire- frame visualization (and surface rendering if requested) is created to allow the user to visually inspect the turbine was constructed as intended. These are shown in Figure 3 through Figure 6. The finite element mesh with node numbering is also visualized as shown in Figure 7. Figure 8 shows the element orientations e~1~ is the local axial direction of an element, e~2~ is the local edgewise direction of an element, and e~3~ is the local flapwise direction of an element.

Finite Element Mesh

Element Orientation Visualization

{width="2.202673884514436in" height="2.950511811023622in"}{width="2.1219225721784776in" height="2.6937674978127735in"}40

35

30

25

20

15

10

5

0

1 0-1

-15

15

10

5

0

-5

-10

x

[]{#_bookmark19 .anchor}Figure 7. Finite element mesh with node numbering Figure 8. Finite element mesh with element orientations

Visualization of OWENS Output using VAWTGen

A number of visualization options exist in VAWTGen for results obtained with the OWENS analysis tool. This section discusses the available options for modal and transient analysis results. These function are located in the "vizFiles" directory of the VAWTGen distribution.

Visualization of Static Analysis Results

The MATLAB function staticPlotter.m will visualize the deformed mesh from a static analysis. This visualization option shows multiple views of the turbine, with the undeformed mesh, and deformed mesh overlaying. The undeformed mesh is plotted in black, and the deformed mesh is plotted in red. The viz function is executed with the following command line call:

staticPlotter(meshFile,resultsFile,scaleFactor);

Such that meshFile is the mesh filename (.mesh), resultsFile is the OWENS output file from static analysis (_static.mat), and scaleFactor scales the deformed mesh.

Visualization of Modal Analysis Results

The MATLAB function viz.m will visualize the mode shapes for a particular mode. This visualization option shows multiple views of the turbine, with the undeformed mesh, 0 degree mode shape, and 90 degree mode shape overlaying. The undeformed mesh is plotted in black, 0 degree mode shape in red, and 90 degree mode shape in blue. The viz function is executed with the following command line call:

viz(meshFile,resultsFile,selectedMode,scaleFactor);

Such that meshFile is the mesh filename (.mesh), resultsFile is the OWENS output file from modal analysis (.out), selectedMode is an integer mode number, and scaleFactor scales the mode shape deformation.

An example of an actual viz function execution is: viz(\'snl34m.mesh\',\'snl34m.out\',2,3) The resulting plot is shown in Figure 9 below:

[]{#bookmark21 .anchor}![C:\Users\bcowens\Desktop\exportfig\modefirstas.png](figs/VAWTGenUserGuide/image12.png){width="2.5578937007874014in" height="2.013333333333333in"}

[]{#_bookmark20 .anchor}Figure 9 Mode shape visualization using viz.m

A similar capability exists for generating animated mode shapes. The vizAnimateModal function is utilized in the following manner:

vizAnimateModal(meshFile,resultsFile,selectedMode,sf,outFileName);

All the input parameters are the same as those for viz, however, the last parameter specifies a file name for a AVI movie file.

Visualization of Transient Analysis Results

A visualization option of transient results as an animation of the motion history of the turbine structure is accomplished via the vizAnimateTransient function. The command line argument is executed as:

vizAnimateTransient(meshFile,uData,sf,outFileName);

Such that mesh file is the mesh filename (.mesh), uData is an n x m array holding displacement data for n degrees of freedom at m time steps, and sf is the deformation scale factor for the structural mesh. The AVI movie file is generated using outFileName.

VAWTGen Output Files

The following output files are generated to serve as input for the OWENS analysis tool:

  • OWENS main input file (.owens)

  • Beam mesh file (.mesh)

  • Element property file (.el)

  • Element orientation file (.ort)

  • Joint file (.jnt)

  • Boundary conditions file (.bc)

  • Blade data file (.bld)

Additionally, a log file describing the junctions of various structural components is generated in a .out output file.

OWENS Main Input File (.owens)

The OWENS main input file is generated with the following format:

Here, the root file name of "vawt" was specified at the command line input for VAWTGen. Command line usage will be discussed in a later section. The associated mesh, element, orientation, joint, and boundary conditions file are listed. The bracketed file comments serve as place holders and are not essential for all OWENS analysis types. These file types will be discussed separately in the OWENS analysis tool user guide. Lines 7 , 9, and 10 contain certain flags that are used by the OWENS software. The two doubles on the 12^th^ line are damping parameters for Rayleigh damping. These are discussed in the OWENS user guide[1].

Mesh File (.mesh)

The mesh file generated by VAWTGen simply lists nodal coordinates and element connectivity. The number of structural components (tower, blades, and struts) and number of elements per component are also listed in this file. The file format is described below:

+––––-+–––––+–––-+–––––––-+–––––––––––-+ | > n | > num | > y | > zCoord | | | umNodes | Elements | Coord | | | | > | > | | | | | > | > xCoord | | | | | nodeNum | | | | | +=========+==========+=======+===============+=======================+ | > | > xCoord | > y | > zCoord | | | nodeNum | | Coord | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+ | > | > xCoord | > y | > zCoord | | | nodeNum | | Coord | | | | > | | | | | | > ... | | | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+ | > ele | > nu | | > | > localNodeNum2 | | mentNum | mNodesPe | | localNodeNum1 | | | | rElement | | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+ | > ele | > nu | | > | > localNodeNum2 | | mentNum | mNodesPe | | localNodeNum1 | | | | rElement | | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+ | > ele | > nu | | > | > localNodeNum2 | | mentNum | mNodesPe | | localNodeNum1 | | | > | rElement | | | | | > ... | | | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+

Element Property File (.el)

The element property file generated by VAWTGen contains element mechanical and some aerodynamic properties. The properties specified in this file are those defined in the NREL file formats [1], but sorted into a form that is more usable by the OWENS analysis tool. The file has the following format:

Element Orientation File (.ort)

The element orientation file generated by VAWTGen lists Euler angles for a 3-2 rotation sequence and some other miscellaneous element information. The file format is described below:

Such that elNum is the element number. Theta3, theta2, and theta1 are the orientation angles (degrees) about a 3, 2, and 1 axes respectively for a 3-2-1 Euler rotation sequence. Length is the element length, and x/y/zOffsets are the offsets of the first node of the element from the coordinate frame origin.

Joint File (.jnt)

The joint file generated by VAWTgen specifies joint conditions at coincident nodes between structural components. The file format for the joint file is shown below:

A master and slave node is defined at a joint from which constraints will be developed. The joint type is also specified (0 = weld(fixed), 1=pinned, 2 = hinge joint with axis about slave node element's e~2~ axis, 3 = hinge joint axis about slave node element's e~1~ axis, 4 = hinge joint axis about slave node element's e~3~ axis). The mass of the joint may be specified in this file. If this option is not sufficient for modeling purposes concentrated mass can be imposed on degrees of freedom using the .ndl file. A place-holder double of zero after jointMass is also in this file, but not currently used in analysis. The orientation associated with the joint is also described by the jointPsi and jointTheta angles (degrees). These angles are used to transform from the global coordinate frame to the local element/joint frame via a 3-2 Euler rotation sequence. Psi denotes rotation about 3, theta denotes rotation about 2.

Boundary Conditions File (.bc)

The boundary conditions file generated by VAWTGen specifies a fixed boundary condition at the tower base (node 1). This file specifies the number of boundary conditions, the node number, local degree of freedom, and specified displacement value for the boundary condition. This file attempts to provide a likely boundary condition for a VAWT structure, but may need to be modified by the analyst depending on the specific configuration of interest. The boundary condition file generated by VAWTGen is shown below:

Blade Data File (.bld)

A blade data file is generated by VAWTGen to aid in mapping aerodynamic loads to the structural mesh generated by VAWTGen. This information includes the blade number, node locations of blade sections in terms of spanwise distance from the blade root, and node number and element numbers associated with these locations. The file also contains the quarter chord coordinate of the blade section, the normal and tangential vector components of the blade section, and the chord of the section. Coordinate and vector components are represented in the rotating, rotor-fixed hub frame. An integer number representing the airfoil as specified in the .ipt file for the blade component and section lift curve slope are also specified. The last column is a place holder not used in the release version of OWENS. The file format for the blade file is described below:

Output File (.out)

This file describes the various component junctions in the generated turbine model. An example of the file is shown below. "T", "B", and "S" denote tower, blade, and strut components. "T/B" denotes a tower blade junction. The component numbers present at this junction are also output for more detail. By default, the tower component is labeled as component 1. Blade components are considered next in a counter clockwise azimuthal direction with the first blade located at 180 degrees azimuth from the x- axis. Struts are numbered last, per blade in a clockwise manner.

+–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-2) | | / | ction | f | | | B | | ou | | | | | nd | | +===+=======+====+===================================================+ | T | > jun | > | > (1-2) | | / | ction | f | | | B | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-3) | | / | ction | f | | | B | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-3) | | / | ction | f | | | B | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-4) | | / | ction | f | | | S | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-5) | | / | ction | f | | | S | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-6) | | / | ction | f | | | S | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-7) | | / | ction | f | | | S | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | B | > jun | > | > (2-1) | | / | ction | f | | | T | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | B | > jun | > | > (2-1) | | / | ction | f | | | T | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | B | > jun | > | > (2-3) | | / | ction | f | | | B | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | \ | | | | | . | | | | | . | | | | | . | | | | +–-+–––-+––+–––––––––––––––––––––––––-+

Future Versions

There are no planned future developments for VAWTGen. Future developments or modifications will be considered as analysis needs arise.

References

  1. OWENS User Guide

  2. Jonkman, J.M., and Buhl, M. L., 2005, FAST User's Guide, National Renewable Energy Laboratory, NREL/EL- 500-38230.

+Legacy VAWTGen Guide · OWENS.jl

All of this has been automated, but the option to create and load these legacy files has been preserved. TODO: show how to do this and condense and modernize this text.

Version 1.0 User Guide

Brian C. Owens

Wind Energy Technologies

Sandia National Laboratories

November 7, 2013

Contents

Introduction 1

Overview of VAWTGen Mesh Generator 1

Demonstration 3

Conventions Employed in Creating a Model with VAWTGen 5

Structural and aerodynamic description of components 5

Caveats of creating a VAWT configuration in VAWTGen 7

Coordinate system 7

Tower component 7

Blade component 7

Blade component 8

VAWTGen Input File 9

VAWTGen Command Line Execution 10

VAWTGen Graphical Output 11

VAWTGen Output Files 15

OWENS Main Input File (.owens) 15

Mesh File (.mesh) 16

Element Property File (.el) 16

Element Orientation File (.ort) 17

Joint File (.jnt) 17

Boundary Conditions File (.bc) 17

Blade Data File (.bld) 18

Output File (.out) 18

Future Versions 18

References 19

Introduction

This user guide presents instructions for using the VAWTGen vertical-axis wind turbine (VAWT) mesh generator. This generator is intended to be utilized with the Offshore Wind ENergy Simulation (OWENS) analysis tool [1]. The input files for this mesh generator are discussed in detail. Turbine components (tower, blades, and struts) are described using existing National Renewable Energy Laboratory (NREL) file formats [2]. A simple input file sizes these basic components and positions them in a hub fixed coordinate frame at arbitrary distances from the origin with arbitrary orientation. VAWTGen generates a mesh of a VAWT consisting of Timoshenko beam elements along with other files describing properties of the VAWT. These files serve as inputs to the OWENS analysis tool. VAWTGen also visualizes the VAWT assembly and mesh to provide a visual confirmation that the VAWT is constructed correctly. Furthermore, VAWTGen can visualize the modal and transient results output by the OWENS analysis tool.

Overview of VAWTGen Mesh Generator

A VAWT rotor primarily consists of a tower and blade components. The blades may be affixed to the tower at their ends as in the Darrieus and V-VAWT configurations or via struts as in the H-VAWT configuration. Struts may also provide a connection between the tower and blades at any position along the tower and blade spans. The VAWTGen mesh generator is capable of generating VAWTs of arbitrary geometry, including H-type, V-type, and Darrieus configurations shown in Figure 1. The VAWT configuration is discretized from continuous structural components into a finite number of beam elements. Elements span between discrete points in the mesh, known as nodes. Finite element analysis examines the motions of nodes as dictated by the deformation of the beam elements under prescribed boundary conditions. This collection of nodes and elements forms the mesh of the VAWT configuration.

{width="2.5990562117235347in" height="1.453332239720035in"}

[]{#_bookmark2 .anchor}Figure 1 Illustrations of V, H, and Darrieus VAWT configurations

VAWTGen accepts data files containing the basic geometry of tower, blade, and strut components. Other crucial configuration information is specified such as the elevation of the blade root from the tower root, as well as the radial distance the blade root is positioned from the tower. An arbitrary number of blades may be specified for the configuration. VAWTGen positions the blade roots with equal azimuth spacing about the tower axis. The blades may be rotated into an arbitrary orientation per a sequence of Euler angles input by the user. If required, struts may be inserted between the tower and a

blade by specifying a fraction of the tower span and the blade span the strut will span. VAWTGen will insert a straight strut of the appropriate length between the tower and blade components. The geometry of the strut component is specified by a file containing geometric data.

With these relatively minimal set of inputs (as illustrated in Figure 2) a VAWT of arbitrary configuration may be created. Therefore, a separate tool is not required for the various types of configurations. VAWTGen provides a convenient means to visualize the VAWT turbine in a wireframe or rendered format. This serves as a quick check for the user to ensure the VAWT has been constructed as intended, and shows the actual turbine configuration that the mesh of beam elements represents. VAWTGen also visualizes the finite element mesh once it is created. VAWTGen identifies points of intersection between the various components and inserts nodes accordingly. These node pairs at points of intersection (i.e. strut to tower, blade to strut, blade to tower) are recorded so appropriate constraint conditions at these joints may be imposed. The orientation of the finite elements in the mesh is also visualized to ensure the elements are positioned and oriented as intended.

C:\\\\Users\\\\bcowens\\\\Desktop\\\\meshGenFlow.png{width="4.016800087489064in" height="2.6266666666666665in"}

[]{#_bookmark3 .anchor}Figure 2 Input and output of VAWTGen mesh generator

Output includes a mesh file is generated that will be used by the analysis software. By default, the mesh is discretized in the same manner as the geometric description of components as specified in the component data files. The user may further subdivide the mesh by specifying an integer factor to further discretize the geometric data into elements. An elemental data file is also created, containing the structural properties of elements. An orientation file is generated containing the Euler angles representing the orientation of the elements. VAWTGen requires data files be supplied to describe the geometry of the primary turbine components (blades, towers, and struts). A joint file is also generated containing nodal information about joint locations. This file is used to specify general constraints between structural components. A blade file is also generated that contains aerodynamic data and

provides information needed for mapping aerodynamic loads to nodal locations on the structural model, as well as supplying geometry to aerodynamic data and geometry to external aerodynamic modules.

The format of the structural component data files is the same as the component files for NREL's FAST code [2]. These files describe the geometry and aerodynamic properties of general turbine components, and there is nothing that restricts their use to horizontal-axis wind turbines (HAWTs) specifically. For example, even though a Darrieus blade is not likely be installed on a HAWT, it is easily described by the NREL's FAST blade geometry file format. This allows existing wind energy design tools to be interfaced with the VAWT analysis tool without the need to consider new file formats. NREL's FAST separates geometrical/structural properties of a blade and aerodynamic properties of a blade into two files and the same approach is employed in the VAWTGen mesh generator.

Demonstration

This section demonstrates the capabilities of the VAWTGen mesh generator. First a two bladed V-VAWT configuration is considered. Figure 3 shows the wireframe visualization of this VAWT. The red line within the wireframe represents the beam flexural axis upon which the actual finite element mesh is created. Note that the blades may be positioned at any orientation. The blades and top of the tower share a common point and can be joined together via a constraint relationship that appropriately models the joint. Next, a three bladed H-VAWT with multiple strut connections is considered. Figure 4 shows the wireframe visualization and mesh for the H-VAWT configuration. The blades are oriented at an arbitrary orientation, and two strut connections per blade are specified. Finally, Darrieus type turbine configurations with swept and strutted blades are considered as shown in Figure 5 and Figure 6 respectively.

C:\\\\Users\\\\bcowens\\\\Desktop\\\\export_fig\\\\Vvawt.png{width="1.8892694663167104in" height="3.2266666666666666in"} C:\\\\Users\\\\bcowens\\\\Desktop\\\\export_fig\\\\hvawt.png{width="1.3600043744531933in" height="3.2133333333333334in"}

[]{#bookmark5 .anchor}Figure 3 Wireframe of V-VAWT []{#bookmark6 .anchor}Figure 4 Wireframe of H-VAWT

C:\\\\Users\\\\bcowens\\\\Desktop\\\\export_fig\\\\dar3swept.png{width="1.02086176727909in" height="3.3866666666666667in"}C:\\\\Users\\\\bcowens\\\\Desktop\\\\export_fig\\\\dar3strut.png{width="0.8588167104111986in" height="3.3866666666666667in"}

+–––––––––––––––––+–––––––––––––––––-+ | > []{#bookmark7 | > []{#bookmark8 .anchor}Figure | | > .anchor}Figure 5 Wireframe | > 6 Wireframe of Strutted | | > of Swept Darrieus VAWT** | > Darrieus VAWT** | +==================================+===================================+ +–––––––––––––––––+–––––––––––––––––-+

Conventions Employed in Creating a Model with VAWTGen

This section describes some specific conventions and caveats of creating a mesh of a VAWT using the VAWTGen mesh generator. First, the files use to describe the structural and aerodynamic properties of files are discussed

Structural and aerodynamic description of components

Structural and aerodynamic descriptions of components are specified through NREL FAST file format using the blade .dat files and Aerodyn .ipt files. For structural description (using the .dat file), only the lines highlighted in red are considered by VAWTGen.

+––––––+–––+–––––-+–-+–––+–-+–––-+–––-+––+ | > (-) | * | > | | > | | > * | > ** | ** | | > (-) | *(de | (kg/m) | | **( | | *(Nm\ | (N) | (- | | | g)** | > | | Nm\^ | | ^2)** | | ** | | | | (Nm\^2)** | | 2)** | | | | | +============+======+===========+===+======+===+=======+=======+====+ | > ) (kg | > | **(m) | * | ( | > | > ** | | | | > m) (kg | m) | | * | m) | | (m)** | | | | | > ( | | ( | | * | | | | | | m)** | | m | | * | | | | | | | | ) | | ( | | | | | | | | * | | m | | | | | | | | * | | ) | | | | | | | | | | * | | | | | | | | | | * | | | | +––––––+–––+–––––-+–-+–––+–-+–––-+–––-+––+

+––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | 0. | ** | > **9.163e+009 | > * | > ** | > | | **0 | | 000 | 353. | > 9.163e+009** | *6.8042 | 8.211e | * | | .00 | | | 43** | | e+009** | +009** | *0 | | 000 | | | | | | | .0 | | > 0 | | | | | | | 00 | | .20 | | | | | | | ** | | 0** | | | | | | | | +=====+====+=======+======+=================+=========+========+====+ | > | | > | > * | > 0.000 0.0 | > ** | | | | ** | | **0. | *0.0 | > 0.000 | 0.000** | | | | 316 | | 000** | 00** | | | | | | .71 | | | | | | | | | > | | | | | | | | | 31 | | | | | | | | | 6.7 | | | | | | | | | 1** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | 0. | ** | **9.163e+009 | > * | ** | * | | **0 | | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | .05 | | | 43** | | e+009** | +009** | .0 | | > 0 | | | | | | | 00 | | .20 | | | | | | | ** | | 0** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | > | > * | > 0.000 0.0 | > ** | | | | ** | | **0. | *0.0 | > 0.000 | 0.000** | | | | 316 | | 000** | 00** | | | | | | .71 | | | | | | | | | > | | | | | | | | | 31 | | | | | | | | | 6.7 | | | | | | | | | 1** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | 0. | ** | **9.163e+009 | > * | ** | * | | ** | | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 0.1 | | | 43** | | e+009** | +009** | .0 | | > 0 | | | | | | | 00 | | .20 | | | | | | | ** | | 0** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | | > | > * | > 0.000 0.0 | > ** | | | | ** | | **0. | *0.0 | > 0.000 | 0.000** | | | | 316 | | 000** | 00** | | | | | | .71 | | | | | | | | | > | | | | | | | | | 31 | | | | | | | | | 6.7 | | | | | | | | | 1** | | | | | | | | | > | | | | | | | | | > | | | | | | | | | ** | | | | | | | | | .. | | | | | | | | | .** | | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | > | 0. | ** | **9.163e+009 | > * | ** | * | | *0. | * | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 8** | *0 | | 43** | | e+009** | +009** | .0 | | | .2 | | | | | | 00 | | | 00 | | | | | | ** | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | > | 0. | ** | **9.163e+009 | > * | ** | * | | ** | * | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 0.8 | *0 | | 43** | | e+009** | +009** | .0 | | 5** | .2 | | | | | | 00 | | | 00 | | | | | | ** | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | > | 0. | ** | **9.163e+009 | > * | ** | * | | *0. | * | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 9** | *0 | | 43** | | e+009** | +009** | .0 | | | .2 | | | | | | 00 | | | 00 | | | | | | ** | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | > | 0. | ** | **9.163e+009 | > * | ** | * | | ** | * | 000 | 353. | 9.163e+009** | *6.8042 | 8.211e | *0 | | 0.9 | *0 | | 43** | | e+009** | +009** | .0 | | 5** | .2 | | | | | | 00 | | | 00 | | | | | | ** | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > | > | 0. | ** | > **9.163e+009 | > * | > ** | > | | ** | * | 000 | 353. | > 9.163e+009** | *6.8042 | 8.211e | * | | 1.0 | *0 | | 43** | | e+009** | +009** | *0 | | 000 | .2 | | | | | | .0 | | 0** | 00 | | | | | | 00 | | | ** | | | | | | ** | +––-+––+–––-+–––+––––––––-+––––-+––––+––+ | > * | ** | > | > * | > 0.000 0.0 | > ** | | | | *31 | 31 | **0. | *0.0 | > 0.000 | 0.000** | | | | 6.7 | 6. | 000** | 00** | | | | | | 1** | 71 | | | | | | | | | ** | | | | | | | +––-+––+–––-+–––+––––––––-+––––-+––––+––+

Caveats of blade structural description in VAWTGen are described below.

  • {width="4.046369203849519e-3in" height="0.15120188101487314in"}The alpha column describing bend-twist coupling is not currently employed in the analysis.{width="4.046369203849519e-3in" height="0.15120188101487314in"}

  • For blades, the reference axis is assumed to pass through the quarter chord. The blade may be shaped by using the PrecrvRef and PreswpRef parameters.

  • VAWTGen creates a counter clockwise rotating turbine. A positive PreswpRef parameter sweeps a blade away from the direction of rotation. A positive PrecrvRef will shape a blade outward from the machine center.

  • Edgewise elastic axis and mass center offsets are positive towards the trailing edge of the blade section.

  • Flapwise elastic axis and mass center offsets are positive in the direction outward from the machine center.

  • Under these assumptions, positive structural twist twists the leading edge inwards towards the machine center.

  • All other structural properties are the same as that specified in the FAST manual[1].

The aerodynamic description of a component is accomplished via the Aerodyn .ipt file format. As with the blade properties (.dat) file, only certain parts of this file are used by VAWTGen. Specifically, the parts used by VAWTGen are highlighted in red in the example file below.

Note that the DRNodes and PrnElm columns are not used by VAWTGen but must remain in the file for successful reading of the .ipt file. As with the conventional use of the file, RNodes denotes a point by a physical distance along a blade span from the root. AeroTwst is the aerodynamic twist angle in degrees such that a positive twist angle rotates the leading edge of the blade inwards towards machine center. Chord is used as an aerodynamic property and also for a wireframe visualization of a VAWT design. N{width="4.046369203849519e-3in" height="0.15120188101487314in"}Foil gives an airfoil ID to a section. For wireframe visualization purposes the following thickness to chord ratios for an elliptical cross-section are specified by the NFoil integer: 1 – 1.0, 2 – 0.6, 3 - 0.3, all other –

0.2. These thickness to chord ratios are only employed for visualization purposes and do not affect VAWTGen output.

+––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > | 11.10 | > | 1 | * | **NOPRINT | | 2.85833 | | 2.21667 | .22** | *2** | | +=============+===========+=============+=======+======+==============+ | > | 11.10 | > | 1 | * | **NOPRINT | | 5.07500 | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > | 11.10 | > | 1 | * | **NOPRINT | | 7.29167 | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > | 10.41 | > | 1 | * | **NOPRINT | | 9.50833 | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 8.38 | > | 1 | * | **NOPRINT | | *11.72500** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 6.35 | > | 1 | * | **NOPRINT | | *13.94167** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 4.33 | > | 1 | * | **NOPRINT | | *16.15833** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 2.85 | > | 1 | * | **NOPRINT | | *18.37500** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 2.22 | > | 1 | * | **NOPRINT | | *20.59167** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 1.58 | > | 1 | * | **NOPRINT | | *22.80833** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.95 | > | 1 | * | **NOPRINT | | *25.02500** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.53 | > | 1 | * | **NOPRINT | | *27.24167** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.38 | > | 1 | * | **NOPRINT | | *29.45833** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.23 | > | 1 | * | **NOPRINT | | *31.67500** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+ | > * | 0.08 | > | 1 | * | **NOPRINT | | *33.89167** | | 2.21667 | .22** | *2** | | +––––––-+–––––-+––––––-+–––-+–––+–––––––+

Caveats of creating a VAWT configuration in VAWTGen

The previous sections discussed the files for describing the various components (blades, tower, struts) of a VAWT. This section provides details for creating consistent VAWT models using VAWTGen and illustrates input parameters.

Coordinate system

The following coordinate system z-axis is along the tower axis, and x- and y-axes are in the plane of rotation.

Tower component

The primary input for the tower component is the tower length or height. With this specification, VAWTGen positions the tower vertically along the h~3~ axis with the root of the tower at the origin of the coordinate system. A straight tower is assumed. Any PrecrvRef or PreswpRef specified in the .dat file for the tower is ignored.

Blade component

The blade components are positioned using the following input parameters:

  • Number of blades

  • Blade length

  • Blade root elevation from tower base elevation (z= 0)

  • Blade root radial offset from z-axis (this positions the root of the blade at the appropriate x and y coordinates depending on the azimuth location of the blade)

  • Blade theta orientation a (degrees, rotation about the y-axis)

  • Blade sweep angle (degrees, rotation about an intermediate "2-axis" a positive angle sweeps the blade away from the direction of rotation)

Notes:

  • The blade "theta" orientation angle should be negative so that the root is at a lower elevation (z-coordinate). A warning message is output if blade tip elevation is lower than blade root elevation.

  • Blades will be positioned with equal azimuth spacing of the blade root dictated by the specified number of blades.

  • Under this convention the root of "Blade 1" will always be positioned at 180 degrees (the x-axis being at 0 degrees azimuth). From this position blades are numbered in ascending order counter clockwise.

  • This convention of blade placement will also produce element orientations with tangential vectors along the trailing edge of a cross section and normal vectors outward from the machine center.

[]{#_bookmark15 .anchor}Strut component

The strut components (which can provide a structural component between the tower and blade connection) are positioned using the following input parameters:

  • Fraction of tower span for strut placement

  • Fraction of blade span for strut placement

VAWTGen will automatically determine the strut length and insert the component based off of these two parameters. VAWTGen inserts a straight strut with the discretization described in the .dat file for the strut. Any PrecrvRef or PreswpRef specified in this file is ignored.

VAWTGen will also insert nodes as needed to provide connections between the structural components.

VAWTGen Input File

As mentioned before, the structural component (tower, blade, and struts) are described by the NREL file formats [1] and will not be discussed here. The main input file for VAWTGen is described below. This example input file is for a three bladed VAWT with struts, but without swept blades. The commented input file shown below is sufficient for explanation and will not be discussed further.

VAWTGen Command Line Execution

VAWTGen is written using the MATLAB programming language. The VAWTGen source code directory should be added to the MATLAB path, and VAWTGen should be executed from a job directory containing the component data files (.dat and .ipt NREL formats), and the VAWTGen input file described in the following section. The command line input should be executed in the MATLAB command window as:

vawtGen(inputFile,outputFileRootName,renderBool,zeroTolerance);

For example:

vawtGen('snl34m.in','snl34m',true,1.0e-5);

Results in execution with "snl34m.in" as the main VAWTGen input file. Resulting output files would have the root "snl34m", such as "snl34m.mesh", "snl34m.el", etc. The renderBool produces a rendered surface plot of the turbine if set to true, and no rendered view if set to "false". The zeroTolerance variable specifies a tolerance to be considered numerical zero when searching for coincident points in the configuration for identifying locations where joints are to be specified. If excluded from the command line input a default value of 1.0e-6 is used.

Command line output from VAWTGen consists of a set of minimum element length ratios to the length of the actual structural component. This allows the user to ensure that element lengths are not too small to cause problems with the structural dynamics simulation. The located joints in the model are also displayed with information of the master and slave node numbers and component types.

A variety of examples are available in the "sampleJobs" directory distributed with VAWTGen. They may be executed by adding the VAWTGen directory to the MATLAB path and running the "generateMesh.m" scripts in the example job directory.

A sample command line output is shown below:

+––––+––––––––+––––––––––––––––––––––+ | > \>\> | | | | > vawt | | | | Gen(\' | | | | ideal3 | | | | 4m.in\ | | | | ',\'id | | | | eal34m | | | | \',0); | | | | > | | | | > * | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | | | | | - | | | | SNL | | | | V | | | | AWTGen | | | | | | | | V1.0 | | | | * | | | | | | | | - | | | | Dev | | | | eloped | | | | by | | | | | | | | Sandia | | | | Na | | | | tional | | | | | | | | Labora | | | | tories | | | | | | | | Wind | | | | | | | | Energy | | | | | | | | Techno | | | | logies | | | | * | | | | | | | | - | | | | See | | | | | | | | licen | | | | se.txt | | | | | | | | for | | | | | | | | disc | | | | laimer | | | | | | | | infor | | | | mation | | | | * | | | | | | | | > * | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | *** | | | | > Zero | | | | > tol | | | | erance | | | | > set | | | | > to | | | | > d | | | | efault | | | | > of | | | | > | | | | 1.0e-6 | | | | > | | | | > M | | | | inimum | | | | > e | | | | lement | | | | > to | | | | > com | | | | ponent | | | | > | | | | length | | | | > r | | | | atios: | | | | > Com | | | | ponent | | | | > 1 : | | | | > 0. | | | | 050000 | | | | > | | | | > Com | | | | ponent | | | | > 2 : | | | | > 0. | | | | 050000 | | | | > | | | | > Com | | | | ponent | | | | > 3 : | | | | > 0. | | | | 050000 | | | | > | | | | > 4 | | | | > | | | | Joints | | | | > lo | | | | cated: | | | +========+================+============================================+ | > | > Master - | > Component Type T Component Type B | | Joint | > Node #1, | | | > 1: | > Slave - Node | | | | > #22, | | +––––+––––––––+––––––––––––––––––––––+ | > | > Master - | > Component Type T Component Type B | | Joint | > Node #1, | | | > 2: | > Slave - Node | | | | > #43, | | +––––+––––––––+––––––––––––––––––––––+ | > | > Master - | > Component Type T Component Type B | | Joint | > Node #21, | | | > 3: | > Slave - Node | | | | > #42, | | +––––+––––––––+––––––––––––––––––––––+ | > | > Master - | > Component Type T Component Type B | | Joint | > Node #21, | | | > 4: | > Slave - Node | | | | > #63, | | +––––+––––––––+––––––––––––––––––––––+

VAWTGen Graphical Output

VAWTGen has various graphical outputs after creating a mesh of a VAWT configuration. First, a wire- frame visualization (and surface rendering if requested) is created to allow the user to visually inspect the turbine was constructed as intended. These are shown in Figure 3 through Figure 6. The finite element mesh with node numbering is also visualized as shown in Figure 7. Figure 8 shows the element orientations e~1~ is the local axial direction of an element, e~2~ is the local edgewise direction of an element, and e~3~ is the local flapwise direction of an element.

Finite Element Mesh

Element Orientation Visualization

{width="2.202673884514436in" height="2.950511811023622in"}{width="2.1219225721784776in" height="2.6937674978127735in"}40

35

30

25

20

15

10

5

0

1 0-1

-15

15

10

5

0

-5

-10

x

[]{#_bookmark19 .anchor}Figure 7. Finite element mesh with node numbering Figure 8. Finite element mesh with element orientations

Visualization of OWENS Output using VAWTGen

A number of visualization options exist in VAWTGen for results obtained with the OWENS analysis tool. This section discusses the available options for modal and transient analysis results. These function are located in the "vizFiles" directory of the VAWTGen distribution.

Visualization of Static Analysis Results

The MATLAB function staticPlotter.m will visualize the deformed mesh from a static analysis. This visualization option shows multiple views of the turbine, with the undeformed mesh, and deformed mesh overlaying. The undeformed mesh is plotted in black, and the deformed mesh is plotted in red. The viz function is executed with the following command line call:

staticPlotter(meshFile,resultsFile,scaleFactor);

Such that meshFile is the mesh filename (.mesh), resultsFile is the OWENS output file from static analysis (_static.mat), and scaleFactor scales the deformed mesh.

Visualization of Modal Analysis Results

The MATLAB function viz.m will visualize the mode shapes for a particular mode. This visualization option shows multiple views of the turbine, with the undeformed mesh, 0 degree mode shape, and 90 degree mode shape overlaying. The undeformed mesh is plotted in black, 0 degree mode shape in red, and 90 degree mode shape in blue. The viz function is executed with the following command line call:

viz(meshFile,resultsFile,selectedMode,scaleFactor);

Such that meshFile is the mesh filename (.mesh), resultsFile is the OWENS output file from modal analysis (.out), selectedMode is an integer mode number, and scaleFactor scales the mode shape deformation.

An example of an actual viz function execution is: viz(\'snl34m.mesh\',\'snl34m.out\',2,3) The resulting plot is shown in Figure 9 below:

[]{#bookmark21 .anchor}![C:\Users\bcowens\Desktop\exportfig\modefirstas.png](figs/VAWTGenUserGuide/image12.png){width="2.5578937007874014in" height="2.013333333333333in"}

[]{#_bookmark20 .anchor}Figure 9 Mode shape visualization using viz.m

A similar capability exists for generating animated mode shapes. The vizAnimateModal function is utilized in the following manner:

vizAnimateModal(meshFile,resultsFile,selectedMode,sf,outFileName);

All the input parameters are the same as those for viz, however, the last parameter specifies a file name for a AVI movie file.

Visualization of Transient Analysis Results

A visualization option of transient results as an animation of the motion history of the turbine structure is accomplished via the vizAnimateTransient function. The command line argument is executed as:

vizAnimateTransient(meshFile,uData,sf,outFileName);

Such that mesh file is the mesh filename (.mesh), uData is an n x m array holding displacement data for n degrees of freedom at m time steps, and sf is the deformation scale factor for the structural mesh. The AVI movie file is generated using outFileName.

VAWTGen Output Files

The following output files are generated to serve as input for the OWENS analysis tool:

  • OWENS main input file (.owens)

  • Beam mesh file (.mesh)

  • Element property file (.el)

  • Element orientation file (.ort)

  • Joint file (.jnt)

  • Boundary conditions file (.bc)

  • Blade data file (.bld)

Additionally, a log file describing the junctions of various structural components is generated in a .out output file.

OWENS Main Input File (.owens)

The OWENS main input file is generated with the following format:

Here, the root file name of "vawt" was specified at the command line input for VAWTGen. Command line usage will be discussed in a later section. The associated mesh, element, orientation, joint, and boundary conditions file are listed. The bracketed file comments serve as place holders and are not essential for all OWENS analysis types. These file types will be discussed separately in the OWENS analysis tool user guide. Lines 7 , 9, and 10 contain certain flags that are used by the OWENS software. The two doubles on the 12^th^ line are damping parameters for Rayleigh damping. These are discussed in the OWENS user guide[1].

Mesh File (.mesh)

The mesh file generated by VAWTGen simply lists nodal coordinates and element connectivity. The number of structural components (tower, blades, and struts) and number of elements per component are also listed in this file. The file format is described below:

+––––-+–––––+–––-+–––––––-+–––––––––––-+ | > n | > num | > y | > zCoord | | | umNodes | Elements | Coord | | | | > | > | | | | | > | > xCoord | | | | | nodeNum | | | | | +=========+==========+=======+===============+=======================+ | > | > xCoord | > y | > zCoord | | | nodeNum | | Coord | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+ | > | > xCoord | > y | > zCoord | | | nodeNum | | Coord | | | | > | | | | | | > ... | | | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+ | > ele | > nu | | > | > localNodeNum2 | | mentNum | mNodesPe | | localNodeNum1 | | | | rElement | | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+ | > ele | > nu | | > | > localNodeNum2 | | mentNum | mNodesPe | | localNodeNum1 | | | | rElement | | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+ | > ele | > nu | | > | > localNodeNum2 | | mentNum | mNodesPe | | localNodeNum1 | | | > | rElement | | | | | > ... | | | | | +––––-+–––––+–––-+–––––––-+–––––––––––-+

Element Property File (.el)

The element property file generated by VAWTGen contains element mechanical and some aerodynamic properties. The properties specified in this file are those defined in the NREL file formats [1], but sorted into a form that is more usable by the OWENS analysis tool. The file has the following format:

Element Orientation File (.ort)

The element orientation file generated by VAWTGen lists Euler angles for a 3-2 rotation sequence and some other miscellaneous element information. The file format is described below:

Such that elNum is the element number. Theta3, theta2, and theta1 are the orientation angles (degrees) about a 3, 2, and 1 axes respectively for a 3-2-1 Euler rotation sequence. Length is the element length, and x/y/zOffsets are the offsets of the first node of the element from the coordinate frame origin.

Joint File (.jnt)

The joint file generated by VAWTgen specifies joint conditions at coincident nodes between structural components. The file format for the joint file is shown below:

A master and slave node is defined at a joint from which constraints will be developed. The joint type is also specified (0 = weld(fixed), 1=pinned, 2 = hinge joint with axis about slave node element's e~2~ axis, 3 = hinge joint axis about slave node element's e~1~ axis, 4 = hinge joint axis about slave node element's e~3~ axis). The mass of the joint may be specified in this file. If this option is not sufficient for modeling purposes concentrated mass can be imposed on degrees of freedom using the .ndl file. A place-holder double of zero after jointMass is also in this file, but not currently used in analysis. The orientation associated with the joint is also described by the jointPsi and jointTheta angles (degrees). These angles are used to transform from the global coordinate frame to the local element/joint frame via a 3-2 Euler rotation sequence. Psi denotes rotation about 3, theta denotes rotation about 2.

Boundary Conditions File (.bc)

The boundary conditions file generated by VAWTGen specifies a fixed boundary condition at the tower base (node 1). This file specifies the number of boundary conditions, the node number, local degree of freedom, and specified displacement value for the boundary condition. This file attempts to provide a likely boundary condition for a VAWT structure, but may need to be modified by the analyst depending on the specific configuration of interest. The boundary condition file generated by VAWTGen is shown below:

Blade Data File (.bld)

A blade data file is generated by VAWTGen to aid in mapping aerodynamic loads to the structural mesh generated by VAWTGen. This information includes the blade number, node locations of blade sections in terms of spanwise distance from the blade root, and node number and element numbers associated with these locations. The file also contains the quarter chord coordinate of the blade section, the normal and tangential vector components of the blade section, and the chord of the section. Coordinate and vector components are represented in the rotating, rotor-fixed hub frame. An integer number representing the airfoil as specified in the .ipt file for the blade component and section lift curve slope are also specified. The last column is a place holder not used in the release version of OWENS. The file format for the blade file is described below:

Output File (.out)

This file describes the various component junctions in the generated turbine model. An example of the file is shown below. "T", "B", and "S" denote tower, blade, and strut components. "T/B" denotes a tower blade junction. The component numbers present at this junction are also output for more detail. By default, the tower component is labeled as component 1. Blade components are considered next in a counter clockwise azimuthal direction with the first blade located at 180 degrees azimuth from the x- axis. Struts are numbered last, per blade in a clockwise manner.

+–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-2) | | / | ction | f | | | B | | ou | | | | | nd | | +===+=======+====+===================================================+ | T | > jun | > | > (1-2) | | / | ction | f | | | B | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-3) | | / | ction | f | | | B | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-3) | | / | ction | f | | | B | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-4) | | / | ction | f | | | S | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-5) | | / | ction | f | | | S | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-6) | | / | ction | f | | | S | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | T | > jun | > | > (1-7) | | / | ction | f | | | S | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | B | > jun | > | > (2-1) | | / | ction | f | | | T | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | B | > jun | > | > (2-1) | | / | ction | f | | | T | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | B | > jun | > | > (2-3) | | / | ction | f | | | B | | ou | | | | | nd | | +–-+–––-+––+–––––––––––––––––––––––––-+ | \ | | | | | . | | | | | . | | | | | . | | | | +–-+–––-+––+–––––––––––––––––––––––––-+

Future Versions

There are no planned future developments for VAWTGen. Future developments or modifications will be considered as analysis needs arise.

References

  1. OWENS User Guide

  2. Jonkman, J.M., and Buhl, M. L., 2005, FAST User's Guide, National Renewable Energy Laboratory, NREL/EL- 500-38230.

diff --git a/dev/examples/A_simplyRunningOWENS/index.html b/dev/examples/A_simplyRunningOWENS/index.html index 46626918..d5a35095 100644 --- a/dev/examples/A_simplyRunningOWENS/index.html +++ b/dev/examples/A_simplyRunningOWENS/index.html @@ -8,4 +8,4 @@ OWENS.runOWENS(Inp,runpath)
3-element Vector{Float64}:
  1.0
  2.0
- 3.0

This page was generated using Literate.jl.

+ 3.0

This page was generated using Literate.jl.

diff --git a/dev/examples/B_detailedInputs/index.html b/dev/examples/B_detailedInputs/index.html index d2273c8f..6a4d42d1 100644 --- a/dev/examples/B_detailedInputs/index.html +++ b/dev/examples/B_detailedInputs/index.html @@ -259,4 +259,4 @@ Minimum Safety Factor on tower Surface: 28.126456240622517 At time 0.099s at composite station 1 of 21 at lam 1 of 1 Maximum Damage per hr: 0.109090909131843 -At composite station 3 of 21 at lam 1 of 1

This page was generated using Literate.jl.

+At composite station 3 of 21 at lam 1 of 1

This page was generated using Literate.jl.

diff --git a/dev/examples/C_customizablePreprocessing.ipynb b/dev/examples/C_customizablePreprocessing.ipynb index 55e35632..cbc5a631 100644 --- a/dev/examples/C_customizablePreprocessing.ipynb +++ b/dev/examples/C_customizablePreprocessing.ipynb @@ -89,7 +89,7 @@ " libevent-2.1.12 | hf998b51_1 417 KB conda-forge\n", " libexpat-2.6.2 | h59595ed_0 72 KB conda-forge\n", " libflac-1.4.3 | h59595ed_0 385 KB conda-forge\n", - " libgcrypt-1.11.0 | h4ab18f5_0 669 KB conda-forge\n", + " libgcrypt-1.11.0 | h4ab18f5_1 668 KB conda-forge\n", " libgettextpo-0.22.5 | h59595ed_2 167 KB conda-forge\n", " libgettextpo-devel-0.22.5 | h59595ed_2 36 KB conda-forge\n", " libglib-2.80.2 | hf974151_0 3.7 MB conda-forge\n", @@ -108,8 +108,8 @@ " libwebp-base-1.4.0 | hd590300_0 429 KB conda-forge\n", " libxcb-1.15 | h0b41bf4_0 375 KB conda-forge\n", " libxkbcommon-1.7.0 | h662e7e4_0 580 KB conda-forge\n", - " matplotlib-3.9.1 | py310hff52083_0 8 KB conda-forge\n", - " matplotlib-base-3.9.1 | py310h0b1de36_0 6.7 MB conda-forge\n", + " matplotlib-3.9.1 | py310hff52083_1 9 KB conda-forge\n", + " matplotlib-base-3.9.1 | py310hf02ac8c_2 6.7 MB conda-forge\n", " mpg123-1.32.6 | h59595ed_0 480 KB conda-forge\n", " munkres-1.1.4 | pyh9f0ad1d_0 12 KB conda-forge\n", " mysql-common-8.3.0 | hf1915f5_4 766 KB conda-forge\n", @@ -202,7 +202,7 @@ " libevent conda-forge/linux-64::libevent-2.1.12-hf998b51_1 \n", " libexpat conda-forge/linux-64::libexpat-2.6.2-h59595ed_0 \n", " libflac conda-forge/linux-64::libflac-1.4.3-h59595ed_0 \n", - " libgcrypt conda-forge/linux-64::libgcrypt-1.11.0-h4ab18f5_0 \n", + " libgcrypt conda-forge/linux-64::libgcrypt-1.11.0-h4ab18f5_1 \n", " libgettextpo conda-forge/linux-64::libgettextpo-0.22.5-h59595ed_2 \n", " libgettextpo-devel conda-forge/linux-64::libgettextpo-devel-0.22.5-h59595ed_2 \n", " libglib conda-forge/linux-64::libglib-2.80.2-hf974151_0 \n", @@ -221,8 +221,8 @@ " libwebp-base conda-forge/linux-64::libwebp-base-1.4.0-hd590300_0 \n", " libxcb conda-forge/linux-64::libxcb-1.15-h0b41bf4_0 \n", " libxkbcommon conda-forge/linux-64::libxkbcommon-1.7.0-h662e7e4_0 \n", - " matplotlib conda-forge/linux-64::matplotlib-3.9.1-py310hff52083_0 \n", - " matplotlib-base conda-forge/linux-64::matplotlib-base-3.9.1-py310h0b1de36_0 \n", + " matplotlib conda-forge/linux-64::matplotlib-3.9.1-py310hff52083_1 \n", + " matplotlib-base conda-forge/linux-64::matplotlib-base-3.9.1-py310hf02ac8c_2 \n", " mpg123 conda-forge/linux-64::mpg123-1.32.6-h59595ed_0 \n", " munkres conda-forge/noarch::munkres-1.1.4-pyh9f0ad1d_0 \n", " mysql-common conda-forge/linux-64::mysql-common-8.3.0-hf1915f5_4 \n", diff --git a/dev/examples/C_customizablePreprocessing/index.html b/dev/examples/C_customizablePreprocessing/index.html index 285f16d6..722d5009 100644 --- a/dev/examples/C_customizablePreprocessing/index.html +++ b/dev/examples/C_customizablePreprocessing/index.html @@ -652,4 +652,4 @@ Minimum Safety Factor on tower Surface: 22.03238062546613 At time 0.063s at composite station 18 of 21 at lam 1 of 1 Maximum Damage per hr: 0.10909090910969185 -At composite station 17 of 21 at lam 1 of 1

This page was generated using Literate.jl.

+At composite station 17 of 21 at lam 1 of 1

This page was generated using Literate.jl.

diff --git a/dev/getting_started/index.html b/dev/getting_started/index.html index aad353c0..0935d2e1 100644 --- a/dev/getting_started/index.html +++ b/dev/getting_started/index.html @@ -1,2 +1,2 @@ -nothing yet · OWENS.jl
+nothing yet · OWENS.jl
diff --git a/dev/index.html b/dev/index.html index 7c793840..ff5840cf 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Home · OWENS.jl

OWENS (Onshore/Offshore Wind/Water ENergy Simulator)

This package was based on the original structural dynamics solver by Brian Owens (see dissertation: http://hdl.handle.net/1969.1/151813). However, it has been rewritten into the Julia programming language and many of the issues related to aerodynamic coupling and floating dynamics solved, with extensive expansion into other areas and features to provide a seamless and automated process that takes in high level design details and does all of the preprocessing, running, and post processing that is normally done under different roofs or by different manual processes. This was done with the intent of enabling fast, parametric design. We have many of the modules propogating automatic gradients, however this is still a future challenge to solve well.

This package is for experienced researchers with both software and engineering experience who need generalized flexibility and performance that is 100% open source. If you want a windows compatible GUI, please use QBlade from our friends across the pond.

Here are several examples of OWENS use cases, current and past, including the Sandia 34m research turbine.

<img src="assets/SNL34m.png" alt="drawing" width="400"/>

Then here is an example of a helical design. Note that arbitrary numbers of struts can be specified in the automatic meshing functions. You can also write your own generalized mesh using the internal building blocks, but it is not thouroughly documented.

<img src="assets/helical.png" alt="drawing" width="400"/>

The generalized meshing was modified to include HAWT concepts, like this bi-wing concept. OWENS is capable of axial flow turbines/HAWTs, but it is not a mature feature, and no where near as developed as OpenFAST (i.e. for regular HAWTs it is recommended to use that software).

<img src="assets/biwing.png" alt="drawing" width="400"/>

Then, floating turbines are a possibility, though this feature adds another dimension to the nonlinear time stepping convergance and in turn a fair amount of time. Future work is to make this general interface and functionality an easy to use feature (right now it needs a high level of experience to use).

<img src="assets/arcus.png" alt="drawing" width="400"/>

OWENS under the hood

The OWENS.jl package contains functions and interfaces related to the ontology (how everything comes together, forms a wind turbine, and operates like a wind turbine), with preprocessing and postprocessing helper functions. These include automated meshing functions, sectional property mapping, two-way loads mapping, generalized torque and direct mesh controls, algorithms for two-way coupling and time stepping, fatigue and design equivalent load calculation, and all of the ontology and coupling to the other packages used.

OWENSPrecomp.jl is a translation of Precomp and calculates the sectional properties

Composites.jl provides classical laminate theory definitions used for both pre and post processing

OWENSFEA.jl is one of the structural models including a Timoshenko beam solver in the linear and nonlinear steady, modal, time domain, and reduced order modal domains.

GXBeam.jl has also been integrated for geometrically exact beam solutions of the same above

The aerodynamics are provided by the OWENSAero.jl module, or optionally OpenFAST OLAF via OWENSOpenFASTWrappers.jl

Floating dynamics are provided by OWENSOpenFASTWrappers.jl and the HydroDyn and MoorDyn libraries

Turbulent inflow is provided by OWENSOpenFASTWrappers.jl and the inflowwind and turbsim libraries

Rainflow counting was provided by Rainflow.jl, however, this package became orphained and was pulled into the OWENS code base.

Installation

Please follow the instructions on the setup page

Documentation

- All of the functions have docstrings describing the i/o and function purpose, which can be accessed the docs site or by: * import module * ? module.function() - A note about julia debuggers – if you don’t want it to step through everything, you need to tell it what packages to compile vs while packages to step through. This will make the debugger comparable (if not faster) than Matlab in speed. In VSCode, this can be done in the debug pane.

Software License

Copyright 2021 National Technology & Engineering Solutions of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, there is a non-exclusive license for use of this work by or on behalf of the U.S. Government. Export of this data may require a license from the United States Government.

See Copyright.txt file for more information

+Home · OWENS.jl

OWENS (Onshore/Offshore Wind/Water ENergy Simulator)

This package was based on the original structural dynamics solver by Brian Owens (see dissertation: http://hdl.handle.net/1969.1/151813). However, it has been rewritten into the Julia programming language and many of the issues related to aerodynamic coupling and floating dynamics solved, with extensive expansion into other areas and features to provide a seamless and automated process that takes in high level design details and does all of the preprocessing, running, and post processing that is normally done under different roofs or by different manual processes. This was done with the intent of enabling fast, parametric design. We have many of the modules propogating automatic gradients, however this is still a future challenge to solve well.

This package is for experienced researchers with both software and engineering experience who need generalized flexibility and performance that is 100% open source. If you want a windows compatible GUI, please use QBlade from our friends across the pond.

Here are several examples of OWENS use cases, current and past, including the Sandia 34m research turbine.

<img src="assets/SNL34m.png" alt="drawing" width="400"/>

Then here is an example of a helical design. Note that arbitrary numbers of struts can be specified in the automatic meshing functions. You can also write your own generalized mesh using the internal building blocks, but it is not thouroughly documented.

<img src="assets/helical.png" alt="drawing" width="400"/>

The generalized meshing was modified to include HAWT concepts, like this bi-wing concept. OWENS is capable of axial flow turbines/HAWTs, but it is not a mature feature, and no where near as developed as OpenFAST (i.e. for regular HAWTs it is recommended to use that software).

<img src="assets/biwing.png" alt="drawing" width="400"/>

Then, floating turbines are a possibility, though this feature adds another dimension to the nonlinear time stepping convergance and in turn a fair amount of time. Future work is to make this general interface and functionality an easy to use feature (right now it needs a high level of experience to use).

<img src="assets/arcus.png" alt="drawing" width="400"/>

OWENS under the hood

The OWENS.jl package contains functions and interfaces related to the ontology (how everything comes together, forms a wind turbine, and operates like a wind turbine), with preprocessing and postprocessing helper functions. These include automated meshing functions, sectional property mapping, two-way loads mapping, generalized torque and direct mesh controls, algorithms for two-way coupling and time stepping, fatigue and design equivalent load calculation, and all of the ontology and coupling to the other packages used.

OWENSPrecomp.jl is a translation of Precomp and calculates the sectional properties

Composites.jl provides classical laminate theory definitions used for both pre and post processing

OWENSFEA.jl is one of the structural models including a Timoshenko beam solver in the linear and nonlinear steady, modal, time domain, and reduced order modal domains.

GXBeam.jl has also been integrated for geometrically exact beam solutions of the same above

The aerodynamics are provided by the OWENSAero.jl module, or optionally OpenFAST OLAF via OWENSOpenFASTWrappers.jl

Floating dynamics are provided by OWENSOpenFASTWrappers.jl and the HydroDyn and MoorDyn libraries

Turbulent inflow is provided by OWENSOpenFASTWrappers.jl and the inflowwind and turbsim libraries

Rainflow counting was provided by Rainflow.jl, however, this package became orphained and was pulled into the OWENS code base.

Installation

Please follow the instructions on the setup page

Documentation

- All of the functions have docstrings describing the i/o and function purpose, which can be accessed the docs site or by: * import module * ? module.function() - A note about julia debuggers – if you don’t want it to step through everything, you need to tell it what packages to compile vs while packages to step through. This will make the debugger comparable (if not faster) than Matlab in speed. In VSCode, this can be done in the debug pane.

Software License

Copyright 2021 National Technology & Engineering Solutions of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, there is a non-exclusive license for use of this work by or on behalf of the U.S. Government. Export of this data may require a license from the United States Government.

See Copyright.txt file for more information

diff --git a/dev/legacyUserGuide/index.html b/dev/legacyUserGuide/index.html index 6a562884..0fb3bb64 100644 --- a/dev/legacyUserGuide/index.html +++ b/dev/legacyUserGuide/index.html @@ -20,4 +20,4 @@ \end{Bmatrix} = \begin{Bmatrix} F_{T} \\ F_{P} -\end{Bmatrix}\]

Such that M, C, and K represent the system mass, damping, and stiffness matrices respectively. The terms U~T~ and U~P~ denote the displacement of the turbine and platform respectively. The terms F~T~ and F~P~ denote the forces acting on the turbine and platform respectively. Terms with subscript "TT" denote influence of the turbine forces on the turbine response. Whereas, terms with subscript "TP" denote influence of turbine forces on the platform response, and terms with subscript "PT" denote influence of the platform forces on the turbine response. Finally, terms with subscript "PP" denote the influence of platform forces on the platform response. Although not explicitly shown here, the rotor velocity/acceleration and platform velocity/acceleration are incorporated in the system damping and stiffness matrices through gyroscopic effects.

Modal analysis may be performed on the above system of equations to examine the stability of the turbine configuration. Whereas understanding the stability of a turbine to avoid potential resonance issues is critical, transient conditions such as rotor start-up, turbulent/unsteady winds, and unsteady waves require a transient analysis capability. Implicit time integration methods have been considered for their ability to reduce time step restriction and maintain efficiency.

Overview of OWENS Analysis Framework

The Offshore Wind Energy Numerical Simulation (OWENS) allows for a convenient coupling of the aeroelastic/structural dynamics finite element analysis to aerodynamic, hydrodynamic, and generator modules. Figure 2 shows an illustration for the framework of OWENS indicating data flow among the analysis tool and various modules. In this figure analysis components surrounded in the purple boxes are independent modules that will interface with the VAWT simulation tool. OWENS will provide and receive data to and from these modules. The implementation of these modules, however, are "as is" and cannot be modified by the authors. Components outlined in the blue boxes are components of the analysis tool that are under direct development by the authors. Data flow is illustrated by various colored arrows. Orange arrows denote an internal data flow from one segment of the OWENS analysis routines to another. Red arrows denote flow of information from the core analysis tool to external modules. Green arrows represent flow of information from external modules to the core analysis tool components.

This analysis framework begins with startup procedures. These include creation of the VAWT configuration mesh using the mesh generator VAWTGen, and specification of initial conditions. VAWTGen produces a finite element mesh representative of a VAWT. Initial conditions such as the initial forces acting on the turbine/platform, initial rotor angular velocity/acceleration, and initial platform angular velocity/acceleration must be provided. With these specifications complete, the coupled aeroelastic/hydrodynamic analysis begins, involving the components outlined in the black box.

The mesh and initial conditions are provided to the OWENS toolkit. By performing a transient analysis via the aforementioned time integration procedures, turbine and platform motions are calculated. The turbine motions along with aerodynamic properties of the turbine are provided to an aerodynamics module. Future versions will actively link OWENS with aerodynamic modules and wind field data while considering turbine motions to calculate aerodynamic loads on the turbine. The aerodynamic loads are provided back to the OWENS toolkit as boundary conditions for the next time step or iteration.

The motion of the turbine shaft is provided to a generator/drivetrain model, which considers the relative motions of the shaft and generator to calculate a resistance torque provided by the generator. By considering the resistance torque along with the shaft torque and rotor inertia, an updated rotor angular velocity/acceleration may be calculated. The generator module is similar to that of NREL's FAST analysis tool [3].

OWENS is interfaced with the WavEC platform dynamics module[2]. The hydrodynamics/mooring module accepts wave data as external forcing on the platform and a reaction force from the attached turbine structure. This module returns rigid body motions (translational and rotational) of the platform due to platform accelerations. These rigid body motions are then applied to the structure as body forces. The resistance torque of the generator may also be applied to the platform.

The above description fully outlines the proposed analysis framework and interface of the core analysis tool with various modules. In the development of this framework, a loose coupling is inherent in that typically motions are provided to a module and loads are calculated and supplied back to the analysis tool. In reality such a clear flow of information does not exist, and the coupling is more complex with loads influencing motions in addition to the motions influencing loads. Therefore, at any given time step an iterative procedure is considered to reach a convergence among the actual two-way coupling between the turbine structural dynamics and aerodynamics, hydrodynamics, and generator dynamics.

Future versions may consider a turbine controller algorithm that provides prescribed motions of the tower and blades or applied braking torque is also required. The prescribed motions or applied torques are imposed via boundary conditions on the finite element model. As illustrated in Figure 2, the turbine controller accepts turbine motions, rotor speed/torque, or wind data and provides prescribed motions or breaking torques. The finite element model provides a convenient interface for the turbine controller.

figs/userguide2.png{width="8.1578947944007in" height="5.019896106736658in"}

Figure Analysis framework for the OWENS toolkit

OWENS Installation

The OWENS analysis software should be installed by adding the following directories to the MATLAB path:

Platform dynamics software interface

If a floating turbine is to be considered, the WavEC platform dynamics software[2] should be installed and the file "waveECStartUp.m" should be modified in the "OWENS/source/transientSource/" directory. An appropriate system call must be specified to launch a MATLAB instance of WavEC that accepts a network socket connection from OWENS. The string variable "sysCallString" in the following code snippet must be modified appropriately depending on whether a Unix or PC system is being used.

%sets system commands to launch wavEC software

hydroLaunchScript = \'/home/bcowens/work/OWENSsingle/launchPlatformCode\';

%sysCallString = [matlabPath,\' -sd \',hydroCodeDirectory,\' -r \',hydroCodeExec,\' &\'];

sysCallString = [\'bash \',hydroLaunchScript,\' &\'];

disp(\'launching WAVEC\'); %launch wavEC depending on pc or unix environment

if(ispc());

system(sysCallString);

end

if(isunix())

unix(sysCallString);
end

OWENS Command Line Execution

The beta version of OWENS is written using the MATLAB programming language. The OWENS source code directory (and subdirectories) should be added to the MATLAB path, and OWENS should be executed from a job directory containing the associated input files described in the following section. Three types of analysis capabilities exist: static, modal and, transient analysis. These will be described in the following subsections.

Static Analysis Execution

The static analysis capability of OWENS is executed as follows:

owens(inputFile,'S',rotorSpeed,nonlinearBool,dispGuess);

For example:

owens('vawt.owens','S',0.5,true);

Performs a modal analysis using the main OWENS input file "vawt.owens". The input character 'S' denotes a static analysis is to be performed. Rotor speed input is the specified angular velocity of the rotor in Hz. The Boolean input of "true" geometric nonlinearities. Setting this Boolean to false performs a linear static analysis. The input "dispGuess" is an array of the initial guess for displacements to be used in nonlinear static analysis and should be a vector of the total number of degrees of freedom in the structural model (number of nodes x 6). It is not used if nonlinearBool is set to false. If not specified, the initial guess is a vector of zeros by default.

By default, body forces from gravity and rotational effects are included in static analysis. Arbitrary static loading may be specified by modifying the "externalForcingStatic.m" file in the OWENS source directory. The Fexternal array may be modified to include loads for a corresponding degree of freedom in the Fdof array. See this function for usage instructions.

For nonlinear static analysis, load stepping procedures are implemented within OWENS. The parameters governing load stepping and nonlinear iteration may be adjusted if desired by the user and the process is described in Appendix B.

The modal analysis capability of OWENS is executed as follows:

owens(inputFile,'M',rotorSpeed,spinUpBool,numModesOutput,dispGuess);

For example:

owens('vawt.owens','M',0.0,true,40);

Performs a modal analysis using the main OWENS input file "vawt.owens". The input character 'M' denotes a modal analysis is to be performed. Rotor speed input is the specified angular velocity of the rotor in Hz. The Boolean input of "true" activates a spin up procedures which performs a nonlinear static analysis on the structure to arrive at a "stiffened" stiffness matrix to be used in the modal analysis. Setting this Boolean to false skips the spin up procedure and uses an unmodified stiffness matrix in modal analysis. The last argument is the number of modes extracted and output for the model. If no value is specified, the default number is 20. The input "dispGuess" is an array of the initial guess for displacements to be used in nonlinear static analysis and should be a vector of the total number of degrees of freedom in the structural model (number of nodes x 6). It is not used if spinUpBool is set to false. If not specified, the initial guess is a vector of zeros by default.

By default, body forces from gravity and rotational effects are included in static analysis used in pre-stressed modal analysis. Arbitrary static loading may be specified by modifying the "externalForcingStatic.m" file in the OWENS source directory. The Fexternal array may be modified to include loads for a corresponding degree of freedom in the Fdof array. See this function for usage instructions.

For pre-stressed modal analysis (which employs nonlinear static analysis), load stepping procedures are implemented within OWENS. The parameters governing load stepping and nonlinear iteration may be adjusted if desired by the user and the process is described in Appendix B.

Creating Campbell Diagrams of a VAWT Configuration

Automated functionality exists for creating Campbell diagrams of a land based VAWT configuration. A Campbell diagram examines how modal frequencies vary with respect to the rotor speed of a turbine. It is also helpful for identifying critical per-rev excitations that may cause resonance in a VAWT configuration.

The function "campDiagramGen.m" located in "OWENS/source/utilitySource/" performs modal analysis at user specified rotor speeds. Command line execution is performed with the following call:

[freq] = campDiagramGen(inputFileName,outputFileName,rotorSpeedArray,spinUpOn,numModes)

Such that "inputFileName" is a string specifying the main .owens file corresponding to the VAWT configuration. The "outputFileName" is a string specifying the prefix that will be given to a MATLAB .mat array containing the results. The rotor speed array and corresponding frequencies are saved to this .mat file. The "rotorSpeedArray" variable is an array containing the rotor speeds (Hz) of interest. The Boolean flag "spinUpOn" includes nonlinear stress stiffening effects in modal analysis if set to true, if set to false these effects are excluded from the analysis. The integer "numModes" specifies the number of lower system modes to extract during modal analysis.

The previous functionality performed the analysis for creating a Campbell diagram, and "campDiagPlotter.m" in "OWENS/source/utilitySource" plots the Campbell diagram. Command line execution of Campbell diagram plotting is performed with the following call:

campDiagPlotter(resultsFileName,numModesToPlot,numPerRevLines,minRPMplot,maxRPMplot)

Such that "resultsFileName" is a string specifying the .mat file generated using campDiagramGen.m. The integer "NumModesToPlot" specifies the number of modes to be plotted on the Campbell diagram. The integer "numPerRevLines" specifies how many per-rev lines to include on the Campbell diagram. The values "minRPMplot" and "maxRPMplot" specify the RPM values at which the per-rev lines will begin and end. Figure 3 shows an example of a Campbell digram generated using the aforementioned procedures.

figs/userguide3.png{width="5.829861111111111in" height="4.254861111111111in"}

Figure 3 Example of a Campbell diagram

Transient Analysis Execution

The transient analysis capability of OWENS is executed as follows:

owens(inputFile,'TNB',timeStep,numTimeSteps,nlBool,turbineOperationParams...);

By default, body forces from gravity and rotational effects are included in trasient analysis. Arbitrary transient external loading may be specified by modifying the "externalForcing.m" file in the OWENS source directory. The Fexternal array may be modified to include loads for a corresponding degree of freedom in the Fdof array. See this function for usage instructions.

Specified rotor speed profile

An arbitrary VAWT configuration may be subjected to an arbitrary, specified rotor speed profile using the following command line execution.

owens('vawt.owens','TNB',1.0e-3,40000,true,0,[0.0 5.0 30.0],[0.0 0.5 0.5]);

This performs a transient analysis using the main OWENS input file 'vawt.owens'. The input character 'TNB' denotes a transient analysis is to be performed. A time step of 1.0e-3 seconds is utilized and 40000 time steps are performed for a simulation time of 40 seconds. The flag of true activates nonlinear strain calculation in the transient analysis. The turbine operation flag of "0" denotes a specified omega profile is utilized. The 7^th^ argument is an array of times for the specified rotor speed profile. The 8^th^ argument is an array of specified rotor speeds at the aforementioned times.

Alternatively, the 7^th^ and 8^th^ arguments may be omitted and the file "OWENS\source\userDefinedRotorSpeedProfile.m" may be modified to specify an arbitrary time varying rotor speed profile. See the comments within this function for appropriate usage.

Forced start-up mode using generator

An arbitrary VAWT configuration may be subjected to a forced start-up mode using the generator to provide a motoring torque using the following command line execution.

owens('vawt.owens','T',1.0e-3,40000,true,1,0.0);

This performs a transient analysis using the main OWENS input file 'vawt.owens'. The input character 'TNB' denotes a transient analysis is to be performed. A time step of 1.0e-3 seconds is utilized and 40000 time steps are performed for a simulation time of 40 seconds. The flag of true activates nonlinear strain calculation in the transient analysis. The turbine operation flag of "1" denotes a forced start up using the generator as a motor. Accordingly, generator properties must be specified by providing a .gen file. The 7^th^ argument is the initial rotor speed at t=0 in Hz.

Alternatively, the .gen file in the main .owens input file may be replaced with the integer "1" and a user defined generator function may be employed. The file "OWENS\source\userDefinedGenerator.m" may be modified to specify an arbitrary time varying rotor speed profile. See the comments within this function for appropriate usage.

Self-starting turbine mode

An arbitrary VAWT configuration may be considered in a self-starting mode in which external forces provide a torque to increase the rotor speed of the turbine using the following command line execution.

owens('vawt.owens','T',1.0e-3,40000,true 2,0.0,1.05);

This performs a transient analysis using the main OWENS input file 'vawt.owens'. The input character 'TNB' denotes a transient analysis is to be performed. A time step of 1.0e-3 seconds is utilized and 40000 time steps are performed for a simulation time of 40 seconds. The turbine operation flag of "2" denotes a self-starting turbine with the generator disconnected from the grid initially. The 7^th^ argument is the initial rotor speed at t=0 in Hz. The 8^th^ argument is the rotor speed at which the generator will activate. Accordingly, generator properties must be specified by providing a .gen file. The history of nodal displacements, generator torque, generator power, rotor speed, rotor position, and reaction at the turbine base at each time step are saved in the MATLAB file \<root\>.mat such as "vawt.mat". Table 1 provides a listing with output description, variable name, and size of the output.

Transient Analysis Execution Using Reduced Order Model

The transient analysis capability with a reduced order model of OWENS is executed as follows:

owens(inputFile,'ROM',timeStep,numTimeSteps,numModesForROM,nlBool,turbineOperationParams...);

This option performs a transient analysis as before, but using a reduced order model which contains a subset of system modes as specified by "numModesForROM". The reduced order model contains the first "numModesForROM" lowest frequency modes. A modal analysis should be constructed to determine how many modes a user is interested in including in a reduced order model. The various operation modes (specified rotor speed, force start-up, self-starting) are specified as in the previous section.

OWENS Input Files

This section presents input file formats for OWENS, including the main input file and sub-input files. The input files discussed in this section include:

Note that while these files may be created manually, many are created automatically by the mesh generator/pre-processor VAWTGen. VAWTGen is described in a separate user guide[1] and is not discussed here.

OWENS Main Input File (.owens)

The OWENS main input file is generated by VAWTGen with the following format:

vawt.mesh
vawt.el
vawt.ort
vawt.jnt
[concentrated nodal terms file]
vawt.bc
0 vawt.plat
[initial conditions file]
0 vawt.bld [aero loads file]
0 [drivetrain property file]
[generator property file]
0.0 0.0

The mesh, element, orientation, joint, and boundary conditions files for analysis are listed. The bracketed file comments serve as place holders and are not essential for all OWENS analysis types. The 5^th^ line specifies a concentrated nodal term file that can be used to specify concentrated masses, stiffness, and loads at nodal locations. The 6^th^ line specifies a boundary condition file. The integer on the 7^th^ line is a flag for activating the floating platform (1 – active, 0 – inactive) and the following platform file contain information governing a platform dynamics analysis. The 8^th^ line specified initial conditions for a transient analysis. The flag on the 9^th^ line governs activation of aerodynamic loads, a blade file provides information for mapping aerodynamic loads to the structural mesh, and an aerodynamic loads file provide loading data. The flag on the 10^th^ line governs activation of a simple drivetrain model and the drive train property file contains drive train model properties. The 11^th^ line specifies properties for a simple induction generator, which is not required for all analysis types. The 12^th^ line specifies Rayleigh damping parameters. These are the 𝛼 and 𝛽 parameters respectively in the following expression for the damping matrix:

\[\lbrack C\rbrack = \ \alpha\lbrack M\rbrack + \beta\lbrack K\rbrack\]

Such that [M], [C], and [K] are the system mass, damping, and stiffness matrices respectively. 𝛼 and 𝛽 should be positive numbers. 𝛼 serves to damp higher frequency modes while 𝛽 serves to damp lower frequency modes.

Mesh File (.mesh)

The mesh file generated by VAWTGen simply lists nodal coordinates and element connectivity. The number of structural components (tower, blades, and struts) and number of elements per component are also listed in this file. The file format is described below:

numNodes numElements
nodeNum xCoord yCoord zCoord
nodeNum xCoord yCoord zCoord
nodeNum xCoord yCoord zCoord
...
elementNum numNodesPerElement localNodeNum1 localNodeNum2
elementNum numNodesPerElement localNodeNum1 localNodeNum2
elementNum numNodesPerElement localNodeNum1 localNodeNum2
...
numberOfStructuralComponents numElementsComponent1 .... numElementsComponentN

Element Property File (.el)

The element property file generated by VAWTGen contains element mechanical and some aerodynamic properties. The properties specified in this file are those defined in the NREL file formats [1], but sorted into a form that is more usable by the OWENS analysis tool. It should be noted that the mass offsets have been corrected to be the distance from the offset from the elastic axis of section. Edgewise offsets are positive towards the trailing edge, flapwise offsets are positive outward from the machine center. The alpha coupling factor is not currently employed in analysis. The file has the following format:

Element1, Node 1: [blade fraction] [aeroCenter] [structuralTwist] [MassPerLength] [FlapwiseStiffness] [EdgewiseStiffness] [TorsionalStiffness] [AxialStiffness] [alphaCouplingFactor] [FlapwiseInertia] [EdgewiseInertia] [Precurve] [PreSweep] [FlapwiseCGoffset] [EdgewiseCGOffset] [FlapwiseEAOffset] [EdgewiseEAOffset] ...
Element1, Node 2: [blade fraction] [aeroCenter] [structuralTwist] [MassPerLength] [FlapwiseStiffness] [EdgewiseStiffness] [TorsionalStiffness] [AxialStiffness] [alphaCouplingFactor] [FlapwiseInertia] [EdgewiseInertia] [Precurve] [PreSweep] [FlapwiseCGoffset] [EdgewiseCGOffset] [FlapwiseEAOffset] [EdgewiseEAOffset] ...

...

...
Element n, Node 1: [blade fraction] [aeroCenter] [structuralTwist] [MassPerLength] [FlapwiseStiffness] [EdgewiseStiffness] [TorsionalStiffness] [AxialStiffness] [alphaCouplingFactor] [FlapwiseInertia] [EdgewiseInertia] [Precurve] [PreSweep] [FlapwiseCGoffset] [EdgewiseCGOffset] [FlapwiseEAOffset] [EdgewiseEAOffset] ...

Element n, Node 2: [blade fraction] [aeroCenter] [structuralTwist] [MassPerLength] [FlapwiseStiffness] [EdgewiseStiffness] [TorsionalStiffness] [AxialStiffness] [alphaCouplingFactor] [FlapwiseInertia] [EdgewiseInertia] [Precurve] [PreSweep] [FlapwiseCGoffset] [EdgewiseCGOffset] [FlapwiseEAOffset] [EdgewiseEAOffset] ...

Element Orientation File (.ort)

The element orientation file generated by VAWTGen lists Euler angles for a 3-2 rotation sequence and some other miscellaneous element information. The file format is described below:

elNum theta3 theta2 theta1 length xOffset yOffset zOffset

Such that elNum is the element number. Theta3, theta2, and theta1 are the orientation angles (degrees) about a 3, 2, and 1 axes respectively for a 3-2-1 Euler rotation sequence. Length is the element length, and x/y/zOffsets are the offsets of the first node of the element from the coordinate frame origin.

Joint File (.jnt)

The joint file generated by VAWTgen specifies joint conditions at coincident nodes between structural components. The file format for the joint file is shown below:

jointNumber masterNode slaveNode jointType jointMass 0.0 ... jointPsi jointTheta

A master and slave node is defined at a joint from which constraints will be developed. The joint type is also specified (0 = weld(fixed), 1=pinned, 2 = hinge joint with axis about slave node element's e~2~ axis, 3 = hinge joint axis about slave node element's e~1~ axis, 4 = hinge joint axis about slave node element's e~3~ axis). The mass of the joint may be specified in this file. If this option is not sufficient for modeling purposes concentrated mass can be imposed on degrees of freedom using the .ndl file. [A place-holder double of zero after jointMass is also in this file, but not currently used in analysis.]{.mark} The orientation associated with the joint is also described by the jointPsi and jointTheta angles (degrees). These angles are used to transform from the global coordinate frame to the local element/joint frame via a 3-2 Euler rotation sequence. Psi denotes rotation about 3, theta denotes rotation about 2.

Concentrated Nodal Terms File

The concentrated nodal terms file applies concentrated mass, stiffness, or forces to nodes of the finite element mesh. This files requires a node number, concentrated term type, local degree of freedom number, and value for the concentrated term. Concentrated term types include "M" for mass, "K" for stiffness, and "F" for force. The degree of freedom specification is not used when the concentrated term is for mass. The mass value specified is applied to all translational degrees of freedom associated with the specified node. See Appendix A for an explanation of local degree of freedom numbering at a particular node. A sample concentrated nodal terms file is shown below:

74 M 1 254.0
81 K 3 1.0e6
92 F 2 2000.0

nodeNum termType localDOFNum value

Boundary Conditions File (.bc)

The boundary conditions file generated by VAWTGen specifies a fixed boundary condition at the tower base (node 1). This file specifies the number of boundary conditions, the node number, local degree of freedom, and specified displacement value for the boundary condition. This file attempts to provide a likely boundary condition for a VAWT structure, but may need to be modified by the analyst depending on the specific configuration of interest. See Appendix A for an explanation of local degree of freedom numbering at a particular node. The boundary condition file generated by VAWTGen is shown below:

6
1 1 0.000000
1 2 0.000000
1 3 0.000000
1 4 0.000000
1 5 0.000000
1 6 0.000000

nodeNum localDOFNum value

Platform Simulation File (.plat)

The platform simulation file specifies parameters required for an external platform dynamics simulation. An example, annotated platform file is shown below.

1 0 0 0 0 0 :active platform DOFs (surge, sway, heave, roll, pitch, yaw)

0.0 0.0 0.0 0.0 0.0 :initial conditions for platform DOFs

0 :drag damping flag (1 = on, 0 = off)

1 :mooring flag (1 = on, 0 = off)

0 :gravity flag (1 = on, 0 = off)

0 :plot flag (1 = on, 0 = off)

0 :radiation damping flag (1 = on, 0 = off)

1 :node number for platform turbine connection

1 :platform turbine yaw interaction (0 = free spinning tower, 1 = fixed tower, 2 = generator reaction torque applied to platform)

3500 :platform server port

4500 :platform client port

The first line activates platform degrees of freedom (DOFs) the ordering of degrees of freedom is surge, sway, have, roll, pitch, and yaw. The second line specifies initial conditions for the platform degrees of freedom, the DOF ordering is the same as the previous line. Lines 5-7 activate/deactivate various aspects of the hydrodynamic/platform dynamics simulation (drag, mooring, gravity, plotting, and radiation damping). Line 8 specifies the node number at the connection of the turbine to the platform. This is used in calculating the reaction force the turbine imparts on the platform. Line 9 is a flag to specify the platform turbine yaw interaction. For a flag of 0 there is no interaction, for a flag of 1 the tower is considered fully constrained to the platform, for a flag of 2, the generator reaction torque is applied to the turbine. The last two lines specify the server port and client port numbers for the network socket interface between the OWENS analysis tool and the platform dynamics module.

Initial Conditions File

The initial conditions file is used for transient analysis to specify an initial displacement of the structure at t =0. This file requires a node number, local degree of freedom number, and displacement value. See Appendix A for an explanation of local degree of freedom numbering at a particular node. The file format is described below:

60 1 0.1
51 2 -0.4
nodeNum localDOFNum value

Blade Data File (.bld)

A blade data file is generated by VAWTGen to aid in mapping aerodynamic loads to the structural mesh generated by VAWTGen. This information includes the blade number, node locations of blade sections in terms of spanwise distance from the blade root, and node number and element numbers associated with these locations. The file also contains the quarter chord coordinate of the blade section, the normal and tangential vector components of the blade section, and the chord of the section. Coordinate and vector components are represented in the rotating, rotor-fixed hub frame. An integer number representing the airfoil as specified in the .ipt file for the blade component and section lift curve slope are also specified. The last column is a place holder not used in the release version of OWENS. The file format for the blade file is described below:

bladeNum nodeDistance nodeNum elementNum quarterChordCoord1 quarterChordCoord2 quarterChordCoord3 sectionNormalVec1 sectionNormalVec2 sectionNormalVec3 sectionTangentVec1 sectionTangentVec2 sectionTangentVec3 sectionChord sectionAirfoilNumber [place holder not used]

Aerodynamic Loads File

Drivetrain Properties File

The drive train properties file is read for cases where the drive train flag is set to true in the main OWENS analysis file. This file contains an effective torsional spring and damping constant for the drivetrain, along with a moment of inertia for the drive train. These values are cast on the low speed shaft (LSS) side of the drivetrain. The file also contains gear ratio and gear box efficiency parameters. A sample drivetrain file is shown below:

1.0e8 1e6 1000.0 :drivetrain spring constant, damping constant, MOI
1.0 1.0 :gear ratio, gear box efficiency

Generator Properties File

The generator properties file is read where the turbine operation mode requires generator interaction. This file includes the generator rated torque, zero torque generator speed, pull out ratio, and rated slip percentage. A sample generator properties file is shown below:

2.09e4 :generator rated torque
1.0 :zero torque generator speed (in Hz)
2.0 :pull out ratio
5.0 :generator rated slip percentage

OWENS Output Files

This section describes the output files generated by the OWENS analysis software. Output is different for the static, modal, and transient analysis types.

Static Analysis Output

Output from this analysis is written to the root filename with "_static.mat" suffix, such as "vawt_static.mat". This MATLAB database contains a solution vector for each degree of freedom of the model. The deformed configuration may be visualized using VAWTGen visualization capabilities[1]. See Appendix A for an explanation of mapping between a global degree of freedom list to local degree of freedom numbering at a particular node.

For modal analysis the output file lists the frequency, damping ratio, and nodal values for mode shapes of the 0 degree (real) and 90 degree out of phase (imaginary) mode shapes. The generated file has the same root name as the .owens input file, but with a suffix of .out. The various mode shapes may be visualized using VAWTGen visualization capabilities[1]. The file format for the modal analysis output is shown below:

MODE # 1

Frequency: 9.941364e-001:

Damping 3.576857e-014:

0 deg Mode Shape:

Ux Uy Uz thetax thetay thetaz

-0.000000 -0.000000 -0.000000 -0.000000 0.000833 -0.000000

0.000627 0.000000 0.000000 -0.000000 0.000819 0.000000

0.001235 0.000000 0.000000 -0.000000 0.000780 0.000000

0.001819 0.000000 0.000000 -0.000000 0.000713 0.000000

0.002353 0.000000 0.000000 -0.000000 0.000620 0.000000

0.002669 0.000000 0.000000 -0.000000 0.000557 0.000000

0.002948 0.000000 0.000000 -0.000000 0.000497 0.000000

0.003196 0.000000 0.000000 -0.000000 0.000437 0.000000
...
90 deg Mode Shape:

Ux Uy Uz thetax thetay thetaz

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

...

Mode #2

...

Transient Analysis Output

Transient analysis output has a great deal of data associated with it due to having both spatial and temporal information and OWENS transient analysis output is saved in a MATLAB workspace as \<root\>.mat. Table 1 lists the following information saved in the transient analysis output file with the variable name and associated array size. The units specified in this file assume that the mesh and associated element properties are in SI units. See Appendix A for an explanation of mapping between a global degree of freedom list to local degree of freedom numbering at a particular node.

Transient analysis output may be visualized using VAWTGen visualization capabilities[1].

Table 1. OWENS Transient Output


Output Variable Name (units) Size –––––––––––- –––––––––––- –––––––––––- Time t (s) 1 x numTimeSteps

Nodal displacements uHist (m or rad) numDOF x numTimeSteps

Generator torque genTorque (N-m) 1 x numTimeSteps

Generator power genPower (W) 1 x numTimeSteps

Rotor position aziHist (rad) 1 x numTimeSteps

Rotor speed OmegaHist (Hz) 1 x numTimeSteps

Rotor acceleration OmegaDotHist (Hz/s) 1x numTimetSteps

Gearbox position gbHist (rad) 1 x numTimeSteps

Gearbox speed gbDotHist (Hz) 1 x numTimeSteps

Gearbox acceleration gbDotDotHist (Hz/s) 1 x numTimeSteps

Driveshaft torque torqueDriveShaft (N-m) 1 x numTimeSteps

Platform degrees of rigidDof (m or rad) 6 x numTimeSteps freedom

Turbine base reaction FReactionHist (N or 6 x numTimeSteps force N-m) –––––––––––––––––––––––––––––––––––-

: Default static nonlinear analysis parameters

References

  1. VAWTGen Manual

  2. WavEC manual

  3. Jonkman, J.M., and Buhl, M. L., 2005, FAST User's Guide, National Renewable Energy Laboratory, NREL/EL-500-38230.

Appendix A: Mapping from local nodal DOF numbering to global DOF numbering

Structural nodes in the finite element formulation of the OWENS toolkit each have 6 degrees of freedom. That is 3 translational and 3 rotational. The finite element mesh is represented in a Cartesian frame with "x", "y", and "z" axes. The z axis is typically located along the tower axis of the turbine. Local degree of freedom numberings 1, 2, and 3 correspond to displacements along the x, y, and z axes respectively. Local degree of freedom numberings 4, 5, and 6 correspond to rotations of 4, 5, and 6 about the x, y, and z axes respectively.

For a particular node number "nodeNum" and an associated local degree of freedom "localDOFNum" the following relation exists to the global degree of freedom number "globalDOFNum".

globalDOFNum = (nodeNum-1)*6 + localDOFNum

Appendix B: Nonlinear Static Analysis Parameters

If desired, the user may modify the default parameters for nonlinear static analysis. This is done by creating a file with the same prefix as the main (.owens) analysis file, but with the suffix ".nl". For example, if the main file for an analysis is "vawt.owens", the nonlinear parameter file should be named "vawt.nl". If no ".nl" file exists in the job directory default nonlinear static parameters will be used.

The nonlinear parameter file has the following format for adaptive load stepping in nonlinear iteration:

NR :iteration type, NR = Newton Raphson, DI = Direct Iteration

1.0e-6 :tolerance for nonlinear iteration convergence

5 :maximum number of iterations per load step

0 :integer denoting load steps (0 for adaptive), otherwise, number of load steps followed by values

20 :maximum number of load steps

0.3 :minimum load step

0.1 :minimum delta load step

The adaptive load stepping algorithm attempts to reach a converged solution by adjusting load steps as necessary within the specified or default nonlinear analysis parameters.

If desired, the user may specify a prescribed loadstepping profile for nonlinear iteration with the following file format:

NR :iteration type, NR = Newton Raphson, DI = Direct Iteration

1.0e-6 :tolerance for nonlinear iteration convergence

20 :maximum number of iterations per load step

5 0.2 0.4 0.6 0.8 1.0 :integer denoting load steps (0 for adaptive), otherwise, number of load steps followed by values

The prescribed load stepping algorithm attempts to reach a converged solution within the maximum number of iterations per load step and terminates analysis if unsuccessful.

By default, the nonlinear iteration parameters are those listed in Table


  1. Parameter Value –––––––––––––––––- –––––––––––––––––- Nonlinear Iteration Tolerance 1.0e-6

    Iteration Type Newton Raphson

    Loads Stepping Algorithm Adaptive

    Max Iterations Per Load Step 50

    Max Number of Load Steps 20

    Minimum Load Step 0.05

    Minimum Load Step Delta 0.05

+\end{Bmatrix}\]

Such that M, C, and K represent the system mass, damping, and stiffness matrices respectively. The terms U~T~ and U~P~ denote the displacement of the turbine and platform respectively. The terms F~T~ and F~P~ denote the forces acting on the turbine and platform respectively. Terms with subscript "TT" denote influence of the turbine forces on the turbine response. Whereas, terms with subscript "TP" denote influence of turbine forces on the platform response, and terms with subscript "PT" denote influence of the platform forces on the turbine response. Finally, terms with subscript "PP" denote the influence of platform forces on the platform response. Although not explicitly shown here, the rotor velocity/acceleration and platform velocity/acceleration are incorporated in the system damping and stiffness matrices through gyroscopic effects.

Modal analysis may be performed on the above system of equations to examine the stability of the turbine configuration. Whereas understanding the stability of a turbine to avoid potential resonance issues is critical, transient conditions such as rotor start-up, turbulent/unsteady winds, and unsteady waves require a transient analysis capability. Implicit time integration methods have been considered for their ability to reduce time step restriction and maintain efficiency.

Overview of OWENS Analysis Framework

The Offshore Wind Energy Numerical Simulation (OWENS) allows for a convenient coupling of the aeroelastic/structural dynamics finite element analysis to aerodynamic, hydrodynamic, and generator modules. Figure 2 shows an illustration for the framework of OWENS indicating data flow among the analysis tool and various modules. In this figure analysis components surrounded in the purple boxes are independent modules that will interface with the VAWT simulation tool. OWENS will provide and receive data to and from these modules. The implementation of these modules, however, are "as is" and cannot be modified by the authors. Components outlined in the blue boxes are components of the analysis tool that are under direct development by the authors. Data flow is illustrated by various colored arrows. Orange arrows denote an internal data flow from one segment of the OWENS analysis routines to another. Red arrows denote flow of information from the core analysis tool to external modules. Green arrows represent flow of information from external modules to the core analysis tool components.

This analysis framework begins with startup procedures. These include creation of the VAWT configuration mesh using the mesh generator VAWTGen, and specification of initial conditions. VAWTGen produces a finite element mesh representative of a VAWT. Initial conditions such as the initial forces acting on the turbine/platform, initial rotor angular velocity/acceleration, and initial platform angular velocity/acceleration must be provided. With these specifications complete, the coupled aeroelastic/hydrodynamic analysis begins, involving the components outlined in the black box.

The mesh and initial conditions are provided to the OWENS toolkit. By performing a transient analysis via the aforementioned time integration procedures, turbine and platform motions are calculated. The turbine motions along with aerodynamic properties of the turbine are provided to an aerodynamics module. Future versions will actively link OWENS with aerodynamic modules and wind field data while considering turbine motions to calculate aerodynamic loads on the turbine. The aerodynamic loads are provided back to the OWENS toolkit as boundary conditions for the next time step or iteration.

The motion of the turbine shaft is provided to a generator/drivetrain model, which considers the relative motions of the shaft and generator to calculate a resistance torque provided by the generator. By considering the resistance torque along with the shaft torque and rotor inertia, an updated rotor angular velocity/acceleration may be calculated. The generator module is similar to that of NREL's FAST analysis tool [3].

OWENS is interfaced with the WavEC platform dynamics module[2]. The hydrodynamics/mooring module accepts wave data as external forcing on the platform and a reaction force from the attached turbine structure. This module returns rigid body motions (translational and rotational) of the platform due to platform accelerations. These rigid body motions are then applied to the structure as body forces. The resistance torque of the generator may also be applied to the platform.

The above description fully outlines the proposed analysis framework and interface of the core analysis tool with various modules. In the development of this framework, a loose coupling is inherent in that typically motions are provided to a module and loads are calculated and supplied back to the analysis tool. In reality such a clear flow of information does not exist, and the coupling is more complex with loads influencing motions in addition to the motions influencing loads. Therefore, at any given time step an iterative procedure is considered to reach a convergence among the actual two-way coupling between the turbine structural dynamics and aerodynamics, hydrodynamics, and generator dynamics.

Future versions may consider a turbine controller algorithm that provides prescribed motions of the tower and blades or applied braking torque is also required. The prescribed motions or applied torques are imposed via boundary conditions on the finite element model. As illustrated in Figure 2, the turbine controller accepts turbine motions, rotor speed/torque, or wind data and provides prescribed motions or breaking torques. The finite element model provides a convenient interface for the turbine controller.

figs/userguide2.png{width="8.1578947944007in" height="5.019896106736658in"}

Figure Analysis framework for the OWENS toolkit

OWENS Installation

The OWENS analysis software should be installed by adding the following directories to the MATLAB path:

Platform dynamics software interface

If a floating turbine is to be considered, the WavEC platform dynamics software[2] should be installed and the file "waveECStartUp.m" should be modified in the "OWENS/source/transientSource/" directory. An appropriate system call must be specified to launch a MATLAB instance of WavEC that accepts a network socket connection from OWENS. The string variable "sysCallString" in the following code snippet must be modified appropriately depending on whether a Unix or PC system is being used.

%sets system commands to launch wavEC software

hydroLaunchScript = \'/home/bcowens/work/OWENSsingle/launchPlatformCode\';

%sysCallString = [matlabPath,\' -sd \',hydroCodeDirectory,\' -r \',hydroCodeExec,\' &\'];

sysCallString = [\'bash \',hydroLaunchScript,\' &\'];

disp(\'launching WAVEC\'); %launch wavEC depending on pc or unix environment

if(ispc());

system(sysCallString);

end

if(isunix())

unix(sysCallString);
end

OWENS Command Line Execution

The beta version of OWENS is written using the MATLAB programming language. The OWENS source code directory (and subdirectories) should be added to the MATLAB path, and OWENS should be executed from a job directory containing the associated input files described in the following section. Three types of analysis capabilities exist: static, modal and, transient analysis. These will be described in the following subsections.

Static Analysis Execution

The static analysis capability of OWENS is executed as follows:

owens(inputFile,'S',rotorSpeed,nonlinearBool,dispGuess);

For example:

owens('vawt.owens','S',0.5,true);

Performs a modal analysis using the main OWENS input file "vawt.owens". The input character 'S' denotes a static analysis is to be performed. Rotor speed input is the specified angular velocity of the rotor in Hz. The Boolean input of "true" geometric nonlinearities. Setting this Boolean to false performs a linear static analysis. The input "dispGuess" is an array of the initial guess for displacements to be used in nonlinear static analysis and should be a vector of the total number of degrees of freedom in the structural model (number of nodes x 6). It is not used if nonlinearBool is set to false. If not specified, the initial guess is a vector of zeros by default.

By default, body forces from gravity and rotational effects are included in static analysis. Arbitrary static loading may be specified by modifying the "externalForcingStatic.m" file in the OWENS source directory. The Fexternal array may be modified to include loads for a corresponding degree of freedom in the Fdof array. See this function for usage instructions.

For nonlinear static analysis, load stepping procedures are implemented within OWENS. The parameters governing load stepping and nonlinear iteration may be adjusted if desired by the user and the process is described in Appendix B.

The modal analysis capability of OWENS is executed as follows:

owens(inputFile,'M',rotorSpeed,spinUpBool,numModesOutput,dispGuess);

For example:

owens('vawt.owens','M',0.0,true,40);

Performs a modal analysis using the main OWENS input file "vawt.owens". The input character 'M' denotes a modal analysis is to be performed. Rotor speed input is the specified angular velocity of the rotor in Hz. The Boolean input of "true" activates a spin up procedures which performs a nonlinear static analysis on the structure to arrive at a "stiffened" stiffness matrix to be used in the modal analysis. Setting this Boolean to false skips the spin up procedure and uses an unmodified stiffness matrix in modal analysis. The last argument is the number of modes extracted and output for the model. If no value is specified, the default number is 20. The input "dispGuess" is an array of the initial guess for displacements to be used in nonlinear static analysis and should be a vector of the total number of degrees of freedom in the structural model (number of nodes x 6). It is not used if spinUpBool is set to false. If not specified, the initial guess is a vector of zeros by default.

By default, body forces from gravity and rotational effects are included in static analysis used in pre-stressed modal analysis. Arbitrary static loading may be specified by modifying the "externalForcingStatic.m" file in the OWENS source directory. The Fexternal array may be modified to include loads for a corresponding degree of freedom in the Fdof array. See this function for usage instructions.

For pre-stressed modal analysis (which employs nonlinear static analysis), load stepping procedures are implemented within OWENS. The parameters governing load stepping and nonlinear iteration may be adjusted if desired by the user and the process is described in Appendix B.

Creating Campbell Diagrams of a VAWT Configuration

Automated functionality exists for creating Campbell diagrams of a land based VAWT configuration. A Campbell diagram examines how modal frequencies vary with respect to the rotor speed of a turbine. It is also helpful for identifying critical per-rev excitations that may cause resonance in a VAWT configuration.

The function "campDiagramGen.m" located in "OWENS/source/utilitySource/" performs modal analysis at user specified rotor speeds. Command line execution is performed with the following call:

[freq] = campDiagramGen(inputFileName,outputFileName,rotorSpeedArray,spinUpOn,numModes)

Such that "inputFileName" is a string specifying the main .owens file corresponding to the VAWT configuration. The "outputFileName" is a string specifying the prefix that will be given to a MATLAB .mat array containing the results. The rotor speed array and corresponding frequencies are saved to this .mat file. The "rotorSpeedArray" variable is an array containing the rotor speeds (Hz) of interest. The Boolean flag "spinUpOn" includes nonlinear stress stiffening effects in modal analysis if set to true, if set to false these effects are excluded from the analysis. The integer "numModes" specifies the number of lower system modes to extract during modal analysis.

The previous functionality performed the analysis for creating a Campbell diagram, and "campDiagPlotter.m" in "OWENS/source/utilitySource" plots the Campbell diagram. Command line execution of Campbell diagram plotting is performed with the following call:

campDiagPlotter(resultsFileName,numModesToPlot,numPerRevLines,minRPMplot,maxRPMplot)

Such that "resultsFileName" is a string specifying the .mat file generated using campDiagramGen.m. The integer "NumModesToPlot" specifies the number of modes to be plotted on the Campbell diagram. The integer "numPerRevLines" specifies how many per-rev lines to include on the Campbell diagram. The values "minRPMplot" and "maxRPMplot" specify the RPM values at which the per-rev lines will begin and end. Figure 3 shows an example of a Campbell digram generated using the aforementioned procedures.

figs/userguide3.png{width="5.829861111111111in" height="4.254861111111111in"}

Figure 3 Example of a Campbell diagram

Transient Analysis Execution

The transient analysis capability of OWENS is executed as follows:

owens(inputFile,'TNB',timeStep,numTimeSteps,nlBool,turbineOperationParams...);

By default, body forces from gravity and rotational effects are included in trasient analysis. Arbitrary transient external loading may be specified by modifying the "externalForcing.m" file in the OWENS source directory. The Fexternal array may be modified to include loads for a corresponding degree of freedom in the Fdof array. See this function for usage instructions.

Specified rotor speed profile

An arbitrary VAWT configuration may be subjected to an arbitrary, specified rotor speed profile using the following command line execution.

owens('vawt.owens','TNB',1.0e-3,40000,true,0,[0.0 5.0 30.0],[0.0 0.5 0.5]);

This performs a transient analysis using the main OWENS input file 'vawt.owens'. The input character 'TNB' denotes a transient analysis is to be performed. A time step of 1.0e-3 seconds is utilized and 40000 time steps are performed for a simulation time of 40 seconds. The flag of true activates nonlinear strain calculation in the transient analysis. The turbine operation flag of "0" denotes a specified omega profile is utilized. The 7^th^ argument is an array of times for the specified rotor speed profile. The 8^th^ argument is an array of specified rotor speeds at the aforementioned times.

Alternatively, the 7^th^ and 8^th^ arguments may be omitted and the file "OWENS\source\userDefinedRotorSpeedProfile.m" may be modified to specify an arbitrary time varying rotor speed profile. See the comments within this function for appropriate usage.

Forced start-up mode using generator

An arbitrary VAWT configuration may be subjected to a forced start-up mode using the generator to provide a motoring torque using the following command line execution.

owens('vawt.owens','T',1.0e-3,40000,true,1,0.0);

This performs a transient analysis using the main OWENS input file 'vawt.owens'. The input character 'TNB' denotes a transient analysis is to be performed. A time step of 1.0e-3 seconds is utilized and 40000 time steps are performed for a simulation time of 40 seconds. The flag of true activates nonlinear strain calculation in the transient analysis. The turbine operation flag of "1" denotes a forced start up using the generator as a motor. Accordingly, generator properties must be specified by providing a .gen file. The 7^th^ argument is the initial rotor speed at t=0 in Hz.

Alternatively, the .gen file in the main .owens input file may be replaced with the integer "1" and a user defined generator function may be employed. The file "OWENS\source\userDefinedGenerator.m" may be modified to specify an arbitrary time varying rotor speed profile. See the comments within this function for appropriate usage.

Self-starting turbine mode

An arbitrary VAWT configuration may be considered in a self-starting mode in which external forces provide a torque to increase the rotor speed of the turbine using the following command line execution.

owens('vawt.owens','T',1.0e-3,40000,true 2,0.0,1.05);

This performs a transient analysis using the main OWENS input file 'vawt.owens'. The input character 'TNB' denotes a transient analysis is to be performed. A time step of 1.0e-3 seconds is utilized and 40000 time steps are performed for a simulation time of 40 seconds. The turbine operation flag of "2" denotes a self-starting turbine with the generator disconnected from the grid initially. The 7^th^ argument is the initial rotor speed at t=0 in Hz. The 8^th^ argument is the rotor speed at which the generator will activate. Accordingly, generator properties must be specified by providing a .gen file. The history of nodal displacements, generator torque, generator power, rotor speed, rotor position, and reaction at the turbine base at each time step are saved in the MATLAB file \<root\>.mat such as "vawt.mat". Table 1 provides a listing with output description, variable name, and size of the output.

Transient Analysis Execution Using Reduced Order Model

The transient analysis capability with a reduced order model of OWENS is executed as follows:

owens(inputFile,'ROM',timeStep,numTimeSteps,numModesForROM,nlBool,turbineOperationParams...);

This option performs a transient analysis as before, but using a reduced order model which contains a subset of system modes as specified by "numModesForROM". The reduced order model contains the first "numModesForROM" lowest frequency modes. A modal analysis should be constructed to determine how many modes a user is interested in including in a reduced order model. The various operation modes (specified rotor speed, force start-up, self-starting) are specified as in the previous section.

OWENS Input Files

This section presents input file formats for OWENS, including the main input file and sub-input files. The input files discussed in this section include:

Note that while these files may be created manually, many are created automatically by the mesh generator/pre-processor VAWTGen. VAWTGen is described in a separate user guide[1] and is not discussed here.

OWENS Main Input File (.owens)

The OWENS main input file is generated by VAWTGen with the following format:

vawt.mesh
vawt.el
vawt.ort
vawt.jnt
[concentrated nodal terms file]
vawt.bc
0 vawt.plat
[initial conditions file]
0 vawt.bld [aero loads file]
0 [drivetrain property file]
[generator property file]
0.0 0.0

The mesh, element, orientation, joint, and boundary conditions files for analysis are listed. The bracketed file comments serve as place holders and are not essential for all OWENS analysis types. The 5^th^ line specifies a concentrated nodal term file that can be used to specify concentrated masses, stiffness, and loads at nodal locations. The 6^th^ line specifies a boundary condition file. The integer on the 7^th^ line is a flag for activating the floating platform (1 – active, 0 – inactive) and the following platform file contain information governing a platform dynamics analysis. The 8^th^ line specified initial conditions for a transient analysis. The flag on the 9^th^ line governs activation of aerodynamic loads, a blade file provides information for mapping aerodynamic loads to the structural mesh, and an aerodynamic loads file provide loading data. The flag on the 10^th^ line governs activation of a simple drivetrain model and the drive train property file contains drive train model properties. The 11^th^ line specifies properties for a simple induction generator, which is not required for all analysis types. The 12^th^ line specifies Rayleigh damping parameters. These are the 𝛼 and 𝛽 parameters respectively in the following expression for the damping matrix:

\[\lbrack C\rbrack = \ \alpha\lbrack M\rbrack + \beta\lbrack K\rbrack\]

Such that [M], [C], and [K] are the system mass, damping, and stiffness matrices respectively. 𝛼 and 𝛽 should be positive numbers. 𝛼 serves to damp higher frequency modes while 𝛽 serves to damp lower frequency modes.

Mesh File (.mesh)

The mesh file generated by VAWTGen simply lists nodal coordinates and element connectivity. The number of structural components (tower, blades, and struts) and number of elements per component are also listed in this file. The file format is described below:

numNodes numElements
nodeNum xCoord yCoord zCoord
nodeNum xCoord yCoord zCoord
nodeNum xCoord yCoord zCoord
...
elementNum numNodesPerElement localNodeNum1 localNodeNum2
elementNum numNodesPerElement localNodeNum1 localNodeNum2
elementNum numNodesPerElement localNodeNum1 localNodeNum2
...
numberOfStructuralComponents numElementsComponent1 .... numElementsComponentN

Element Property File (.el)

The element property file generated by VAWTGen contains element mechanical and some aerodynamic properties. The properties specified in this file are those defined in the NREL file formats [1], but sorted into a form that is more usable by the OWENS analysis tool. It should be noted that the mass offsets have been corrected to be the distance from the offset from the elastic axis of section. Edgewise offsets are positive towards the trailing edge, flapwise offsets are positive outward from the machine center. The alpha coupling factor is not currently employed in analysis. The file has the following format:

Element1, Node 1: [blade fraction] [aeroCenter] [structuralTwist] [MassPerLength] [FlapwiseStiffness] [EdgewiseStiffness] [TorsionalStiffness] [AxialStiffness] [alphaCouplingFactor] [FlapwiseInertia] [EdgewiseInertia] [Precurve] [PreSweep] [FlapwiseCGoffset] [EdgewiseCGOffset] [FlapwiseEAOffset] [EdgewiseEAOffset] ...
Element1, Node 2: [blade fraction] [aeroCenter] [structuralTwist] [MassPerLength] [FlapwiseStiffness] [EdgewiseStiffness] [TorsionalStiffness] [AxialStiffness] [alphaCouplingFactor] [FlapwiseInertia] [EdgewiseInertia] [Precurve] [PreSweep] [FlapwiseCGoffset] [EdgewiseCGOffset] [FlapwiseEAOffset] [EdgewiseEAOffset] ...

...

...
Element n, Node 1: [blade fraction] [aeroCenter] [structuralTwist] [MassPerLength] [FlapwiseStiffness] [EdgewiseStiffness] [TorsionalStiffness] [AxialStiffness] [alphaCouplingFactor] [FlapwiseInertia] [EdgewiseInertia] [Precurve] [PreSweep] [FlapwiseCGoffset] [EdgewiseCGOffset] [FlapwiseEAOffset] [EdgewiseEAOffset] ...

Element n, Node 2: [blade fraction] [aeroCenter] [structuralTwist] [MassPerLength] [FlapwiseStiffness] [EdgewiseStiffness] [TorsionalStiffness] [AxialStiffness] [alphaCouplingFactor] [FlapwiseInertia] [EdgewiseInertia] [Precurve] [PreSweep] [FlapwiseCGoffset] [EdgewiseCGOffset] [FlapwiseEAOffset] [EdgewiseEAOffset] ...

Element Orientation File (.ort)

The element orientation file generated by VAWTGen lists Euler angles for a 3-2 rotation sequence and some other miscellaneous element information. The file format is described below:

elNum theta3 theta2 theta1 length xOffset yOffset zOffset

Such that elNum is the element number. Theta3, theta2, and theta1 are the orientation angles (degrees) about a 3, 2, and 1 axes respectively for a 3-2-1 Euler rotation sequence. Length is the element length, and x/y/zOffsets are the offsets of the first node of the element from the coordinate frame origin.

Joint File (.jnt)

The joint file generated by VAWTgen specifies joint conditions at coincident nodes between structural components. The file format for the joint file is shown below:

jointNumber masterNode slaveNode jointType jointMass 0.0 ... jointPsi jointTheta

A master and slave node is defined at a joint from which constraints will be developed. The joint type is also specified (0 = weld(fixed), 1=pinned, 2 = hinge joint with axis about slave node element's e~2~ axis, 3 = hinge joint axis about slave node element's e~1~ axis, 4 = hinge joint axis about slave node element's e~3~ axis). The mass of the joint may be specified in this file. If this option is not sufficient for modeling purposes concentrated mass can be imposed on degrees of freedom using the .ndl file. [A place-holder double of zero after jointMass is also in this file, but not currently used in analysis.]{.mark} The orientation associated with the joint is also described by the jointPsi and jointTheta angles (degrees). These angles are used to transform from the global coordinate frame to the local element/joint frame via a 3-2 Euler rotation sequence. Psi denotes rotation about 3, theta denotes rotation about 2.

Concentrated Nodal Terms File

The concentrated nodal terms file applies concentrated mass, stiffness, or forces to nodes of the finite element mesh. This files requires a node number, concentrated term type, local degree of freedom number, and value for the concentrated term. Concentrated term types include "M" for mass, "K" for stiffness, and "F" for force. The degree of freedom specification is not used when the concentrated term is for mass. The mass value specified is applied to all translational degrees of freedom associated with the specified node. See Appendix A for an explanation of local degree of freedom numbering at a particular node. A sample concentrated nodal terms file is shown below:

74 M 1 254.0
81 K 3 1.0e6
92 F 2 2000.0

nodeNum termType localDOFNum value

Boundary Conditions File (.bc)

The boundary conditions file generated by VAWTGen specifies a fixed boundary condition at the tower base (node 1). This file specifies the number of boundary conditions, the node number, local degree of freedom, and specified displacement value for the boundary condition. This file attempts to provide a likely boundary condition for a VAWT structure, but may need to be modified by the analyst depending on the specific configuration of interest. See Appendix A for an explanation of local degree of freedom numbering at a particular node. The boundary condition file generated by VAWTGen is shown below:

6
1 1 0.000000
1 2 0.000000
1 3 0.000000
1 4 0.000000
1 5 0.000000
1 6 0.000000

nodeNum localDOFNum value

Platform Simulation File (.plat)

The platform simulation file specifies parameters required for an external platform dynamics simulation. An example, annotated platform file is shown below.

1 0 0 0 0 0 :active platform DOFs (surge, sway, heave, roll, pitch, yaw)

0.0 0.0 0.0 0.0 0.0 :initial conditions for platform DOFs

0 :drag damping flag (1 = on, 0 = off)

1 :mooring flag (1 = on, 0 = off)

0 :gravity flag (1 = on, 0 = off)

0 :plot flag (1 = on, 0 = off)

0 :radiation damping flag (1 = on, 0 = off)

1 :node number for platform turbine connection

1 :platform turbine yaw interaction (0 = free spinning tower, 1 = fixed tower, 2 = generator reaction torque applied to platform)

3500 :platform server port

4500 :platform client port

The first line activates platform degrees of freedom (DOFs) the ordering of degrees of freedom is surge, sway, have, roll, pitch, and yaw. The second line specifies initial conditions for the platform degrees of freedom, the DOF ordering is the same as the previous line. Lines 5-7 activate/deactivate various aspects of the hydrodynamic/platform dynamics simulation (drag, mooring, gravity, plotting, and radiation damping). Line 8 specifies the node number at the connection of the turbine to the platform. This is used in calculating the reaction force the turbine imparts on the platform. Line 9 is a flag to specify the platform turbine yaw interaction. For a flag of 0 there is no interaction, for a flag of 1 the tower is considered fully constrained to the platform, for a flag of 2, the generator reaction torque is applied to the turbine. The last two lines specify the server port and client port numbers for the network socket interface between the OWENS analysis tool and the platform dynamics module.

Initial Conditions File

The initial conditions file is used for transient analysis to specify an initial displacement of the structure at t =0. This file requires a node number, local degree of freedom number, and displacement value. See Appendix A for an explanation of local degree of freedom numbering at a particular node. The file format is described below:

60 1 0.1
51 2 -0.4
nodeNum localDOFNum value

Blade Data File (.bld)

A blade data file is generated by VAWTGen to aid in mapping aerodynamic loads to the structural mesh generated by VAWTGen. This information includes the blade number, node locations of blade sections in terms of spanwise distance from the blade root, and node number and element numbers associated with these locations. The file also contains the quarter chord coordinate of the blade section, the normal and tangential vector components of the blade section, and the chord of the section. Coordinate and vector components are represented in the rotating, rotor-fixed hub frame. An integer number representing the airfoil as specified in the .ipt file for the blade component and section lift curve slope are also specified. The last column is a place holder not used in the release version of OWENS. The file format for the blade file is described below:

bladeNum nodeDistance nodeNum elementNum quarterChordCoord1 quarterChordCoord2 quarterChordCoord3 sectionNormalVec1 sectionNormalVec2 sectionNormalVec3 sectionTangentVec1 sectionTangentVec2 sectionTangentVec3 sectionChord sectionAirfoilNumber [place holder not used]

Aerodynamic Loads File

Drivetrain Properties File

The drive train properties file is read for cases where the drive train flag is set to true in the main OWENS analysis file. This file contains an effective torsional spring and damping constant for the drivetrain, along with a moment of inertia for the drive train. These values are cast on the low speed shaft (LSS) side of the drivetrain. The file also contains gear ratio and gear box efficiency parameters. A sample drivetrain file is shown below:

1.0e8 1e6 1000.0 :drivetrain spring constant, damping constant, MOI
1.0 1.0 :gear ratio, gear box efficiency

Generator Properties File

The generator properties file is read where the turbine operation mode requires generator interaction. This file includes the generator rated torque, zero torque generator speed, pull out ratio, and rated slip percentage. A sample generator properties file is shown below:

2.09e4 :generator rated torque
1.0 :zero torque generator speed (in Hz)
2.0 :pull out ratio
5.0 :generator rated slip percentage

OWENS Output Files

This section describes the output files generated by the OWENS analysis software. Output is different for the static, modal, and transient analysis types.

Static Analysis Output

Output from this analysis is written to the root filename with "_static.mat" suffix, such as "vawt_static.mat". This MATLAB database contains a solution vector for each degree of freedom of the model. The deformed configuration may be visualized using VAWTGen visualization capabilities[1]. See Appendix A for an explanation of mapping between a global degree of freedom list to local degree of freedom numbering at a particular node.

For modal analysis the output file lists the frequency, damping ratio, and nodal values for mode shapes of the 0 degree (real) and 90 degree out of phase (imaginary) mode shapes. The generated file has the same root name as the .owens input file, but with a suffix of .out. The various mode shapes may be visualized using VAWTGen visualization capabilities[1]. The file format for the modal analysis output is shown below:

MODE # 1

Frequency: 9.941364e-001:

Damping 3.576857e-014:

0 deg Mode Shape:

Ux Uy Uz thetax thetay thetaz

-0.000000 -0.000000 -0.000000 -0.000000 0.000833 -0.000000

0.000627 0.000000 0.000000 -0.000000 0.000819 0.000000

0.001235 0.000000 0.000000 -0.000000 0.000780 0.000000

0.001819 0.000000 0.000000 -0.000000 0.000713 0.000000

0.002353 0.000000 0.000000 -0.000000 0.000620 0.000000

0.002669 0.000000 0.000000 -0.000000 0.000557 0.000000

0.002948 0.000000 0.000000 -0.000000 0.000497 0.000000

0.003196 0.000000 0.000000 -0.000000 0.000437 0.000000
...
90 deg Mode Shape:

Ux Uy Uz thetax thetay thetaz

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

...

Mode #2

...

Transient Analysis Output

Transient analysis output has a great deal of data associated with it due to having both spatial and temporal information and OWENS transient analysis output is saved in a MATLAB workspace as \<root\>.mat. Table 1 lists the following information saved in the transient analysis output file with the variable name and associated array size. The units specified in this file assume that the mesh and associated element properties are in SI units. See Appendix A for an explanation of mapping between a global degree of freedom list to local degree of freedom numbering at a particular node.

Transient analysis output may be visualized using VAWTGen visualization capabilities[1].

Table 1. OWENS Transient Output


Output Variable Name (units) Size –––––––––––- –––––––––––- –––––––––––- Time t (s) 1 x numTimeSteps

Nodal displacements uHist (m or rad) numDOF x numTimeSteps

Generator torque genTorque (N-m) 1 x numTimeSteps

Generator power genPower (W) 1 x numTimeSteps

Rotor position aziHist (rad) 1 x numTimeSteps

Rotor speed OmegaHist (Hz) 1 x numTimeSteps

Rotor acceleration OmegaDotHist (Hz/s) 1x numTimetSteps

Gearbox position gbHist (rad) 1 x numTimeSteps

Gearbox speed gbDotHist (Hz) 1 x numTimeSteps

Gearbox acceleration gbDotDotHist (Hz/s) 1 x numTimeSteps

Driveshaft torque torqueDriveShaft (N-m) 1 x numTimeSteps

Platform degrees of rigidDof (m or rad) 6 x numTimeSteps freedom

Turbine base reaction FReactionHist (N or 6 x numTimeSteps force N-m) –––––––––––––––––––––––––––––––––––-

: Default static nonlinear analysis parameters

References

  1. VAWTGen Manual

  2. WavEC manual

  3. Jonkman, J.M., and Buhl, M. L., 2005, FAST User's Guide, National Renewable Energy Laboratory, NREL/EL-500-38230.

Appendix A: Mapping from local nodal DOF numbering to global DOF numbering

Structural nodes in the finite element formulation of the OWENS toolkit each have 6 degrees of freedom. That is 3 translational and 3 rotational. The finite element mesh is represented in a Cartesian frame with "x", "y", and "z" axes. The z axis is typically located along the tower axis of the turbine. Local degree of freedom numberings 1, 2, and 3 correspond to displacements along the x, y, and z axes respectively. Local degree of freedom numberings 4, 5, and 6 correspond to rotations of 4, 5, and 6 about the x, y, and z axes respectively.

For a particular node number "nodeNum" and an associated local degree of freedom "localDOFNum" the following relation exists to the global degree of freedom number "globalDOFNum".

globalDOFNum = (nodeNum-1)*6 + localDOFNum

Appendix B: Nonlinear Static Analysis Parameters

If desired, the user may modify the default parameters for nonlinear static analysis. This is done by creating a file with the same prefix as the main (.owens) analysis file, but with the suffix ".nl". For example, if the main file for an analysis is "vawt.owens", the nonlinear parameter file should be named "vawt.nl". If no ".nl" file exists in the job directory default nonlinear static parameters will be used.

The nonlinear parameter file has the following format for adaptive load stepping in nonlinear iteration:

NR :iteration type, NR = Newton Raphson, DI = Direct Iteration

1.0e-6 :tolerance for nonlinear iteration convergence

5 :maximum number of iterations per load step

0 :integer denoting load steps (0 for adaptive), otherwise, number of load steps followed by values

20 :maximum number of load steps

0.3 :minimum load step

0.1 :minimum delta load step

The adaptive load stepping algorithm attempts to reach a converged solution by adjusting load steps as necessary within the specified or default nonlinear analysis parameters.

If desired, the user may specify a prescribed loadstepping profile for nonlinear iteration with the following file format:

NR :iteration type, NR = Newton Raphson, DI = Direct Iteration

1.0e-6 :tolerance for nonlinear iteration convergence

20 :maximum number of iterations per load step

5 0.2 0.4 0.6 0.8 1.0 :integer denoting load steps (0 for adaptive), otherwise, number of load steps followed by values

The prescribed load stepping algorithm attempts to reach a converged solution within the maximum number of iterations per load step and terminates analysis if unsuccessful.

By default, the nonlinear iteration parameters are those listed in Table


  1. Parameter Value –––––––––––––––––- –––––––––––––––––- Nonlinear Iteration Tolerance 1.0e-6

    Iteration Type Newton Raphson

    Loads Stepping Algorithm Adaptive

    Max Iterations Per Load Step 50

    Max Number of Load Steps 20

    Minimum Load Step 0.05

    Minimum Load Step Delta 0.05

diff --git a/dev/reference/reference/index.html b/dev/reference/reference/index.html index 4c79b6ba..98f52aed 100644 --- a/dev/reference/reference/index.html +++ b/dev/reference/reference/index.html @@ -1,5 +1,5 @@ -API Reference · OWENS.jl

Index

Types and functions

OWENS.BinType

Inputs pointing to the file paths of compiled binaries of external libraries

OWENS.BladeType

Internal, struct containing the CACTUS geometry file data for a blade

OWENS.BladeDataType

Internal, struct containing blade specific data and location within the mesh

OWENS.CactusGeomType

Internal, struct containing the CACTUS geometry file data

OWENS.InputsMethod

Inputs(;analysisType = "TNB", turbineStartup = 0, usingRotorSpeedFunction = false, tocp = [0.0,1.1], tocpVinf = [0.0,1.1], numTS = 50.0, deltat = 2e-3, Omegaocp = [7.2,7.2] ./ 60, Vinfocp = [12.0,12.0], aeroLoadsOn = 1, AD15On = false, driveTrainOn = false, generatorOn = false, hydroOn = false, topsideOn = true, interpOrder = 2, hdinputfile = "none", mdinputfile = "none", JgearBox = 0.0, gearRatio = 1.0, gearBoxEfficiency = 1.0, useGeneratorFunction = false, generatorProps = 0.0, ratedTorque = 0.0, zeroTorqueGenSpeed = 0.0, pulloutRatio = 0.0, ratedGenSlipPerc = 0.0, OmegaGenStart = 0.0, omegaControl = false, OmegaInit = 7.2/60, #TODO: simplify this in the code since it is redundant rigid = false, #turn off structural dynamics aeroloadfile = "modulepath/../test/data/inputfilestest/DVAWT2BLCDTElementData.csv", owensfile = "modulepath/../test/data/inputfilestest/15mTowertransientdvawtc2_lcdt.owens", outFilename = "none", numDofPerNode = 6, bladeData = [], driveShaftProps = DriveShaftProps(0.0,0.0) TOl = 1e-4, MAXITER = 300, iterwarnings = true, )

Model inputs for OWENS coupled analysis, struct

Inputs

  • analysisType::string: Newmark Beta time stepping "TNB", Dean time stepping "TD", modal "M"
  • turbineStartup::int: 1 forced start-up using generator as motor, 2 self-starting mode, 0 specified rotor speed mode")
  • usingRotorSpeedFunction::bool: use user specified rotor speed profile function
  • tocp::Array{<:float}: = time points for rotor speed profile (s)
  • tocp_Vinf::Array{<:float}: = time points for specified Vinf profile (s)
  • numTS::int: total number of timesteps to run
  • delta_t::float: timestep interval (s)
  • Omegaocp::Array{<:float}: = rotor speed points for rotor speed profile (Hz)
  • Vinfocp::Array{<:float}: = rotor speed points for specified Vinf profile (Hz)
  • aeroLoadsOn::bool: #0 off, 1 one way, 1.5 one way with deformation from last timestep, 2 two way
  • AD15On::bool: flag to use AD15 for aero
  • driveTrainOn::bool: flag to include drivetrain effects
  • generatorOn::bool: flag to include generator effects
  • hydroOn::bool: flag to include platform coupling
  • interpOrder::int: order used for extrapolating inputs and states, 0 flat, 1 linear, 2 quadratic
  • hd_input_file::string: file path to the HydroDyn .dat input file
  • md_input_file::string: file path to the MoorDyn .dat input file
  • JgearBox::float: gearbox intertia, standard SI units
  • gearRatio::float: gearbox gear ratio
  • gearBoxEfficiency::float: gearbox efficiency (typically 0-1)
  • useGeneratorFunction::bool: = flag to use user specified generator profile
  • generatorProps::float: not used, should clean up
  • ratedTorque::float: Generator rated max torque
  • zeroTorqueGenSpeed::float: rated generator speed (minus slippage)
  • pulloutRatio::float: Fraction of the min/max torque that the generator engages/disengages
  • ratedGenSlipPerc::float: extra speed from slipping?
  • OmegaGenStart::float: speed (Hz) at which generator would kick in
  • omegaControl::bool: false for fixed speed, true for dynamic
  • OmegaInit::float: initial rotor speed (Hz)
  • aeroloadfile::string: string of the name and path for the cactus aeroloads if using the old serial owens call
  • owensfile::string: string of the name and path for the owens input file if using the old serial owens call
  • potflowfile::string: string of the prefix and path for the directory containing the potential flow files from WAMIT (required by HydroDyn)
  • outFilename::string: path and name of output file, will be overwritten if already exists
  • numDofPerNode::int: number of degrees of freedom per node
  • bladeData::BladeData: see ?BladeData, only used if calling the old serial owens function
  • driveShaftProps::DriveShaftProps: see ?DriveShaftProps
  • TOl::float: gauss-seidel iteration tolerance
  • MAXITER::int: gauss-seidel maximum iterations
  • iterwarnings::bool: iteration warnings flag

Outputs:

  • OWENS.Inputs:
OWENS.NuMadType

NuMad(nweb,nstack,nsegments,span,airfoil,tetype,twistd,chord,xoffset,aerocenter,stackmattypes,stacklayers,segments,DPtypes,skin,webstack,webdp)

Parameters defining the blade composite layup. See NuMad user guide SAND2012_7028 appendix B for more details

Arguments

  • n_web::Int64: number of shear webs
  • n_stack::Int64: number of predefined composite stacks
  • n_segments::Int64: number of segments around the airfoil
  • span::Vector{Float64}: span-wise position
  • airfoil::Vector{String}: airfoil name
  • te_type::Vector{String}: trailing edge type
  • twist_d::Vector{Float64}: twist_d in degrees
  • chord::Vector{Float64}: chord length
  • xoffset::Vector{Float64}: The distance from the “nose” of a station to the blade reference axis.
  • aerocenter::Vector{Float64}: This is an aerodynamic parameter that is an output from aerodynamic performance analysis of a two-dimensional airfoil section. The aerodynamic center is the point along the chord where the aerodynamic pitching moment does not vary with changes in angle of attack.
  • stack_mat_types::Vector{Int64}: Material numbers used that correspond to each stack number
  • stack_layers::Array{Int64,2}: number of layers at each span used corresponding to each material type (first index corresponds to spanwise position, second index corresponds to the stack number)
  • segments::Array{Float64,2}: normalized starting and stopping points of each section (i.e. leading edge, sparcap, etc). First index corresponds to spanwise position, second index corresponds to the section, except there is an extra first column starting at -1 for the trailing edge. There must be a leading edge position at 0, and the last column must be 1 corresponding to the trailing edge again. Positions are fractions of the chord, lower (HP) is negative, upper (LP) is positive
  • DPtypes::Array{Int64,2}: division point types (NOTE THAT THIS ISN'T IMPLEMENTED AND DOES NOTHING CURRENTLY, i.e. only SINGLE is being used). First index corresponds to spanwise positoin, second corresponds to section number
  • skin_seq::Array{Seq,2}: stack sequence, is an array of structures, each containing a Vector{Int64} of the sequence (i.e. skin[2,5].seq). First index corresponds to spanwise positoin, second index the section
  • web_seq::Array{Seq,2}: same format and meaning as skin sequence, but for the webs with the second index corresponding to the web number
  • web_dp::Array{Seq,2}: same format as skin sequence, but this corresponds to the section numbers the web connects to at the top and bottom at both edges. There are always four entries in the CSV list and the order goes as follows: inboard LP, inboard HP, outboard HP, outboard LP.
OWENS.StrutType

Internal, struct containing the CACTUS geometry file data for a strut

OWENS.plypropertiesMethod

Struct containing

material names

Composites.Material structs for each material name - see ?Composites.Material

OWENS.UnsteadyMethod

Unsteady(model,topModel,mesh,el,aero;getLinearizedMatrices=false)

Executable function for transient analysis. Provides the interface of various external module with transient structural dynamics analysis capability.

# Input
+API Reference · OWENS.jl

Index

Types and functions

OWENS.BinType

Inputs pointing to the file paths of compiled binaries of external libraries

OWENS.BladeType

Internal, struct containing the CACTUS geometry file data for a blade

OWENS.BladeDataType

Internal, struct containing blade specific data and location within the mesh

OWENS.CactusGeomType

Internal, struct containing the CACTUS geometry file data

OWENS.InputsMethod

Inputs(;analysisType = "TNB", turbineStartup = 0, usingRotorSpeedFunction = false, tocp = [0.0,1.1], tocpVinf = [0.0,1.1], numTS = 50.0, deltat = 2e-3, Omegaocp = [7.2,7.2] ./ 60, Vinfocp = [12.0,12.0], aeroLoadsOn = 1, AD15On = false, driveTrainOn = false, generatorOn = false, hydroOn = false, topsideOn = true, interpOrder = 2, hdinputfile = "none", mdinputfile = "none", JgearBox = 0.0, gearRatio = 1.0, gearBoxEfficiency = 1.0, useGeneratorFunction = false, generatorProps = 0.0, ratedTorque = 0.0, zeroTorqueGenSpeed = 0.0, pulloutRatio = 0.0, ratedGenSlipPerc = 0.0, OmegaGenStart = 0.0, omegaControl = false, OmegaInit = 7.2/60, #TODO: simplify this in the code since it is redundant rigid = false, #turn off structural dynamics aeroloadfile = "modulepath/../test/data/inputfilestest/DVAWT2BLCDTElementData.csv", owensfile = "modulepath/../test/data/inputfilestest/15mTowertransientdvawtc2_lcdt.owens", outFilename = "none", numDofPerNode = 6, bladeData = [], driveShaftProps = DriveShaftProps(0.0,0.0) TOl = 1e-4, MAXITER = 300, iterwarnings = true, )

Model inputs for OWENS coupled analysis, struct

Inputs

  • analysisType::string: Newmark Beta time stepping "TNB", Dean time stepping "TD", modal "M"
  • turbineStartup::int: 1 forced start-up using generator as motor, 2 self-starting mode, 0 specified rotor speed mode")
  • usingRotorSpeedFunction::bool: use user specified rotor speed profile function
  • tocp::Array{<:float}: = time points for rotor speed profile (s)
  • tocp_Vinf::Array{<:float}: = time points for specified Vinf profile (s)
  • numTS::int: total number of timesteps to run
  • delta_t::float: timestep interval (s)
  • Omegaocp::Array{<:float}: = rotor speed points for rotor speed profile (Hz)
  • Vinfocp::Array{<:float}: = rotor speed points for specified Vinf profile (Hz)
  • aeroLoadsOn::bool: #0 off, 1 one way, 1.5 one way with deformation from last timestep, 2 two way
  • AD15On::bool: flag to use AD15 for aero
  • driveTrainOn::bool: flag to include drivetrain effects
  • generatorOn::bool: flag to include generator effects
  • hydroOn::bool: flag to include platform coupling
  • interpOrder::int: order used for extrapolating inputs and states, 0 flat, 1 linear, 2 quadratic
  • hd_input_file::string: file path to the HydroDyn .dat input file
  • md_input_file::string: file path to the MoorDyn .dat input file
  • JgearBox::float: gearbox intertia, standard SI units
  • gearRatio::float: gearbox gear ratio
  • gearBoxEfficiency::float: gearbox efficiency (typically 0-1)
  • useGeneratorFunction::bool: = flag to use user specified generator profile
  • generatorProps::float: not used, should clean up
  • ratedTorque::float: Generator rated max torque
  • zeroTorqueGenSpeed::float: rated generator speed (minus slippage)
  • pulloutRatio::float: Fraction of the min/max torque that the generator engages/disengages
  • ratedGenSlipPerc::float: extra speed from slipping?
  • OmegaGenStart::float: speed (Hz) at which generator would kick in
  • omegaControl::bool: false for fixed speed, true for dynamic
  • OmegaInit::float: initial rotor speed (Hz)
  • aeroloadfile::string: string of the name and path for the cactus aeroloads if using the old serial owens call
  • owensfile::string: string of the name and path for the owens input file if using the old serial owens call
  • potflowfile::string: string of the prefix and path for the directory containing the potential flow files from WAMIT (required by HydroDyn)
  • outFilename::string: path and name of output file, will be overwritten if already exists
  • numDofPerNode::int: number of degrees of freedom per node
  • bladeData::BladeData: see ?BladeData, only used if calling the old serial owens function
  • driveShaftProps::DriveShaftProps: see ?DriveShaftProps
  • TOl::float: gauss-seidel iteration tolerance
  • MAXITER::int: gauss-seidel maximum iterations
  • iterwarnings::bool: iteration warnings flag

Outputs:

  • OWENS.Inputs:
OWENS.NuMadType

NuMad(nweb,nstack,nsegments,span,airfoil,tetype,twistd,chord,xoffset,aerocenter,stackmattypes,stacklayers,segments,DPtypes,skin,webstack,webdp)

Parameters defining the blade composite layup. See NuMad user guide SAND2012_7028 appendix B for more details

Arguments

  • n_web::Int64: number of shear webs
  • n_stack::Int64: number of predefined composite stacks
  • n_segments::Int64: number of segments around the airfoil
  • span::Vector{Float64}: span-wise position
  • airfoil::Vector{String}: airfoil name
  • te_type::Vector{String}: trailing edge type
  • twist_d::Vector{Float64}: twist_d in degrees
  • chord::Vector{Float64}: chord length
  • xoffset::Vector{Float64}: The distance from the “nose” of a station to the blade reference axis.
  • aerocenter::Vector{Float64}: This is an aerodynamic parameter that is an output from aerodynamic performance analysis of a two-dimensional airfoil section. The aerodynamic center is the point along the chord where the aerodynamic pitching moment does not vary with changes in angle of attack.
  • stack_mat_types::Vector{Int64}: Material numbers used that correspond to each stack number
  • stack_layers::Array{Int64,2}: number of layers at each span used corresponding to each material type (first index corresponds to spanwise position, second index corresponds to the stack number)
  • segments::Array{Float64,2}: normalized starting and stopping points of each section (i.e. leading edge, sparcap, etc). First index corresponds to spanwise position, second index corresponds to the section, except there is an extra first column starting at -1 for the trailing edge. There must be a leading edge position at 0, and the last column must be 1 corresponding to the trailing edge again. Positions are fractions of the chord, lower (HP) is negative, upper (LP) is positive
  • DPtypes::Array{Int64,2}: division point types (NOTE THAT THIS ISN'T IMPLEMENTED AND DOES NOTHING CURRENTLY, i.e. only SINGLE is being used). First index corresponds to spanwise positoin, second corresponds to section number
  • skin_seq::Array{Seq,2}: stack sequence, is an array of structures, each containing a Vector{Int64} of the sequence (i.e. skin[2,5].seq). First index corresponds to spanwise positoin, second index the section
  • web_seq::Array{Seq,2}: same format and meaning as skin sequence, but for the webs with the second index corresponding to the web number
  • web_dp::Array{Seq,2}: same format as skin sequence, but this corresponds to the section numbers the web connects to at the top and bottom at both edges. There are always four entries in the CSV list and the order goes as follows: inboard LP, inboard HP, outboard HP, outboard LP.
OWENS.StrutType

Internal, struct containing the CACTUS geometry file data for a strut

OWENS.plypropertiesMethod

Struct containing

material names

Composites.Material structs for each material name - see ?Composites.Material

OWENS.UnsteadyMethod

Unsteady(model,topModel,mesh,el,aero;getLinearizedMatrices=false)

Executable function for transient analysis. Provides the interface of various external module with transient structural dynamics analysis capability.

# Input
 * `inputs::Inputs`: see ?Inputs
 * `topModel::FEAModel`: see ?OWENSFEA.FEAModel
 * `mesh::Mesh`: see ?OWENSFEA.Mesh
@@ -141,4 +141,4 @@
 * `regenWindFiles`: =false
 
 # Output
-* `nothing`:
OWENS.simpleGeneratorMethod
simpleGenerator(generatorProps,genSpeed)

Caclulates generator torque for simple induction generator

#Input

  • generatorProps object containing generator properties, see ?model
  • genSpeed::float generator speed (Hz)

#Output

  • genTorque::float generator torque
OWENS.sort_peaksFunction

This function sorts out points where the slope changes sign

OWENS.sum_cyclesMethod

Sums the cycle count given intervals of rangeintervals and meanintervals. The rangeintervals and meanintervals are given in fraction of range size

OWENS.timeIntegrateSubSystemMethod
timeIntegrateSubSystem(M,K,C,F,delta_t,u,udot,uddot)

Internal, performs integration of a system using the Newmark-Beta method (constant-average acceleration sceheme).

#Input

  • M: system mass matrix
  • K: system sttiffness matrix
  • C: system damping matrix
  • F: system force vector
  • delta_t: time step
  • u: displacement at beginning of time step
  • udot: velocity at beginning of time step
  • uddot: acceleration at beginning of time step

#Output

  • unp1: displacement at end of time step
  • udotnp1: velocity at end of time step
  • uddotnp1: acceleration at end of time step
OWENS.transMatMethod
transMat(theta1, theta2, theta3)

Internal, computes the 3x3 transformation matrix for given input rotations. The generated matrix is the closest orthonormal matrix to the Bernoulli-Euler transformation matrix from beam theory, which assumes small rotations. A full description of this matrix is found in the "FASTCoordinateSystems.doc" document by Jason Jonkman.

OWENS.updateRotorRotationMethod

updateRotorRotation updates rotor rotation

updateRotorRotation(Irotor,Crotor,Krotor,shaftTorque,genTorque,azi_s,Omega_s,OmegaDot_s,delta_t)

Internal, updates the rotor rotation given rotor properties and external torques

#Input

  • Irotor: rotor inertia
  • Crotor: arbitrary rotor damping
  • Krotor: arbitrary rotor stiffness
  • shaftTorque: torque from external forces on rotor
  • genTorque: torque from generator
  • azi_s: rotor azimuth (rad) at beginning of time step
  • Omega_s: rotor speed (Hz) at beginning of time step
  • OmegaDot_s: rotor acceleration (Hz/s) at beginning of time step
  • delta_t: time step

#Output

  • azi_sp1: rotor azimuth (rad) at end of time step
  • Omega_sp1: rotor speed (Hz/s) at end of time step
  • OmegaDot_sp1: rotor acceleration (Hz/s) at end of time step
OWENS.vizMethod
viz(;mesh=[],meshFile="none",resultsFile="none",selectedMode=10,sf=10)

Plots the mode shapes of a mode from a modal analysis performed using the OWENS toolkit. Either send the mesh struct or the mesh filename but not both

#Input

  • mesh::OWENSFEA.Mesh: Mesh struct, See ?OWENSFEA.Mesh
  • meshFile::String: optional string containing mesh file name
  • resultsFile::String: optional string containing results file name
  • selectedMode::Int: integer denoting selected mode to plot
  • sf::Float: scale factor for mode shape displacements

#Output None

OWENS.writeOwensNDLMethod
writeOwensNDL(fileRoot, nodes, cmkType, cmkValues)

writes a nodal input file

#Intput

  • fileRoot::string: string path to desired location with name but no extension
  • nodes::int: node numbers for C/M/K
  • cmkType::string: "C" "M" or "K"
  • cmkValues::float: C/M/K value

#Output

  • none:
+* `nothing`:
OWENS.simpleGeneratorMethod
simpleGenerator(generatorProps,genSpeed)

Caclulates generator torque for simple induction generator

#Input

  • generatorProps object containing generator properties, see ?model
  • genSpeed::float generator speed (Hz)

#Output

  • genTorque::float generator torque
OWENS.sort_peaksFunction

This function sorts out points where the slope changes sign

OWENS.sum_cyclesMethod

Sums the cycle count given intervals of rangeintervals and meanintervals. The rangeintervals and meanintervals are given in fraction of range size

OWENS.timeIntegrateSubSystemMethod
timeIntegrateSubSystem(M,K,C,F,delta_t,u,udot,uddot)

Internal, performs integration of a system using the Newmark-Beta method (constant-average acceleration sceheme).

#Input

  • M: system mass matrix
  • K: system sttiffness matrix
  • C: system damping matrix
  • F: system force vector
  • delta_t: time step
  • u: displacement at beginning of time step
  • udot: velocity at beginning of time step
  • uddot: acceleration at beginning of time step

#Output

  • unp1: displacement at end of time step
  • udotnp1: velocity at end of time step
  • uddotnp1: acceleration at end of time step
OWENS.transMatMethod
transMat(theta1, theta2, theta3)

Internal, computes the 3x3 transformation matrix for given input rotations. The generated matrix is the closest orthonormal matrix to the Bernoulli-Euler transformation matrix from beam theory, which assumes small rotations. A full description of this matrix is found in the "FASTCoordinateSystems.doc" document by Jason Jonkman.

OWENS.updateRotorRotationMethod

updateRotorRotation updates rotor rotation

updateRotorRotation(Irotor,Crotor,Krotor,shaftTorque,genTorque,azi_s,Omega_s,OmegaDot_s,delta_t)

Internal, updates the rotor rotation given rotor properties and external torques

#Input

  • Irotor: rotor inertia
  • Crotor: arbitrary rotor damping
  • Krotor: arbitrary rotor stiffness
  • shaftTorque: torque from external forces on rotor
  • genTorque: torque from generator
  • azi_s: rotor azimuth (rad) at beginning of time step
  • Omega_s: rotor speed (Hz) at beginning of time step
  • OmegaDot_s: rotor acceleration (Hz/s) at beginning of time step
  • delta_t: time step

#Output

  • azi_sp1: rotor azimuth (rad) at end of time step
  • Omega_sp1: rotor speed (Hz/s) at end of time step
  • OmegaDot_sp1: rotor acceleration (Hz/s) at end of time step
OWENS.vizMethod
viz(;mesh=[],meshFile="none",resultsFile="none",selectedMode=10,sf=10)

Plots the mode shapes of a mode from a modal analysis performed using the OWENS toolkit. Either send the mesh struct or the mesh filename but not both

#Input

  • mesh::OWENSFEA.Mesh: Mesh struct, See ?OWENSFEA.Mesh
  • meshFile::String: optional string containing mesh file name
  • resultsFile::String: optional string containing results file name
  • selectedMode::Int: integer denoting selected mode to plot
  • sf::Float: scale factor for mode shape displacements

#Output None

OWENS.writeOwensNDLMethod
writeOwensNDL(fileRoot, nodes, cmkType, cmkValues)

writes a nodal input file

#Intput

  • fileRoot::string: string path to desired location with name but no extension
  • nodes::int: node numbers for C/M/K
  • cmkType::string: "C" "M" or "K"
  • cmkValues::float: C/M/K value

#Output

  • none:
diff --git a/dev/setup/index.html b/dev/setup/index.html index fdcf55b1..9ef7b00f 100644 --- a/dev/setup/index.html +++ b/dev/setup/index.html @@ -241,4 +241,4 @@ # Pkg.add("PyPlot")

Testing Your Build of OWENS

clone the owens repository which contains example run scripts, the turbine mesh generator

git clone git@github.com:sandialabs/OWENS.jl

If you get an error about attempting to access library xyz, but it doesn't exist, check the path to openfast in the scripts at the top level of the error to make sure the path and library file matches, most of these are:

adi_lib = "path/to/openfast/build/modules/libraryfolder/libraryname"
cd OWENS.jl/examples/SNL34m
 julia SNL34mVAWTNormalOperation.jl

You can visualize the output vtk/vtu/pvd paraview files with paraview, install paraview via apt-get -y install paraview

You can also run julia more interactively and maintain variables in scope for inspections etc if you don't have an ide set up (but be careful of assuming a variable was cleared when it wasn't!) by starting the repl and essentially copying and pasing the run script via

julia
    include("path/to/file.jl")

Visual Studio Code IDE

You can install VScode and get a debugger etc. In VScode, there is a setting file which sets up VS code for julia and sets some quick keys that can be changed if desired (OWENS.jl/docs/setup/OWENSJuliaVS.code-profile).

With the sample profile loaded into VSCode, If you want to clear out all the variables and restart do

cmd-j cmd-k,

if you want to clear out the console

cmd-j cmd-c

open the workspace

cmd-j cmd-w

run highlighted code

shift-enter

run the currently selected file

cmd-shift-enter

You can also use the gui buttons.

VSCode Julia Debugger

It is a lot like matlab, but you are working with a compiled code, so in the debugger portion of the vscode gui, you need to check which code is compiled and which is interpereted, and turn off the compilation for the packages you are trying to debug. The debugger will not step through compiled code. Also, some lines of code have many instructions, particularly function calls with conversions on the inputs, etc, so if you are trying to use the step in gui button, you may need to click it multiple times.

If you are working on a module and want it to reload with your most recent local changes without committing to master, pushing, and telling julia to update the package which is pointing to the git repo:

Install custom repositories you want to develop

start Julia from the cloned directory and use the command:

] dev .

This type of installation will cause the module to reload each time Julia starts without needing to tell Julia to update. You are developing the current directory

alternatively, instead of using or import to get access to the module, within julia

include("path/to/module.jl/source/module.jl")

then you don't even have to restart julia when you make changes, but be careful to only do this for a limited number of modules, and if you are changing constants, like c library interfaces, or the libraries themselves, then you need to restart julia to get it to pick up the most recent changes.

You can also install a specific branch of a remote repository package without having to clone the repo and checkout the branch:

using Pkg
-Pkg.add(url = "git@github.com:sandialabs/OWENS.jl.git", rev = "dev")
+Pkg.add(url = "git@github.com:sandialabs/OWENS.jl.git", rev = "dev")