Large Pitch/Roll in Multi-Body Model

Dear Community,

I modeled a multi-body floating wind turbine platform (Nbody=5) for the first time. I calculated the potential flow files (PotFile) using AQWA, setting the center of gravity (COG) of each body to Z=0 in AQWA. The center of buoyancy(COB) was automatically calculated by AQWA. To avoid double counting, I followed the suggestion in the following forum post and modified the platform center of gravity position: hydrodynamic model for semisubmersible FOWT - #7 by Jason.Jonkman
Below is a schematic diagram of the model and the calculation of AQWA. The blue cross marks indicate the center of buoyancy positions, and the black squares indicate the center of gravity positions:

I currently have the following questions for advice:

First, when I ran the simulation with the above settings, the platform experienced large pitch and roll displacements, as shown below, what could be causing these large displacements?

Second, for a multi-body model, does ElastoDyn also require separate center of gravity values for each floating body (as in HydroDyn), or is it sufficient to define only one overall platform center of gravity?

My relevant HydroDyn settings are as follows:

---------------------- FLOATING PLATFORM ---------------------------------------
1 PotMod - Potential-flow model
1 ExctnMod - Wave-excitation model
1 ExctnDisp - Method of computing Wave Excitation
10 ExctnCutOff - Cutoff frequency (Hz)
0 PtfmYMod - Model for large platform yaw offset
0 PtfmRefY - Platform reference yaw offset (deg)
10 PtfmYCutOff - Cutoff frequency (Hz)
36 NExctnHdg - Number of platform yaw angles
1 RdtnMod - Radiation memory-effect model
80 RdtnTMax - Analysis time for radiation kernels (sec)
“DEFAULT” RdtnDT - Time step for radiation kernels (sec)
5 NBody - Number of WAMIT bodies
1 NBodyMod - Body coupling model
“../../HydroData/study” PotFile - Root name of potential-flow data
1 WAMITULEN - Characteristic body length scale (m)
-23.75 -23.75 0 47.54 0 PtfmRefxt - xt offset of body reference points (m)
-41.14 41.14 0 0 0 PtfmRefyt - yt offset of body reference points (m)
-14 -14 -20 -14 -10 PtfmRefzt - zt offset of body reference points (m)
0 0 -15 0 0 PtfmRefztRot - Rotation about zt (deg)
4277 4277 13975 4277 839 PtfmVol0 - Displaced volume (m^3)
0 0 0 0 0 PtfmCOBxt - xt offset of COB (m)
0 0 0 0 0 PtfmCOByt - yt offset of COB (m)

My relevant Elastodyn settings are as follows:

---------------------- TURBINE CONFIGURATION -----------------------------------
3 NumBl - Number of blades
149.693 TipRad - Blade tip radius (m)
2.443 HubRad - Blade root radius (m)
-3 PreCone(1) - Blade 1 cone angle (deg)
-3 PreCone(2) - Blade 2 cone angle (deg)
-3 PreCone(3) - Blade 3 cone angle (deg)
0 HubCM - Hub mass offset (m)
0 UndSling - Undersling length (m)
0 Delta3 - Delta-3 angle (deg)
0 AzimB1Up - Azimuth for blade 1 up (deg)
-8.08262 OverHang - Overhang length (m)
0.0 ShftGagL - Shaft strain gage location (m)
-8 ShftTilt - Rotor shaft tilt (deg)
2.361 NacCMxn - Nacelle CM x-offset (m)
0.014 NacCMyn - Nacelle CM y-offset (m)
2.113 NacCMzn - Nacelle CM z-offset (m)
2.361 NcIMUxn - Nacelle IMU x-offset (m)
0.014 NcIMUyn - Nacelle IMU y-offset (m)
2.113 NcIMUzn - Nacelle IMU z-offset (m)
2.675117 Twr2Shft - Tower-top to shaft vertical distance (m)
168.9 TowerHt - Tower height (m)
18.2 TowerBsHt - Tower base height (m)
0.0686 PtfmCMxt - Platform CM x-offset (m)
0 PtfmCMyt - Platform CM y-offset (m)
-11.774 PtfmCMzt - Platform CM z-offset (m)
0 PtfmRefzt - Platform reference point z-offset (m)

Best regards,

Dear @Haoxuan.Shen,

It sounds like you are using five potential-flow bodies with full hydrodynamic coupling in HydroDyn but are modeling the substructure rigidly in ElastoDyn. The multi-body capability of HydroDyn is meant to be used in conjunction with the structural dynamics modeled in SubDyn to account for hydro-elasticity. If the substructure is modeled rigidly in ElastoDyn, all hydrodynamic loads will get lumped to the single rigid body anyway, so, there is no real benefit of using the five potential-flow bodies with full hydrodynamic coupling, and a single potential-flow body would suffice.

Regarding your first question, I’m not sure, but if you represent the entire floater as a single potential-flow body, do you get the response you expect? If so, this would suggest an issue with how you’ve defined the multiple bodies or their coupling.

Regarding your second question, ElastoDyn is treating the substructure as a single rigid body, so, only one lumped center of gravity is needed. Additional structural details would be needed if you decide to represent the substructure structural dynamics in SubDyn.

Best regards,

Dear @Jason.Jonkman,

Thank you for your response. You are absolutely correct—I am currently still modeling the substructure as rigid in ElastoDyn. As this is my first attempt at multi-body hydrodynamics modeling, my plan is to first debug HydroDyn before enabling SubDyn for further adjustment. My ultimate goal is to calculate the stress at specified cross-sections.

To follow up on your question regarding my first issue**:** When using a single potential-flow body, I obtained the expected response. However, after switching to multiple bodies in HydroDyn (only the HydroDyn file was modified, with all other files kept unchanged. The specific configurations in hydrodyn were provided in my original post), the simulation runs initially, and the results for the first few tens of seconds remain consistent with the single-body model. Yet after a period of time, the displacement increases abnormally and the hydrodynamic response begins to diverge.

Therefore, I would like to ask for further guidance: How should HydroDyn be configured correctly in this context, especially in the FLOATING PLATFORM section? Could the positions of the reference point and the center of buoyancy (COB) play a critical role in the motion response?

Additionally, I have a few related questions:

  1. Could the fact that SubDyn is not enabled (with the structure remaining rigid) be the direct cause of this diverging displacement issue?

  2. Where can I find an example model of a semi-submersible platform that uses multi-body HydroDyn coupled with SubDyn? I haven’t been able to locate a relevant case study so far. Additionally, would such a modeling approach enable me to achieve my ultimate goal of calculating stress at cross-sections?

I will provide the relevant figures separately for your reference. Thank you again for your time and support.

Best regards,

Dear @Haoxuan.Shen,

When using NBodyMod = 1 in HydroDyn to account for full coupling between multiple potential-flow bodies, have you located your body reference position and orientation in HydroDyn to match those in the potential-flow solver? I’m not familiar with AQWA, but in WAMIT, this would be matching the position/orientation of XBODY in WAMIT with PtfmRefxt, PtfmRefyt, PtfmRefzt, and PtfmRefztRot in HydroDyn. Also, do the displaced volume (PtfmVol0) and center of buoyancy offsets (PtfmCOByt, PtfmCOBzt) in HydroDyn match those of AQWA?

Regarding your numbered questions:

  1. No. if the HydroDyn model with multiple potential-flow bodies and full coupling between bodies is set up properly with the substructure modeled in ElastoDyn, it should match the result with a single potential-flow body because ElastoDyn is considering the combined effect of all bodies as a lumped load for a single body anyway.
  2. Yes, OpenFAST can calculate loads at cross-sections as you outlined. NREL has developed quite a few internal OpenFAST models that use HydroDyn-SubDyn coupling to account for hydro-elasticity and internal member-level loads, however, many of these models contain proprietary information and cannot be released publicly. We intend to develop such a model of one of the reference floaters, such as the OC4-DeepCwind semisubmersible for the NREL 5-MW baseline turbine or the UMaine VolturnUS semisubmersible for the IEA Wind 15-MW RWT, but such a model has not yet been made public, per the following issue that is still open in the OpenFAST r-test repository: Add Test case for flexible platforms · Issue #39 · OpenFAST/r-test · GitHub.

Best regards,

Dear @Jason.Jonkman ,

Thank you for your response. I am currently conducting free-decay tests on a semi-submersible floating wind turbine model with SubDyn enabled. The results for surge and heave decay tests show good agreement between the SubDyn-enabled model and the rigid platform model (with SubDyn disabled).

However, during the pitch decay test (with an initial displacement of 5 degrees), the simulation terminates within the first 10 seconds due to a fatal numerical error. The error message is as follows:

Time: 0 of 600 seconds.

FAST_Solution:FAST_UpdateStates:FAST_AdvanceStates:ED_ABM4:ED_CalcContStateDeriv:SetCoordSy:Small

angle assumption violated in SUBROUTINE SmllRotTrans() due to a large blade deflection (ElastoDyn

SetCoordSy). The solution may be inaccurate. Simulation continuing, but future warnings from

SmllRotTrans() will be suppressed.

Additional debugging message from SUBROUTINE SmllRotTrans(): 8.04 s

ED_CalcContStateDeriv:SetCoordSy:Small angle assumption violated in SUBROUTINE SmllRotTrans() due

to a large blade deflection (ElastoDyn SetCoordSy). The solution may be inaccurate. Simulation

continuing, but future warnings from SmllRotTrans() will be suppressed.

Additional debugging message from SUBROUTINE SmllRotTrans(): 8.04 s

FAST_Solution:FAST_UpdateStates:CalcOutputs_And_SolveForInputs:Transfer_Structure_to_Opt1Inputs:SD

_CalcOutput:Small angle assumption violated in SUBROUTINE SmllRotTrans() due to a large Nodal

rotation. The solution may be inaccurate. Simulation continuing, but future warnings from

SmllRotTrans() will be suppressed.

Additional debugging message from SUBROUTINE SmllRotTrans():

FAST_Solution:FAST_UpdateStates:CalcOutputs_And_SolveForInputs:SolveOption1:FullOpt1_InputOutputSo

lve:HydroDyn_CalcOutput:WAMIT_Init:Roll angle of a potential-flow body violated the small angle

assumption. The solution might be inaccurate. Simulation continuing, but future warnings will be

suppressed.

WAMIT_Init:Pitch angle of a potential-flow body violated the small angle assumption. The solution

might be inaccurate. Simulation continuing, but future warnings will be suppressed.

NaN detected at time 9.5615 in Line 49 in MoorDyn.

NaN detected at time 9.5619 in Line 37 in MoorDyn.

NaN detected at time 9.5619 in Line 43 in MoorDyn.

NaN detected at time 9.5619 in Line 49 in MoorDyn.

FAST_Solution:FAST_UpdateStates:FAST_AdvanceStates: NaN state detected at time 9.5623

MD_UpdateStates: NaN state detected at time 9.5623

OpenFAST encountered an error at simulation time 9.57 of 600 seconds.

Simulation error level: FATAL ERROR

Aborting OpenFAST.

Regarding this issue, I would like to ask the following questions:

  1. What could be the potential causes of this error, and do you have any suggestions for debugging it?

  2. Could this issue be related to MoorDyn? With SubDyn enabled, does MoorDyn automatically connect to the nearest SubDyn node through a point of type Connect\Vessel? Compared to running without SubDyn, are any adjustments required in MoorDyn when SubDyn is activated?

Best regards,

Dear @Haoxuan.Shen,

Regarding (1), it has hard to understand what is happening based only on these warnings and error message. E.g., I’m surprised to see a warning about large blade deflection in a pitch free-decay test; does the solution make sense if you disable the blade degrees of freedom in ElastoDyn?

Regarding (2), I don’t expect this to be a problem in MoorDyn because I don’t see any MoorDyn-related warnings until the floater is already experiencing large rotations. Yes, the OpenFAST glue code will map the fairlead points in MoorDyn to the nearest structural node in SubDyn, when SubDyn is enabled. No adjustments to MoorDyn are needed when switching from a rigid platform in ElastoDyn to a flexible floater in SubDyn.

Best regards,