Tutorial 4 — Prescribed fairlead motion
Goal: march the lazy-wave cable of Tutorial 3 in time while its hang-off heaves, using a motion file, and read the dynamic tension and curvature histories.
Deck: examples/lozon_gomex80_power_cable_motion.dat with
examples/data/lozon/gomex80_heave_3m_12s_dt005.txt · Route: cubic-Hermite finite-EI
dynamics, standalone · Run time: under 1 s
What changes from Tutorial 3
Geometry and properties are identical to lozon_gomex80_power_cable.dat. The mesh is 64
section-aligned elements (28, 20 and 16 over the three sections) instead of 1024: the fairlead
tension (standard deviation and peak) and the peak curvature of this run are within 0.5 % of a
1024-element solution at dtM = 0.00625 s, so the finer mesh buys only run time.
tensile_safety True audits the element-mean axial force, which stays tensile on this mesh
(Theory). Three options turn the static calculation into a time-domain run:
0.05 dtM - CableDyn internal time step (s)
36.0 TMax - Standalone simulation duration (s), including the 12 s smooth start
data/lozon/gomex80_heave_3m_12s_dt005.txt motionFile - Prescribed fairlead motion history
dynamic_solver 1.0e-4 1.0e-14 100 12 - Relative tolerance, absolute tolerance, max iterations, backtracks
dtMis the time step;TMaxthe duration. With both present the static equilibrium becomes the initial condition of an implicit generalised-α march (Theory).motionFiledrives everyCoupledpoint. The path is relative to the deck’s folder, so copy the deck together with itsdatafolder.dynamic_solversets the per-step Newton tolerances. This deck uses a setting checked for this cable; keep the defaults for your own models unless a convergence study justifies a change (OPTIONS reference and defaults).
The motion file
# Columns: time(s) point_id x(m) y(m) z(m) vx(m/s) vy(m/s) vz(m/s) ax(m/s2) ay(m/s2) az(m/s2)
0.00 1 5.0000000000e+00 0.0000000000e+00 -1.4000000000e+01 0.0 ... 0.0
0.05 1 5.0000000000e+00 0.0000000000e+00 -1.3999999...e+01 ...
Each row gives the absolute position, velocity, and acceleration of one point at one time. Rules:
one row per
Coupled/Vesselpoint at every time, starting att = 0and reachingTMax;a constant time spacing equal to
dtM;velocity and acceleration consistent with the position (analytical derivatives, or careful differentiation) — CableDyn uses them as moving-support kinematics in the dynamic equations, not just the endpoint position;
a first row equal to the deck position of the point, to avoid an artificial jump.
This file is a 3 m, 12 s harmonic heave that ramps up smoothly over the first 12 s (a C2 quintic
ramp), generated by examples/data/lozon/generate_gomex80_heave.py.
Run it
New-Item -ItemType Directory -Force results | Out-Null # already there after the quickstart
.\CableDyn_driver.exe .\examples\lozon_gomex80_power_cable_motion.dat .\results\heave80
Created CableDyn model: 1 line object(s), 2 point(s), 3 section(s) [EI=0: 0, finite-EI: 1].
Initial conditions: Newton static equilibrium with load continuation completed.
...
CableDyn initialization completed.
Dynamic simulation: 720 step(s), simulated duration 36.000 s, dtM = 5.00000E-02 s.
Progress: 5.0% | t = 1.800 s | elapsed 000:00:00 | ETA 000:00:00
Progress: 10.0% | t = 3.600 s | elapsed 000:00:00 | ETA 000:00:00
...
Note: line 1: a nodal tangent turned up to 0.286 deg in one step; a smaller dtM would resolve the line's rotation (mean tension errors of about 1 % and more above 0.25 deg per step).
CableDyn_driver: converged run written to .\results\heave80.out
The progress lines report simulated time, elapsed wall time, and an estimate of the time left.
The note is the time-step audit: the fastest nodal tangent turned 0.286° in one step, just
above the 0.25° per step beyond which the mean tension can err by about 1 %. A smaller dtM
resolves the rotation and should be part of your convergence study (Exercise 1). A step whose
nonlinear solve does not converge at the full dtM is split automatically into substeps and
reported in a Recovery audit: line; results remain at the dtM cadence, and a step that
cannot be recovered stops the run with exit code 2.
Read the result
results\heave80.out has 721 rows (t = 0 plus one per step) of six channels of the same kinds
as Tutorial 3, the sag-bend channels at node 25 of this coarser mesh. Over the last 12 s (one
full-amplitude heave cycle):
Channel |
Minimum |
Maximum |
Static value |
|---|---|---|---|
|
5 668 |
13 076 |
9 320 |
|
1 009 |
1 578 |
1 326 |
|
0.0911 |
0.1034 |
0.0969 |
|
1 813 |
2 058 |
1 929 |
A 3 m heave swings the hang-off tension by ±40 % about its static value and changes the sag-bend
curvature by about ±6 %. Plot FairTen1 against Time(s): the first 12 s show the smooth
ramp, the rest a steady periodic response.
from cabledyn import read_output
h = read_output(r"results\heave80.out")
last = h.period(start=24.0)
for s in last.statistics(["FairTen1", "Curv1N25"]):
print(s.channel, s.minimum, s.maximum, s.standard_deviation)
Curvature at the hang-off
The sag-bend curvature above (Curv1N25) is converged at dtM = 0.05 s; the curvature
next to the pinned hang-off may not be. End curvature is a boundary-layer quantity: at this step
it can be overstated severalfold, and it converges only with a smaller dtM and a mesh graded
toward the end. Run a dtM study (Exercise 1) before using it, report it 1–2 m from the
pinned end rather than at the end node (whose exact curvature is zero), and use a clamped or
stiffener end model for bend-stiffener design. See Modelling workflow (step 5).
Vessel motion and a clamped hang-off
lazy_wave_vessel_motion.dat hangs the same cable from a vessel. The vesselMotion record
(written by data/vessel/generate_vessel_motion.py) gives the reference point a 1.5 m surge,
2 m heave and 3° pitch at 12 s, with exact rates, and every Coupled point moves rigidly with
the vessel. An END CONNECTIONS row clamps End A (Rigid) along the static tangent,
81.6° below horizontal, so the clamp turns with the vessel and BendMom1N1 reports the
connection moment:
.\CableDyn_driver.exe .\examples\lazy_wave_vessel_motion.dat .\results\vessel80
At rest the hang-off tension is 9320 N and the end moment is below 1 N·m. Over the last 24 s the
fairlead tension ranges from 7485 to 10969 N and the end moment peaks at 2953 N·m (a curvature of
0.148 1/m, a bend radius of about 6.7 m). With the hang-off pinned, the end tangent swings
between 71.5° and 89.2°; the clamp holds it to the vessel pitch, so the cable bends near the
vessel instead. The peak moment changes by less than 0.1 % at dtM = 0.025 s or with twice
the top-section mesh.
lazy_wave_vessel_rao.dat drives the vessel from the displacement RAO table
data/vessel/sample_rao.txt (illustrative values) in a JONSWAP sea of Hs 4 m and Tp 10 s; the
same wave components move the vessel and load the cable. The hang-off moves between 4.52 and
5.48 m in x and between −14.19 and −13.80 m in z, the fairlead tension ranges from 8923 to 9654 N,
and the end moment peaks at 220 N·m.
Exercises
Time step. Copy the deck, set
dtM = 0.025, and regenerate the motion file at the same spacing (ingenerate_gomex80_heave.pysetDT = 0.025, write the times with{time:.3f}instead of{time:.2f}, and write to a new file name), and point the copy’smotionFilerow at that file. Compare the tension range and the curvature range with the 0.05 s run.Surge instead of heave. Write a motion file with a 3 m, 12 s surge (
xvaries,zfixed). Which responds more, hang-off tension or sag-bend curvature?Whole-cable envelope. Set line 1’s
Outputsflag totto write every segment’s tension history toheave80.Line1.t.out, then find the minimum tension along the cable (a compression check).