Force-Displacement relationship of OC4 DeepCwind Mooring sys

Hi everyone,

I am reproducing the force-displacement relationship of OC4 DeepCwind Model just as what Dr. Jonkman did in the reference paper: Definition of the Semisubmersible Floating System for Phase II of OC4_5Dec2012. I get the same results as Dr. Jonkman but I have a question about the Pitch restoring moment when the surge varied independently with all other displacements zero-valued. see Figure 5-2 in the reference paper.

According to the result, when the platform surge displacement is positive, which usually because of the wind and wave in the x direction, the resulting pitch moment is also positive. If this is true, the pitch moment will not act as a restoring force which decrease the pitch angle, but instead of increasing the pitch angle.

This problem can be solved by means of increasing the net weight of the mooring lines in water, which is the heave load acting on the platform. But I am not sure what I am understanding is right.

Thank you in advance if someone can help me with this problem.
Capture.PNG

Dear Jinsong,

I agree that the mooring system arrangement for the OC4-DeepCwind semi has the effect that a positive surge will induce a positive pitching moment. This results from the surge motion tugging on the upstream mooring line and making the downstream lines more slack; I’m not sure changing the weight of the mooring lines would change that. However, I’m not aware that this mooring arrangement causes any problems either.

Best regards,

Dear Jason,

Base on the discussion between you and Jinsong, I would like to ask, how can we reproduce the force-displacement relationship of the OC4 DeepCwind Model?

I guess you might have used a customized version to derive the relationships, as discussed in Questions about the HydroDyn Module - #2 by Jason.Jonkman?

My second question is: if any, is it possible to speed up this manual process by using some tricks?

Best regards,
Yingyi Liu

Dear Yingyi Liu,

Yes, you can run separate simulations with different platform displacements to derive force-displacement relationships. You can do this in FAST (e.g. by running separate simulations with different initial platform displacements in ElastoDyn) or using one of the standalone drivers for the various mooring modules. I’m not too familiar with the Python wrapper for MAP++, but this may be a good approach–see the online MAP++ documentation for more information: map-plus-plus.readthedocs.io/en/ … index.html.

The factor of -1000 in the forum post you referenced was because the matrix analyzed was in kN instead of N and had the opposite sign.

Best regards,

Dear Jason,

I tested the python wrapper for MAP++ that you have mentioned for the original FAST Test25 DeepC floating wind model. It seems possible to define the variation of surge displacement in the provided python driver (map-plus-plus.readthedocs.io/en/ … figuration):

… …
surge = 0.0 # 5 meter surge displacements
mooring_1.displace_vessel(surge,0,0,0,0,0)
mooring_1.update_states(0.0,0)
… …

I finally succeeded in getting the following results for the surge displacement=0.0 m :

Linearized stiffness matrix with 0.00 surge vessel displacement:
[[ 7.07e+04 6.86e-02 3.16e-02 -1.82e+00 -1.08e+05 -7.20e-01]
[ 3.79e-01 7.07e+04 -2.98e-02 1.08e+05 -3.23e+00 -2.23e+00]
[ 3.45e-02 2.80e-01 1.91e+04 2.26e-01 -2.01e-01 4.71e+00]
[ -1.75e+00 1.10e+05 -1.16e-01 8.74e+07 -1.80e+02 -2.83e+01]
[ -1.10e+05 -2.82e+00 -1.41e-01 1.22e+02 8.74e+07 2.90e+01]
[ -8.54e-01 -2.23e+00 4.45e+00 -3.71e+01 3.43e+01 1.17e+08]]
Line 1: H = 909704.13 [N] V = 631915.26 [N]
Line 1: Fx = 909704.13 [N] Fy = 0.00 [N] Fz = 631915.26 [N]

The vertical pretension V = 631915.26 [N] indicates that this result coincides with that of FAST simulation.

What I wonder is: which value(s) in the above outputs (there is a linearized 6X6 stiffness matrix for the whole mooring system together with pretension and some other outputs for Line 1) should I use to generate the force-displacement relationship plot?

Thanks a lot.
Best regards,
Yingyi Liu

Dear Yingyi Liu,

The figure uploaded by Jinsong Liu above shows the total mooring reaction load about the platform reference point. If this value is not directly generated by the python wrapper for MAP++ (again I have not used this feature myself, so, I’m not familiar with the details), you could derive it by summing up the fairlead tensions from all lines (Fx, Fy, Fz and the associated moments using the moment arms to the platform reference point).

Best regards,

Dear Jason,

I calculated the force-displacement relationship based on the python wrapper. I generated exactly the same graphs for displacements in surge, sway and heave as given in Figure 5-2, Page 30 of the document “Definitions of the DeepCwind semi…”(nrel.gov/docs/fy14osti/60601.pdf). For example, the force-displacement relationship for displacement in surge generated by me is:


which is exactly the same with that shown by Jingsong Liu (also the DeepCwind document).

However, the graphs I generated for rotational displacements are different from those provided by the DeepCwind document, e.g., for roll displacement(similar for pitch), it looks like


for yaw displacement, it looks like

to be continued in the next post–>

Dear Jason,

(continued from the last post)

If I amplify the restoring moments by a factor of 17~20, then my graphs for rotational displacements look same as those in the official document. For example, if I amplify the roll restoring moment for displacement in roll by a factor of 17, the second graph in the above last post will be


and if I amplify the yaw restoring moment for displacement in yaw by a factor of 20, the second graph in the above last post will be

which are almost the same with those in the official document.

I cannot understand why those discrepancies occur in the rotational displacements. If possible, could you please confirm the correctness of the results in roll, pitch and yaw displacements in Figure 5-2 of the “Definition of DeepCwind semisub…” document? Because I’m a little doubtful for those discrepancies in the magnitude.

Best regards,
Yingyi Liu

Dear Yingyi,

The linearized mooring restoring (stiffness matrix) you calculated by the MAP++ wrapper in your post dated Feb 01, 2018 seems to match well with that reported in the OC4-DeepCwind specifications report in Eq. (5-15). If you estimate the slope of the force-displacement curves from the plots, the slope derived from the published plots is consistent with this stiffness matrix. I’m not sure why your force-displacement curve is showing less roll-roll and less yaw-yaw stiffness, but this seems inconsistent with the linearized stiffness matrix you’ve confirmed.

Best regards,

Dear Yingyi
I’m using python wrapper for MAP++, my computer system is windows 64. I downloaded the main.py and mapsys.py from (https://bitbucket.org/mmasciola/map-plus-plus/src/master/python_driver/?at=master), when I run main.py with python 2.7.13, the error is given as following:

Traceback (most recent call last):
File “D:\FastV8\Mooring\mmasciola-map-plus-plus-f30012b568d7\mmasciola-map-plus-plus-f30012b568d7\python_driver\main.py”, line 35, in
from mapsys import *
File “D:\FastV8\Mooring\mmasciola-map-plus-plus-f30012b568d7\mmasciola-map-plus-plus-f30012b568d7\python_driver\mapsys.py”, line 28, in
class Map(object):
File “D:\FastV8\Mooring\mmasciola-map-plus-plus-f30012b568d7\mmasciola-map-plus-plus-f30012b568d7\python_driver\mapsys.py”, line 626, in Map
lib.map_offset_fairlead.argtypes = [MapInput_Type, c_int, c_double, c_double, c_double, c_char_p, POINTER(c_int)]
File “C:\Python27\lib\ctypes_init_.py”, line 375, in getattr
func = self.getitem(name)
File “C:\Python27\lib\ctypes_init_.py”, line 380, in getitem
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function ‘map_offset_fairlead’ not found

I’m new to python. Could you tell me how to do with this errro? Or could you tell me how to modify the two files when download from the website ?

Best regards

H Yu Lei,

For now, you can comment lines 626 - 632 in mapsys.py. The most recent changes on git should have been pushed to the ‘next’ branch, but I was mistakenly working in master.

Dear Marco

Thanks for your reminding. I have corrected the code now, and the python can run normally.

Best regards

Dear Yu Lei,

I’m sorry, I just see your message to me.
Glad to hear that your problem has already been solved.
If you have further questions, please ask me again.
You can also send to my email. My email is: liuyingyi@riam.kyushu-u.ac.jp

Dear Sir/Madam who is in charge of this forum,

Is it possible to set an alert to my email in case of being questioned?
Thanks.

Best regards,
Yingyi

Dear Yingyi.Liu,

Go to your “User Control Panel”, select the “Board Preferences” tab, and select which notifications you want to be e-mailed about under “Edit notification options”.

Best regards,