Some issues with the application of synthetic fibers in floating wind turbines

Dear everyone,
Recently, I have been researching the use of synthetic fibers and iron chains as mooring lines for floating wind turbines. I have encountered several problems and hope to receive your help.

Firstly, I have read the paper STREAMLINED LOADS ANALYSIS OF FLOATING WIND TURBINES WITH FIBER ROPE MOORING LINES, and I have previously discussed with everyone about the nonlinear stiffness mentioned in the article. It has been resolved and can be seen in the following document that the tension of synthetic fibers under different strains can be observed

--------------------------- Polyester -------------------------------------
Strain         Tension
(-)                (N)
0.0             0.0
0.009           2060100
0.026           4120200
0.041           6180300
0.056           8240400
0.07            10300500

However, the article mentions that the dynamic model Moordyn used two spring dampers for the dynamic and static stiffness of synthetic fibers, as shown in the following figure

But in my Moordyn modeling, I am not quite sure how to construct dynamic stiffness and static stiffness, and how to value these two stiffnesses. In my understanding, my Moordyn file still models a spring damper, that is, geometric stiffness, as mentioned in this article, MoorDyn User’s Guide

I think dynamic stiffness and static stiffness should also correspond to two additional spring dampers, and I am not sure how to set them in Moordyn. I hope everyone can tell me how to use Moordyn to reflect dynamic stiffness and static stiffness, or where my understanding is that there is a problem. Thank you very much!

This is my moordyn file

--------------------- MoorDyn Input File ------------------------------------
MoorDyn v2 sample input file
---------------------- LINE TYPES -----------------------------------
TypeName   Diam    Mass/m     EA     BA/-zeta    EI         Cd     Ca     CdAx    CaAx
(name)     (m)     (kg/m)     (N)    (N-s/-)     (N-m^2)    (-)    (-)    (-)     (-)
Chain      0.333     685.0   3.27E+09    -1        0        1.11     0.82     0.2     0.27
Polyester  0.22876   46.5    'MoorLinePolyester.dat'   -1    0    1.6   1.0   0.1   0.1
---------------------- POINTS ---------------------------------------
ID   Attachment  X       Y     Z      Mass   Volume  CdA    Ca
(#)   (word/ID) (m)     (m)   (m)    (kg)   (m^3)   (m^2)  (-)
1   Vessel  -58.000    0.000 -14.000     0    0    0    0
2   Free  -72.14    0.000 -28.14     0    0    0    0
3   Free  -92.14   0.000 -62.78     0    0    0    0
4   Fixed  -837.600    0.000 -200.000    0    0    0    0
5   Vessel   29.000   50.229 -14.000     0    0    0    0
6   Free  36.07  62.48 -28.14     0    0    0    0
7   Free  50.22 86.98 -56.16     0    0    0    0
8   Fixed   418.800  725.383 -200.000    0    0    0    0
9   Vessel   29.000  -50.229 -14.000     0    0    0    0
10  Free  36.07  -62.48 -28.14     0    0    0    0
11  Free  50.22 -86.98 -56.16     0    0    0    0
12  Fixed   418.800 -725.383 -200.000    0    0    0    0
---------------------- LINES ----------------------------------------
ID   LineType   AttachA  AttachB  UnstrLen  NumSegs  LineOutputs
(#)   (name)     (ID)     (ID)      (m)       (-)      (-)
1     Chain       2         1      20.00      2        ts
2     Polyester   3         2      40.00      5       ts
3     Chain       4         3     790.00      93       ts
4     Chain       6         5      20.00      2        -
5     Polyester   7         6      40.00      5       -
6     Chain       8         7     790.00      93       -
7     Chain       10        9      20.00      2        -
8     Polyester   11        10     40.00      5       -
9     Chain       12        11    790.00      93       -
---------------------- OPTIONS -----------------------------------------
0.001         dtM           time step to use in mooring integration (s)
3000000       kbot          bottom stiffness (Pa/m)
300000        cbot          bottom damping (Pa-s/m)
0.1           dtIC          time interval for analyzing convergence during IC gen (s)
60           TmaxIC        max time for ic gen (s)
0.001         threshIC      threshold for IC convergence (-)
0             MU_KT          axial line friction coefficients
0             MU_KA          transverse line friction coefficients
"wavedynamic.dat"             WaterKin              the wave elevations are provided in a grid (-)
---------------------- OUTPUTS -----------------------------------------
FAIRTEN1
FAIRTEN2
FAIRTEN3
ANCHTEN1
ANCHTEN2
ANCHTEN3
END

Best regards,

Hi @Yushun.Fu,

MoorDyn has two different options for modeling non-linear springs: The viscoelastic approach with two springs and two dampers from the first paper you linked, or a strain-tension look-up table like you are using in your input file. The approach you are using, with the strain-tension look-up table in an external txt file, is described in this paper: https://asmedigitalcollection.asme.org/OMAE/proceedings/IOWTC2022/86618/V001T01A012/1156421. The general idea is that at every time-step, MoorDyn calculates the strain, and then uses that to calculate the corresponding spring stiffness based on the provided look-up table. Thus at every time-step the single spring system is updated with a new stiffness. This approach is also described in the documentation: Input Files — MoorDyn 2.3.1 documentation.

If you want to model dynamic and static stiffness using the viscoelastic method, you are right you need two spring dashpots. MoorDyn has capability, the user guide you referenced is outdated by a couple years. We haven’t gotten around to updating the documentation for this feature yet, but the way to use it is as follows: To input the values for these springs and dashpots, you enter the two stiffness values separated by a “|” and the two damping values separated by a “|”. See the example below:

---------------------- LINE TYPES -----------------------------------
TypeName   Diam    Mass/m     EA                         BA/-zeta                      EI    Cd   Ca   CdAx  CaAx
(name)     (m)     (kg/m)     (N)                        (N-s/-)                     (N-m^2) (-)  (-)  (-)   (-)
Polyester  0.22876   46.5   <insert EA_1>|<insert EA_2>  <insert BA_1>|<insert BA_2>    0    1.6   1.0   0.1   0.1

In MoorDyn you can use one or the other of these methods depending on your situation. If you have a strain-tension curve already, it might be easier to just stick with that method.

Dear @Ryan.Davies ,
I am glad to receive your help. My previous question was whether using a viscoelastic model for dynamic and static stiffness also requires the use of nonlinear stiffness curves. Your explanation told me that these are two methods for simulating nonlinear springs, and there is no intersection between the two.

You are right. If I already have a strain-tension curve, I don’t need to worry about the viscoelastic model. I have decided to use the nonlinear stiffness curve method. There is another question I would like to ask, does the Static-Dynamic stiffness method mentioned in Streamlined Loads Analysis of Floating Wind Turbines With Fiber Rope Mooring Lines correspond to the two spring damper methods we previously discussed? Because I see that using the nonlinear stiffness method would underestimate the maximum platform offset.

There was another question that troubled me yesterday. Most articles have confirmed that using synthetic fibers as mooring systems can reduce mooring tension. However, when simulating a catenary semi submersible floating wind turbine, I found that the mooring tension of the synthetic fiber section can even be greater than the tension of the guide hole at the original pure iron chain, as shown in the following figure

As shown in the above figure, I used 40m long synthetic fibers instead of a part of the iron chain that is 20m away from the fairlead. I want to know if this is a problem with my simulation or if it is the fact that the simulated file is still the previous Moordyn file where I raised the question.

I hope to receive your assistance!
Best regards,

@Yushun.Fu,

To answer your first question, yes the static-dynamic approach in Streamlined Loads Analysis of Floating Wind Turbines With Fiber Rope Mooring Lines uses the two spring dampers in series.

With regards to the tensions, I’m not entirely sure why there is that large spike. One thought is that MoorDyn initial condition generation did not converge before the simulation. Double check that MoorDyn prints the message Fairlead tensions converged to <tension> after <time> seconds. If instead you see Fairlead tensions did not converge within TMaxIC=... then the system is likely not in equilibrium when the simulation begins. To fix this, you can play with the IC parameters in the options list.

It could also be worth looking at a time series of the tensions to see when the spike occurred. If it is at the very beginning of the simulation, then I would suspect it has to do with the system not being in equilibrium. You could also try running without waves and see if the tensions behave as expected.

Dear @Ryan.Davies ,
As you said, my Moordyn initialization is not complete. I will investigate where my problem lies and thank you for your help!
Best regards,

@Yushun.Fu,

You can try to play with the initial condition generation to allow it to find equilibrium. The parameters are described here: Input Files — MoorDyn 2.3.1 documentation

At a minimum, increasing TmaxIC will give MoorDyn more time to find that state. The other parameters will effect how fast it happens and how sensitive the check for steady state is.

Dear @Ryan.Davies ,
Keeping the mooring system balanced is really a challenge. I tried creating a tensioned synthetic fiber mooring moordyn file using the Static Case mentioned in the Streamlined Loads Analysis of Floating Wind Turbines With Fiber Rope Mooring Lines, as shown in the figure below.



It shows that moordyn initialization was successful, but a fatal error still occurred. I want to know where my problem is now?I am using OpenFast4.0, and it seems that there are also some issues with Hydrodyn and ElaSTDyn. However, I believe the impact should not be significant because I have set up a calm environment without any wind or waves, and I am also puzzled by the warning. Looking forward to your help. Thank you very much!My moordyn file is as follows:

--------------------- MoorDyn Input File ------------------------------------
MoorDyn v2  input file
---------------------- LINE TYPES -----------------------------------
TypeName   Diam    Mass/m     EA     BA/-zeta    EI         Cd     Ca     CdAx    CaAx
(name)     (m)     (kg/m)     (N)    (N-s/-)     (N-m^2)    (-)    (-)    (-)     (-)
Polyester1  0.1301   18.25   1.01E5    -1        0        1.2     0.82     0.2     0.27
---------------------- POINTS ---------------------------------------
ID   Attachment  X       Y     Z      Mass   Volume  CdA    Ca
(#)   (word/ID) (m)     (m)   (m)    (kg)   (m^3)   (m^2)  (-)
1   Vessel  -58.000    0.000 -14.000     0    0    0    0
2   Fixed  -1800.00    0.000 -800.000    0    0    0    0
3   Vessel   29.000   50.229 -14.000     0    0    0    0
4   Fixed   900.000  1558.846 -800.000    0    0    0    0
5   Vessel   29.000  -50.229 -14.000     0    0    0    0
6   Fixed   900.000 -1558.846 -800.000    0    0    0    0
---------------------- LINES ----------------------------------------
ID   LineType   AttachA  AttachB  UnstrLen  NumSegs  LineOutputs
(#)   (name)     (ID)     (ID)      (m)       (-)      (-)
1    Polyester1   2         1     1893.0      100        -
2    Polyester1   4         3     1893.0      100        -
3    Polyester1   6         5     1893.0      100        -
---------------------- OPTIONS -----------------------------------------
0.001         dtM           time step to use in mooring integration (s)
3000000       kbot          bottom stiffness (Pa/m)
300000        cbot          bottom damping (Pa-s/m)
0.1           dtIC          time interval for analyzing convergence during IC gen (s)
120           TmaxIC        max time for ic gen (s)
0.001         threshIC      threshold for IC convergence (-)
0             MU_KT          axial line friction coefficients
0             MU_KA          transverse line friction coefficients
---------------------- OUTPUTS -----------------------------------------
FAIRTEN1
FAIRTEN2
FAIRTEN3
ANCHTEN1
ANCHTEN2
ANCHTEN3
END
------------------------- need this line -------------------------------------
------- OpenFAST EXAMPLE INPUT FILE -------------------------------------------
Polyester OpenFAST4.0 for IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform
---------------------- SIMULATION CONTROL --------------------------------------
False         Echo            - Echo input data to <RootName>.ech (flag)
"FATAL"       AbortLevel      - Error level when simulation should abort (string) {"WARNING", "SEVERE", "FATAL"}
      2000    TMax            - Total run time (s)
        0.1   DT              - Recommended module time step (s)
          2   InterpOrder     - Interpolation order for input/output time history (-) {1=linear, 2=quadratic}
          0   NumCrctn        - Number of correction iterations (-) {0=explicit calculation, i.e., no corrections}
      99999   DT_UJac         - Time between calls to get Jacobians (s)
    1000000   UJacSclFact     - Scaling factor used in Jacobians (-)
---------------------- FEATURE SWITCHES AND FLAGS ------------------------------
          1   CompElast       - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades}
          0   CompInflow      - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from OpenFOAM}
          2   CompAero        - Compute aerodynamic loads (switch) {0=None; 1=AeroDyn v14; 2=AeroDyn v15}
          1   CompServo       - Compute control and electrical-drive dynamics (switch) {0=None; 1=ServoDyn}
          1   CompSeaSt       - Compute sea state information (switch) {0=None; 1=SeaState}
          1   CompHydro       - Compute hydrodynamic loads (switch) {0=None; 1=HydroDyn}
          0   CompSub         - Compute sub-structural dynamics (switch) {0=None; 1=SubDyn; 2=External Platform MCKF}
          3   CompMooring     - Compute mooring system (switch) {0=None; 1=MAP++; 2=FEAMooring; 3=MoorDyn; 4=OrcaFlex}
          0   CompIce         - Compute ice loads (switch) {0=None; 1=IceFloe; 2=IceDyn}
          0   MHK             - MHK turbine type (switch) {0=Not an MHK turbine; 1=Fixed MHK turbine; 2=Floating MHK turbine}
---------------------- ENVIRONMENTAL CONDITIONS --------------------------------
    9.80665   Gravity         - Gravitational acceleration (m/s^2)
      1.225   AirDens         - Air density (kg/m^3)
       1025   WtrDens         - Water density (kg/m^3)
  1.464E-05   KinVisc         - Kinematic viscosity of working fluid (m^2/s)
        335   SpdSound        - Speed of sound in working fluid (m/s)
     103500   Patm            - Atmospheric pressure (Pa) [used only for an MHK turbine cavitation check]
       1700   Pvap            - Vapour pressure of working fluid (Pa) [used only for an MHK turbine cavitation check]
        800   WtrDpth         - Water depth (m)
          0   MSL2SWL         - Offset between still-water level and mean sea level (m) [positive upward]
---------------------- INPUT FILES ---------------------------------------------
"IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat"    EDFile          - Name of file containing ElastoDyn input parameters (quoted string)
"unused"    BDBldFile(1)    - Name of file containing BeamDyn input parameters for blade 1 (quoted string)
"unused"    BDBldFile(2)    - Name of file containing BeamDyn input parameters for blade 2 (quoted string)
"unused"    BDBldFile(3)    - Name of file containing BeamDyn input parameters for blade 3 (quoted string)
"../IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat"    InflowFile      - Name of file containing inflow wind input parameters (quoted string)
"IEA-15-240-RWT-UMaineSemi_AeroDyn15Park.dat"    AeroFile        - Name of file containing aerodynamic input parameters (quoted string)
"IEA-15-240-RWT-UMaineSemi_ServoDynPark.dat"    ServoFile       - Name of file containing control and electrical-drive input parameters (quoted string)
"SeaState.dat"    SeaStFile       - Name of file containing sea state input parameters (quoted string)
"IEA-15-240-RWT-UMaineSemi_HydroDyn.dat"    HydroFile       - Name of file containing hydrodynamic input parameters (quoted string)
"unused"      SubFile         - Name of file containing sub-structural input parameters (quoted string)
"IEA-15-240-RWT-UMaineSemi_MoorDyn_v2.dat"    MooringFile     - Name of file containing mooring system input parameters (quoted string)
"unused"      IceFile         - Name of file containing ice input parameters (quoted string)
------- ELASTODYN v1.03.* INPUT FILE -------------------------------------------
IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform
---------------------- SIMULATION CONTROL --------------------------------------
False         Echo        - Echo input data to "<RootName>.ech" (flag)
          3   Method      - Integration method: {1: RK4, 2: AB4, or 3: ABM4} (-)
"default"     DT          Integration time step (s)
---------------------- DEGREES OF FREEDOM --------------------------------------
True          FlapDOF1    - First flapwise blade mode DOF (flag)
True          FlapDOF2    - Second flapwise blade mode DOF (flag)
True          EdgeDOF     - First edgewise blade mode DOF (flag)
False         TeetDOF     - Rotor-teeter DOF (flag) [unused for 3 blades]
False         DrTrDOF     - Drivetrain rotational-flexibility DOF (flag)
False          GenDOF      - Generator DOF (flag)
False         YawDOF      - Yaw DOF (flag)
True          TwFADOF1    - First fore-aft tower bending-mode DOF (flag)
True          TwFADOF2    - Second fore-aft tower bending-mode DOF (flag)
True          TwSSDOF1    - First side-to-side tower bending-mode DOF (flag)
True          TwSSDOF2    - Second side-to-side tower bending-mode DOF (flag)
True          PtfmSgDOF   - Platform horizontal surge translation DOF (flag)
True          PtfmSwDOF   - Platform horizontal sway translation DOF (flag)
True          PtfmHvDOF   - Platform vertical heave translation DOF (flag)
True          PtfmRDOF    - Platform roll tilt rotation DOF (flag)
True          PtfmPDOF    - Platform pitch tilt rotation DOF (flag)
True          PtfmYDOF    - Platform yaw rotation DOF (flag)
---------------------- INITIAL CONDITIONS --------------------------------------
          0   OoPDefl     - Initial out-of-plane blade-tip displacement (meters)
          0   IPDefl      - Initial in-plane blade-tip deflection (meters)
          0  BlPitch(1)  - Blade 1 initial pitch (degrees)
          0  BlPitch(2)  - Blade 2 initial pitch (degrees)
          0  BlPitch(3)  - Blade 3 initial pitch (degrees) [unused for 2 blades]
          0   TeetDefl    - Initial or fixed teeter angle (degrees) [unused for 3 blades]
          0   Azimuth     - Initial azimuth angle for blade 1 (degrees)
          0   RotSpeed    - Initial or fixed rotor speed (rpm)
          0   NacYaw      - Initial or fixed nacelle-yaw angle (degrees)
          0   TTDspFA     - Initial fore-aft tower-top displacement (meters)
          0   TTDspSS     - Initial side-to-side tower-top displacement (meters)
          0   PtfmSurge   - Initial or fixed horizontal surge translational displacement of platform (meters)
          0   PtfmSway    - Initial or fixed horizontal sway translational displacement of platform (meters)
          0   PtfmHeave   - Initial or fixed vertical heave translational displacement of platform (meters)
          0   PtfmRoll    - Initial or fixed roll tilt rotational displacement of platform (degrees)
          0   PtfmPitch   - Initial or fixed pitch tilt rotational displacement of platform (degrees)
          0   PtfmYaw     - Initial or fixed yaw rotational displacement of platform (degrees)
---------------------- TURBINE CONFIGURATION -----------------------------------
          3   NumBl       - Number of blades (-)
     120.97   TipRad      - The distance from the rotor apex to the blade tip (meters)
       3.97   HubRad      - The distance from the rotor apex to the blade root (meters)
         -4   PreCone(1)  - Blade 1 cone angle (degrees)
         -4   PreCone(2)  - Blade 2 cone angle (degrees)
         -4   PreCone(3)  - Blade 3 cone angle (degrees) [unused for 2 blades]
          0   HubCM       - Distance from rotor apex to hub mass [positive downwind] (meters)
          0   UndSling    - Undersling length [distance from teeter pin to the rotor apex] (meters) [unused for 3 blades]
          0   Delta3      - Delta-3 angle for teetering rotors (degrees) [unused for 3 blades]
          0   AzimB1Up    - Azimuth value to use for I/O when blade 1 points up (degrees)
    -12.098   OverHang    - Distance from yaw axis to rotor apex [3 blades] or teeter pin [2 blades] (meters)
        0.0   ShftGagL    - Distance from rotor apex [3 blades] or teeter pin [2 blades] to shaft strain gages [positive for upwind rotors] (meters)
       -6.0   ShftTilt    - Rotor shaft tilt angle (degrees)
    -4.7201   NacCMxn     - Downwind distance from the tower-top to the nacelle CM (meters)
        0.0   NacCMyn     - Lateral  distance from the tower-top to the nacelle CM (meters)
     4.2751   NacCMzn     - Vertical distance from the tower-top to the nacelle CM (meters)
        0.0   NcIMUxn     - Downwind distance from the tower-top to the nacelle IMU (meters)
        0.0   NcIMUyn     - Lateral  distance from the tower-top to the nacelle IMU (meters)
        0.0   NcIMUzn     - Vertical distance from the tower-top to the nacelle IMU (meters)
     4.3495   Twr2Shft    - Vertical distance from the tower-top to the rotor shaft (meters)
    144.386   TowerHt     - Height of tower above ground level [onshore] or MSL [offshore] (meters)
         15   TowerBsHt   - Height of tower base above ground level [onshore] or MSL [offshore] (meters)
          0   PtfmCMxt    - Downwind distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters)
          0   PtfmCMyt    - Lateral distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters)
    -14.400   PtfmCMzt    - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters)
          0   PtfmRefzt   - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform reference point (meters)
---------------------- MASS AND INERTIA ----------------------------------------
          0   TipMass(1)  - Tip-brake mass, blade 1 (kg)
          0   TipMass(2)  - Tip-brake mass, blade 2 (kg)
          0   TipMass(3)  - Tip-brake mass, blade 3 (kg) [unused for 2 blades]
      69360   HubMass     - Hub mass (kg)
     973520   HubIner     - Hub inertia about rotor axis [3 blades] or teeter axis [2 blades] (kg m^2)
    1836784   GenIner     - Generator inertia about HSS (kg m^2)
     646895   NacMass     - Nacelle mass (kg)
   24240914   NacYIner    - Nacelle inertia about yaw axis (kg m^2)
      28280   YawBrMass   - Yaw bearing mass (kg)
1.7838E+07    PtfmMass    - Platform mass (kg)
1.2507E+10    PtfmRIner   - Platform inertia for roll tilt rotation about the platform CM (kg m^2)
1.2507E+10    PtfmPIner   - Platform inertia for pitch tilt rotation about the platform CM (kg m^2)
2.3667E+10    PtfmYIner   - Platform inertia for yaw rotation about the platform CM (kg m^2)
          0   PtfmXYIner  - Platform xy moment of inertia about the platform CM (=-int(xydm)) (kg m^2)
          0   PtfmYZIner  - Platform yz moment of inertia about the platform CM (=-int(yzdm)) (kg m^2)
          0   PtfmXZIner  - Platform xz moment of inertia about the platform CM (=-int(xzdm)) (kg m^2)
---------------------- BLADE ---------------------------------------------------
         50   BldNodes    - Number of blade nodes (per blade) used for analysis (-)
"../IEA-15-240-RWT/IEA-15-240-RWT_ElastoDyn_blade.dat"    BldFile1    - Name of file containing properties for blade 1 (quoted string)
"../IEA-15-240-RWT/IEA-15-240-RWT_ElastoDyn_blade.dat"    BldFile2    - Name of file containing properties for blade 2 (quoted string)
"../IEA-15-240-RWT/IEA-15-240-RWT_ElastoDyn_blade.dat"    BldFile3    - Name of file containing properties for blade 3 (quoted string) [unused for 2 blades]
---------------------- ROTOR-TEETER --------------------------------------------
          0   TeetMod     - Rotor-teeter spring/damper model {0: none, 1: standard, 2: user-defined from routine UserTeet} (switch) [unused for 3 blades]
          0   TeetDmpP    - Rotor-teeter damper position (degrees) [used only for 2 blades and when TeetMod=1]
          0   TeetDmp     - Rotor-teeter damping constant (N-m/(rad/s)) [used only for 2 blades and when TeetMod=1]
          0   TeetCDmp    - Rotor-teeter rate-independent Coulomb-damping moment (N-m) [used only for 2 blades and when TeetMod=1]
          0   TeetSStP    - Rotor-teeter soft-stop position (degrees) [used only for 2 blades and when TeetMod=1]
          0   TeetHStP    - Rotor-teeter hard-stop position (degrees) [used only for 2 blades and when TeetMod=1]
          0   TeetSSSp    - Rotor-teeter soft-stop linear-spring constant (N-m/rad) [used only for 2 blades and when TeetMod=1]
          0   TeetHSSp    - Rotor-teeter hard-stop linear-spring constant (N-m/rad) [used only for 2 blades and when TeetMod=1]
---------------------- YAW-FRICTION --------------------------------------------
          0   YawFrctMod  - Yaw-friction model {0: none, 1: friction without Fz term at the yaw bearing, 2: friction includes Fz term at yaw bearing, 3: user defined model} (switch)
          0   M_CSmax     - Maximum Coulomb friction torque (N-m)[mu_s*D_eff when YawFrctMod=1 and Fz*mu_s*D_eff when YawFrctMod=2]
          0   M_CD        - Dynamic friction moment at null yaw rate (N-m) [mu_d*D_eff when YawFrctMod=1 and Fz*mu_d*D_eff when YawFrctMod=2]
          0   sig_v       - Viscous friction coefficient (N-m/(rad/s))
---------------------- DRIVETRAIN ----------------------------------------------
        100   GBoxEff     - Gearbox efficiency (%)
          1   GBRatio     - Gearbox ratio (-)
51140939610   DTTorSpr    - Drivetrain torsional spring (N-m/rad)
   42676833   DTTorDmp    - Drivetrain torsional damper (N-m/(rad/s))
---------------------- FURLING -------------------------------------------------
False         Furling     - Read in additional model properties for furling turbine (flag) [must currently be FALSE)
"unused"      FurlFile    - Name of file containing furling properties (quoted string) [unused when Furling=False]
---------------------- TOWER ---------------------------------------------------
         20   TwrNodes    - Number of tower nodes used for analysis (-)
"IEA-15-240-RWT-UMaineSemi_ElastoDyn_tower.dat"    TwrFile     - Name of file containing tower properties (quoted string)
---------------------- OUTPUT --------------------------------------------------
True         SumPrint    - Print summary data to "<RootName>.sum" (flag)
          1   OutFile     - Switch to determine where output will be placed: {1: in module output file only; 2: in glue code output file only; 3: both} (currently unused)
True          TabDelim    - Use tab delimiters in text tabular output file? (flag) (currently unused)
"ES10.3E2"    OutFmt      - Format used for text tabular output (except time).  Resulting field should be 10 characters. (quoted string) (currently unused)
          0   TStart      - Time to begin tabular output (s) (currently unused)
          1   DecFact     - Decimation factor for tabular output {1: output every time step} (-) (currently unused)
          1   NTwGages    - Number of tower nodes that have strain gages for output [0 to 9] (-)
         20   TwrGagNd    - List of tower nodes that have strain gages [1 to TwrNodes] (-) [unused if NTwGages=0] TwrGagNd    - List of tower nodes that have strain gages [1 to TwrNodes] (-) [unused if NTwGages=0] TwrGagNd    - List of tower nodes that have strain gages [1 to TwrNodes] (-) [unused if NTwGages=0]
          3   NBlGages    - Number of blade nodes that have strain gages for output [0 to 9] (-)
          5,          9,         13    BldGagNd    - List of blade nodes that have strain gages [1 to BldNodes] (-) [unused if NBlGages=0] BldGagNd    - List of blade nodes that have strain gages [1 to BldNodes] (-) [unused if NBlGages=0] BldGagNd    - List of blade nodes that have strain gages [1 to BldNodes] (-) [unused if NBlGages=0]
                   OutList             - The next line(s) contains a list of output parameters.  See OutListParameters.xlsx for a listing of available output channels, (-)                 
"Azimuth"
"BldPitch1"
"BldPitch2"
"BldPitch3"
END of input file (the word "END" must appear in the first 3 columns of this last OutList line)
---------------------- NODE OUTPUTS --------------------------------------------
          0   BldNd_BladesOut  - Blades to output
         99   BldNd_BlOutNd   - Blade nodes on each blade (currently unused)
              OutList     - The next line(s) contains a list of output parameters.  See OutListParameters.xlsx, ElastoDyn_Nodes tab for a listing of available output channels, (-)
"TDx"    - local flapwise (translational) deflection (relative to the undeflected position) of node
"TDy"    - local edgewise (translational) deflection (relative to the undeflected position) of node
"RDz"
END of input file (the word "END" must appear in the first 3 columns of this last OutList line)
---------------------------------------------------------------------------------------
------- HydroDyn Input File ----------------------------------------------------
IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform
False            Echo           - Echo the input file data (flag)
---------------------- FLOATING PLATFORM --------------------------------------- [unused with WaveMod=6]
             1   PotMod         - Potential-flow model {0: none=no potential flow, 1: frequency-to-time-domain transforms based on WAMIT output, 2: fluid-impulse theory (FIT)} (switch)
             1   ExctnMod       - Wave-excitation model {0: no wave-excitation calculation, 1: DFT, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ssexctn INPUT FILE]
             1   ExctnDisp      - Method of computing Wave Excitation {0: use undisplaced position, 1: use displaced position, 2: use low-pass filtered displaced position) [only used when PotMod=1 and ExctnMod>0 and SeaState's WaveMod>0]} (switch)
            0.04   ExctnCutOff    - Cutoff (corner) frequency of the low-pass time-filtered displaced position (Hz) [>0.0] [used only when PotMod=1, ExctnMod>0, and ExctnDisp=2]) [only used when PotMod=1 and ExctnMod>0 and SeaState's WaveMod>0]} (switch)
             1   RdtnMod        - Radiation memory-effect model {0: no memory-effect calculation, 1: convolution, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ss INPUT FILE]
            60   RdtnTMax       - Analysis time for wave radiation kernel calculations (sec) [only used when PotMod=1 and RdtnMod>0; determines RdtnDOmega=Pi/RdtnTMax in the cosine transform; MAKE SURE THIS IS LONG ENOUGH FOR THE RADIATION IMPULSE RESPONSE FUNCTIONS TO DECAY TO NEAR-ZERO FOR THE GIVEN PLATFORM!]
            0.1  RdtnDT         - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1 and ExctnMod>0 or RdtnMod>0; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform]
             1   NBody          - Number of WAMIT bodies to be used (-) [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6]
             1   NBodyMod       - Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1]
"HydroData/IEA-15-240-RWT-UMaineSemi"    PotFile       - Root name of potential-flow model data; WAMIT output files containing the linear, nondimensionalized, hydrostatic restoring matrix (.hst), frequency-dependent hydrodynamic added mass matrix and damping matrix (.1), and frequency- and direction-dependent wave excitation force vector per unit wave amplitude (.3) (quoted string) [1 to NBody if NBodyMod>1] [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLY-SIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO- AND INFINITE-FREQUENCY LIMITS!]
             1   WAMITULEN      - Characteristic body length scale used to redimensionalize WAMIT output (meters) [1 to NBody if NBodyMod>1] [only used when PotMod=1]
             0   PtfmRefxt      - The xt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1]
             0   PtfmRefyt      - The yt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1]
             0   PtfmRefzt      - The zt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1. If NBodyMod=2,PtfmRefzt=0.0]
             0   PtfmRefztRot   - The rotation about zt of the body reference frame(s) from xt/yt (degrees) [1 to NBody] [only used when PotMod=1]
         20206.34889   PtfmVol0       - Displaced volume of water when the body is in its undisplaced position (m^3) [1 to NBody] [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!]
             0   PtfmCOBxt      - The xt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]
             0   PtfmCOByt      - The yt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]
---------------------- 2ND-ORDER FLOATING PLATFORM FORCES ---------------------- [unused with WaveMod=0 or 6, or PotMod=0 or 2]
             0   MnDrift        - Mean-drift 2nd-order forces computed                                       {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, MnDrift  /=8]
             0   NewmanApp      - Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, NewmanApp/=8. Used only when WaveDirMod=0]
            12   DiffQTF        - Full difference-frequency 2nd-order forces computed with full QTF          {0: None; [10, 11, or 12]: WAMIT file to use}          [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero]
            12   SumQTF         - Full summation -frequency 2nd-order forces computed with full QTF          {0: None; [10, 11, or 12]: WAMIT file to use}
---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING  -------------- [unused with PotMod=0 or 2]
             0   AddF0    - Additional preload (N, N-m)  [If NBodyMod=1, one size 6*NBody x 1 vector; if NBodyMod>1, NBody size 6 x 1 vectors]
             0
             0
             0
             0
             0
             0             0             0             0             0             0   AddCLin  - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad)                     [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices]
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0   AddBLin  - Additional linear damping(N/(m/s), N/(rad/s), N-m/(m/s), N-m/(rad/s))        [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices]
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             9.23E+05	0.00E+00	0.00E+00	0.00E+00	-8.92E+06	0.00E+00 AddBQuad - Additional quadratic drag(N/(m/s)^2, N/(rad/s)^2, N-m(m/s)^2, N-m/(rad/s)^2) 
             0.00E+00	9.23E+05	0.00E+00	8.92E+06	0.00E+00	0.00E+00
             0.00E+00	0.00E+00	2.30E+06	0.00E+00	0.00E+00	0.00E+00
             0.00E+00	8.92E+06	0.00E+00	1.68E+10	0.00E+00	0.00E+00
            -8.92E+06	0.00E+00	0.00E+00	0.00E+00	1.68E+10	0.00E+00
             0.00E+00	0.00E+00	0.00E+00	0.00E+00	0.00E+00	4.80E+10
------- SeaState Input File ----------------------------------------------------
IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform
---------------------- WAVES ---------------------------------------------------
             0   WaveMod        - Incident wave kinematics model {0: none=still water, 1: regular (periodic), 1P#: regular with user-specified phase, 2: JONSWAP/Pierson-Moskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: user-defined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated wave-elevation time series, 6: Externally generated full wave-kinematics time series, 7: wave frequency components [option 6 is invalid for PotMod/=0]} (switch)
             3   WaveStMod      - Model for stretching incident wave kinematics to instantaneous free surface {0: none=no stretching, 1: vertical stretching, 2: extrapolation stretching, 3: Wheeler stretching} (switch) [unused when WaveMod=0 or when PotMod/=0]
           4000   WaveTMax       - Analysis time for incident wave calculations (sec) [unused when WaveMod=0; determines WaveDOmega=2Pi/WaveTMax in the IFFT]
           0.1   WaveDT         - Time step for incident wave calculations     (sec) [unused when WaveMod=0 or 7; 0.1<=WaveDT<=1.0 recommended; determines WaveOmegaMax=Pi/WaveDT in the IFFT]
             8   WaveHs         - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3]
          12.7   WaveTp         - Peak-spectral period of incident waves       (sec) [used only when WaveMod=1 or 2]
           3.3   WavePkShp      - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz]
      0.434911   WvLowCOff      - Low  cut-off frequency or lower frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, 6, or 7]
      3.246296   WvHiCOff       - High cut-off frequency or upper frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, 6, or 7]
             0   WaveDir        - Incident wave propagation heading direction                         (degrees) [unused when WaveMod=0, 6 or 7]
             0   WaveDirMod     - Directional spreading function {0: none, 1: COS2S}                  (-)       [only used when WaveMod=2,3, or 4]
             1   WaveDirSpread  - Wave direction spreading coefficient ( > 0 )                        (-)       [only used when WaveMod=2,3, or 4 and WaveDirMod=1]
             1   WaveNDir       - Number of wave directions                                           (-)       [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only]
             0   WaveDirRange   - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1]
     123456789   WaveSeed(1)    - First  random seed of incident waves [-2147483648 to 2147483647]    (-)       [unused when WaveMod=0, 5, or 6]
"RANLUX"         WaveSeed(2)    - Second random seed of incident waves [-2147483648 to 2147483647] for intrinsic pRNG, or an alternative pRNG: "RanLux" (-)       [unused when WaveMod=0, 5, or 6]
FALSE            WaveNDAmp      - Flag for normally distributed amplitudes                            (flag)    [only used when WaveMod=2, 3, or 4]
"none"           WvKinFile      - Root name of externally generated wave data file(s)        (quoted string)    [used only when WaveMod=5, 6 or 7]


Best regards,

Dear @Yushun.Fu,

From the warnings and errors, I would guess your OpenFAST model is numerically unstable. It appears that you are simulating the IEA Wind 15-MW RWT atop the VolturnUS semisubmersible; what have you changed relative to the model provided by NREL from its repository: IEA-15-240-RWT/OpenFAST/IEA-15-240-RWT-UMaineSemi at master · IEAWindTask37/IEA-15-240-RWT · GitHub? I did notice that your glue code time step (DT) is quite a bit larger than in the repository, which may be a source of the instability.

Best regards,

Dear @Ryan.Davies ,
I have solved the problem of Moordyn not converging, and now I have a new idea. The Streamlined Loads Analysis of Floating Wind Turbines With Fiber Rope Mooring Lines mentions the non-linear stiffness method and the static dynamic stiffness method. It can be found that the latter can more accurately calculate the platform offset. I currently know the non-linear stiffness curve, can it be converted into the dynamic stiffness and static stiffness of the static dynamic stiffness method through any method? I hope to receive your assistance!


Best regards,

Hi @Yushun.Fu,

It’s hard to convert from the non-linear curve to the static dynamic approach because the non-linear stiffness method only represents the dynamic stiffness. To get the static and dynamic stiffness, I would suggest looking into the literature and product catalogues for different material properties. There is a review of studies that provide this type of data in Streamlined Loads Analysis of Floating Wind Turbines With Fiber Rope Mooring Lines. There are also existing static and dynamic coefficients used in the tool MoorPy that are based on a survey of product catalogue data: MoorPy/moorpy/MoorProps_default.yaml at master · NREL/MoorPy · GitHub

Once you have the static and dynamic coefficients, I would suggest using the method in Streamlined Loads Analysis of Floating Wind Turbines With Fiber Rope Mooring Lines rather than creating another curve to input.

Dear @Ryan.Davies ,
I am very glad to receive your reply. It has really helped me a lot!
But now I have discovered a new problem. Firstly, I am not sure if it is my fault for calculating MBL in the article. According to the data mentioned in the Streamlined Loads Analysis of Floating Wind Turbines With Fiber Rope Mooring Lines, the MBL I calculated is quite different, but if I use MBL.d2 from Moorpy, the calculation result is very close, as shown in the following figure.



image

It can be seen that using Moorpy’s MBL_de2 from the first image yields a calculation result that is closer to the original one.

The second question is still about the calculation of dynamic stiffness and quasi-static stiffness in the Streamlined Loads Analysis of Floating Wind Turbines With Fiber Rope Mooring Lines,. According to the calculation formula in the article as shown in the figure below, EAd_MBL (dynamic stiffness) should be greater than EA_Static stiffness per MBL, but in Moorpy, it is 11.6<14 instead.
image


Only in this way can we meet the requirement in Table 4 of the article that the dynamic stiffness is greater than the quasi-static stiffness, otherwise 11.6 * MBL will definitely be less than 14 * MBL.

These two questions are troubling me, and I hope to receive your professional answers!
Best regards,

Hi @Yushun.Fu,

I should have been more clear about the use of the MoorProps data. The EAd_MBL term corresponds to alpha in the equation above, and the EAd_MBL_Lm term corresponds to beta:
Screenshot 2024-09-27 at 8.18.19 AM

where Lm is in units of % MBL (e.g., 20% MBL equates to a value of 20 for Lm in this equation).

The properties from table 1 are the old MoorProps values, before we updated them with a more robust analysis of product catalogue data. The current MoorProps data on GitHub is considered more accurate than what we had available when that study was published. If you are trying to match the study results, I would suggest just using the dynamic and static stiffness from table 4.

Dear @Ryan.Davies ,

Your explanation is very easy to understand and has really helped me a lot!
The last question you mentioned is’ where Lm is in units of% MBL '. Lm should be the average load, usually related to the MBL of a mooring line, such as Lm=40% * MBl. So, does this 40 correspond to calculating Lm in the Krd equation?
If I understand correctly, this 40% is related to the mooring line material and can be defined by myself?

Best regards,

Hi @Yushun.Fu ,

The 40 in MoorPy is saying that beta = 40% of MBL. That is material dependent and comes from product catalogues. The value of Lm is situation dependent, it is the average load on the line for your conditions.