Skip to content

Commit 98c8d0e

Browse files
authored
Merge pull request OpenFAST#3147 from JustinPorter88/modal-damping
Modal damping
2 parents 144e2cf + fba33cd commit 98c8d0e

File tree

23 files changed

+1019
-321
lines changed

23 files changed

+1019
-321
lines changed

docs/source/user/api_change.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ ElastoDyn 79 PBrIner(3) 200
6464
ElastoDyn 80 BlPIner(1) 28578 BlPIner(1) - Pitch inertia of an undeflected blade, blade 1 (kg m^2)
6565
ElastoDyn 81 BlPIner(2) 28578 BlPIner(2) - Pitch inertia of an undeflected blade, blade 2 (kg m^2)
6666
ElastoDyn 82 BlPIner(3) 28578 BlPIner(3) - Pitch inertia of an undeflected blade, blade 3 (kg m^2) [unused for 2 blades]
67+
BeamDyn 10 ------ Modal Damping [used only if damp_type=2] --------------------------------
68+
BeamDyn 11 n_modes 3 n_modes - Number of modal damping coefficients (-)
69+
BeamDyn 12 zeta 0.1, 0.2, 0.3 zeta - Damping coefficients for mode 1 through n_modes
6770
ServoDyn 9 PitNeut(1) 0 PitNeut(1) - Blade 1 neutral pitch position--pitch spring moment is zero at this position *[unused when* **PCMode>0** and **t>=TPCOn** *]*
6871
ServoDyn 10 PitNeut(2) 0 PitNeut(2) - Blade 2 neutral pitch position--pitch spring moment is zero at this position *[unused when* **PCMode>0** and **t>=TPCOn** *]*
6972
ServoDyn 11 PitNeut(3) 0 PitNeut(3) - Blade 3 neutral pitch position--pitch spring moment is zero at this position *[unused when* **PCMode>0** and **t>=TPCOn** *]* *[unused for 2 blades]*

docs/source/user/beamdyn/appendix.rst

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ OpenFAST+BeamDyn and stand-alone BeamDyn (static and dynamic) simulations all re
1616
:download:`(NREL 5MW static example) <examples/bd_primary_nrel_5mw.inp>`: This file includes information on the numerical-solution parameters (e.g., numerical damping, quadrature rules), and the geometric definition of the beam reference line via "members" and "key points". This file also specifies the "blade input file."
1717

1818
2) BeamDyn blade input file :download:`(NREL 5MW example) <examples/nrel_5mw_blade.inp>`:
19+
This file specifies the blade sectional properties at various stations along the blade.
20+
The file includes stiffness and mass matrices at each station, as well as damping parameters.
21+
Note that the example file uses stiffness-proportional damping (damp_flag = 1). For modal
22+
damping (damp_flag = 2), the n_modes parameter should be set to a non-zero value and
23+
followed by the corresponding modal damping ratios (zeta values) represented as the
24+
fraction of critical damping.
1925

2026
Stand-alone BeamDyn simulation also require a driver input file; we list here examples for static and dynamic simulations:
2127

@@ -56,3 +62,21 @@ outputs are expressed in one of the following three coordinate systems:
5662
:align: center
5763

5864
BeamDyn Output Channel List
65+
66+
.. note::
67+
68+
**New Output Channels (v5.0 and later):**
69+
70+
BeamDyn now includes additional output channels for applied loads mapped to the root node.
71+
These channels provide the total applied loads (both distributed and point loads) resolved
72+
at the root of the blade, expressed in both the root coordinate system (r) and global
73+
inertial frame (g):
74+
75+
- **RootAppliedFxr, RootAppliedFyr, RootAppliedFzr**: Applied force components in r-frame
76+
- **RootAppliedMxr, RootAppliedMyr, RootAppliedMzr**: Applied moment components in r-frame
77+
- **RootAppliedFxg, RootAppliedFyg, RootAppliedFzg**: Applied force components in g-frame
78+
- **RootAppliedMxg, RootAppliedMyg, RootAppliedMzg**: Applied moment components in g-frame
79+
80+
These outputs are useful for understanding the total aerodynamic and other external loads
81+
acting on the blade, particularly when diagnosing load imbalances or validating force
82+
distributions.

docs/source/user/beamdyn/examples/nrel_5mw_blade.inp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
------- BEAMDYN V1.00.* INDIVIDUAL BLADE INPUT FILE --------------------------
22
NREL 5MW Blade
3-
---------------------- BLADE PARAMETERS --------------------------------------
4-
49 station_total - Number of blade input stations (-)
5-
1 damp_flag - Damping flag: 0: no damping; 1: damped
6-
---------------------- DAMPING COEFFICIENT------------------------------------
3+
------ Blade Parameters --------------------------------------------------------
4+
49 station_total - Number of blade input stations (-)
5+
1 damp_type - Damping type (switch) {0: none, 1: stiffness-proportional, 2: modal}
6+
------ Stiffness-Proportional Damping [used only if damp_type=1] ---------------
77
mu1 mu2 mu3 mu4 mu5 mu6
88
(-) (-) (-) (-) (-) (-)
9-
1.0E-03 1.0E-03 1.0E-03 0.0014 0.0022 0.0022
10-
---------------------- DISTRIBUTED PROPERTIES---------------------------------
9+
1.0E-03 1.0E-03 1.0E-03 0.0014 0.0022 0.0022
10+
------ Modal Damping [used only if damp_type=2] --------------------------------
11+
4 n_modes - Number of modal damping coefficients (-)
12+
0.01 0.02 0.03 0.04 zeta - Damping coefficients for mode 1 through n_modes
13+
------ Distributed Properties --------------------------------------------------
1114
0.000000
1215
9.729480E+08 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00
1316
0.000000E+00 9.729480E+08 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00

docs/source/user/beamdyn/input_files.rst

Lines changed: 90 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -215,15 +215,22 @@ contents of the BeamDyn input file (useful for debugging errors in the
215215
input file).
216216

217217
The ``QuasiStaticInit`` flag indicates if BeamDyn should perform a quasi-static
218-
solution at initialization to better initialize its states. In general, this should
219-
be set to true for better numerical performance (it reduces startup transients).
218+
solution at initialization to better initialize its states. This option is only
219+
available when coupled to OpenFAST with dynamic analysis enabled. When set to ``TRUE``,
220+
BeamDyn will perform a steady-state startup (SSS) solve that includes centripetal
221+
accelerations to reduce startup transients and improve numerical performance. This
222+
is particularly useful for rotating blade simulations where the initial conditions
223+
would otherwise cause spurious transients. The keyword "DEFAULT" sets this to ``FALSE``.
220224

221225
``rhoinf`` specifies the numerical damping parameter (spectral radius
222226
of the amplification matrix) in the range of :math:`[0.0,1.0]` used in
223227
the generalized-\ :math:`\alpha` time integrator implemented in BeamDyn
224-
for dynamic analysis. For ``rhoinf = 1.0``, no
225-
numerical damping is introduced and the generalized-\ :math:`\alpha`
226-
scheme is identical to the Newmark scheme; for
228+
for dynamic analysis. **Note: This parameter is only used when BeamDyn is run
229+
in loose coupling mode (e.g., stand-alone with the driver or when loose coupling
230+
is explicitly selected in OpenFAST). When tight coupling is used in OpenFAST,
231+
time integration is handled by the glue code and this parameter is ignored.**
232+
For ``rhoinf = 1.0``, no numerical damping is introduced and the
233+
generalized-\ :math:`\alpha` scheme is identical to the Newmark scheme; for
227234
``rhoinf = 0.0``, maximum numerical damping is
228235
introduced. Numerical damping may help produce numerically stable
229236
solutions.
@@ -245,9 +252,11 @@ between two input stations into “Refine factor” of segments. The keyword
245252
This entry is not used in Gauss quadrature.
246253

247254
``N_Fact`` specifies a parameter used in the modified Newton-Raphson
248-
scheme. If ``N_Fact = 1`` a full Newton
249-
iteration scheme is used, i.e., the global tangent stiffness matrix is
250-
computed and factorized at each iteration; if
255+
scheme. **Note: This parameter is only used when BeamDyn is run in loose coupling
256+
mode (stand-alone with the driver or when loose coupling is explicitly selected in
257+
OpenFAST). When tight coupling is used in OpenFAST, this parameter is ignored.**
258+
If ``N_Fact = 1`` a full Newton iteration scheme is used, i.e., the global tangent
259+
stiffness matrix is computed and factorized at each iteration; if
251260
``N_Fact > 1`` a modified Newton iteration
252261
scheme is used, i.e., the global stiffness matrix is computed and
253262
factorized every ``N_Fact`` iterations within each time step. The
@@ -265,15 +274,19 @@ load steps as opposed to one single large load step which may cause divergence o
265274
Newton-Raphson scheme. The keyword “DEFAULT” sets ``load_retries = 20``.
266275

267276
``NRMax`` specifies the maximum number of iterations per time step in
268-
the Newton-Raphson scheme. If convergence is not reached within this
269-
number of iterations, BeamDyn returns an error message and terminates
270-
the simulation. The keyword “DEFAULT” sets
277+
the Newton-Raphson scheme. **Note: This parameter is only used when BeamDyn is run
278+
in loose coupling mode (stand-alone with the driver or when loose coupling is explicitly
279+
selected in OpenFAST). When tight coupling is used in OpenFAST, this parameter is ignored.**
280+
If convergence is not reached within this number of iterations, BeamDyn returns an error
281+
message and terminates the simulation. The keyword "DEFAULT" sets
271282
``NRMax = 10``.
272283

273284
``Stop_Tol`` specifies a tolerance parameter used in convergence
274285
criteria of a nonlinear solution that is used for the termination of the
275-
iteration. The keyword “DEFAULT” sets
276-
``Stop_Tol = 1.0E-05``. Please refer to
286+
iteration. **Note: This parameter is only used when BeamDyn is run in loose coupling
287+
mode (stand-alone with the driver or when loose coupling is explicitly selected in
288+
OpenFAST). When tight coupling is used in OpenFAST, this parameter is ignored.**
289+
The keyword "DEFAULT" sets ``Stop_Tol = 1.0E-05``. Please refer to
277290
:numref:`convergence-criterion` for more details.
278291

279292
``tngt_stf_fd`` is a boolean that sets the flag to compute the tangent stiffness
@@ -468,18 +481,26 @@ Blade Parameters
468481
``Station_Total`` specifies the number cross-sectional stations along
469482
the blade axis used in the analysis.
470483

471-
``Damp_Type`` specifies if structural damping is considered in the
472-
analysis. If ``Damp_Type = 0``, then no damping is
473-
considered in the analysis and the six damping coefficient in the next
474-
section will be ignored. If ``Damp_Type = 1``, structural
475-
damping will be included in the analysis.
484+
``damp_type`` specifies the type of structural damping to be used in the
485+
analysis. There are three options:
476486

477-
Damping Coefficient
478-
~~~~~~~~~~~~~~~~~~~
487+
- ``damp_type = 0``: No damping is considered in the analysis. The damping
488+
coefficients in the following sections will be ignored.
489+
- ``damp_type = 1``: Stiffness-proportional damping is applied.
490+
The six damping coefficients (``beta``) in the Stiffness-Proportional Damping
491+
section are used to scale the 6x6 stiffness matrix at each cross section.
492+
- ``damp_type = 2``: Modal damping is applied. The modal fractions of critical damping
493+
(``zeta``) for the first ``n_modes`` modes are used. BeamDyn internally computes
494+
the modal properties and applies damping in the modal coordinates.
495+
496+
Stiffness-Proportional Damping Coefficients
497+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
479498

480-
This section specifies six damping coefficients, :math:`\mu_{ii}` with
499+
This section specifies six damping coefficients, :math:`\mu_{ii}` (also called ``beta``) with
481500
:math:`i \in [1,6]`, for six DOFs (three translations and three
482-
rotations). Viscous damping is implemented in BeamDyn where the damping
501+
rotations). These coefficients are only used when ``damp_flag = 1``.
502+
503+
Viscous damping is implemented in BeamDyn where the damping
483504
forces are proportional to the strain rate. These are
484505
stiffness-proportional damping coefficients, whereby the
485506
:math:`6\times6` damping matrix at each cross section is scaled from the
@@ -510,6 +531,53 @@ coefficient matrix defined as
510531
0 & 0 & 0 & 0 & 0 & \mu_{66} \\
511532
\end{bmatrix}
512533
534+
Modal Damping Coefficients
535+
~~~~~~~~~~~~~~~~~~~~~~~~~~
536+
537+
This section specifies modal damping parameters and is only used when ``damp_flag = 2``.
538+
539+
``n_modes`` specifies the number of modes for which modal damping coefficients
540+
are provided. BeamDyn will compute the natural frequencies and mode shapes of the
541+
blade and apply damping in the modal coordinates.
542+
543+
``zeta`` is an array of ``n_modes`` modal damping ratios, one for each mode.
544+
Each value should typically be between 0.0 (no damping) and 1.0 (critical damping),
545+
though higher values are permitted. Common values for composite blade structures
546+
are less than 0.05 (less than 5% of critical damping). The damping
547+
ratios are applied to modes 1 through ``n_modes`` in order of increasing frequency.
548+
549+
After ``n_modes`` damping values are assigned that grow proportional to the modal
550+
natural frequency. This proportionality is assigned to match the ``zeta`` value
551+
of last mode with prescribed damping.
552+
553+
If modal damping is selected, BeamDyn calculates nodal damping forces based on the node velocities,
554+
rotated to the initial node orientation, and the mode shape after quasi-static initialization has been performed,
555+
if it was requested. These nodal damping forces are then transformed back to the current node orientation.
556+
557+
When using modal damping, ``PitchDOF`` needs to be set to ``TRUE`` in ElastoDyn to give BeamDyn
558+
a correct root pitch velocity. Otherwise, blade pitching will give spurious damping behavior.
559+
560+
Recommendations:
561+
562+
- It is recommended to stop inputting zeta values before reaching the first axial mode (typically around 18 modes).
563+
Users may experiment with including more or fewer modes to observe the effect on results.
564+
- Avoid prescribing a final zeta value of 1.0 (e.g., do not specify 18 modes with realistic zeta values followed by a 19th mode with zeta=1.0), as this can significantly degrade result quality.
565+
- When attempting to match stiffness-proportional damping (:math:`\mu`), the OpenFAST toolbox may fail to
566+
provide reliable damping values matched with mode numbers once some modes become critically damped.
567+
Reducing the number of modes (e.g., from 40 to 30) can help if higher modes are indexed incorrectly.
568+
- In some cases, axial loads appear to be driven by the axial motion of non-axial modes.
569+
- Verify that the modal frequencies and modal participation factors output in ``InputFile.BD.R*.B*.modes.csv`` file are consistent with the expected modes.
570+
This file is only output when modal damping is used.
571+
The number of output modes in this file is equal to the degrees of freedom of the blade.
572+
However, modes tend to become numerical artifacts past the first few modes of a given type.
573+
574+
Notes:
575+
576+
- Modal damping is experimental in OpenFAST 5.0, so should be used with care.
577+
- Modal damping is mainly supported for tight coupling with OpenFAST.
578+
- In some cases, when used with loose coupling or BeamDyn Driver, a much smaller time step may be needed to get reaction forces to converge with the tight coupling case and/or stiffness-proportional damping (:math:`\mu`) case.
579+
- Output forces internal forces from BeamDyn at quadrature points do not capture contributions from the modal damping forces.
580+
513581
Distributed Properties
514582
~~~~~~~~~~~~~~~~~~~~~~
515583

docs/source/user/beamdyn/introduction.rst

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ Introduction
55

66
BeamDyn is a time-domain structural-dynamics module for slender
77
structures created by the National Renewable Energy Laboratory (NREL)
8-
through support from the U.S. Department of Energy Wind and Water Power
8+
through support from the U.S. Department of Energy Wind and Water Power
99
Program and the NREL Laboratory Directed Research and Development (LDRD)
1010
program through the grant “High-Fidelity Computational Modeling of
11-
Wind-Turbine Structural Dynamics”, see References :cite:`Wang:SFE2013,Wang:GEBT2013,Wang:GEBT2014,Wang:2015`.
11+
Wind-Turbine Structural Dynamics”, see References :cite:`Wang:SFE2013,Wang:GEBT2013,Wang:GEBT2014,Wang:2015`.
1212
The module has been coupled into the FAST aero-hydro-servo-elastic wind
1313
turbine multi-physics engineering tool where it used to model blade
1414
structural dynamics. The BeamDyn module follows the requirements of the
15-
FAST modularization framework, see References :cite:`Jonkman:2013`;
15+
FAST modularization framework, see References :cite:`Jonkman:2013`;
1616
:cite:`Sprague:2013,Sprague:2014,website:FASTModularizationFramework`,
1717
couples to FAST version 8, and provides new capabilities for modeling
1818
initially curved and twisted composite wind turbine blades undergoing
@@ -64,7 +64,7 @@ outputs the blade displacements, velocities, and accelerations along the
6464
beam length, which are used by AeroDyn to calculate the local
6565
aerodynamic loads (distributed along the length) that are used as inputs
6666
for BeamDyn. In addition, BeamDyn can calculate member internal reaction
67-
loads, as requested by the user. Please refers to Figure [fig:FlowChart]
67+
loads, as requested by the user. Please refers to Figure [fig:FlowChart]
6868
for the coupled interactions between BeamDyn and other modules in FAST.
6969
When coupled to FAST, BeamDyn replaces the more simplified blade
7070
structural model of ElastoDyn that is still available as an option, but
@@ -100,12 +100,12 @@ loads specified at FE nodes, or a combination of the two. When BeamDyn
100100
is coupled to FAST, the blade analysis node discretization may be
101101
independent between BeamDyn and AeroDyn.
102102

103-
This document is organized as follows. Section :ref:`running-beamdyn` details how to
103+
This document is organized as follows. Section :ref:`running-beamdyn` details how to
104104
obtain the BeamDyn and FAST software archives and run either the
105105
stand-alone version of BeamDyn or BeamDyn coupled to FAST.
106-
Section :ref:`bd-input-files` describes the BeamDyn input files.
107-
Section :ref:`bd-output-files` discusses the output files generated by
108-
BeamDyn. Section :ref:`beamdyn-theory` summarizes the BeamDyn theory.
109-
Section :ref:`bd-future-work` outlines potential future work. Example input
110-
files are shown in Appendix :numref:`bd_input_files`.
111-
A summary of available output channels is found in Appendix :ref:`app-output-channel`.
106+
Section :ref:`bd-input-files` describes the BeamDyn input files.
107+
Section :ref:`bd-output-files` discusses the output files generated by
108+
BeamDyn. Section :ref:`beamdyn-theory` summarizes the BeamDyn theory.
109+
Section :ref:`bd-future-work` outlines potential future work. Example input
110+
files are shown in Appendix :numref:`bd_input_files`.
111+
A summary of available output channels is found in Appendix :ref:`app-output-channel`.

docs/source/user/beamdyn/output_files.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Summary File
2626
In stand-alone mode, BeamDyn generates a summary file with the naming
2727
convention, ``InputFile.sum`` if the ``SumPrint`` parameter is set
2828
to TRUE. When coupled to FAST, the summary file is named
29-
``InputFile.BD.sum``. This file summarizes key information about the
29+
``InputFile.BD.R*.B*.sum.yaml``. This file summarizes key information about the
3030
simulation, including:
3131

3232
- Blade mass.

0 commit comments

Comments
 (0)