SubDyn vs MoorPy: Differences in the linearized stiffness matrix for horizontal pretensioned lines
As part of the OC7 Phase II project, we are modeling a system with three -nearly horizontal- mooring lines. See below for reference:
The properties of these mooring lines are as follows:
The lines are quite straight-forward to model since they are fishing lines that can be modeled as linear springs with a pretension.
One model was built up in MoorPy (quasi-static approach equivalent to MAP++). The latest MoorPy release (v1.1.0) has been used for this. The input file used is attached here: MoorPy_OC7_PhaseII.txt
By linearizing the system around the (0,0,0) location (KsystemA = ms.getCoupledStiffness()), the stiffness matrix obtained is:
As it can be observed, the stiffness matrix obtained is not symmetric in some locations (e.g., K45 != K54).
For verification purposes, another model has been built in SubDyn by means of rigid links and pretensioned cables. The SubDyn version used corresponds to the latest OpenFAST v 4.0.0 and the input file is as follows: SubDyn_OC7_PhaseII.txt
The graphical representation of the SubDyn model is also attached below for completeness:
The equivalent stiffness matrix at the interface point (located at the origin), can be checked from the summary file:
As it can be observed, this matrix is symmetric.
When comparing the stiffness matrices from MoorPy and SubDyn, significant differences can be observed. For reference, there is perfect agreement in the diagonal and off-diagonal coefficients when comparing the SubDyn outputs against an in-house finite element model that uses ground springs (without pretension) at the fairlead locations instead of cable elements.
It is known that SubDyn does not account for the geometric stiffness coming from the cable pretension due to issues with the Guyan reduction. This is documented here: https://github.com/OpenFAST/openfast/pull/2363 This explains why SubDyn and the in-house finite element model (both without initial pretension in the cables) show perfect agreement between them.
I have modified the SubDyn source code (FEM.f90) to account for the influence of the geometric stiffness due to the cable pretension. The new results are as follows:
This stiffness matrix, accounting for geometric stiffness in SubDyn, is still symmetric and shows better agreement against the output from MoorPy in surge (K11), sway (K22) and heave (K33). However, there are still significant differences in roll (K44), pitch (K55) and yaw (K66).
For reference, the results from pyMAP (MAP++ in Python) are:
These results are quite aligned with the ones from MoorPy. But some significant differences can also be observed in heave (one order of magnitude difference) and roll (pyMAP: 2.78E8 Nm/rad vs MoorPy: 3.99E8 Nm/rad).
In addition, the visualization from pyMAP doesn't seem to be consistent. pyMAP shows the fairlead locations above the anchor locations for the three lines. However, this shouldn't be the case for the lines 1 and 2.
Proper visualization from MoorPy:
After having a very interesting and useful conversation with @luwang00 about the analytical derivation of the cable elements considering geometrical stiffness, we can confirm that the stiffness matrix from MoorPy seems to be right. The stiffness matrix derived analytically is:
The exact same stiffness matrix is obtained in MoorPy by using:
KsystemA = ms.getSystemStiffnessA(DOFtype='coupled')
One interesting key finding based on the analytical derivation and some tests performed with a 3rd code: the stiffness matrix becomes non-symmetric when there is an initial cable pretension and also an asymmetry in the mooring lines (both conditions must be true).
This means that the geometric stiffness for the cable elements with initial pretension in SubDyn (currently disabled in OpenFAST v 4.0.2) is not properly accounted for.