Output files and channels
This page is the reference for every result file CableDyn writes, the exact layout of each, and
the complete vocabulary of the deck OUTPUTS section. It covers the standalone driver
(CableDyn_driver <deck.dat> <out_root>, see Command-line reference) and the coupled module of OpenFAST,
maintained by NLR (National Laboratory of the Rockies, formerly NREL) (CompMooring = 5, see
OpenFAST with CompMooring = 5). Deck syntax is in Deck format reference (.dat); the input
files a deck can reference are in Auxiliary input files.
Every file is replaced on each run (STATUS='REPLACE'); CableDyn never appends to a
previous result. All physical quantities are SI: metres, seconds, newtons, radians only where
stated (angles in the output files are always degrees).
Standalone driver files
The driver names every file from the <out_root> argument. Which files appear depends on the
route the deck selects, which is decided by the deck content:
Deck |
|
|
|
|
|
|---|---|---|---|---|---|
Static only (no |
one row, |
yes |
– |
static tables |
– |
Dynamic, all lines |
time series |
no |
– |
time series |
rod decks only |
Dynamic multibody march (bodies, rods or |
time series |
no |
– |
time series |
yes |
Dynamic bodies and rods without lines |
time series |
no |
– |
– |
– |
Dynamic, all lines finite-EI, every End B on a |
time series |
yes (the converged initial state) |
yes |
time series |
– |
Dynamic, all lines finite-EI, some End B not |
time series |
no |
– |
time series |
– |
Mixed |
|
yes |
– |
rejected (fail-closed) |
– |
The EI = 0 dynamic routes never write <out_root>.static.out: use a separate static-only
run of the same deck (remove dtM and TMax) when the static range table is needed. A
line or rod file is written only when the corresponding Outputs flag is set. The range graph
<out_root>.Line<L>.range.out of the Outputs flag r is written on every route of the
table that has lines, the mixed route included.
Common layout
All standalone files are plain ASCII tables:
fields are separated by a single TAB character; numeric fields are also right-justified inside a fixed width, so the files align in a terminal and parse with any whitespace splitter;
the time column is Fortran
ES25.16E3(25 characters, 17 significant digits, a three-digit exponent, e.g. `` 1.2500000000000000E+001``) so that time stamps survive long runs with smalldtMwithout rounding;every other real value is Fortran
ES15.7E3(15 characters, 8 significant digits, e.g. `` 5.0988032E+005``, three-digit exponent). The one exception is the channel columns of the mixedEI = 0+ finite-EI route’s.out, written asES15.7(the same 8 significant digits with a two-digit exponent, e.g. `` 5.0988032E+05``);integer key columns (
LineID,Node,Element,Segment) are written without padding (I0);a non-finite channel value is never written: a dynamic row that would contain
NaNorInfstops the run with a named error and exit code 2.
<out_root>.out — the main table
Written by every route. Layout:
Line |
Content |
|---|---|
1 |
title line beginning with |
2 |
header row: |
3 … |
one data row per output time |
There is no units row: units are fixed by the channel vocabulary below (the Python reader
cabledyn.read_output() attaches them automatically). A deck without an OUTPUTS
section produces a valid file containing only the Time(s) column.
The title line identifies the route that produced the file:
Route |
Title line |
|---|---|
static |
|
|
|
Connect/Free-point dynamics |
|
Rigid6 bodies |
|
rods |
|
finite-EI (cubic-Hermite) |
|
finite-EI, two moving ends |
|
mixed |
|
multibody march |
|
bodies and rods without lines |
|
Rows: a static run writes one row at t = 0. A dynamic run writes the initial state at
t = 0 and then one row after every committed step, at t = k·dtM for
k = 1 … NINT(TMax/dtM). The deck keyword dtOut is accepted for MoorDyn compatibility
but has no effect: the output cadence is always dtM.
If a dynamic step does not converge, the march stops, the file keeps only the rows of committed steps, and the driver exits with code 2. Such a file is a diagnostic record, not an accepted response history.
Example (static route):
# CableDyn driver output (static IC; converged=T)
Time(s) FairTen1 AnchTen1 FairIncl1 AnchIncl1
0.0000000000000000E+000 5.0988032E+005 1.9241379E+005 6.7242193E+001 -6.8947041E-001
<out_root>.static.out — static range table
The along-arc static configuration, one row per node of every line (a range graph of the static
state): every node of the line’s final mesh, so a finite-EI line whose mesh the static solve
refined has more rows than deck nodes (see Node channels on a refined line). It is independent of
the OUTPUTS selection. On a dynamic cubic-Hermite or mixed
run it records the converged initial state that the march starts from.
Layout: title line, header row, units row, then data. The title reads
CableDyn static configuration profile (deformed arc; public node order EndA -> EndB)
(static route), CableDyn standalone static configuration (deformed arc; public node order
End A -> End B) (cubic-Hermite route) or CableDyn coupled static configuration (deformed
arc; public node order End A -> End B) (mixed route and OpenFAST). The columns are identical
on every route; the DeckNode column follows only when the static solve refined the mesh of a
finite-EI line of the run:
Column |
Unit |
Meaning |
|---|---|---|
|
|
deck |
|
|
node number, 1 = End A … N = End B |
|
|
cumulative deformed chord length from End A |
|
|
node position in the global frame (Z up, |
|
|
nodal effective tension (same definition as |
|
|
nodal curvature (same definition as |
|
|
bend moment (same definition as |
|
|
axial-tangent angle from +Z (0 = up, 90 = horizontal, 180 = down) |
|
|
signed inclination below horizontal, |
|
|
axial-tangent azimuth from +X toward +Y, in [0, 360) |
|
|
the deck node of the row, the |
Plot Curvature or Tension against ArcLength for a fatigue or strength check.
Note
On a finite-EI line the Tension, Curvature and BendMoment columns and the
Ten/Curv/BendMom channels are recovered from nodal equilibrium
(Node tension, curvature and bend moment): the effective tension \(\mathbf F\cdot\mathbf t\)
is the axial component of the section force that balances the loads, and the bend moment
is the moment the elements on either side of the node carry. .elements.out holds the
pointwise element fields instead: the MinimumAxialResultant and
MaximumAxialResultant columns are extrema of the material axial force
\(EA\,(|\mathbf r'| - 1)\), which exceeds the effective tension by
\(EI\kappa^2\) and, with a stiff EA, oscillates about the element mean wherever an
element cannot follow the line – at a nodal seabed-contact kink near touchdown and at a
section junction – and can dip below zero there while the line is tensile. OPTIONS
OutputRecovery element reports the element definitions in the node columns and channels
(OPTIONS reference and defaults).
<out_root>.elements.out — Hermite element extrema
Written by the cubic-Hermite route together with .static.out. For every element of every
finite-EI line it records the extrema of the continuous element fields at the converged
initial state — located by searching the whole cubic field, not only nodes or quadrature points
— so peak curvature between nodes is not missed. Element 1 is at End A; the local coordinate
xi runs from 0 at the End-A side of the element to 1 at its End-B side.
Layout: title line CableDyn continuous Hermite-element extrema (public order End A -> End
B), header row, units row, data (12 columns):
Column |
Unit |
Meaning |
|---|---|---|
|
|
deck |
|
|
element number, 1 = End A |
|
|
unstretched arc length from End A to the element’s End-A side |
|
|
unstretched arc length from End A to the element’s End-B side |
|
|
local coordinate of the curvature maximum |
|
|
unstretched arc length of the curvature maximum |
|
|
maximum curvature over the element |
|
|
|
|
|
minimum axial force resultant over the element (negative = compression) |
|
|
local coordinate of that minimum |
|
|
maximum axial force resultant over the element |
|
|
local coordinate of that maximum |
Per-line files (LINES Outputs flag)
Set the Outputs column of a LINES row to any combination of the letters below
(case-insensitive, e.g. ptr); - or an empty field requests nothing. Any other letter is a
parse error. Mixed EI = 0 + finite-EI decks reject the p and t flags (use main-file
channels instead) and accept r.
Flag |
File |
Contents |
|---|---|---|
|
|
node positions, End A → End B |
|
|
segment (element) tensions, End A → End B; on a finite-EI line the mean of the axial
components of the element’s own two equilibrium end forces ( |
|
|
range graph: minimum, maximum and mean over the run of the node tension, curvature, bend moment, declination and seabed clearance (and torque and twist on a line with torsion), one row per node (see below) |
<L> is the deck line id. The files list every node and segment of the line’s final mesh,
also on a finite-EI line whose mesh the static solve refined (Node channels on a refined line).
Each file starts with a # comment line (e.g.
# CableDyn static line node positions; public node order EndA -> EndB) and a header row;
there is no units row — units are in the column names. On a refined line the .p.out file
has a second comment line, # DeckNode followed by one tab-separated integer per node: the
deck node of that node, 0 for a node the refinement added.
File |
Static run (one row per node / segment) |
Dynamic run (one row per output time) |
|---|---|---|
|
|
|
|
|
|
Dynamic per-line rows are written at the same times as .out.
<out_root>.Line<L>.range.out — range graphs
The OrcaFlex range graph of line L, accumulated by the solver during the run: at every node,
the minimum, maximum and mean over the output times of the range window. The window holds every
.out row with t ≥ RangeStart (OPTION RangeStart, default 0, see OPTIONS reference and defaults), so a
start-up transient can be excluded; a static run has one sample, t = 0. The values are the
node channels of the same run, Ten<L>N<J>, Curv<L>N<J>, BendMom<L>N<J> and
L<L>N<J>Dec (and Torq<L>N<J> and Twist<L>N<J> on a line with torsion), evaluated at
every node: the minimum and maximum equal those of the channel time
histories exactly, and the mean is their arithmetic mean. The file is written when the run
completes; a run that stops early leaves none.
Layout: title line, header row, units row, then one row per node, End A first. The title reads
CableDyn range graph (line <L>; <n> samples from t = <t0> s to t = <t1> s; public node order
End A -> End B).
Column |
Unit |
Meaning |
|---|---|---|
|
|
node number of the line’s final mesh, 1 = End A … N = End B (the |
|
|
cumulative deformed chord length from End A at the first sample ( |
|
|
effective tension, as |
|
|
curvature, as |
|
|
bend moment, as |
|
|
declination of the axial tangent, as |
|
|
seabed clearance: node |
|
|
torque, as |
|
|
twist of the cable from End A to the node, as |
The accumulation keeps three numbers per node and quantity and makes no heap allocation per step.
Sampling a line evaluates its node channels once per output row; on the 1024-element cubic-Hermite
lazy-wave example this adds about 3 % to the step time. A coupled OpenFAST run does not write range
files and rejects the r flag; use the TDP<L> and node channels there.
<out_root>.modes.out — natural frequencies and mode shapes
Written when the deck sets nModes (see OPTIONS reference and defaults), before any dynamic march. The file
holds two tab-separated tables, each introduced by a # comment line, a header row and a units
row:
# Natural frequencies:LineID Mode Frequency Period Omega(Hz, s, rad/s), thenModeslowest modes of every line in ascending order;# Mode shapes:LineID Mode Node X Y Z dX dY dZ, one row per mode and node.X Y Zis the static node position anddX dY dZthe nodal translation of the mode, scaled so that the largest nodal displacement of the mode is 1. Nodes are numbered End A first, as in the other line files; the held end nodes have zero displacement.
Per-rod files (RODS Outputs flag)
For a dynamic rod deck, set a rod’s Outputs field to p to write
<out_root>.Rod<R>.p.out (<R> = deck rod id). p is the only rod flag; any other
letter is a parse error. Layout: # comment line, header row
Time(s) EndAX(m) EndAY(m) EndAZ(m) EndBX(m) EndBY(m) EndBZ(m), then one row per
output time.
OUTPUTS channel vocabulary
Channel names are listed in the deck OUTPUTS section. Each row may hold one or several
names separated by whitespace, commas or tabs, optionally quoted with " or ' (the
OpenFAST OutList style). Maintained decks use one double-quoted name per row:
---------------------- OUTPUTS -----------------------------------------
"FairTen1"
"AnchTen1"
"Ten1N10"
"L1N10pz"
-------------------------------------------------------------------------
Matching is case-insensitive (fairten1 = FairTen1), but the header row repeats the
token as written. A name may be at most 64 characters. Each channel may be requested once:
the deck is rejected (exit code 1, naming the channel, the earlier spelling and the deck
line) when two names select the same quantity – the same name in any case or across rows, a
numeric id written with leading zeros (Ten1N02 = Ten1N2), or an alias spelling
(Con<P>p{x,y,z} = Point<P>p{x,y,z}, FairAngle<L> = FairDecl<L>,
AnchAngle<L> = AnchDecl<L>). <L> and <P> are deck
LINES and POINTS ids (not array positions); <J> is a node number on line <L>,
1 = End A to N = End B, where N = 1 + the total NumSegs of the line’s sections.
Node channels on a refined line
<J> is always a node of the deck mesh. The static solve of a finite-EI line can refine
its mesh (OPTIONS adaptive_mesh, or the automatic refinement after a failed stability test
or an unresolved curvature, which a note of the initialization report names). A refinement splits
deck elements (along the whole line or only where the state needs it), so each deck node is a
node of the refined mesh at the same unstretched arc length from End A, and Ten<L>N<J>,
Curv<L>N<J>, BendMom<L>N<J>, L<L>N<J>…, Torq<L>N<J> and Twist<L>N<J> report deck node J there, on every route (standalone,
mixed, multibody, OpenFAST and the C API CableDyn_EvalChannel). .static.out, the range
graphs, the per-line files and the C API CableDyn_GetLineValues list every node of the
refined mesh instead, and .elements.out every element. To find deck node J among them,
take the .static.out row whose DeckNode is J: its Node is the node number in the
range graph and the per-line files (and the array row + 1 of CableDyn_GetLineValues), its
ArcLength the node’s deformed arc length. The # DeckNode line of .Line<L>.p.out gives
the same numbering on routes that write no .static.out (the multibody march), and the C API
quantity CD_C_LINE_DECK_NODE (Python Line.deck_nodes) in process. The deck node also lies
where the ReferenceArcStart of .elements.out equals its unstretched arc length from End A
(ReferenceArcEnd of the last element for End B). EI = 0 lines are never refined.
Line-end channels
Channel |
Meaning |
Unit |
|---|---|---|
|
line-end tension at End A (fairlead) of line |
N |
|
line-end tension at End B (anchor) of line |
N |
|
vertical component of the |
N |
|
horizontal magnitude of the same end force, \(\sqrt{F_x^2 + F_y^2}\), with the same
availability; for an anchor that holds one line it equals |
N |
|
signed inclination of the End-A / End-B tangent below horizontal
( |
deg |
|
declination of the End-A / End-B tangent from +Z (0 = up, 90 = horizontal, 180 = down) |
deg |
|
aliases of |
deg |
A grounded anchor segment reads AnchIncl ≈ 0; the small non-zero value reports the actual
orientation of the last element, which CableDyn does not force to horizontal.
Anchor uplift
A drag-embedment anchor is designed for a horizontal pull and loses holding capacity under a
vertical one, so design practice for catenary moorings (DNV-OS-E301, API RP 2SK) requires no
vertical uplift at the anchor in the intact condition: some chain stays laid on the seabed. The
primary check for line L is the grounded length:
the minimum of
TDP<L>Grd(Touchdown channels) over the run is greater than a small tolerance (0.01 m is a centimetre, far below an element).TDP<L>Grdis continuous with the touchdown point, so an anchor node held on the seabed beside a node a few millimetres clear of it reads micrometres to millimetres, not exactly 0.AnchIncl<L>departing from 0 (the anchor segment rising from the seabed) shows the same onset.
AnchFz<L> is the anchor reaction itself (equal to Point<P>Fz of a one-line anchor), the
quantity to compare with the anchor’s vertical capacity. It is not an exact uplift indicator on
an EI = 0 line: the reaction includes the anchor node’s lumped weight (below), so it stays
negative for a while after the anchor segment starts to lift and turns positive only once the
line’s pull exceeds that weight. When a surge pulls the chain off its anchor the sign change
lags the grounded length reaching 0 (by under a second in the regression suite’s surge case),
so max AnchFz <= 0 alone can pass a run in which the anchor segment already lifts by an
angle of order \(w\,\Delta L/(2H)\). Use TDP<L>Grd (or AnchIncl<L>) for the
no-uplift criterion and AnchFz<L> for the vertical load.
On a laid EI = 0 line AnchFz is a small negative value, not 0. The anchor node of a
Fixed point at the seabed depth is held at the seabed elevation, while the penalty seabed
lets the grounded line sink by \(\delta = w/(k_\text{Bot}\,d)\) (\(w\) the submerged
weight per unit length, \(d\) the line diameter, see Conventions). The anchor
therefore carries the end node’s lumped submerged weight, \(w\,\Delta L/2\) for an anchor
segment of unstretched length \(\Delta L\), and the downward pull of the anchor segment
toward the sunk line, about \(H\delta/\Delta L\) for a horizontal tension \(H\):
In Tutorial 1 — A grounded catenary chain (\(w\) = 3.18 kN/m, \(\Delta L\) = 10 m,
\(\delta\) = 0.13 m) this estimate is −18.4 kN, and the run reports AnchFz1 = −18.2 kN
beside AnchFH1 = 191.5 kN (the horizontal tension) and AnchTen1 = 192.4 kN. The share
belongs to the lumped anchor node: it scales with the anchor segment length, vanishes as the mesh
is refined, and is not uplift. A finite-EI (cubic-Hermite) end resting on the seabed leaves its
end node’s weight to the floor and reads AnchFz = 0 there. Read the vertical anchor load from
AnchFz, not from the difference between AnchTen and AnchFH.
Line-node channels
Channel |
Meaning |
Unit |
|---|---|---|
|
effective tension at node |
N |
|
curvature at node |
1/m |
|
bend moment |
N·m |
|
node position component |
m |
|
node velocity component (0 on a static run) |
m/s |
|
node acceleration component (0 on a static run) |
m/s² |
|
declination of the node’s axial tangent from +Z (0 = up, 90 = horizontal, 180 = down) |
deg |
|
azimuth of the node’s axial tangent from +X toward +Y, in [0, 360) |
deg |
|
torque (twisting moment) at node |
N·m |
|
material twist of the cable itself from End A to node |
deg |
|
total twist of the line, \(\Phi - \Theta = M C\), including the windup of torsional end springs: the imposed twist \(\Phi\) less the geometric twist \(\Theta\) the line takes up by writhing out of its plane |
deg |
Touchdown channels
For a line that rests on the seabed at one end, the touchdown point (TDP) at every output time.
A node is grounded when its centreline is at most 1e-6 m (the height at which the seabed contact
law engages) above the seabed; the grounded end is the end grounded in the initial state. Walking
from that end, the TDP lies between the last grounded node and the next one, where the parabola
through the last grounded node and the next two nodes (clearance against chord arc) crosses that
height; the TDP sits on that height. The parabola’s curvature is limited so that it rises
monotonically over the element, so it crosses once: where the line rises sharply beyond the
element, an unlimited parabola would dip below the onset height and put the crossing near the
suspended node. With fewer than two suspended nodes, or no crossing inside the element, the
clearance is interpolated linearly. The crossing reaches a node exactly when the node reaches
the onset height, from either side, so the TDP moves continuously as nodes ground and lift off,
and between nodes it follows the lift-off of the line instead of resting on the last grounded
node until the next one grounds. The definitions are those of cabledyn.touchdown_history()
with tolerance = 1e-6.
Channel |
Meaning |
Unit |
|---|---|---|
|
arc length of the TDP from End A (deformed chord length along the nodes) |
m |
|
TDP position |
m |
|
layback: horizontal distance from the TDP to the suspended end |
m |
|
TDP excursion: horizontal displacement of the TDP from its initial ( |
m |
|
grounded length: deformed chord length along the nodes from the grounded end to the TDP
( |
m |
The channels are available on every route, OpenFAST included, when the deck has a seabed
(WtrDpth or bathymetryFile). A line whose initial state is grounded at both ends or at
neither stops the run with exit code 1 naming the line. When the grounded end later lifts off,
the channels report that end node (and TDP<L>Grd reads 0); when the whole line rests on the
seabed, the suspended end node. TDP<L>Grd is the grounded length of the Anchor uplift
check.
Point channels
Channel |
Meaning |
Unit |
|---|---|---|
|
position component of point |
m |
|
MoorDyn v1 spelling, identical to |
m |
|
resultant of the forces of the lines and finite-EI cables attached to point |
N |
Body and rod channels
The MoorDyn-F names, for Rigid6 bodies and for rods (free, fixed, pinned, prescribed, fixed or
pinned to a body, and in OpenFAST pinned to the platform), on every route that carries them, the
OpenFAST CompMooring = 5 route included. Loads are evaluated at the committed state of the
output time.
Channel |
Meaning |
Unit |
|---|---|---|
|
reference-point position |
m |
|
attitude, x-y’-z’’ Euler angles of the deck convention |
deg |
|
reference-point velocity; angular velocity |
m/s, deg/s |
|
reference-point acceleration; angular acceleration |
m/s², deg/s² |
|
net external force and moment on the body about its reference point (global axes): weight, buoyancy and hydrostatic restoring, Morison and external loads, seabed contact, the loads of its fixed rods, the attached line and cable end forces, and the pin forces of the rods pinned to it. Zero for a free body at rest in equilibrium |
N, N·m |
|
End A position, velocity and acceleration |
m, m/s, m/s² |
|
MoorDyn’s roll and pitch of the rod axis: its tilt φ from the vertical times
|
deg |
|
angular velocity and acceleration |
deg/s, deg/s² |
|
net external force on the rod and its moment about End A: weight, buoyancy, Morison and
seabed loads and the line and cable end forces (not the pin reaction of a pinned rod,
whose |
N, N·m |
|
magnitude of the summed line and cable end force at End A / End B |
N |
|
submerged fraction of the rod length, below the local waterline (still water: z = 0) |
– |
|
position of rod node |
m |
A zero-length rod (NumSegs 0) is modelled as a point; its Rod<N> channels are rejected
by name, and its motion is reported by the Point<P> channels of that point.
The axial tangent of every orientation channel points from End A toward End B (OrcaFlex’s node
Ez axis). Curvature, declination and azimuth are evaluated from the solved geometry on
every route (static, EI = 0 dynamic, finite-EI dynamic, rod and Rigid6 decks).
Validation of channel names
Every name is checked while the deck is parsed, before any solve, and a bad name stops the run with exit code 1. A name is rejected when:
it matches none of the forms above, or carries trailing text (
Point2px_raw,Point2pzz,FairTen1x);it references an unknown line or point id, or a node number larger than the line’s node count, or is a
TDP<L>name with a suffix other thans,x,y,z,Lay,ExcorGrd;it is a
Torq<L>N<J>,Twist<L>N<J>orTwist<L>channel of a line that is not restrained in torsion at both ends (... carries no torque);on a mixed
EI = 0+ finite-EI deck (and in OpenFAST), it is aPoint<P>channel of aCoupled/Vesselpoint attached only to finite-EI lines — that point is not part of theEI = 0point system that serves point channels. Use the cable’sL<L>N<J>p{x,y,z}channel instead.Fixedpoints remain valid because they never move;in an OpenFAST
CompMooring = 5run, it is longer than OpenFAST’s 20-character channel header (ChanLen). The coupled initialisation stops with an error naming the channel rather than writing a truncated, possibly duplicate header.
Console output
The standalone driver writes a short initialisation report after the static solve. On the
EI = 0, finite-EI and static routes it goes to stderr (after the identity banner):
Parsing CableDyn input file: examples/chain_catenary_r3_100m.dat
Created CableDyn model: 1 line object(s), 2 point(s), 1 section(s) [EI=0: 1, finite-EI: 0].
Initial conditions: Newton static equilibrium with load continuation completed.
Fairlead convention: force is on End A toward End B; inclinations are signed below horizontal.
Line 1 fairlead effective tension: 5.09880E+005 N
force [Fx, Fy, Fz]: [ 1.91549E+005, 0.00000E+000, -4.72532E+005] N, inclination= 67.934 deg
line tangent: inclination= 67.242 deg, declination= 157.242 deg, azimuth= 0.000 deg
CableDyn initialization completed.
force is the force on the End-A node directed toward End B, with its inclination below the
horizontal. line tangent gives the direction of the line itself at End A. The two angles
differ slightly: the end force also carries the end node’s share of the distributed load (weight,
drag, seabed reaction) and, on a finite-EI line, the end shear. On a finite-EI deck whose End B
is not Fixed the line is labelled axial force component instead: that route reports the
axial part of the end resultant only.
On a mixed EI = 0 + finite-EI deck the report is shorter and goes to stdout:
CableDyn mixed standalone aggregate: <n> line(s) [<n0> EI=0, <n1> finite-EI].
Parsed <np> point(s) and <ns> section row(s).
Static equilibrium fairlead results:
Line <L>: FairTen=<T> N, tangent inclination=<deg> deg, force=(<Fx> <Fy> <Fz> ) N
Dynamic runs then print progress to stdout at 5 % intervals of the march, with the ETA estimated from the average wall time per committed step:
Dynamic simulation: 2000 step(s), simulated duration 200.000 s, dtM = 1.00000E-01 s.
Progress: 5.0% | t = 10.000 s | elapsed 000:00:02 | ETA 000:00:38
Two further stdout records may follow a completed march: Recovery audit: … when the
integrator subdivided nominal steps (with the number of subdivided intervals and the maximum
sub-step count used), and, on cubic-Hermite decks with the tensile monitor in warning mode,
Tensile monitor: line <L> … summarising compression events (tensile_safety warn in
OPTIONS, see OPTIONS reference and defaults). The final stdout line of a
successful run is described in Command-line reference.
In OpenFAST
Under CompMooring = 5 the selected channels flow through OpenFAST’s normal output system
(WriteOutput), and CableDyn additionally writes its own files, named from the OpenFAST
output root:
File |
Contents |
|---|---|
|
the static range table of the converged initialisation (same columns as
|
|
time history of the deck |
|
the same two files for a FAST.Farm run, named from the FAST.Farm output root |
|
temporary copies of the CableDyn deck, written in the |
<RootName>.CD.out layout — note that it differs from the standalone .out:
no title line;
header row
Timefollowed by the channel tokens;a units row:
(s)followed by each channel’s unit —(N)tensions and forces,(deg)angles,(m)positions,(m/s)velocities,(m/s2)accelerations,(deg/s)/(deg/s2)body and rod angular rates,(1/m)curvature,(N.m)bend moment and body/rod moments,(-)Rod<N>Sub;data rows: time as
ES25.16E3(full double precision), values asES15.6E2, TAB-separated.
The first data row is the static initialisation at t = 0; every further row is written after
each committed CableDyn step, at every dtM boundary. It is independent of OpenFAST’s DT_Out
and never repeats held values between
CableDyn steps. If OpenFAST corrects a step (predictor–corrector iterations), the provisional row
is replaced rather than duplicated; the file is flushed after every row, so it is readable during
a run and intact after a crash.
Select CableDyn channels in the OUTPUTS section of the CableDyn MooringFile; they are not
members of the top-level .fst OutList. The TDP<L> channels are evaluated from the
coupled state against the touchdown reference of the converged initialisation; the range files of
the LINES flag r are a standalone output, and a coupled deck with that flag is rejected. For
a single-turbine run the module also prints
every selected channel’s static value to the screen after initialisation. A deck with no
OUTPUTS section is valid but publishes no channels.
Reading and post-processing
cabledyn.read_output() reads every file on this page strictly and attaches the units
defined above, returning time-history or static-profile objects that plot FairTen1 against
time, Curvature or Tension against ArcLength, or the static centreline.
cabledyn.read_range_graphs() returns the envelopes of a .range.out file as
cabledyn.RangeGraph objects. Dynamic
Line<L>.p.out and Line<L>.t.out files additionally expose interpolated snapshots and
per-segment envelopes. See Python package and Python API reference.
For time-history channels, cabledyn.TimeHistory.fatigue() provides weighted rainflow
cycles and an uncorrected damage-equivalent range (the Wöhler exponent and reference cycle
count or frequency are mandatory inputs); cabledyn.TimeHistory.spectrum() a one-sided
Welch power spectral density with spectral moments; and cabledyn.TimeHistory.coherence()
the magnitude-squared coherence of two channels. These are derived Python results; they never
modify the native files.
Some pyDatView versions do not recognise the multi-line .static.out table directly. Export
one line to a normalised table with units embedded in the header:
cabledyn-post export case.static.out line4_static.csv --line 4
The conversion preserves values and row order, does not add a time column, and refuses to
overwrite an existing file unless --overwrite is given.