Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
1b45ade
Started version 2.6.2
sanguinariojoe Feb 27, 2026
15ff998
build(deps): bump actions/upload-artifact from 6 to 7
dependabot[bot] Mar 2, 2026
7fdcedb
build(deps): bump actions/download-artifact from 7 to 8
dependabot[bot] Mar 2, 2026
2cc05f1
build(deps): bump docker/setup-qemu-action from 3 to 4
dependabot[bot] Mar 9, 2026
41bebbe
build(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0
dependabot[bot] Mar 9, 2026
ab4c690
Merge pull request #364 from FloatingArrayDesign/dependabot/github_ac…
sanguinariojoe Mar 20, 2026
c9e8381
Merge pull request #365 from FloatingArrayDesign/dependabot/github_ac…
sanguinariojoe Mar 20, 2026
37e13db
Merge pull request #366 from FloatingArrayDesign/dependabot/github_ac…
sanguinariojoe Mar 20, 2026
3453b3c
Merge pull request #367 from FloatingArrayDesign/dependabot/github_ac…
sanguinariojoe Mar 20, 2026
d1f4496
fix(core): Memory leak on lean-vtk
sanguinariojoe Mar 24, 2026
26bad3b
fix(core): Segmentation Fault when trying to print Td output
sanguinariojoe Mar 24, 2026
f9e4f31
build(deps): bump pypa/cibuildwheel from 3.4.0 to 3.4.1
dependabot[bot] Apr 6, 2026
9c9d9fc
build(deps): bump matlab-actions/run-command from 2 to 3
dependabot[bot] Apr 6, 2026
3521d7f
build(deps): bump matlab-actions/setup-matlab from 2 to 3
dependabot[bot] Apr 6, 2026
094ecff
feat(core): Implementation of the Syrope model for polyester ropes
zhilongwei Apr 26, 2026
f7c7dfb
feat(core)!: Line breaking utilities (#379)
sanguinariojoe May 12, 2026
50de7b5
fix(core): Return an error code when points below the seabed are dete…
sanguinariojoe Jun 8, 2026
48006e3
fix(core): Demote points below seabed from error to warning
sanguinariojoe Jun 9, 2026
a98c3a7
fix(core): MATLAB wrappers trying to use the instance as a parameter …
sanguinariojoe Jun 9, 2026
f8f208a
Update the CHANGELOG for v2.7.0
sanguinariojoe Jun 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/matlab.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ jobs:
run: cmake --install ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v2
uses: matlab-actions/setup-matlab@v3

- name: Compile and run
uses: matlab-actions/run-command@v2
uses: matlab-actions/run-command@v3
with:
command: |
mex('-setup', '-v', 'C');
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/memcheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ jobs:
- name: Test
working-directory: ${{github.workspace}}/build
# We are just testing in Linux
run: ctest -C ${{env.BUILD_TYPE}} -T memcheck --output-on-failure -j ${{env.PROCESSES}} -E "(seafloor|time_schemes|wavekin|wilson|lowe_and_langley_2006)"
run: ctest -C ${{env.BUILD_TYPE}} -T memcheck --output-on-failure -j ${{env.PROCESSES}} -E "(seafloor|time_schemes|wavekin|wilson|lowe_and_langley_2006|syrope)"
6 changes: 3 additions & 3 deletions .github/workflows/python-wheels-emulated.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,17 +69,17 @@ jobs:
mkdir -p ${{github.workspace}}/install

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v4
with:
platforms: all
if: runner.os == 'Linux'

- name: Build wheels
uses: pypa/cibuildwheel@v3.3.1
uses: pypa/cibuildwheel@v3.4.1
with:
output-dir: dist

- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v7
id: build_wheels
with:
name: python-wheels-${{runner.os}}_${{inputs.arch}}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-wheels-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
python-version: '3.12'

- name: Download the wheels
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
path: dist/
pattern: python-wheels-${{runner.os}}_${{inputs.arch}}*
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/python-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
python -m pip install -U pip setuptools
python setup.py sdist

- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v7
id: build_wheels
with:
name: python-wheels-sdist
Expand Down Expand Up @@ -136,7 +136,7 @@ jobs:
- uses: actions/checkout@v6

- name: Download artifacts
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
path: dist/
pattern: python-wheels-*
Expand Down
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
## [2.7.0] - 2026-06-09

### 🚀 Features

- *(core)* Implementation of the Syrope model for polyester ropes
- *(core)* [**breaking**] Line breaking utilities (#379)

### 🐛 Bug Fixes

- *(core)* Memory leak on lean-vtk
- *(core)* Segmentation Fault when trying to print Td output
- *(core)* Return an error code when points below the seabed are detected
- *(core)* Demote points below seabed from error to warning
- *(core)* MATLAB wrappers trying to use the instance as a parameter (fixes #384)

### 💼 Other

- *(deps)* Bump actions/upload-artifact from 6 to 7
- *(deps)* Bump actions/download-artifact from 7 to 8
- *(deps)* Bump docker/setup-qemu-action from 3 to 4
- *(deps)* Bump pypa/cibuildwheel from 3.3.1 to 3.4.0
- *(deps)* Bump pypa/cibuildwheel from 3.4.0 to 3.4.1
- *(deps)* Bump matlab-actions/run-command from 2 to 3
- *(deps)* Bump matlab-actions/setup-matlab from 2 to 3
## [2.6.1] - 2026-02-20

### 🐛 Bug Fixes

- *(core)* Save with VTP extension
- *(core)* Wrong Fortran indexes

### ⚙️ Miscellaneous Tasks

- *(doc)* Moved to git-cliff to produce the CHANGELOG file
## [2.6.0] - 2026-02-17

### 🚀 Features
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.10)
set(MOORDYN_MAJOR_VERSION 2)
set(MOORDYN_MINOR_VERSION 6)
set(MOORDYN_PATCH_VERSION 1)
set(MOORDYN_MINOR_VERSION 7)
set(MOORDYN_PATCH_VERSION 0)
set(MOORDYN_VERSION ${MOORDYN_MAJOR_VERSION}.${MOORDYN_MINOR_VERSION})
project(Moordyn VERSION ${MOORDYN_VERSION})

Expand Down
100 changes: 82 additions & 18 deletions docs/inputs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ There is not a limit on the number of lines you can write here.
--------------------- MoorDyn Input File ------------------------------------
MoorDyn v2 sample input file

.. _line-types-v2:
Line Types
^^^^^^^^^^

Expand All @@ -285,7 +286,7 @@ The columns in order are as follows:
- Diam – the volume-equivalent diameter of the line – the diameter of a cylinder having the same
displacement per unit length (m)
- MassDen – the mass per unit length of the line (kg/m)
- EA – the line stiffness, product of elasticity modulus and cross-sectional area (N)
- EA – the line stiffness, product of elasticity modulus and cross-sectional area (N), or nonlinear parameters (see descriptions below)
- BA/-zeta – the line internal damping (measured in N-s) or, if a negative value is entered, the
desired damping ratio (in fraction of critical) for the line type (and MoorDyn will set the BA
of each line accordingly)
Expand All @@ -306,24 +307,13 @@ The columns in order are as follows:
- cF - OPTIONAL - the center of the range of non-dimensional frequencies for the CF VIV synchronization model. If it is not
provided and VIV is enabled (Cl > 0) then it is default to 0.18 to align with the the theory found :ref:`here <version2>`

Note: Non-linear values for the stiffness (EA) are an option in MoorDyn. For this, a file name can be provided instead of a number. This file
must be located in the same folder as the main MoorDyn input file for MoorDyn-C or for MoorDyn-F
in the same folder as the executable calling MoorDyn-F, unless a path is specified. Such file is a
tabulated file with 3 header lines and then a strain column and a tension column separated by a blank space:

.. code-block:: none

----Polyester----
Strain Tension
(-) (N)
0.0 0.0
... ...

Note: MoorDyn has the ability to model the viscoelastic properties of synthetic lines in two ways. The first method, from work linked in the
:ref:`theory section <theory>`, allows a user to specify a bar-separated constant dynamic and static stiffness. The second method allows the user
to provide a constant static stiffness and two terms to determine the dynamic stiffness as a linear function of mean load. The equation is:
`EA_d = EA_Dc + EA_D_Lm * mean_load` where `EA_D_Lm` is the slope of the load-stiffness curve. Both of these methods allow users to provide static
and dynamic damping coefficients as values separated by |. While the static damping can be described as a fraction of critical, the dynamic damping
`EA_d = EA_Dc + EA_D_Lm * mean_load` where `EA_D_Lm` is the slope of the load-stiffness curve. This method can be used standalone,
and is also part of the Syrope model described in :ref:`Syrope Model for Polyester Lines <syrope-model-polyester-lines>`.
Both of these methods allow users to provide static and dynamic damping coefficients as values separated by |.
While the static damping can be described as a fraction of critical, the dynamic damping
needs to be input as a value. Example inputs are below:

.. code-block:: none
Expand Down Expand Up @@ -497,9 +487,9 @@ The columns are as follows:
- UnstrLen - the unstretched length of the line
- NumSegs - how many segments the line is discretized into (it will have NumSegs+1 nodes total,
including its two end nodes)
- LineOutputs - any data to be output in a dedicated output file for that line.
- LineOutputs - any data to be output in a dedicated output file for that line.

This last entry expects a string of one or more characters without spaces, each character
This `LineOutputs` entry expects a string of one or more characters without spaces, each character
activating a given output property. A placeholder character such as “-” should be used if no
outputs are wanted. Ten output properties are currently possible:

Expand Down Expand Up @@ -1008,6 +998,80 @@ data.
5000 0.15 0.0
--------------------- need this line ------------------

Nonlinear Stiffness (EA) Inputs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Non-linear values for the stiffness (EA) are an option in MoorDyn. For this, a file name can be provided instead of a number. This file
must be located in the same folder as the main MoorDyn input file for MoorDyn-C or for MoorDyn-F
in the same folder as the executable calling MoorDyn-F, unless a path is specified. Such file is a
tabulated file with 3 header lines and then a strain column and a tension column separated by a blank space:

.. code-block:: none

----Polyester----
Strain Tension
(-) (N)
0.0 0.0
... ...

.. _syrope-model-polyester-lines:
Syrope Model for Polyester Lines
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MoorDyn supports the Syrope material model for polyester ropes. In this formulation, the
tension–strain response is nonlinear and load-path dependent, meaning the unloading and
reloading curves differ. See additional details in the :ref:`theory section <theory>`
and the references therein.

To enable the Syrope model for a given line type, specify the EA field using three
bar-separated entries, analogous to the load-dependent dynamic stiffness method described in :ref:`Line Types <line-types-v2>`.
To indicate Syrope, the first entry must start with ``SYROPE:``, followed by the name (or path)
of a Syrope config file defining the working curves. The second and third entries are
``EA_Dc`` and ``EA_D_Lm`` (as in the load-dependent dynamic stiffness method in :ref:`Line Types <line-types-v2>`). Static and dynamic
damping may be provided in BA as ``BA_s|BA_d`` (same convention as above).

Example:

.. code-block:: none

TypeName Diam Mass/m EA BA
(name) (m) (kg/m) (N) (N-s)
poly ... ... SYROPE:syrope.dat|EA_Dc|EA_D_Lm BA_s|BA_d

The file ``syrope.dat`` defines

- OWC: a tabulated nonlinear original working curve
- WCType: the working-curve type (options: ``LINEAR``, ``QUADRATIC``, ``EXP``)
- k1: the first coefficient for the working curve formula (sets the strain offset where mean tension is zero)
- k2: the second coefficient for the working curve formula (sets the curve shape)

One example of such file is shown below.

.. code-block:: none

../owc.dat OWC Original working curve lookup table path, relative to the MoorDyn input file
LINEAR WCType Working curve formula: LINEAR, QUADRATIC, or EXP
0.25 k1 First parameter defining the working curve shape
1.00 k2 Second parameter defining the working curve shape

The ``owc.dat`` file follows the same format as the tabulated non-linear stiffness files described
above (three header lines, then columns for strain and tension).

Initial conditions are specified for the Syrope lines in a separate ``SYROPE IC`` section placed after the ``LINES`` section.

- Line(s) - the Syrope line number(s). This may be a single line number or a comma-separated list of line numbers. If non-Syrope lines are included, they are ignored and a warning is raised.
- Tmax0 – the initial highest mean tension experienced by the line prior to the current time (N)
- Tmean0 – the initial mean tension (N)

One example of the ``SYROPE IC`` section is shown below.

.. code-block:: none

---------------------- SYROPE IC --------------------------------------
Line(s) Tmax0 Tmean0
(-) (N) (N)
7,8,9 3.53e6 1.18e6

In general, ``Tmax0 >= Tmean0``.

MoorDyn-F with FAST.Farm - Inputs
-------------------------------

Expand Down
14 changes: 9 additions & 5 deletions docs/references.rst
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,16 @@ Overview of MoorDyn v2 (bodies, rods, and line failures):
`Hall, Matthew, “MoorDyn V2: New Capabilities in Mooring System Components and Load Cases.” In Proceedings of the ASME 2020 39th International
Conference on Ocean, Offshore and Arctic Engineering. virtual conference, 2020. <https://www.nrel.gov/docs/fy20osti/76555.pdf>`_

Seabed friction and bathymetry approach used in v2:

`Housner, Stein, Ericka Lozon, Bruce Martin, Dorian Brefort, and Matthew Hall, “Seabed Bathymetry and Friction Modeling in MoorDyn.” Journal of
Physics: Conference Series 2362, no. 1, Nov 2022: 012018. <https://doi.org/10.1088/1742-6596/2362/1/012018>`_

Implementation of bending stiffness modeling for power cables:

`Hall, Matthew, Senu Sirnivas, and Yi-Hsiang Yu, “Implementation and Verification of Cable Bending Stiffness in MoorDyn.” In ASME 2021 3rd International Offshore Wind
Technical Conference, V001T01A011. Virtual, Online: American Society of Mechanical Engineers, 2021. <https://doi.org/10.1115/IOWTC2021-3565>`_

Seabed friction and bathymetry approach used in v2:

`Housner, Stein, Ericka Lozon, Bruce Martin, Dorian Brefort, and Matthew Hall, “Seabed Bathymetry and Friction Modeling in MoorDyn.” Journal of
Physics: Conference Series 2362, no. 1, Nov 2022: 012018. <https://doi.org/10.1088/1742-6596/2362/1/012018>`_

Non-linear line stiffness:

`Lozon, Ericka, Matthew Hall, Paul McEvoy, Seojin Kim, and Bradley Ling, “Design and Analysis of a Floating-Wind Shallow-Water Mooring System
Expand Down Expand Up @@ -122,6 +122,10 @@ Modeling of Bi-stable Nonlinear Energy Sinks in MoorDyn (most recent description
`Anargyros Michaloliakos, Wei-Ying Wong, Ryan Davies, Malakonda Reddy Lekkala, Matthew Hall, Lei Zuo, Alexander F. Vakakis, "Stabilizing dynamic subsea power cables using
Bi-stable nonlinear energy sinks", Ocean Engineering, vol. 334, August 2025. <https://doi.org/10.1016/j.oceaneng.2025.121613>`_

Syrope model for polyester ropes:

`Wei, Zhilong, Harry B. Bingham, and Yanlin Shao. 2026. “ESOMOOR D5.1: Extended Moordyn Solver and Validation Report”. Technical University of Denmark. <https://doi.org/10.11583/DTU.31408806>`_

The Fortran version of MoorDyn is available as a module inside of OpenFAST:

https://openfast.readthedocs.io/en/main/
Expand Down
5 changes: 0 additions & 5 deletions source/IO.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -278,11 +278,6 @@ IO::LoadFile(const std::string filepath) const
uint8_t major, minor;
f.read((char*)&major, sizeof(uint8_t));
f.read((char*)&minor, sizeof(uint8_t));
std::cout << major << std::endl;
std::cout << minor << std::endl;
std::cout << _min_major_version << std::endl;
std::cout << _min_minor_version << std::endl;
std::cout << "number=" << 7 << std::endl;
if ((major < _min_major_version) ||
((major == _min_major_version) && (minor < _min_minor_version))) {
LOGERR << "The file '" << filepath << "' was written by MoorDyn "
Expand Down
Loading
Loading