Problems when using TLCD in NREL5MW_OC4

Version 4.0.2
I try to use TLCD in NREL_5MW+OC4 float wind turbine, but i face several problems
The outside condition is free damper: [8deg PtfmPitch]

  1. i try to install a X_TLCD to the NumNStC, and this is what i write in the TLCD.dat

---------------------- StC LOCATION ------------------------------------------- [relative to the reference origin of component attached to]
0 StC_P_X - At rest X position of StC (m)
0 StC_P_Y - At rest Y position of StC (m)
0 StC_P_Z - At rest Z position of StC (m)

---------------------- TLCD --------------------------------------------------- [used only when StC_DOF_MODE=3]
18.8200 L_X - X TLCD total length (m)
16.0000 B_X - X TLCD horizontal length (m)
3.6600 area_X - X TLCD cross-sectional area of vertical column (m^2)
4.4103 area_ratio_X - X TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-)
17.0000 headLossCoeff_X - X TLCD head loss coeff (-)
1025 rho_X - X TLCD liquid density (kg/m^3)
0.0000 L_Y - Y TLCD total length (m)
0.0000 B_Y - Y TLCD horizontal length (m)
0.0000 area_Y - Y TLCD cross-sectional area of vertical column (m^2)
0.0000 area_ratio_Y - Y TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-)
0.0000 headLossCoeff_Y - Y TLCD head loss coeff (-)
1025 rho_Y - Y TLCD liquid density (kg/m^3)

But this give me an error like this:

The BEM solution is being turned off due to low TSR. (TSR = 0). This warning will not be
repeated though the condition may persist. (See GeomPhi output channel.)
NaN detected at time 1.00000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.05000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.05000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.05000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.10000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.10000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.10000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.15000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.15000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.15000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.20000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.20000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.20000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.25000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.25000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.25000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.30000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.30000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.30000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.35000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.35000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.35000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.40000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.40000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.40000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.45000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.45000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.45000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.50000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.50000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.50000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.55000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.55000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.55000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.60000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.60000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.60000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.65000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.65000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.65000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.70000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.70000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.70000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.75000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.75000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.75000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.80000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.80000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.80000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.85000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.85000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.85000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.90000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.90000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.90000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.95000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.95000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.95000E-02 in Line 3 in MoorDyn.

FAST_Solution:FAST_UpdateStates:FAST_AdvanceStates: NaN state detected.
MD_UpdateStates: NaN state detected.

OpenFAST encountered an error at simulation time 2.00000E-02 of 1200 seconds.
Simulation error level: FATAL ERROR

Aborting OpenFAST.

2. How to balance the add-mass by reduce the water?

I try to keep the average of PtfmHeave alomst the same to the origin data, so i try to calculate the mass of the TLCD by the following function:


the origin water level: -6.17m
the water filled = -6.17 - [L-B+(B/area_ratio)](area_X)/(3PI*(6-0.06)^2)

And if the TLCD is the same in X and Y direction then i think that the water filled is


-6.17 - 2*[L-B+(B/area_ratio)](area_X)/(3PI*(6-0.06)^2)

In another example of A TLCD installed to NumSStC

---------------------- StC LOCATION ------------------------------------------- [relative to the reference origin of component attached to]
0 StC_P_X - At rest X position of StC (m)
0 StC_P_Y - At rest Y position of StC (m)
-19 StC_P_Z - At rest Z position of StC (m)

---------------------- TLCD --------------------------------------------------- [used only when StC_DOF_MODE=3]
14.5000 L_X - X TLCD total length (m)
5.5000 B_X - X TLCD horizontal length (m)
0.7854 area_X - X TLCD cross-sectional area of vertical column (m^2)
8.7971 area_ratio_X - X TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-)
2.0000 headLossCoeff_X - X TLCD head loss coeff (-)
1025 rho_X - X TLCD liquid density (kg/m^3)
14.5000 L_Y - Y TLCD total length (m)
5.5000 B_Y - Y TLCD horizontal length (m)
0.7854 area_Y - Y TLCD cross-sectional area of vertical column (m^2)
8.7971 area_ratio_Y - Y TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-)
2.0000 headLossCoeff_Y - Y TLCD head loss coeff (-)
1025 rho_Y - Y TLCD liquid density (kg/m^3)

By the function, i get the water filled= -6.215465908

But The .outb result of PtfmHeave was different from what I had expected.

This is the two main problems i reached in the test, beside this, Are there any suggestion or good TLCD configuration parameters that can be used to suppress PtfmPitch? The effects of the several TLCDs I tested were not satisfactory.

Dear @Wenbo.Zhong,

If I understand correctly, you are adding a TLCD to the nacelle by setting NumNStC = 1 in ServoDyn and using StC_DOF_MODE = 3 in the Structural Control (StC) submodel; is that correct?

Can you clarify the equation you are using to keep the PtfmHeave unchanged; I’m not following your math. What is the TLDC mass you are adding to the nacelle in both cases?

Best regards,

Dear @Jason.Jonkman

In the first quesiton, yes, i add a X direction TLCD to nacelle by setting
NumNStC = 1
StC_DOF_MODE = 3

And, the TLCD mass as i thought is calculated by
m_TLCD_x = rho_x * area_X * [ L_X - B_X + B_X / area_ratio_X ]
Then I hope to keep PtfmHeave average unchanged by reducing the water volume in the upper pressure water tanks within the three side columns.
A_upper_water_tank = PI * r^2 = PI * (6-0.06)^2
delta_h = ( m_TLCD_x / rho_x ) / ( 3 * A_upper_water_tank )
As the origin water filled in the upper water tanks is at -6.17m
After i added the TLCD, i think that i should change it to:
-6.17m - delta_h

In the second question, i added a TLCD which have the same parameter in X and Y direction to the platform by
NumSStC = 1
And the mass of TLCD is calculated by
m_TLCD = m_TLCD_x + m_TLCD_y
And the water filled level is
delta_h = ( m_TLCD / rho_x ) / ( 3 * A_upper_water_tank )
-6.17m - delta_h

Best regards,

Dear @Wenbo.Zhong,

Thanks for clarifying. I believe I now understand your approach.

In the first case, you’ve moved a lot of water ballast from deep within the floater to the nacelle. I suspect this is making your model physically and/or numerically unstable.

In the second case, you’ve moved the fixed water ballast to movable water ballast within the TLCD. As such, I suspect that as the floater pitches (due to the overhanging weight of the rotor-nacelle assembly), the TLCD ballast is also shifting, which causes more pitching, and some coupling to heave.

Best regards,

Dear @Jason.Jonkman,

Regarding the second question, I think what you said makes sense. And I adjusted the results based on -6.17m - delta_h to keep the average value of PtfmHeave almost unchanged.

But for the first question, i think there maybe some bugs.

if i use the following parameters:

---------------------- TLCD --------------------------------------------------- [used only when StC_DOF_MODE=3]
    18.8200   L_X             - X TLCD total length (m)
    16.0000   B_X             - X TLCD horizontal length (m)
     2.6600   area_X          - X TLCD cross-sectional area of vertical column (m^2)
     3.4103   area_ratio_X    - X TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-)
    17.0000   headLossCoeff_X - X TLCD head loss coeff (-)
       1025   rho_X           - X TLCD liquid density (kg/m^3)
     0.0000   L_Y             - Y TLCD total length (m)
     0.0000   B_Y             - Y TLCD horizontal length (m)
     0.0000   area_Y          - Y TLCD cross-sectional area of vertical column (m^2)
     0.0000   area_ratio_Y    - Y TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-)
     0.0000   headLossCoeff_Y - Y TLCD head loss coeff (-)
       1025   rho_Y           - Y TLCD liquid density (kg/m^3)

it will return error like this:

 Running HydroDyn.
 Reading in WAMIT output with root name "D:\MYwork\OpenFAST\5MW_Baseline\HydroData\marin_semi".
 Computing radiation impulse response functions and wave diffraction forces.
 Calculating second order difference-frequency force using the full quadratic transfer function.
 Calculating second order sum-frequency force using the full quadratic transfer function.
 Running MoorDyn (v2.2.2, 2024-01-16).
   This is MoorDyn v2, with significant input file changes from v1.

**************************************************************************************************
MoorDyn

Copyright (C) 2025 National Renewable Energy Laboratory
Copyright (C) 2025 Envision Energy USA LTD

This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY.
See the "LICENSE" file distributed with this software for details.
**************************************************************************************************

   Parsing MoorDyn input file: D:\MYwork\OpenFAST\5.1FD\Baseline\MoorDyn.dat
   Created mooring system:  3 lines, 6 points, 0 rods, 0 bodies.
   Catenary solve of Line 1 unsuccessful. Initializing as linear.
   Catenary solve of Line 2 unsuccessful. Initializing as linear.
   Catenary solve of Line 3 unsuccessful. Initializing as linear.
   Finalizing initial conditions using dynamic relaxation.
   t=46.4  FairTen 1: 1.11571E+06, 1.11715E+06, 1.11826E+06
   Fairlead tensions converged to 1% after 46.4 seconds.
   Fairlead tension: 1.11571E+06
   Fairlead forces: 4.64209E+05, 7.95401E+05, -6.29806E+05
   Fairlead tension: 1.12108E+06
   Fairlead forces: -9.18577E+05, 0, -6.42687E+05
   Fairlead tension: 1.11571E+06
   Fairlead forces: 4.64209E+05, -7.95401E+05, -6.29806E+05
   MoorDyn initialization completed.
 Running ServoDyn.
 Running StrucCtrl.
 Running ServoDyn Interface for Bladed Controllers (using Intel Visual Fortran for Windows).
Using legacy Bladed DLL interface.

FAST_InitializeAll:ED_Init:ED_ReadInput:ReadBladeInputs:ReadBladeFile:The ElastoDyn Blade file,
D:\MYwork\OpenFAST\5MW_Baseline\NRELOffshrBsline5MW_Blade.dat, DISTRIBUTED BLADE PROPERTIES table
contains the PitchAxis column.  This column is unused and will be removed in future releases
FAST_InitializeAll:SeaSt_Init:SeaStateInput_ProcessInitData:WvHiCOff adjusted to 2.61799E-03
rad/s, based on WaveDT.

 Time: 0 of 1200 seconds.
The BEM solution is being turned off due to low TSR.  (TSR = 0). This warning will not be
repeated though the condition may persist. (See GeomPhi output channel.)
NaN detected at time 1.00000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.00000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.05000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.05000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.05000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.10000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.10000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.10000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.15000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.15000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.15000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.20000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.20000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.20000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.25000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.25000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.25000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.30000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.30000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.30000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.35000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.35000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.35000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.40000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.40000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.40000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.45000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.45000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.45000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.50000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.50000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.50000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.55000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.55000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.55000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.60000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.60000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.60000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.65000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.65000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.65000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.70000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.70000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.70000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.75000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.75000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.75000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.80000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.80000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.80000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.85000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.85000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.85000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.90000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.90000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.90000E-02 in Line 3 in MoorDyn.
NaN detected at time 1.95000E-02 in Line 1 in MoorDyn.
NaN detected at time 1.95000E-02 in Line 2 in MoorDyn.
NaN detected at time 1.95000E-02 in Line 3 in MoorDyn.

FAST_Solution:FAST_UpdateStates:FAST_AdvanceStates: NaN state detected.
 MD_UpdateStates: NaN state detected.


 OpenFAST encountered an error at simulation time 2.00000E-02 of 1200 seconds.
 Simulation error level: FATAL ERROR

 Aborting OpenFAST.

But If i use the following parameters:

---------------------- TLCD --------------------------------------------------- [used only when StC_DOF_MODE=3]
    18.8200   L_X             - X TLCD total length (m)
    16.0000   B_X             - X TLCD horizontal length (m)
     2.6600   area_X          - X TLCD cross-sectional area of vertical column (m^2)
     3.4103   area_ratio_X    - X TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-)
    17.0000   headLossCoeff_X - X TLCD head loss coeff (-)
       1025   rho_X           - X TLCD liquid density (kg/m^3)
    18.8200   L_Y             - Y TLCD total length (m)
    16.0000   B_Y             - Y TLCD horizontal length (m)
     0.0001   area_Y          - Y TLCD cross-sectional area of vertical column (m^2)
     1.0000   area_ratio_Y    - Y TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-)
    17.0000   headLossCoeff_Y - Y TLCD head loss coeff (-)
       1025   rho_Y           - Y TLCD liquid density (kg/m^3)

You can see that area_Y = 0.0001 which add a very little mass to Y_TLCD,
then OpenFAST can run smoothly to the end

I don’t fully understand the specific code, but I suspect that there is a lack of a logical judgment here: the logic for enabling the TLCD in the X or Y direction, or in both X and Y directions.

Beside these, in the OutListParameters.xlsx. I don’t find the parameters related to TLCD
In my concern, i think that this two parameters can indicate the operating status of the TLCD

image
(openfast.readthedocs.io_4.16.3)

Dear @Wenbo.Zhong,

Interesting; I was not previously aware of these issues with StC. I’ve now posted this issue on OpenFAST GitHub: Bug report: Lack of Data Sanity Checks and Write Outputs for TLCDs in Structural Control (StC) · Issue #2896 · OpenFAST/openfast · GitHub.

Best regards.