Implementation of the Syrope model for polyester ropes in MoorDyn#369
Implementation of the Syrope model for polyester ropes in MoorDyn#369zhilongwei wants to merge 16 commits intoFloatingArrayDesign:devfrom
Conversation
tests/syrope.cpp
Outdated
| { | ||
| const auto sim = run_case(c, superimpose_fast); | ||
| const Eigen::Index n = | ||
| std::min(sim.tension_output.size(), sim.strain.size()); |
| ------------------------- LINE TYPES -------------------------------------------------- | ||
| LineType Diam MassDenInAir EA BA/-zeta EI Can Cat Cdn Cdt | ||
| (-) (m) (kg/m) (-) (Pa-s/-) (n-m^2) (-) (-) (-) (-) | ||
| poly 0.203 40 SYROPE:../owc.dat|1.53e8|23.12 5.0e10|1.0e5 0.0 0.0 0.0 0.0 0.0 |
There was a problem hiding this comment.
Not really a big fan on how syrope config is set, specially those new full sections. I will let anyway @RyanDavies19 @mattEhall and @shousner to decide
There was a problem hiding this comment.
Thanks for the feedback. The additional sections were introduced to keep all Syrope model parameters within the existing input file, avoiding the need for a separate configuration file. This may not be the most consistent approach with the current input structure. An alternative would be to move the Syrope-related parameters into a separate file if that better aligns with the overall design.
There was a problem hiding this comment.
@zhilongwei, I think it would be better if all the Syrope inputs were a separate input file, which would be consistent with the approach used for a non-linear lookup table.
Then the main moordyn input file would read:
------------------------- LINE TYPES --------------------------------------------------
LineType Diam MassDenInAir EA BA/-zeta EI Can Cat Cdn Cdt
(-) (m) (kg/m) (-) (Pa-s/-) (n-m^2) (-) (-) (-) (-)
poly 0.203 40 SYROPE:input.dat|1.53e8|23.12 5.0e10|1.0e5 0.0 0.0 0.0 0.0 0.0
And then input.dat would read:
../owc.dat nonlinear stiffness lookup table path
-------------------------- SYROPE WORKING CURVES -------------------------------------------------
LineType WCType k1 k2
(-) (-) (-) (-)
poly QUADRATIC 0.25 1.0
-------------------------- SYROPE IC -------------------------------------------------
Line Tmax Tmean
(-) (N) (N)
1 1.3886e6 4.339e5
Note input.dat is just a placeholder, you could call the file whatever you wanted to.
There was a problem hiding this comment.
I am now thinking that the initial Tmax and Tmean should not be treated as line-type properties since they are line-specific. For example, different lines that share the same Syrope properties (e.g., original working curve, working curves, etc.) may still have different initial values of Tmax and Tmean. It may therefore be more appropriate to separate these parameters from the Syrope input file (input.dat). One idea is to add two additional fields in the Lines section (after LineOutputs). These fields would only be required and read when the corresponding line uses a Syrope-based line type.
An example is shown below.
------------------------- LINE TYPES --------------------------------------------------
LineType Diam MassDenInAir EA BA/-zeta EI Can Cat Cdn Cdt
(-) (m) (kg/m) (-) (Pa-s/-) (n-m^2) (-) (-) (-) (-)
poly 0.203 40 SYROPE:input.dat|1.53e8|23.12 5.0e10|1.0e5 0.0 0.0 0.0 0.0 0.0
The input.dat reads
-------------------------- SYROPE ORIGINAL WORKING CURVE -----------------------------------------
../owc.dat nonlinear stiffness lookup table path
-------------------------- SYROPE WORKING CURVES -------------------------------------------------
LineType WCType k1 k2
(-) (-) (-) (-)
poly QUADRATIC 0.25 1.0
--------------------------- need this line -------------------------------------------------
And the Line section reads
-------------------------- LINES -------------------------------------------------
Line LineType NodeA NodeB UnstrLen NumSegs Flags/Outputs Tmax Tmean
(-) (-) (-) (-) (m) (-) (-) (N) (N)
1 poly 2 1 1.0 1 tsc 1.5e6 8.0e5
2 poly 4 3 1.0 1 tsc 2.0e6 5.0e5
3 chain 6 5 1.0 1 tsc
Let me know your thoughts on this.
There was a problem hiding this comment.
I think that could work well. We already do a similar thing for VIV in the line properties section. I would say that if we do this, error handling should be added that logs when the syrope model is being used and throws a non-fatal warning if the Tmax and Tmin columns are detected without the syrope model activated. Similarly a fatal error should be thrown if Syrope is activated and these are not found.
And just for clean looking input files, in the docs and test cases, you should add a - in the column for a non-syrope lines:
-------------------------- LINES -------------------------------------------------
Line LineType NodeA NodeB UnstrLen NumSegs Flags/Outputs Tmax Tmean
(-) (-) (-) (-) (m) (-) (-) (N) (N)
1 poly 2 1 1.0 1 tsc 1.5e6 8.0e5
2 poly 4 3 1.0 1 tsc 2.0e6 5.0e5
3 chain 6 5 1.0 1 tsc - -
|
BTW @zhilongwei , please direct the PR to the dev branch (and rebase with it) please |
2963994 to
52eb76d
Compare
|
It seems that the new test |
|
Do kot worry about the test failing. Ryan will fix that eventually
…On Mon, 23 Mar 2026, 08:42 Zhilong Wei, ***@***.***> wrote:
*zhilongwei* left a comment (FloatingArrayDesign/MoorDyn#369)
<#369 (comment)>
It seems that the new test syrope takes a long time to finish, which also
failed locally with ctest -C RelWithDebInfo -T memcheck -j 4 -R syrope. I
will try to reduce the simulation duration and see. I am not sure why the
MoorDynF regression tests are failing, as they do not appear to be related
to the changes in MoorDynC.
—
Reply to this email directly, view it on GitHub
<#369?email_source=notifications&email_token=AAMXKKECSQ224PORW3S46YL4SDTETA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIMJQHA3DANJYGYZKM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-4108605862>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAMXKKE5GD5QR3ZVGSWPRIL4SDTETAVCNFSM6AAAAACWYE22YGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHM2DCMBYGYYDKOBWGI>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
|
@zhilongwei memcheck can be quite time consuming. If your test does not fit, it is not really a big deal. Just add it to the list of excluded tests here: https://github.com/FloatingArrayDesign/MoorDyn/blob/master/.github/workflows/memcheck.yml#L39 I will run it anyway with memcheck to be sure and let you know |
|
Yep, a lot of beef. The stdout of the test: The memory errors: I see a lot of problems reading the config and setting up the system. For the time being, please rebase with |
52eb76d to
1f52e7f
Compare
|
Hi @sanguinariojoe, thank you very much. I have rebased with the |
|
OK, I found the main problem @zhilongwei and fixed it on #371 . I am running the memcheck again. Meanwhile please rebase again to Then you can try to reduce the simulation time (even on the regular environment your new test is taking 60 seconds), or drop it from the memcheck tests. |
|
I will try to reduce the simulation time. Currently, for each working curve formula (linear, quadratic, exponential), the test includes six phases of 3 hours each to mimic realistic loading scenarios. This may not be necessary. |
…ize and reduced IC duration
1f52e7f to
ef5589a
Compare
|
I have reduced the memory-check runtime to about 4 minutes on my local machine. I hope this is acceptable. If not, I can exclude this test from the memcheck tests. |
That should do the job. Anyway, we will see when launching the next release. If it is problematic I am droping it myself. For me this is good to go. So let's wait for @RyanDavies19 @mattEhall and @shousner to give their feedback. |
| (name) (m) (kg/m) (N) (N-s) | ||
| poly ... ... SYROPE:owc.txt|EA_Dc|EA_D_Lm BA_s|BA_d | ||
|
|
||
| The file ``owc.txt`` follows the same format as the tabulated non-linear stiffness files described |
There was a problem hiding this comment.
When updating the docs for a separate input file for the Syrope model, this explanation should be moved to a new section in Additional MoorDyn Files.
If you are able to also move the explanation of the non-linear stiffness lookup table input file (lines 310-320) to a new section in Additional MoorDyn Files that would be great (that has been a TODO for a while but we haven't gotten around to it).
Ideally, The V2 Input File section only contains explanations of the main MoorDyn input file. And then Additional MoorDyn Files is a catchall for the additional sub models' input files that are added into MoorDyn.
| `Hall, Matthew, Brian Duong, and Ericka Lozon, “Streamlined Loads Analysis of Floating Wind Turbines With Fiber Rope Mooring Lines.” In ASME 2023 | ||
| 5th International Offshore Wind Technical Conference, V001T01A029. Exeter, UK: American Society of Mechanical Engineers, 2023. <https://doi.org/10.1115/IOWTC2023-119524>`_ | ||
|
|
||
| Syrope model for polyester ropes: |
There was a problem hiding this comment.
Can you move this to underneath Modeling of Bi-stable Nonlinear Energy Sinks in MoorDyn? The references here should be listed in chronological order.
To that end, I think Implementation of bending stiffness modeling for power cables needs to be moved above Seabed friction and bathymetry approach used in v2. Feel free to make this change if you want.
|
Hi all, First off, the report is a great documentation of the code changes and validation. It will definitely be a useful reference for any future work building off of this. Thanks for putting it together! I left a few comments on input file formatting and documentation. I don't have time for a full code review, but I trust that @sanguinariojoe can find any major issues. After the docs changes are made this looks good to merge to me too! @zhilongwei, based on your report I am assuming there is a concurrent PR being prepared for OpenFAST? |
| - 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) |
There was a problem hiding this comment.
Change the short description of EA to the following:
the line stiffness, product of elasticity modulus and cross-sectional area (N) --> the line stiffness, product of elasticity modulus and cross-sectional area (N), or nonlinear parameters (see descriptions below)
| 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 |
There was a problem hiding this comment.
Once you add the Syrope section to the Additional MoorDyn Files, can you add the following after the equation sentence (with a link to the Syrope section): This method can be used standalone, and is also part of the Syrope model described in <link to syrope in the Additional MoorDyn Files section>.
Change: is the slope of the load-stiffness curve. Both of these methods allow users to provide static --> is the slope of the load-stiffness curve. This method can be used standalone, and is also part of the Syrope model described in <link to syrope in the Additional MoorDyn Files section>. Both of these methods allow users to provide static
Thank you, @RyanDavies19. Yes, we have a concurrent PR for MoorDyn-F in OpenFAST that is nearly ready. We still need to update the Syrope input format there to align with the changes here. Once everything is finalized here, we will submit a corresponding PR to OpenFAST with the same functionality. |
Feature or improvement description
This pull request implements the Syrope model for polyester mooring ropes in MoorDyn-C.
The implementation captures:
Impacted areas of the software
Additional supporting information
syrope, has been introduced. A standalone version of the test is also available at: https://github.com/zhilongwei/moordyn-syrope-tests.git, along with example input files for the Syrope model.ESOMOOR D5.1: Extended MoorDyn solver and validation report.
Generative AI usage
Test results
Notes for reviewers
elastic_modeltype,ELASTIC_SYROPE = 4, has been added alongside the existing three models. It is triggered exclusively when the Syrope model is specified through theEAfield in the input file.