Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
0894491
HydroDyn Morison: replace GetOrientationAngles trig with guarded unit…
luwang00 Oct 5, 2026
833e557
HydroDyn Morison: consolidate end-plate buoyancy into AddEndBuoyancy …
luwang00 Oct 5, 2026
0432466
Streamline error handling in Morison_CalcOutput
luwang00 Oct 5, 2026
6243d29
Convert MSecGeom if/else-if branches to SELECT CASE in Morison_CalcOu…
luwang00 Oct 5, 2026
2c0c8be
Precompute and reuse member reference DCM (CMatrix) in Morison
luwang00 Oct 6, 2026
b850605
Remove unused subroutines from Morison
luwang00 Oct 6, 2026
cd46fcf
Use unit-vector formulation for member inclination in Morison
luwang00 Oct 6, 2026
7b5f0f5
Rotate Morison members and joints by WaveDisp mode
luwang00 Oct 6, 2026
00946b2
HydroDyn: drift Morison members with PRP x,y when WaveDisp=0
luwang00 Oct 6, 2026
8b0a9b0
Docs: clarify HydroDyn WaveDisp semantics for strip-theory displacement
luwang00 Oct 6, 2026
692c364
HydroDyn: always include vertical displacement for WaveDisp=1 strip t…
luwang00 Oct 7, 2026
41063cf
HydroDyn: remove AMMod option; treat added mass like other distribute…
luwang00 Oct 7, 2026
97bdaca
Fix WaveStMod=0/WaveDisp=1 free-surface crossing in Morison load smoo…
luwang00 Oct 7, 2026
99cdf42
Update r-test pointer
luwang00 Oct 8, 2026
98abd56
HydroDyn Morison: defer mesh accumulation of hydrodynamic side loads
luwang00 Oct 10, 2026
f69958d
HydroDyn Morison: add water entry/exit load arrays and blending scratch
luwang00 Oct 10, 2026
a37324f
HydroDyn Morison: add horizontal-member numerical helpers
luwang00 Oct 10, 2026
6bedec0
HydroDyn Morison: shallow-angle strip-theory side loads for circular …
luwang00 Oct 10, 2026
00c5801
HD: joint loads scaled by wetted end-plate fraction
luwang00 Oct 10, 2026
e1fbe6f
HD: scale joint drag linearly with the wetted fraction
luwang00 Oct 12, 2026
73729f4
Validate ExctnDisp and ExctnCutOff inputs
luwang00 Oct 14, 2026
9cb7265
Updates and corrections to HydroDyn user docs and registry variable d…
luwang00 Oct 14, 2026
b921e9d
HD: suppress large-yaw warning when PtfmRefY is unused
luwang00 Oct 14, 2026
6ce0cbd
Merge branch 'Morison_Refactor' into f/HD_HMember
luwang00 Oct 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions docs/source/user/api_change.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,38 @@ AeroDyn \* (-)
OLAF 26 RegFunctionPart 2 RegFunctionPart - Particle regularization function {0: None, 1: Exponential, 2: Compact, "default": 1} [only if VelocityMethod=2,3] (switch)
============================================= ======== ==================== ==========================================================================================================================================================================================================================================================================================================

The meaning of the HydroDyn ``WaveDisp`` input has changed, although its valid values (0 and 1) are unchanged.
``WaveDisp`` now controls both where the wave kinematics and dynamic pressure are evaluated and the orientation
of the strip-theory (Morison) members and joints. With ``WaveDisp=0``, the strip-theory members are placed at a
reference configuration consistent with the potential-flow model—the reference yaw (from ``PtfmYMod``/``PtfmRefY``)
plus a horizontal x-y drift of the platform reference point governed by ``ExctnDisp`` and ``ExctnCutOff``—rather
than being held at the undisplaced position. With ``WaveDisp=1``, the exact instantaneous displaced position and
orientation are used. The previous ``WaveDisp=0`` behavior is recovered by also setting ``PtfmYMod=0`` and
``ExctnDisp=0``.

============================================= ======== ==================== ==========================================================================================================================================================================================================================================================================================================
Modified in OpenFAST `5.1.0`
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Module Line Flag Name Example Value
============================================= ======== ==================== ==========================================================================================================================================================================================================================================================================================================
HydroDyn \* WaveDisp 0 WaveDisp - Method of displacing strip-theory members and joints {0: use potential-flow consistent displacement, 1: use exact instantaneous displacement} (switch)
============================================= ======== ==================== ==========================================================================================================================================================================================================================================================================================================

In previous versions of OpenFAST, HydroDyn's input file included the ``AMMod`` option to control the method of computing
distributed strip-theory added-mass force. Setting ``AMMod`` to 0 forces HydroDyn to always compute the added-mass
force up to the still water level (SWL). This switch was added because of numerical stability issues encountered when
evaluating the added-mass force up to the instantaneous free surface with some hydroelastic models. With the improved
solver stability of OpenFAST `5.1.0`, the ``AMMod`` option was deemed no longer necessary based on user feedback and was
removed.

============================================= ======== ==================== ==========================================================================================================================================================================================================================================================================================================
Removed in OpenFAST `5.1.0`
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Module Line Flag Name Example Value
============================================= ======== ==================== ==========================================================================================================================================================================================================================================================================================================
HydroDyn \* AMMod 0 AMMod - Method of computing distributed strip-theory added-mass force {0: evaluate up to SWL, 1: evaluate up to instantaneous free surface if WaveStMod > 0} (switch)
============================================= ======== ==================== ==========================================================================================================================================================================================================================================================================================================

OpenFAST v4.2.x to OpenFAST v5.0.0
-----------------------------------

Expand Down
3 changes: 1 addition & 2 deletions docs/source/user/hydrodyn/appendix.rst
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,7 @@ structure::
0 0 0 0 0 0
0 0 0 0 0 0
---------------------- STRIP THEORY OPTIONS --------------------------------------
0 WaveDisp - Method of computing Wave Kinematics {0: use undisplaced position, 1: use displaced position} (switch)
0 AMMod - Method of computing distributed added-mass force. {0: Only and always on nodes below SWL at the undisplaced position. 1: Up to the instantaneous free surface} (switch) [overwrite to 0 when WaveStMod = 0 in SeaState]
0 WaveDisp - Method of displacing strip-theory members and joints {0: use potential-flow consistent displacement, 1: use exact instantaneous displacement} (switch)
0 HstMod - Method of computing hydrostatic loads. {0: Up to the still water level. 1: Up to the instantaneous free surface} (switch) [overwrite to 0 when WaveStMod = 0 in SeaState]
---------------------- AXIAL COEFFICIENTS --------------------------------------
2 NAxCoef - Number of axial coefficients (-)
Expand Down
90 changes: 49 additions & 41 deletions docs/source/user/hydrodyn/input_files.rst
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,14 @@ motion to prevent double counting the contributions from first-order
structural motion already included in the second-order potential-flow wave
excitation.

Beyond the potential-flow wave excitation, **ExctnDisp** and **ExctnCutOff** also
govern the horizontal x-y drift applied to the strip-theory (Morison) members
when **WaveDisp** = 0, as described under Strip theory options below. These inputs
are honored regardless of whether potential-flow bodies are present, so a
strip-theory-only model can use the same reference-position treatment. When
**ExctnDisp** = 2, **ExctnCutOff** must be greater than zero even without
potential-flow bodies.

HydroDyn now supports large but slow (well below wave frequencies)
transient platform yaw motion with both strip-theory only and hybrid
potential-flow models. To enable this capability, the inputs
Expand Down Expand Up @@ -302,24 +310,24 @@ should be set appropriately to ensure adequate angular resolution in
platform heading. However, a high **NExctnHdg** can increase memory use
by OpenFAST substantially.

Additional constraints on HydroDyn inputs apply when **PtfmYMod** = 1.
The strip-theory hydrodynamic load must be evaluated using the wave
kinematics and dynamic pressure at the displaced structure position
by setting **WaveDisp** = 1. State-space wave excitation cannot be used.
**ExctnMod** must be either 0 (no wave excitation) or 1 (frequency-to-time
domain transform using inverse discrete Fourier transform). Lastly,
full difference- and sum-frequency QTFs are not supported, requiring
both **DiffQTF** and **SumQTF** to be set to 0. However, mean- or
slow-drift loads based on Newman's approximation can be included through
the **MnDrift** or **NewmanApp** inputs explained below.

Note that the inputs **PtfmYMod** and **PtfmRefY** also affect the
strip-theory hydrodynamic load. This is because the orientation of
the strip-theory members is updated based on **PtfmRefY** instead
of the instantaneous platform yaw rotation. Behavior of previous
versions of HydroDyn can be approximately recovered by setting
**PtfmYMod** = 0 and **PtfmRefY** = 0 deg, in which case, the
inputs **PtfmYCutoff** and **NExctnHdg** are not used.
Additional restrictions on HydroDyn inputs apply when **PtfmYMod** = 1.
First, state-space wave excitation cannot be used. **ExctnMod** must be
either 0 (no wave excitation) or 1 (frequency-to-time domain transform
using inverse discrete Fourier transform). Secondly, full difference-
and sum-frequency QTFs are not supported, requiring both **DiffQTF**
and **SumQTF** to be set to 0. However, mean- or slow-drift loads based
on Newman's approximation can be included through the **MnDrift** or
**NewmanApp** inputs explained below.

Note that **PtfmYMod** and **PtfmRefY** also affect the strip-theory
hydrodynamic load when **WaveDisp** = 0. In that mode, the displacement
and rotation of the strip-theory members and joints are based on
**PtfmRefY** (together with the x-y drift from **ExctnDisp**) rather than
the full 6DOF instantaneous structure motion, as described under Strip
theory options below. When **WaveDisp** = 1, the exact instantaneous
member and joint orientations are used instead, so **PtfmRefY** does not
affect the strip-theory load. The inputs **PtfmYCutoff** and **NExctnHdg**
are not used when **PtfmYMod** = 0.

HydroDyn has two methods for calculating the radiation memory effect.
Set **RdtnMod** to 1 for the convolution method, 2 for the linear
Expand Down Expand Up @@ -707,29 +715,29 @@ apply constant hydrostatic/buoyancy loads to the generalized modes.

Strip theory options
--------------------
**WaveDisp** can be set to 0 to compute the strip-theory loads using the
wave kinematics and dynamic pressure at the undisplaced position of the
structure. If set to 1, the loads will be computed using the wave kinematics
and dynamic pressure at the instantaneous displaced positions of the strip-theory
members. Note that when wave stretching is not used (\ **WaveStMod** = 0 in
SeaState), only the *X*- and *Y*-displacements of the strip-theory member
nodes are considered when **WaveDisp** = 1, while the vertical *Z*-displacement is
ignored. This is done to avoid discontinuous nodal loads that can result in
unphysical structural vibration with a SubDyn substructure model. When
**WaveStMod** > 0 and **WaveDisp** = 1, displacements of strip-theory members
in all three directions are considered when computing the wave kinematics.
A load smoothing procedure is performed to avoid discontinuous nodal loads
in this case.

**AMMod** controls the computation of distributed strip-theory added-mass force.
If **AMMod** = 0, the strip-theory added-mass force is always evaluated up
to the SWL while neglecting the vertical displacement of the strip-theory member
nodes, even if wave stretching is enabled. With **AMMod** = 1, the strip-theory
added-mass force is evaluated up to the instantaneous free surface if
**WaveStMod** > 0. The vertical displacement of strip-theory members will also be
accounted for if **WaveDisp** = 1. **AMMod** should only be set to 0 if wave
stretching is causing numerical instabilities with flexible fixed-bottom support
structures modeled in SubDyn.
**WaveDisp** controls both the position at which the wave kinematics and dynamic
pressure are evaluated and the orientation of the strip-theory members and joints
used when computing the hydrodynamic loads.

Setting **WaveDisp** = 0 evaluates the loads at a reference configuration of the
strip-theory members that is consistent with the potential-flow model. Rather
than holding the members at their undisplaced position and orientation, HydroDyn
positions and orients them using the reference yaw (set through **PtfmYMod** and
**PtfmRefY**) together with a horizontal x-y drift of the HydroDyn origin (PRP)
governed by **ExctnDisp** and **ExctnCutOff** (see above). This results in 3DOF
horizontal-plane displacements only (surge, sway, and yaw). Both the member and
joint orientations used to compute the hydrodynamic loads and the node positions
at which the wave kinematics and dynamic pressure are queried follow this
reference configuration, so a mixed potential-flow/strip-theory model remains
geometrically self-consistent. The behavior of previous versions of HydroDyn with
**WaveDisp** = 0 can be recovered by setting **PtfmYMod** = 0 and **ExctnDisp** = 0.

With **WaveDisp** = 1, the strip-theory loads are computed considering the full
6DOF instantaneous motion of the strip-theory members and joints. The wave
kinematics and dynamic pressure are evaluated at the exact instantaneous positions
of the strip-theory member nodes and joints, and member and joint orientations
consider full 3DOF rotation of the structure. A load smoothing procedure is
performed to avoid discontinuous nodal loads as members cross the free surface.

**HstMod** controls the computation of distributed hydrostatic loads on
strip-theory members. If **HstMod** = 0, the hydrostatic pressure is always
Expand Down
Loading
Loading