4.14.2. Theory Manual for the Tuned Mass Damper Module in OpenFAST
- Author
William La Cava & Matthew A. Lackner Department of Mechanical and Industrial Engineering University of Massachusetts Amherst Amherst, MA 01003
wlacava@umass.edu
,lackner@ecs.umass.edu
This document was edited by Jason M. Jonkman of NREL
to include an independent vertically oriented TMD in OpenFAST.
jason.jonkman@nrel.gov
This manual describes updated functionality in OpenFAST that simulates the addition of tuned mass dampers (TMDs) for structural control. The dampers can be added to the blades, nacelle, tower, or substructure. For application studies of these systems, refer to [stc-LR11a, stc-LR11b, stc-NRL13, stc-SL13, stc-SL11, stc-SL14]. The TMDs are three independent, 1 DOF, linear mass spring damping elements that act in the local \(x\), \(y\), and \(z\) coordinate systems of each component. The other functionality of the structural control (StC) module, including an omnidirectional TMD and TLCD are not documented herein. We first present the theoretical background and then describe the code changes.
4.14.2.1. Theoretical Background
4.14.2.1.1. Definitions
Variable |
Description |
---|---|
\(O\) |
origin point of global inertial reference frame |
\(P\) |
origin point of non-inertial reference frame fixed to component (blade, nacelle, tower, substructure) where TMDs are at rest |
\(TMD\) |
location point of a TMD |
\(G\) |
axis orientation of global reference frame |
\(N\) |
axis orientation of local component reference frame with unit vectors \(\hat{\imath}, \hat{\jmath}, \hat{k}\) |
\(\vec{r}_{_{_{TMD/O_G}}} = \left[ \begin{array}{c} x \\ y\\ z \end{array} \right]_{_{TMD/O_G}}\) |
position of a TMD with respect to (w.r.t.) \(O\) with orientation \(G\) |
\(\vec{r}_{_{_{TMD/P_N}}} = \left[ \begin{array}{c} x \\ y\\ z \end{array} \right]_{_{TMD/P_N}}\) |
position of a TMD w.r.t. \(P_N\) |
\(\vec{r}_{_{_{TMD_X}}}\) |
position vector for \(TMD_X\) |
\(\vec{r}_{_{_{TMD_Y}}}\) |
position vector for \(TMD_Y\) |
\(\vec{r}_{_{_{TMD_Z}}}\) |
position vector for \(TMD_Z\) |
\(\vec{r}_{_{P/O_G}} =\left[ \begin{array}{c} x \\ y\\ z \end{array} \right]_{_{P/O_G}}\) |
position vector of component w.r.t. \(O_G\) |
\(R_{_{N/G}}\) |
3 x 3 rotation matrix transforming orientation \(G\) to \(N\) |
\(R_{_{G/N}} = R_{_{N/G}}^T\) |
transformation from \(N\) to \(G\) |
\(\vec{\omega}_{_{N/O_N}} = \dot{\left[ \begin{array}{c} \theta \\ \phi \\ \psi \end{array} \right]}_{_{N/O_N}}\) |
angular velocity of component in orientation \(N\); defined likewise for \(G\) |
\(\dot{\vec{\omega}}_{_{N/O_N}} = \vec{\alpha}_{_{N/O_N}}\) |
angular acceleration of component |
\(\vec{a}_{G/O_G} = \left[ \begin{array}{c}0 \\ 0\\ -g \end{array} \right]_{/O_G}\) |
gravitational acceleration in global coordinates |
\(\vec{a}_{G/O_N} = R_{_{N/G}} \vec{a}_{G/O_G} = \left[ \begin{array}{c}a_{_{G_X}} \\ a_{_{G_Y}}\\ a_{_{G_Z}} \end{array} \right]_{/O_N}\) |
gravity w.r.t. \(O_N\) |
4.14.2.1.2. Equations of motion
The position vectors of the TMDs in the two reference frames \(O\) and \(P\) are related by
Expressed in orientation \(N\),
Differentiating, 1
differentiating again gives the acceleration of the TMD w.r.t. \(P\) (the nacelle position), oriented with \(N\):
The right-hand side contains the following terms:
\(\ddot{\vec{r}}_{_{TMD/O_N}}\) |
acceleration of the TMD in the inertial frame \(O_N\) |
\(\ddot{\vec{r}}_{_{P/O_N}} = R_{_{N/G}} \ddot{\vec{r}}_{_{P/O_G}}\) |
acceleration of the Nacelle origin \(P\) w.r.t. \(O_N\) |
\(\vec{\omega}_{_{N/O_N}} = R_{_{N/G}} \vec{\omega}_{_{N/O_G}}\) |
angular velocity of nacelle w.r.t. \(O_N\) |
\(\vec{\omega}_{_{N/O_N}} \times (\vec{\omega}_{_{N/O_N}} \times \vec{r}_{_{TMD/P_N}})\) |
Centripetal acceleration |
\(\vec{\alpha}_{_{N/O_N}} \times \vec{r}_{_{TMD/P_N}}\) |
Tangential acceleration |
\(2\vec{\omega}_{_{N/O_N}} \times \dot{\vec{r}}_{_{TMD/P_N}}\) |
Coriolis acceleration |
The acceleration in the inertial frame \(\ddot{\vec{r}}_{_{TMD/O_N}}\) can be replaced with a force balance
Substituting the force balance into Equation (4.201) gives the general equation of motion for a TMD:
We will now solve the equations of motion for \(TMD_X\), \(TMD_Y\), and \(TMD_Z\).
4.14.2.1.2.1. TMD_X :
The external forces \(\vec{F}_{_{TMD_X/O_N}}\) are given by
\(TMD_X\) is fixed to frame \(N\) in the \(y\) and \(z\) directions so that
The other components of Eqn. (4.202) are:
Therefore \(\ddot{x}_{_{TMD_X/P_N}}\) is governed by the equations
The forces \(F_{Y_{_{TMD_X/O_N}}}\) and \(F_{Z_{_{TMD_X/O_N}}}\) are solved noting \(\ddot{y}_{_{TMD_X/P_N}} = \ddot{z}_{_{TMD_X/P_N}} = 0\):
4.14.2.1.2.2. TMD_Y:
The external forces \(\vec{F}_{_{TMD_Y/P_N}}\) on \(TMD_Y\) are given by
\(TMD_Y\) is fixed to frame \(N\) in the \(x\) and \(z\) directions so that
The other components of Eqn. (4.202) are:
Therefore \(\ddot{y}_{_{TMD_Y/P_N}}\) is governed by the equations
The forces \(F_{X_{_{TMD_Y/O_N}}}\) and \(F_{Z_{_{TMD_Y/O_N}}}\) are solved noting \(\ddot{x}_{_{TMD_Y/P_N}} = \ddot{z}_{_{TMD_Y/P_N}} = 0\):
4.14.2.1.2.3. TMD_Z :
The external forces \(\vec{F}_{_{TMD_Z/O_N}}\) are given by
where \(F_{Z_{PreLoad}}\) is a spring pre-load to shift the neutral position when gravity acts upon the mass for the \(TMD_Z\). \(TMD_Z\) is fixed to frame \(N\) in the \(x\) and \(y\) directions so that
The other components of Eqn. (4.202) are:
Therefore \(\ddot{z}_{_{TMD_Z/P_N}}\) is governed by the equations
The forces \(F_{X_{_{TMD_Z/O_N}}}\) and \(F_{Z_{_{TMD_Z/O_N}}}\) are solved noting \(\ddot{x}_{_{TMD_Z/P_N}} = \ddot{y}_{_{TMD_Z/P_N}} = 0\):
4.14.2.1.3. State Equations
4.14.2.1.3.1. Inputs:
The inputs are the component linear acceleration and angular position, velocity and acceleration:
4.14.2.1.3.2. States:
The states are the position and velocity of the TMDs along their respective DOFs in the component reference frame:
The equations of motion can be re-written as a system of non-linear first-order equations of the form
where
and
The inputs are coupled to the state variables, resulting in A and B as \(f(\vec{u})\).
4.14.2.1.4. Outputs
The output vector \(\vec{Y}\) is
The output includes reaction forces corresponding to \(F_{Y_{_{TMD_X/O_N}}}\), \(F_{Z_{_{TMD_X/O_N}}}\), \(F_{X_{_{TMD_Y/O_N}}}\), \(F_{Z_{_{TMD_Y/O_N}}}\), \(F_{X_{_{TMD_Z/O_N}}}\), and \(F_{Y_{_{TMD_Z/O_N}}}\) from Eqns. (4.204), (4.205), (4.207), (4.208), (4.210), and (4.211). The resulting forces \(\vec{F}_{_{P_G}}\) and moments \(\vec{M}_{_{P_G}}\) acting on the component are
and
4.14.2.1.4.1. Stop Forces
The extra forces \(F_{StopFrc_{X}}\), \(F_{StopFrc_{Y}}\), and \(F_{StopFrc_{Z}}\) are added to output forces in the case that the movement of TMD_X, TMD_Y, or TMD_Z exceeds the maximum track length for the mass. Otherwise, they equal zero. The track length has limits on the positive and negative ends in the TMD direction (X_PSP and X_NSP, Y_PSP and Y_NSP, and Z_PSP and Z_NSP). If we define a general maximum and minimum displacements as \(x_{max}\) and \(x_{min}\), respectively, the stop forces have the form
where \(\Delta x\) is the distance the mass has traveled beyond the stop position and \(k_S\) and \(c_S\) are large stiffness and damping constants.
4.14.2.1.4.2. Pre-Load Forces
The extra force \(F_{Z_{PreLoad}}\) is added to the output forces as a method to shift the at rest position of the TMD_Z when gravity is acting on it. This is particularly useful for substructure mounted StCs when very large masses with soft spring constants are used. This appears in the term \(\vec{F}_{_{TMD_Z/O_N}}\) and in eq equations of motion given by (4.212) and resulting forces in (4.213).
4.14.2.2. Code Modifications
The Structural Control (StC) function is a submodule linked into ServoDyn. In addition to references in ServoDyn.f90 and ServoDyn.txt, new files that contain the StC module are listed below.
4.14.2.2.1. New Files
4.14.2.2.2. Variables
DataType |
Variable name |
---|---|
InitInput |
|
InputFile |
|
Gravity |
|
\(\vec{r}_{_{N/O_G}}\) |
|
Input u |
|
\(\ddot{\vec{r}}_{_{P/O_G}}\) |
|
\(\vec{R}_{_{N/O_G}}\) |
|
\(\vec{\omega}_{_{N/O_G}}\) |
|
\(\vec{\alpha}_{_{N/O_G}}\) |
|
Parameter p |
|
\(m_x\) |
|
\(c_x\) |
|
\(k_x\) |
|
\(m_y\) |
|
\(c_y\) |
|
\(k_y\) |
|
\(m_z\) |
|
\(c_z\) |
|
\(k_z\) |
|
\(K_S = \left[ k_{SX}\hspace{1em}k_{SY}\hspace{1em}k_{SZ}\right]\) |
|
\(C_S = \left[c_{SX}\hspace{1em}c_{SY}\hspace{1em}c_{SZ}\right]\) |
|
\(P_{SP}=\left[X_{PSP}\hspace{1em}Y_{PSP}\hspace{1em}Z_{PSP}\right]\) |
|
\(P_{SP}=\left[X_{NSP}\hspace{1em}Y_{NSP}\hspace{1em}Z_{NSP}\right]\) |
|
\(F{ext}\) |
|
\(Gravity\) |
|
TMDX_DOF |
|
TMDY_DOF |
|
TMDZ_DOF |
|
\(X_{DSP}\) |
|
\(Y_{DSP}\) |
|
\(Z_{DSP}\) |
|
State x |
|
\(\vec{tmd_x}\) |
|
Output y |
|
Mesh |
The input, parameter, state and output definitions are summarized in Table 1. The inputs from file are listed in Table 2.
Field Name |
Field Type |
Description |
---|---|---|
TMD_CMODE |
int |
Control Mode (1:passive, 2:active) |
TMD_X_DOF |
logical |
DOF on or off |
TMD_Y_DOF |
logical |
DOF on or off |
TMD_Z_DOF |
logical |
DOF on or off |
TMD_X_DSP |
real |
TMD_X initial displacement |
TMD_Y_DSP |
real |
TMD_Y initial displacement |
TMD_Z_DSP |
real |
TMD_Z initial displacement |
TMD_X_M |
real |
TMD mass |
TMD_X_K |
real |
TMD stiffness |
TMD_X_C |
real |
TMD damping |
TMD_Y_M |
real |
TMD mass |
TMD_Y_K |
real |
TMD stiffness |
TMD_Y_C |
real |
TMD damping |
TMD_Z_M |
real |
TMD mass |
TMD_Z_K |
real |
TMD stiffness |
TMD_Z_C |
real |
TMD damping |
TMD_X_PSP |
real |
positive stop position (maximum X mass displacement) |
TMD_X_NSP |
real |
negative stop position (minimum X mass displacement) |
TMD_X_K_SX |
real |
stop spring stiffness |
TMD_X_C_SX |
real |
stop spring damping |
TMD_Y_PSP |
real |
positive stop position (maximum Y mass displacement) |
TMD_Y_NSP |
real |
negative stop position (minimum Y mass displacement) |
TMD_Y_K_S |
real |
stop spring stiffness |
TMD_Y_C_S |
real |
stop spring damping |
TMD_Z_PSP |
real |
positive stop position (maximum Z mass displacement) |
TMD_Z_NSP |
real |
negative stop position (minimum Z mass displacement) |
TMD_Z_K_S |
real |
stop spring stiffness |
TMD_Z_C_S |
real |
stop spring damping |
TMD_P_X |
real |
x origin of P in nacelle coordinate system |
TMD_P_Y |
real |
y origin of P in nacelle coordinate system |
TMD_P_Z |
real |
z origin of P in nacelle coordinate system |