Forces in a shared anchor

Hi to all

I wanted to ask you how to obtain the forces on the three axes in a shared anchor.

Right now I’m doing it line by line, but it’s laborious.

Best regards

Iñaki

Hi @Inaki.Zabala,

As of now there is not a way to extract the information from fixed points on the seabed, the forces on them are never aggregated because they are assumed to never move (and thus force isn’t needed for capturing system dynamics). Have you tried outputting Line#NAFX/Y/Z (ex. Line2NAFX gives the x component of force on node A (0) of Line 2) for each of the lines in the shared anchor and then summing the forces with a post processing step? That would be the fastest solution I could think off of the top of my head.

@Matthew.Hall might have other ideas, not sure what you have done in the past for shared anchor loads here.

Hi Iñaki,

I haven’t tested this, but I think you could make a fixed Body to represent a shared anchor, then make your existing points attached to the corresponding anchor body rather than being fixed. Then you could have MoorDyn output the forces/moments on the anchor bodies and that should give you the summation you’re looking for. If you try this, let me know how it goes! (We’ve been debating using this approach in MoorPy recently.)

Thank you Ryan

What you’re saying is exactly what I’m doing. Until now, I was doing the post-processing in Excel, but it’s slow and prone to errors. Now I was automating it.

Best regards
Iñaki

1 Like

Hi Matt

What you say sounds interesting, and it’s a trick I think I’ve used in Orca. However, I don’t know how to attach the lines to the bodies.

Best regards
Iñaki

@Matthew.Hall and @Inaki.Zabala, I’m pretty sure that fixed bodies follow the same rules as fixed points, their forces and moments are never solved for because they are fixed and thus don’t need to calculate kinematics.

Side note to that: attaching lines to bodies is pretty simple, you just need to attach points to the body and then lines to your points. An example case with two lines attached by a single point to a body on the seabed would look like:

----------------------- 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.252   390        1.674e9    -1.0        0          1.37   1.0    0.64    0.0
----------------------- BODIES -------------------------------------------------
ID   Attachment  X0     Y0    Z0     r0      p0     y0     Mass  CG*   I*      Volume   CdA*   Ca
(#)     (-)      (m)    (m)   (m)   (deg)   (deg)  (deg)   (kg)  (m)  (kg-m^2)  (m^3)   (m^2)  (-)
1       Fixed     0     0    -200     0       0      0      0     0     0         0       0     0
---------------------- POINT PROPERTIES --------------------------------
ID    Type      X       Y      Z       Mass   Volume  CdA    Ca
(#)   (-)       (m)     (m)    (m)     (kg)   (mˆ3)   (m^2)  (-)
1      Body1     0      0.0     0.0       0      0       0     0  # note that body attached points are defined in the body's reference frame
2     Vessel    700     0.0     0.0       0      0       0     0
3     Vessel   -700     0.0     0.0       0      0       0     0
---------------------- LINES ----------------------------------------
ID   LineType   AttachA  AttachB  UnstrLen  NumSegs  LineOutputs
(#)   (name)     (#)      (#)       (m)       (-)     (-)
1     chain      1        3         760       76      -
2     chain      1        2         760       76      -
---------------------- OPTIONS -----------------------------------------
2                    writeLog             Write a log file
<other options> 
---------------------- Outputs -----------------------------------------
Body1FX
Body1FY
Body1FZ
Body1MX
etc...

Inaki - in theory you could use an approach of attaching two Lines to one common Point, and making that Point attached to a fixed Body, to get the loads summed from the Point object. This would be a workaround for the limitation Ryan is describing I think.

Ryan - do you know if this limitation is in both C and F versions, and any idea when/why it was introduced? I’m fairly certain I originally made things so you could query anchor points to get the anchor loads (the ground Body’s dRHS would be called, which would have any fixed points calculate their net loads). In any case I’m thinking we should restore this functionality if it was lost at some point… Summing these loads is very light computationally.

@Matthew.Hall, not sure when this was changed (I wasn’t the one to make the change). I did some more digging. The anchor forces are calculated in MD-F (the version in OpenFAST @Inaki.Zabala), but not in MD-C. The following input file produces Point1FZ = 2.74e8 N in MD-F but 0 in MD-C.

I’ve opened an issue in MD-C to add it to the todo list.

Test input file:

Header stuff
----------------------- 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.252   390        1.674e9    -1.0        0          1.37   1.0    0.64    0.0
---------------------- POINT PROPERTIES --------------------------------
ID    Type      X       Y      Z       Mass   Volume  CdA    Ca
(#)   (-)       (m)     (m)    (m)     (kg)   (mˆ3)   (m^2)  (-)
1      Fixed     0     0.0     -200.0       0      0       0     0  # note that body attached points are defined in the body's reference frame
2     Vessel     700     0.0     0.0       0      0       0     0
3     Vessel     -700     0.0     0.0       0      0       0     0
---------------------- LINES ----------------------------------------
ID   LineType   AttachA  AttachB  UnstrLen  NumSegs  LineOutputs
(#)   (name)     (#)      (#)       (m)       (-)     (-)
1     chain      1        3         560       76      p
2     chain      1        2         560       76      p
---------------------- OPTIONS -----------------------------------------
2                    writeLog             Write a log file
200                  WtrDpth
0.001                dtM
---------------------- Outputs -----------------------------------------
Point1FX
Point1FY
Point1FZ
------------- End ---------------

Oh!, so in OpenFAST is super-simple. No extra body necessary, just output PointFX/Y/Z, for all the * anchors. I imagine it will be the same for shared fairleads.

Thank you Ryan, thank you Matt.
Iñaki

1 Like

Thanks for looking into it Ryan! That’s good news we only lost it in MD-C (I figured it might have come during external refactoring).

1 Like