Troubleshooting
CableDyn is designed to fail closed with a clear message rather than return a quiet wrong answer. This page maps the messages you will actually see — a rejected deck, a solve that will not converge, a combination outside the coupled boundary of OpenFAST (maintained by NLR, the National Laboratory of the Rockies, formerly NREL) — to the reason and the supported path forward. Questions about results and settings are answered in Frequently asked questions.
Exit codes at a glance
Code |
Meaning |
First thing to check |
|---|---|---|
|
completed; the completion line
|
— |
|
the run was refused or its input could not be used: unknown option, wrong argument count, empty or over-long argument, output root equal to the deck, unwritable output directory, unreadable or unparseable deck or auxiliary file, out-of-range value, unsupported feature, or an output file that cannot be opened during the run |
the stderr message names the file, line, keyword, or feature — see below |
|
an |
geometry, mesh, time step, and continuation — see Non-convergence;
for the plausibility guard, reduce |
The complete stream and exit-code contract is in Standalone Windows driver. Error messages are on
stderr. If you redirected it away (2>/dev/null), rerun without the redirect.
A run that stops before TMax with no error message and without the closing line
CableDyn_driver: ended with exit code <n> was ended from outside the driver, for example by
taskkill /F (which leaves exit code 1) or End task; taskkill /IM CableDyn_driver.exe
ends every CableDyn run on the computer at once. An interrupt or a fatal fault is reported on
stderr with the simulated time reached. See When a run ends early.
Reading an error message
A row-level parse error names the file and line and quotes the offending row:
CableDyn_DeckDriver: deck line 42: column 3 value "500/2" contains "/", ",", ";" or a repeat count "n*"; ... [row: 1 chain 500/2 ...]
Auxiliary files use their own label in place of deck (for example motionFile line 7 or
bathymetry file line 3). Validation errors that are not tied to one row name the object
instead: a duplicate or undefined id is quoted in the message (duplicate POINT id 4,
LINE 2 references undefined POINT id 9).
A deck is rejected (exit 1)
Fail-closed at parse is a feature: it means the deck named something CableDyn will not silently reinterpret. The tables below are grouped by message class.
Command line and files
Message |
Cause and fix |
|---|---|
|
only |
usage printed on stderr, no other message |
the driver needs exactly two arguments: |
|
shorten the path (run from the case directory and use relative paths) or supply the missing argument. |
|
the output root is the deck’s own stem, so |
|
the output directory does not exist or is not writable. Create it first; the driver does not create directories. |
|
only a driver built from source with the GNU toolchain gives this: the name is outside
the system code page and the volume has no 8.3 short name for it. Use the release
|
a file in a folder with accented or non-Latin characters is not found, with an older or self-built executable |
the release executables run with UTF-8 as their Windows code page and open such folders
(Windows 10 version 1903 or later). An executable built without
|
|
a referenced file is missing or unreadable. Paths inside a deck are resolved relative to
the deck’s directory (the OWC table relative to the Syrope settings file), not to the
terminal’s current directory. A |
|
an output file became unwritable after the start-up check (for example, it is open and locked in another program). Close it and rerun. |
Records, tokens, and sections
Message |
Cause and fix |
|---|---|
|
a table value that is not one plain number. CableDyn never reads |
|
a record whose text outside a |
|
a record containing |
|
a row with the wrong number of columns. A stray comment without |
|
a LINES attachment is neither a point id nor a rod end. Rod ends can be named directly
( |
|
shorten the channel; valid channel names are far shorter than the limit. |
|
a typo in an |
|
text after the terminal |
|
use one of the spellings listed in OPTIONS reference and defaults ( |
|
CableDyn always solves the static equilibrium directly; delete the |
a channel like |
an |
Clock, motion, and environment
Message |
Cause and fix |
|---|---|
|
the standalone driver needs both or neither. Add the missing one. |
|
choose |
|
these features act only in a dynamic march. Add |
|
waves need a flat depth; a |
|
these routes have no seabed friction. Remove |
|
a deck that mixes |
motionFile |
every row time must be |
|
the file is missing at least one (point, time) pair. Every prescribed point needs a row at
every grid time, including |
motionFile |
a row has fewer than eleven plain numbers, or a header line is not commented. Comment
header lines with |
motionFile |
the |
|
these routes hold their coupled endpoints. Remove |
|
the |
|
keep one seabed definition. |
|
the wave trough is at or below the seabed ( |
|
|
|
an elevation-history file cannot drive a coupled run or a mixed standalone deck. Put the sea state in SeaState (coupled) or use a single-family standalone deck. |
|
|
|
keep either the |
a WaterKin wave/current combination is rejected |
the requested host and file sources cannot be separated by the nodewise fluid sampler without double counting. Use independent sources that Capabilities and route selection lists, or move the complete environment into OpenFAST SeaState. |
Model data
Message |
Cause and fix |
|---|---|
|
a |
|
End A is the fairlead/upper end. A stock anchor-first row ( |
|
in a deck without dynamic points every line runs from a fairlead to an anchor. Use
|
|
a single-family finite-EI deck is solved by the dynamic finite-EI workflow. Add
|
|
an |
|
|
|
write |
|
a Syrope line is one |
|
see the Syrope column rules in Deck format reference (.dat): |
|
the |
|
a |
|
a |
|
each standalone route owns one object family. Split the model or use the combinations listed in Capabilities and route selection. |
|
remove the duplicate rod-end POINT row (the end points are created automatically when a
line names the rod end), supply |
|
|
|
bending end connections apply only to |
|
remove |
Torsion
Message |
Cause and fix |
|---|---|
|
a torsion row is |
|
give |
|
torsion has no |
|
torsion is solved on cubic-Hermite lines whose End B is an anchor. |
|
outside the torsion scope (Capabilities and route selection). Move End A to a |
|
run the torsional line standalone (a mixed deck with a body runs on the multibody route,
which supports torsion), or set |
|
the body turns faster than one step can follow the twist; reduce |
|
remove |
|
a |
|
the roll column drives the frame of a torsional line’s moving end, starts from 0 (put a
constant twist in |
FAILURE and CONTROL sections
Message |
Cause and fix |
|---|---|
|
write |
|
number the rows 1, 2, 3, … in deck order. |
|
every listed line must end at the failing point. |
|
a row with both triggers at zero could never fire. |
|
failures act on POINTS; name the point id ( |
|
FAILURE runs on the |
|
a FAILURE deck with Rigid6 bodies runs on the staggered body scheme, which takes the bodies and their lines only; model a clump or buoy on the line as part of a body. |
|
the standalone driver does not consume CONTROL. Line control is an OpenFAST
|
|
write |
A solve does not converge
An EI = 0 static line that does not converge, or a dynamic step that does not converge after
the recovery substeps, ends the run with exit code 2; the .out holds the converged prefix
for inspection only. A finite-EI static initialisation failure (finite-EI cable static solve
failed or unresolved/kinked finite-EI equilibrium) also ends the run with exit code 2.
The EI = 0 catenary path and the finite-EI static solve are both robust from a trivial seed,
but a few geometries are genuinely hard:
A large grounded touchdown on the
EI = 0path. A long, near-horizontal grounded run can make the linear-Lagrange tangent singular regardless of seed. If the case is a lazy-wave or bending-dominated cable, use the finite-EI path (EI > 0), which is built for it.A finite-EI lazy-wave cable at too coarse a mesh. An under-resolved arch or touchdown carries a large element
h·κand can stall the dynamic Newton. The resolution metric flags this; the builder can auto-refine a fragile mesh when the deck opts in (adaptive_mesh True). This remains true when a large net-buoyant mesh first uses coarse-to-fine sequencing: the converged sequenced state is still diagnosed and, when necessary, warm-start refined. Otherwise increaseNumSegson the sag-bend and hang-off sections.Several separated finite-EI contact regions. These can be physical: a cable can bridge a bathymetric rise, or a buoyant section can separate two broad grounded heavy sections. CableDyn records the island count but does not reject that topology. Adaptive refinement is requested only when contact classification toggles over one interior node (an isolated contact node or isolated suspended gap), which is a mesh-scale signal; refine the local sections if that signal remains active.
A residual-converged folded branch. CableDyn checks the element rotation measure after every finite-EI sequence attempt, every final deck-built equilibrium, and the public automatic-mesh route.
max(h*kappa) > 0.7is rejected by name even if Newton’s residual is small. This is a mesh/branch safety failure, not permission to relax the tolerance. Increase resolution in the reported high-curvature section and inspect the static profile. The check samples element interiors adaptively, so a cubic-element fold cannot hide between output nodes.Odd, prime, or section-wise nonuniform meshes. These are supported; do not change
NumSegsmerely to make the total divisible by two. The nested hierarchy retains physical section interfaces and interpolates at the true cumulative rest-length coordinate. Its suspended-span bending-scale preflight checks the actual longest proposed coarse element, so a sparse long section is not over-coarsened merely because the deck also contains many short elements. Flat-bed installed lines with an already supported anchor retain their grounded-tail branch homotopy and are still accepted only after exact-mesh residual and kink checks.A very slack cable on a frictionless flat bed. If its rest length exceeds the vertical-plus- horizontal L-shaped path between the endpoints, a smooth single-touchdown equilibrium may not exist: the surplus must fold or form another contact region. CableDyn rejects a resulting element-localized wad through the curvature safety check. This is not fixed by relaxing Newton tolerances; revise the physical support/contact model or geometry.
A twisted finite-EI line.
torsion continuation stalled at Phi = ... (target ...)reports the imposed twist the static ramp reached: beyond it the line has no nearby static equilibrium on the path, typically because a loop is forming (hockling), which needs a dynamic analysis and is not resolved as self-contact.finite-EI torsion static solve ended on an unstable equilibriummeans the descent from a buckled (unstable) twisted state did not find a stable one.the twist moved more than pi/2 from its committed value in one stepstops a dynamic step that would change the twist by more than a quarter turn (the unwrapping of the twist cannot be trusted beyond it): reducedtMor slow the imposed roll.tangent turns by more than 120 degreesnames an element or node pair where the twist of the centreline is no longer reliable: refine the mesh there.A cold start at full load. The static solve continues the load in stages; if you have hand-tuned a case into a bad basin, remove the tuning and let the default continuation run from the catenary/arch seed.
If a dynamic step fails after a good static IC, the usual cause is a time step too large for a
transient event (a snap) — but note the implicit integrator’s whole point is large steps, so
first confirm the static IC itself is smooth (plot the <out_root>.static.out curvature).
The failure message reports the simulated interval; recovery_max_substeps raises the
internal subdivision ceiling, and dynamic_solver sets the dynamic Newton tolerance and
iteration budget (see OPTIONS reference and defaults). Qualify any change against a smaller dtM.
Warnings and notes that do not stop a run
|
with the other end free to twist the line carries no torque, so the torsion columns of the restrained end have no effect. Restrain both ends to solve torsion. |
|---|---|
|
the static twist stage of a torsional line. A non-zero descent count means the straight or
untwisted branch was unstable at the imposed twist and the solve moved to a buckled shape;
check the shape and the |
Message |
Cause and fix |
|
a grounded run of this type would sink deeper than its own diameter into the penalty
seabed. Raise |
|
the deck has no |
|
the lines start at rest, so an end that starts at speed sends an axial shock down the line
and can put its upper part into compression for several steps. A harmonic started at
|
|
a very strong current on a frictionless seabed has pushed the line past its anchor, and
it folds back to it (see Theory). The layout is a valid, stable equilibrium of the
deck as written, but not the usual one. If the real seabed holds the line, declare
|
|
in a current along the plane of the line the static state is a planar equilibrium that a
lateral disturbance would leave (the line is held in the plane only by the symmetry), and
no out-of-plane equilibrium was found. The state is valid in the plane; a cross-flow
component or seabed friction ( |
|
the time-step audit of a finite-EI line: above 0.25° per step (0.1° with
|
|
the finite-EI deck mesh is finer than the axial-bending length \(\sqrt{EI/EA}\):
the axial stiffness of each element swamps its bending stiffness and the static
Newton system loses the precision to converge. An 80 m lazy wave (6.5 mm limit)
solves at 8 mm elements and not at 4 to 6 mm, where the solve stops within seconds
and names the mesh. Coarsen |
|
the element-mean axial force of a finite-EI line, averaged with its neighbours, is
compressive, and the pointwise resultant oscillates well beyond it. Refine |
curvature near a hang-off changes with |
end curvature is a boundary-layer quantity. Run a |
An OpenFAST CompMooring = 5 run fails at init
The module covers the scoped MoorDyn-F coupled surface and fails closed outside it. If init aborts with a CableDyn fatal error, check whether the deck uses one of these combinations:
Not supported on the coupled route |
Use instead |
|---|---|
active ServoDyn control ( |
|
deck |
put the sea state and current in SeaState, or a current table in a WaterKin file
( |
a finite-EI cable in the same deck as Rigid6 bodies, rods, or |
model the cable and the body/point system in separate decks or use the supported combinations in Capabilities and route selection |
OpenFAST linearisation with a platform-relative cable |
linearise a pinned-hang-off, uncontrolled variant of the deck; time-domain runs support both |
a |
drive the platform through intermediate orientations |
VIV ( |
use a solver with a separately validated VIV model |
a host/file fluid combination named as inseparable |
select host wave/current and file wave/current independently as documented, or place the whole field in SeaState |
a |
represent the restoring physics with supported line/body terms or use stock MoorDyn |
Finite-EI rotational end coupling is supported in the time domain on the coupled route: an
END CONNECTIONS direction at a coupled hang-off rotates with the OpenFAST platform
orientation, the mesh angular velocity and acceleration enter the implicit residual, and the
connection moment is returned to OpenFAST on the load mesh (see OpenFAST with CompMooring = 5). In the
standalone driver an end-connection direction stays fixed in global axes on a Fixed or
Coupled point driven by a motionFile, and turns with the vessel under vesselMotion
or vesselRAO.
Everything CableDyn does support end-to-end — coupled time-domain analysis, PtfmInit,
NumCrctn > 0, SeaState kinematics, checkpoint-restart, linearisation, rigid bodies/rods, and
Mod_SharedMooring = 5 — is listed in Capabilities and route selection.
The standalone binary will not launch (Windows)
Use the release CableDyn_driver.exe or CableDyn-enabled openfast.exe. Those two
non-OpenMP x64 files are statically linked and require no adjacent compiler, BLAS, OpenMP,
or C/C++ runtime DLL. A locally built GNU/OpenMP executable may still require its selected
toolchain libraries. A GNU build loads openblas.dll from its own directory when it starts;
if the library is missing, the driver stops with exit status 2 and a message naming the
library, each location tried, and the Windows load error. Keep openblas.dll next to the
executable (cmake --install stages it) or run from the activated environment. A missing
DISCON.dll is different: the OpenFAST model explicitly
requested a ServoDyn controller, so copy that model-specific controller with the model or
disable it. See Installation (standalone binaries).
If your issue is not here, see Frequently asked questions; the Deck format reference (.dat) row for the feature is the authoritative statement of what is supported, and CableDyn verification and validation records exactly which cases are validated.