Skip to content

MoorDyn slip support - #3501

Draft
luwang00 wants to merge 5 commits into
OpenFAST:devfrom
luwang00:f/MD_SlipSupport
Draft

luwang00 wants to merge 5 commits into
OpenFAST:devfrom
luwang00:f/MD_SlipSupport

Conversation

@luwang00

@luwang00 luwang00 commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

This PR is not ready for merging.

Feature or improvement description
This PR introduces slip supports to MoorDyn. A slip support can be attached to any Point type (free, fixed, coupled, or attached to a Body) and acts like a hoop that lines pass through. A slip support constrains line motion in the normal direction only (through stiffness and damping), while allowing the line to slip through the support along the tangent direction, resisted only by friction.

The formulation uses a smooth B-spline kernel to distribute loads across several neighboring nodes, giving a smooth load handoff as the line nodes slip past the support, without requiring remeshing. The normal constraint is enforced through stiffness and damping based on the normal offset and relative normal velocity between the line contact point and the slip support. In the tangential direction, the line experiences friction modeled with either regularized Coulomb friction with a Stribeck transition from static to kinetic friction, or the single-state LuGre model, which captures true sticking.

The contact point kinematics are also interpolated from neighboring line nodes using the same B-spline kernel, so the contact point lies on a smooth curve that can be offset from the polyline representation of the mooring line. The offset is larger for sharper bends and decreases with a smaller kernel width (a user input), at the cost of more ripple as nodes pass the support. Because the kernel width is specified relative to the segment length, refining the line discretization reduces the offset while keeping the same smoothness. Using the same kernel for interpolating the contact kinematics and spreading the loads ensures adjoint consistency, so the contact spring and damper act passively on the line.

Each line can have multiple slip supports, and each Point can serve as a slip support for multiple lines. A free Point used as a slip support must have nonzero mass, and a very light Point may require a reduced, user-specified stiffness. If a line end moves past a slip support, the line is permanently released from that support.

Linearization is supported, and new output channels report the contact location, slip velocity, normal and friction forces, bristle deflection (LuGre), and the reaction force on the support Point.

Impacted areas of the software
MoorDyn, docs

Additional supporting information
Detailed user and theory guide for slip support can be found in
docs/source/user/moordyn/moordynf_features.rst
docs/source/user/moordyn/slip_support_theory.rst

Example results
The example below was simulated using MoorDyn driver. A slack line is draped over a slip support, the red cross. The left end of the line is anchored, and the right end follows prescribed motion. Initially, the right end is at rest. At t=20 s, the right end starts moving toward +x at a constant speed of 0.5 m/s until t = 132 s, at which point, the motion stops. During this process, the line is pulled to the right until taut, with the line nodes sliding past the slip support smoothly.

MD_SlideSupport_Demo1.mp4

In addition to the normal force at the slip support, friction based on the LuGre model is also included. The time series of the friction force is shown below, including a zoomed-in figure around 20 s when the sliding started.

The friction is zero initially when the system is at rest. This is a direct consequence of the dynamic initialization, which produces a friction-free configuration at t=0 by design. After the dynamic initialization, the bristle deflection state of the LuGre model is reset to zero, so that there is no elastic stiction force.

There is a spike in friction at about 20 s when the right end of the line starts to get pulled. For the most part of the time series, the line is sliding at about 0.5 m/s, well above the Stribeck velocity of 0.1 m/s defined in the input file. Therefore, the friction is capped at the dynamic friction limit that starts to grow rapidly after about 120 s. This is the point where the line starts to get pulled taut, and the normal force at the slip support rises rapidly. At 132 s, the pulling stops, and the line stiction at the slip support reestablishes. A spike in friction followed by oscillation and slow relaxation can be observed.

image

Focusing around 20 s when the line just starts to move, a spike in friction past the dynamic friction limit can be seen due to stiction. The max friction does not quite reach the static friction limit. This rate-dependent slip is a known behavior of the LuGre model, where a fast start can undercut the peak static friction. Right after the slipping starts, the friction can temporarily remain above the dynamic friction limit and takes a finite amount of time to drop down to the limit. This is all related to the friction lag effect.

image

The new slip support should also correctly interact with other existing MoorDyn features, such as line failure. In the example below, we continue to pull the right end of the chain after 132 s. The anchor point is set to detach after reaching 1e5 N tension. The line continues to move past the slip support after detaching from the anchor until it is fully released from the support and drops to the seabed.

MD_SlideSupport_Demo1.mp4

Note that in the two examples above, the slip support is attached to a fixed Point. It is also possible to use a free or coupled Point as slip support. In the latter case, the slip support becomes attached to the rest of the OpenFAST structure like a fairlead.

Generative AI usage
This development is heavily supported by AI both during formulation and implementation.

  • The mathematical formulation has gone through careful human review.
  • The code was not yet checked. Example cases have been developed to demonstrate that the results are plausible. The new codes are mostly isolated in the new module MoorDyn_SlipSupport.f90 with minimal interface with the existing MoorDyn codebase; therefore, it is extremely unlikely it will cause any issue with existing features.

Models/tools:

Test results, if applicable
New r-test will be added.

  • r-test branch merging required

luwang00 and others added 5 commits October 26, 2026 18:07
New optional SLIP SUPPORTS input section (ID Point Line Shape K Zeta MuS MuK VTol VS) and MoorDyn_SlipSupport module. The hoop acts on a virtual contact point on the line through a transverse penalty spring-damper and regularized Coulomb friction with static/kinetic coefficients and Stribeck transition. Contact load is spread with linear (2-node) or cubic B-spline (4-node) weights, split per node along each node's own tangent so a frictionless hoop applies no along-line force. The reaction is added to the host Point in Point_DoRHS. Includes piecewise initial line layout through hoops, viscous slip damping during IC generation, deferred line release committed after accepted time steps, and SLIP<n>{S,VS,FN,FF,FX,FY,FZ} output channels.

Co-authored-by: GitHub Copilot <noreply@github.com>

Co-authored-by: Claude <noreply@anthropic.com>
…split

Add a Width column to SLIP SUPPORTS (ID Point Line Shape Width K Zeta MuS MuK VTol VS). Width > 0 spreads the contact load with a hat (LINEAR) or cubic B-spline (CUBIC) kernel of fixed scale in unstretched arc length, normalized and mirrored about the line ends, so the number of loaded nodes grows with refinement and node-passing ripple vanishes. Width = 0 keeps node-based weights. Contact normal and friction are split per node along each node's own tangent so a frictionless hoop applies no along-line force; FN is the normal force actually delivered to the line and sets the friction capacity.

Co-authored-by: GitHub Copilot <noreply@github.com>

Co-authored-by: Claude <noreply@anthropic.com>
…t length

Remove the Shape input and the linear/node-based contact weights; every slip support now spreads its load with the fixed-width cubic B-spline kernel. The SLIP SUPPORTS row is now ID Point Line Width K Zeta MuS MuK VTol VS, where Width is a multiple of the longest segment length among all lines through the same hoop point (2 recommended). Width < 1 is a fatal error, Width < 2 gives a ripple warning, and the resulting kernel must stay shorter than a quarter of the line.

Co-authored-by: GitHub Copilot <noreply@github.com>

Co-authored-by: Claude <noreply@anthropic.com>
Add a StickDisp column to SLIP SUPPORTS (ID Point Line Width K Zeta MuS MuK VTol VS StickDisp). StickDisp > 0 selects LuGre friction with one continuous bristle-deflection state per support, appended after the line states, held at zero during IC generation, and registered for linearization as a first-order variable. Bristle stiffness is MuS/StickDisp, capped for explicit stability with a one-time warning; bristle damping is critical and faded out with the Stribeck velocity; sigma2 = 0. Friction is bounded by MuS*Fn, or by mu(v)*Fn when the relaxation rate is capped, preserving LuGre frictional lag at breakaway. StickDisp = 0 keeps the regularized Coulomb model. Adds the SLIP<n>Z output channel.

Co-authored-by: GitHub Copilot <noreply@github.com>

Co-authored-by: Claude <noreply@anthropic.com>
Add MoorDyn-F specific features page documenting slip support input, outputs, and usage, and a slip support theory page. Store the contact segment (search-window center) in OtherStates so glue-code rollbacks restore it; misc copy still tracks the contact within a coupling step.

Co-authored-by: GitHub Copilot <noreply@github.com>

Co-authored-by: Claude <noreply@anthropic.com>
@luwang00 luwang00 added this to the v5.1.0 milestone Oct 29, 2026
@luwang00 luwang00 added the ai assisted AI written with strong human guidance. label Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai assisted AI written with strong human guidance. Module: MoorDyn Type: Enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant