About wave kinematics in mooring calculations

Dear everyone,
I have a problem with wave kinematics. I read an article called “Verification and Validation of the New Dynamic Mooring Modules Available in FAST v8” and there was this sentence: FEAMooring and MoorDyn, wave kinematics are not considered for the calculation of the hydrodynamic line loads, meaning that the hydrodynamic load calculations assume still water. The results show that the FEAMooring and MoorDyn methods do not take into account wave kinematics.
image

In the article “Validation of a lumped-mass mooring line model with DeepCwind semisubmersible model test data”, expert Matthew Hall mentions: Fig. 6 also shows, between 300 s and 320 s, how the inclusion of wave kinematics in the drag calculations affects the fairlead tension. It seems to me that the Can, Cat, Cdn and Cdt coefficients are related to wave kinematics.

So my question now is whether MoorDyn takes into account wave kinematics, If not considered ‘how the inclusion of wave kinematics in the drag calculations affects the fairlead tension’ the phrase refers to the wave What does kinematics represent?

Hi Yushun,

I had wave kinematics in MoorDyn at the very beginning (which is how the comparison in the paper was done) but then disabled that feature because there was no easy way to transmit wave kinematics into MoorDyn from other codes like FAST. So MoorDyn v1 did not officially include wave kinematics.

We have added wave kinematics in MoorDyn v2, which is in recent releases of OpenFAST. You’ll find some information about how to use wave kinematics here: About wave kinematics in mooring calculations The basic idea is to tell MoorDyn to look for a water kinematics input file, then that file specifies a wave grid and points to a wave-elevation time-series file. That time series could be the wave elevation output by OpenFAST/HydroDyn.

Matt

I would just add that we have plans in the future to add a direct coupling between the upcoming SeaState module of OpenFAST (which separates out the incident wave kinematics from HydroDyn) to MoorDyn so that the seperate water kinematics input file will not be needed once that functionality is released.

Best regards,

Thank you for your reply, which helped me a lot!
Best regards,

Thank you for your response and look forward to the release of openfast.
Best regards,

Hi,

I need to add wave kinematics in my interest of floating systems. Which i have gone through the moordyn has option for wavekinematics.
As mentioned earlier V2 version is work for wave kinematics.

Initially i tried using MoorDynDriver_x64.exe file for run the …..\r-test-main\modules\moordyn\md_5MW_OC4Semi md_driver.inp
in this solver option i add following options and i kept water_grid, wave_elevation, current.txt files in same folder.

0.5 FrictionCoefficient general bottom friction coefficient, as a start (-)
7 WaveKin the wave elevations are provided in a grid (-)
1 Currents the water currents are provided in a grid (-)

but it shows error.
Local error: MD_Init:Unable to interpret input FRICTIONCOEFFICIENT in OPTIONS section.
MD_Init:Unable to interpret input WAVEKIN in OPTIONS section.
MD_Init:Unable to interpret input CURRENTS in OPTIONS section.

or
i have seen in the moordyn test case available .txt files …MoorDyn_Python\MoorDyn\tests\Mooring
i.e lines, wavekin_wave_1.txt, lifting.txt.

My question is how to use these file (like .txt format files) for run the wave and currents.
It is only available for python codes.

In addition, python code for body is mismatch the column values like cda, ca, v.
please update it.

Thanks and Regards,
Somansundar Sakthivel

Hi @Somu.Sakthivel,

Yes it is possible to simulate waves and currents in both versions of MoorDyn. It seems that you are using MoorDyn-C options in MoorDyn-F, there are some slight differences between the two codes. I would suggest getting started with formatting differences by looking at the MoorDyn documentation: MoorDyn - Lumped-Mass Mooring Dynamics — MoorDyn 2.2.2 documentation

This is the most up-to-date information on MoorDyn file formatting and use guidelines. The options section of the docs details the keyword differences between the two versions. In your case, WaveKin and Currents from MoorDyn-C are combined to WaterKin for MoorDyn-F. You can read more in the MoorDyn-F Water Kinematics section of the docs. Additionally, MoorDyn-F uses a axial and transverse coefficient of friction where MoorDyn-C just uses a single coefficient of friction.

You can find an example water kinematics file for MoorDyn here. I am not sure what incorrect example files you are referring too when you say “the python code for body”, can you please paste the link to those here?

Best, Ryan

Hi Ryan.Davies,

Thank you for your response.
i have uploaded .png file of input file. could you give your suggestions which is the correct format of inputs.

or could you share the wavekin file of Moordyn-F.
Regarding body command: in python modules (wrappers\python\moordyn\Generator\body)
the original file code is: def init(self, t, p, r, m, cog, inertia, cda, v):
instead of def init(self, t, p, r, m, cog, v, inertia, cda, ca):
If i add body in the python codes, it is expected one more column values.

Thanks and regards,
Somu

@Somu.Sakthivel I believe you are still mixing up MoorDyn-C and MoorDyn-F, as the path to the body python file is for the python wrapper of MoorDyn-C. The MoorDyn-C repository is here: GitHub - FloatingArrayDesign/MoorDyn: a lumped-mass mooring line model intended for coupling with floating structure codes, and the MoorDyn-F repository is a module in OpenFAST: openfast/modules/moordyn at main · OpenFAST/openfast · GitHub. They are run in different ways and have slightly different features, hence the confusion here. Make sure you are only using one or the other.

If you are looking to run the python wrapper of MoorDyn by itself without OpenFAST then you will want to run MoorDyn-C using the instructions and example driver files here (you can install MoorDyn-C with pip): MoorDyn Wrappers and Drivers — MoorDyn 2.2.2 documentation. You do not need to use the files in MoorDyn-C/wrappers/ as they are backend code that wraps the C++ code, not intended for user interface. Installing MoorDyn-C with pip will build the package using that code. If you use MoorDyn-C you would provide water kinematics using two files, the wave kinematics and the currents file that you originally tried to run in MoorDyn-F.

If you want to run MoorDyn as part of a larger OpenFAST simulation, then you need to use the MoorDyn-F driver from OpenFAST and the driver input file you provided (though you should remove the Echo lines from your inputs as that has been deprecated). For waves and currents in MD-F, the docs have an example waterkin file: Input Files — MoorDyn 2.2.2 documentation

Hi @Ryan.Davies

Thank for your responses,

My goal is to set up a multi-module mooring system that takes into account the motions of the body in conjunction with waves and currents. The only thing available, I believe, are bodily motions in MD-F. Furthermore, I’m expecting Python modules to contain those. If these are additional questions about Python modules, I’ll come back.
The following input of MD-F that runs after does not read the wavekinematics.

--------------------- MoorDyn Input File ------------------------------------
Mooring system for Single module of offshore ptfm
----------------------- LINE TYPES --------------------------------------------------------------
TypeName Diam Mass/m EA BA/-zeta EI Cd Ca CdAx CaAx
(name) (m) (kg/m) (N) (N-s/-) (-) (-) (-) (-) (-)
nylon 0.124 13.76 2515288.0 -0.8 0 1.0 0.0 1.6 0.05
---------------------- BODIES -------------------------------------------------------------------------------
ID Attachment X0 Y0 Z0 r0 p0 y0 Mass CG* I* Volume CdA* Ca*
(#) (word) (m) (m) (m) (deg) (deg) (deg) (kg) (m) (kg-m^2) (m^3) (m^2) (-)
1 coupled 0 0 0 0 0 0 76.0e3 0|0|4.42 15.0610e6|15.0608e6|25.891e6 7.4008E+01 0.85 5.9657E+04|5.9658E+04|2.7951E+04
---------------------- POINTS ----------------------------------------------------------------------------------
ID Attachment X Y Z Mass Volume CdA CA
(-) (word/ID) (m) (m) (m) (kg) (m^3) (m^2) (-)
1 Fixed -53.4 -30.85 -20.0 0 0 0 0
2 Fixed 53.4 -30.85 -20.0 0 0 0 0
3 Fixed 0.0 61.7 -20.0 0 0 0 0
4 vessel -19.0 -10.10 -0.50 0 0 0 0
5 vessel 19.0 -10.10 -0.50 0 0 0 0
6 Vessel 0.0 21.67 -0.50 0 0 0 0
---------------------- LINES ----------------------------------------------------------------------------------------
ID LineType AttachA AttachB UnstrLen NumSegs LineOutputs
(-) (name) (-) (-) (m) (-) (-)
1 nylon 1 4 55.0 20 pvUDtcsd
2 nylon 2 5 55.0 20 pvUDtcsd
3 nylon 3 6 55.0 20 pvUDtcsd
--------------------------- WAVES -------------------------------------
3 WaveKinMod - type of wave input {0 no waves; 3 set up grid of wave data based on time series}
“waveelev.dat” WaveKinFile - file containing wave elevation time series at 0,0,0
0.5 dtWave - time step to use in setting up wave kinematics grid (s)
0 WaveDir - wave heading (deg)
2 - X wave input type (0: not used; 1: list values in ascending order; 2: uniform specified by -xlim, xlim, num)
-24, 150, 100 - X wave grid point data
2 - Y wave input type (0: not used; 1: list values in ascending order; 2: uniform specified by -xlim, xlim, num)
-100, 100, 20 - Y wave grid point data
2 - Z wave input type (0: not used; 1: list values in ascending order; 2: uniform specified by -xlim, xlim, num)
-600, 0, 20 - Z wave grid point data
--------------------------- CURRENT -------------------------------------
1 CurrentMod - type of current input {0 no current; 1 steady current profile described below}
z-depth x-current y-current
(m) (m/s) (m/s)
0.0 0.9 0.0
1.5 0.5 0.0
5.0 0.25 0.0
10 0.2 0.0
15 0.15 0.0
20.0 0.15 0.0
---------------------- OPTIONS ---------------------------------------
0.0005 dtM - time step to use in mooring integration (s)
3.0e+06 kbot - bottom stiffness (Pa/m)
3.0e+05 cbot - bottom damping (Pa-s/m)
20.0 WtrDpth - water depth
0.005 dtIC - time interval for analyzing convergence during IC gen (s)
60.0 TmaxIC - max time for ic gen (s)
4.0 CdScaleIC - factor by which to scale drag coefficients during dynamic relaxation (-)
0.01 threshIC - threshold for IC convergence (-)
------------------------ OUTPUTS ------------------------------------------------------------------------------------
FairTen1
FairTen2
FairTen3
AnchTen1
------------------------- need this line --------------------------------------

Driver file
MoorDyn driver input file
another comment line
FALSE Echo - Echo the input file data (flag)
---------------------- ENVIRONMENTAL CONDITIONS -------------------------------
9.80665 Gravity - Gravity (m/s^2)
1025.0 rhoW - Water density (kg/m^3)
20 WtrDpth - Water depth (m)
---------------------- MOORDYN ------------------------------------------------
Single.dat MDInputFile - Primary HydroDyn input file name (quoted string)
“driver” OutRootName - The name which prefixes all MoorDyn generated files (quoted string)
5 TMax - Number of time steps in the simulations (-)
0.0005 dtC - TimeInterval for the simulation (sec)
1 InputsMode - MoorDyn coupled object inputs {0: all inputs are zero for every timestep, 1: time-series inputs} (switch)
“ptfm_Solar.dat” InputsFile - Filename for the MoorDyn inputs file for when InputsMod = 1 (quoted string)
0 NumTurbines - Number of wind turbines (-) [>=1 to use FAST.Farm mode. 0 to use OpenFAST mode.]
---------------------- Initial Positions --------------------------------------
ref_X ref_Y surge_init sway_init heave_init roll_init pitch_init yaw_init
(m) (m) (m) (m) (m) (deg) (deg) (deg) [followed by MAX(1,NumTurbines) rows of data]
0 0 0 0 0 0 0 0
END of driver input file

Please let me know the errors.
Thanks and regards,
Somu S

@Somu.Sakthivel This input file will not work because waves and currents need to be in a separate input file as described in the documentation: Input Files — MoorDyn 2.2.2 documentation

This files path is provided in the options section with the keyword WaterKin:

---------------------- OPTIONS ---------------------------------------
...
<path to file>    WaterKin

Additionally right now your system has 3 coupled points (attachment = vessel) and a coupled body. I assume you mean to have the points labeled vessel attached to the body, to do so change the point attachement to Body1:

---------------------- POINTS ------------------------------------------
ID Attachment X Y Z Mass Volume CdA CA
(-) (word/ID) (m) (m) (m) (kg) (m^3) (m^2) (-)
...
4 Body1 -19.0 -10.10 -0.50 0 0 0 0
...

Hello, Ryan. Davies.

Thank you so much, and I did it the same manner. Now I realise that I made a mistake by putting the point section instead of the body. Furthermore, I need to know above wavekin file, wave heading angle 0 mean which directions follow (for example, x-axis (horizontal) parallel to zero, or Y-axis (transverse) parallel to zero, z-axis upward).
Thank you and regards.
S.S

Hi @Somu.Sakthivel the wave heading angle of 0 corresponds with the x axis

Hi @Ryan.Davies,
Thank you for your response. However, I encountered an error while adding the two-body motion responses into MoorDyn. It expected 12 coupled DOFs, but I received the following error:
“Local error: Error reading the input time-series file. Expecting 12 channels plus time.”

Full error messages: Error allocating space for r_in or rd_in array.MoorDyn_Driver:Error
reading the input time-series file. Expecting 12 channels plus time.

Inputs file attached.


same case instead of Body1, Body2, i re place ‘couple’ It is able to run.
Additional, I need to connect the ‘Rod’ between two bodies. what should be the inputs like mentioned in Rod sections ( Pinned or fixed rods).

Also, includes below the time history of platform motion.
#Times(s) surge (m) sway(m) heave(m) roll (deg) pitch(deg) yaw(deg) surge (m) sway(m) heave(m) roll (deg) pitch(deg) yaw(deg)
0 6.969355544 0.136108359 4.134467895 -0.554109495 -0.938310258 -0.628740013 6.969355544 0.136108359 4.134467895 -0.554109495 -0.938310258 -0.628740013
0.033 6.733353409 0.616552565 4.313116719 -0.034675775 -1.057984397 -0.638034579 6.733353409 0.616552565 4.313116719 -0.034675775 -1.057984397 -0.638034579

Hi @Somu.Sakthivel,

If you are using the MoorDyn driver the input position file path needs to be provided there: Input Files — MoorDyn 2.3.1 documentation. That could be one reason for the issue. It’s hard to say without seeing your full MD input file, MD_driver input file, and the top few lines of the platform motion file (in the time history you shared it’s not clear what the different lines are).

As for connecting the bodies, currently the only option for doing that is with lines. Rods cannot be used to connect bodies.

Hi, @Ryan.Davies
Thank you for quick responses.

I have enclosed in put files below.
MoorDyn driver input file
another comment line
FALSE Echo - Echo the input file data (flag)
---------------------- ENVIRONMENTAL CONDITIONS -------------------------------
9.80665 Gravity - Gravity (m/s^2)
1025.0 rhoW - Water density (kg/m^3)
20 WtrDpth - Water depth (m)
---------------------- MOORDYN ------------------------------------------------
“two_module.dat” MDInputFile - Primary HydroDyn input file name (quoted string)
“driver” OutRootName - The name which prefixes all MoorDyn generated files (quoted string)
600.0 TMax - Number of time steps in the simulations (-)
0.0001 dtC - TimeInterval for the simulation (sec)
1 InputsMode - MoorDyn coupled object inputs {0: all inputs are zero for every timestep, 1: time-series inputs} (switch)
“two_Solar.dat” InputsFile - Filename for the MoorDyn inputs file for when InputsMod = 1 (quoted string)
0 NumTurbines - Number of wind turbines (-) [>=1 to use FAST.Farm mode. 0 to use OpenFAST mode.]
---------------------- Initial Positions --------------------------------------
ref_X ref_Y surge_init sway_init heave_init roll_init pitch_init yaw_init
(m) (m) (m) (m) (m) (deg) (deg) (deg) [followed by MAX(1,NumTurbines) rows of data]
0 0 0 0 0 0 0 0
END of driver input file

I guess i need to modify this above inputs file.
Below is the platform motions.

Regards,
Soman S

@Somu.Sakthivel,

Thanks for sharing. In your platform motion data file, try removing any whitespace before the time data. MoorDyn is likely picking this up as another column.

Hi @Ryan.Davies,

Thank you for your support.
It is really working now. Moreover, I need to find the natural frequency of a mooring line (which may be a chain or a combination of two or more materials, even including a sinker). What should I do to find the natural frequencies of mooring lines? I am interested in the undamped or damped wet/dry frequencies.
I searched for equations regarding wet natural frequency on the MoorDyn homepage but was unable to find them.
If you have the answer, please let me know how to find the natural periods. Is it only related to translational motion?

Thank you.
Soman SS

Hi @Somu.Sakthivel,

There is not a way to directly calculate the natural frequency of the mooring system in MoorDyn. However you can calculate the natural frequencies corresponding to different modes of the different lines: Troubleshooting — MoorDyn 2.3.1 documentation. Note that because a mooring line with different materials will have different stiffnesses, this method can only give you the natural frequencies of modes for a MoorDyn line (single material).

Dear @Somu.Sakthivel,

I agree with @Ryan.Davies response; I’ll just add that the full-system natural frequencies of an OpenFAST model (including those of the mooring lines when MoorDyn is enabled) can be calculated by OpenFAST via a linearization analysis, followed by Eigenanalysis, as has been discussed in other forum topics.

Best regards,

1 Like