Skip to content

CableDyn 0.4.1

Latest

Choose a tag to compare

@SMI-Lab-Inha SMI-Lab-Inha released this 08 Nov 05:12

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; Python set_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() and CD_C_LINE_SECTION_CURVATURE return CurvX and CurvY at every node. CableDyn_GetLineValues reads 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_GetInitNotes and CableDyn.init_notes.
  • Python: init_line, init_lines and calc_output_derivatives bind the raw-array line calls and the load Jacobians; read_output reads .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, and WaveRefX/WaveRefY for 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; ChkptTime need not be a multiple of dtM.
  • Wave kinematics cost half to a fifth as much, depending on the compiler. Results change at round-off.
  • A standalone TMax 0 deck no longer needs dtM.
  • 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 over EI(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 = 0 azimuth range on the C API, OpenFAST and the mixed and multibody routes.
  • OpenFAST: step retries at any dtM/DT; CalcSteady with several operating points and at dtM > DT; -VTKLin at dtM > DT; linearisation after CalcSteady or a restart; restarts before the first commit; every initialisation note reaches the console; the module driver's rotating motion in single precision.
  • EI = 0 tension 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.dat and 0.7 % on 0.05 m. Elsewhere they change by the axial strain, at most 0.024 % on the examples. BendMom equals EI × Curv only 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 = 0 azimuths through the C API, Python or OpenFAST sees (-180, 180] instead of [0, 360).
  • WaveKin 3 and 7 decks 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.