Repository navigation
CableDyn 0.4.1 makes in-process hosts step in moving water and read a whole line in one call, reports the section's curvature under a bend stiffener and on stretched lines, gives MoorDyn-C wave files a direction per component, and lets a coupled run restart from a checkpoint at any time step. On the 53 example decks it takes 21 % less time than 0.4.0 in all: the six decks in irregular seas take 15 to 51 % less, and the rest the same.
Some outputs change. The table below lists them by route, and the Upgrading section has the sizes.
What changes, and where
| Output | Standalone driver | C API and Python | OpenFAST and FAST.Farm |
|---|---|---|---|
Curv, CurvX, CurvY, BendMom, StfMom inside a bend stiffener, with the static-profile and range-graph columns |
changes | changes | changes |
| The same channels on every finite-EI line (curvature of the stretched line) | +2ε in curvature, +ε in moment | same | same |
.elements.out peaks, and OutputRecovery element node values, on elements with a stiffener sleeve |
changes | n/a | n/a |
Azimuth of EI = 0 lines whose chord heads within 45° of +X |
mixed and multibody routes: 360° lower | 360° lower | 360° lower |
Kinematics of WaveKin 3 and 7 decks with a non-zero mean level |
changes | n/a (standalone only) | n/a (standalone only) |
| Wave kinematics elsewhere | round-off | round-off | n/a (SeaState field) |
| Checkpoints | n/a | n/a | new format: 0.4.0 checkpoints do not restart |
Positions, tensions and forces are unchanged everywhere except through the WaveKin mean level, which changes the loads.
Added
- In-process stepping in moving water (C ABI 1.4). The C API and Python march a steady deck current in the static start and every step, or take a fluid field the host supplies at every line node (
CableDyn_SetHostFluid,CableDyn_UpdateFluidFields; Pythonset_host_fluid,update_fluid_fields). In current and waves a stepped cable matches the standalone driver to the digits of its output. - Section curvature in one call:
Line.section_curvature()andCD_C_LINE_SECTION_CURVATUREreturnCurvXandCurvYat every node.CableDyn_GetLineValuesreads a whole line in one pass, 4 to 120 times faster per call on a 301-node line. - Initialisation notes for hosts that do not read the standard streams:
CableDyn_GetInitNotesandCableDyn.init_notes. - Python:
init_line,init_linesandcalc_output_derivativesbind the raw-array line calls and the load Jacobians;read_outputreads.modes.out. - Range graphs in coupled OpenFAST runs (flag
r,RangeStart), per turbine in FAST.Farm, including across retries and restarts. - MoorDyn-C wave files with a direction per row (
WaveKin 7) for short-crested seas, andWaveRefX/WaveRefYfor the point a wave record refers to. - Notes for a SeaState depth grid whose deepest interval is coarse, and for lines a current can drag along a seabed without friction.
- CI runs the full suite and every example on the Prescott OpenBLAS kernel.
Changed
- A coupled run restarts from a checkpoint at any glue step and matches the uninterrupted run bit for bit;
ChkptTimeneed not be a multiple ofdtM. - Wave kinematics cost half to a fifth as much, depending on the compiler. Results change at round-off.
- A standalone
TMax 0deck no longer needsdtM. - The Python deck validator reads the files a deck names and refuses what the solver refuses.
Fixed
- Curvature under a tapered bend stiffener read about
h |EI'| / (2 EI)high at the nodes, and off by the same amount in the element peaks. Both now report the section: the moment overEI(s). - Curvature and moment of a stretched finite-EI line were 2ε and ε below their definitions.
- A MoorDyn-C mean level (
WaveKin 3,7) is added to the elevation alone, as MoorDyn-C does. CableDyn took the wave numbers at the raised depth, which put it up to 1 % off MoorDyn-C in velocity at 0.8 m in 50 m. - The
EI = 0azimuth range on the C API, OpenFAST and the mixed and multibody routes. - OpenFAST: step retries at any
dtM/DT;CalcSteadywith several operating points and atdtM > DT;-VTKLinatdtM > DT; linearisation afterCalcSteadyor a restart; restarts before the first commit; every initialisation note reaches the console; the module driver's rotating motion in single precision. EI = 0tension reads were O(n²) through the C API and are now linear.
Upgrading
- Regenerate any reference results that use curvature or bend moment of finite-EI lines. Inside a bend stiffener they change by the first-order error above, for example about 5 % on 0.2 m elements of
lazy_wave_bend_stiffener.datand 0.7 % on 0.05 m. Elsewhere they change by the axial strain, at most 0.024 % on the examples.BendMomequalsEI × Curvonly to within the strain. - Finish restarted OpenFAST runs on 0.4.0: its checkpoints do not restart with 0.4.1.
- Code that reads
EI = 0azimuths through the C API, Python or OpenFAST sees (-180, 180] instead of [0, 360). WaveKin 3and7decks with a non-zero mean level change; decks with no mean level are unchanged bit for bit.
Assets
| Asset | Contents | SHA-256 |
|---|---|---|
CableDyn_driver.exe |
Standalone solver for Windows x64 with AVX2 (static, no runtime DLLs) | 30020098b7b2df3664955a0e5288b89f397a5ffae0bf93bf994a935b583010f8 |
openfast.exe |
OpenFAST v5.0.0 with CableDyn as CompMooring = 5, Windows x64 with AVX2 |
e92f7311483771295165acc909e30fcee6d0bd69436cfaebf174511bc0a795e6 |
cabledyn-0.4.1-py3-none-any.whl |
Python package | 6d92659c7fb7b4dd0a6abf230aaca2d940c189387880a86e93f7b12ab131d22b |
cabledyn-0.4.1.tar.gz |
Python source distribution | 2a5e963d512774d493fb27370ef7806cc47660a2298217764a2f781fe3bb79d4 |
SHA256SUMS.txt |
Checksums of the four files above |
The platform wheels with the native library and driver are on PyPI. The v0.4.1 tag is annotated, not signed.
CableDyn builds on OpenFAST (NLR, formerly NREL) and reads MoorDyn-format decks thanks to the open format of MoorDyn (Hall et al.). We thank both communities.
The build and test record is in validation/RELEASE_0_4_1.md; the full list of changes is in CHANGELOG.md.