-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dynamic tensions on mooring lines #60
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This is based on an algebraic approximation by Aranha and Pinto, "Dynamic tension in risers and mooring lines: an algebraic approximation for harmonic excitation". This version is still for comparisons with MoorDyn, so there is a part of the code that is used to read a MD output file and use the motions from there. This will be removed after the validation is done.
This commit incorporates the dynamic mooring developments from MoorPy into RAFT. The solution of body dynamics in model.solveDynamics can now account not only for the stiffness induced by the moorings but also for the inertia, added mass, and damping. Currently, it works only with the code in MoorPy's "dynamics branch" (commit #4bddb152cbaf607ca24f0303f93ed10b6ce197de). Still WIP. Need to verify and debug.
- The values of the tension computed with the lumped mass approach (which includes dynamic amplification) at the extremities of the line are now saved to the results dictionary - Changed the values of moorMod. Now moorMod = 0 is quasi static (before it was 1) moorMod = 1 is dynamic moorMod = 2 is dynamic but with the stiffness matrix from the quasi-static approach
- Damping due to moorings, which is obtained from linearizing the quadratic drag along the lines, is now evaluated iteratively depending on FOWT motion (only for mooring systems within each fowt, not array level) - The lumped mass approach can now be used for array level mooring systems, including shared moorings - New helper function "getLineEndsRAO" to avoid code repetition
Due to the lumped mass approach, we now convert all lines to subsystem before computing the dynamic tensions in mooring lines. That required changing the true values of VolturnUS-S_farm because this example includes multisegment lines
RAFT v1.3.0
Due to the lumped mass capability (which is not currently tested), we now convert mooring lines to subsystem before computing tensions. That changes the size of the arrays stored in model.results['case_metrics'][iCase]['array_mooring'][metric] used in test_analyzeCases(), as the 7 lines of the test case become 5 due to aggregating composite lines into a single subsystem.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
This PR implements dynamic tension on mooring lines based on the amazing work done by @serag-abdulmotaleb. It requires the MoorPy capabilities introduced in NREL/MoorPy#29
RAFT can now use the recently implemented MoorPy's lumped mass approach to account for inertia, hydrodynamic added mass, and hydrodynamic damping (from linearized quadratic drag) due to the moorings acting on the floater. This approach provides a much better prediction of dynamic mooring line tension than the quasi-static stiffness-only approach. Still need to check how the lumped mass approach affects resonant motions of the floater induced by second-order waves and/or turbulent wind.
The lumped mass approach requires a MoorDyn input file including the added mass, drag, and mass coefficients of the line. The user can choose the mooring model with the key
moorMod
withinmooring
(for a FOWT-level mooring system) or withinarray_mooring
(for an array-level mooring system). The available options are:moorMod=0
: quasi-static stiffness-only model (i.e., the only mooring model that was available in RAFT before)moorMod=1
: the lumped mass approachmoorMod=2
: hybrid model where the stiffness matrix is computed using the quasi-static approach while the other matrices (inertia, added mass, and damping) are computed using the lumped mass model. I added an example in the examples folder that corresponds to one of the results shown below.If the user does not specify a value of
moorMod
, it is assumed to be zero and everything should work as before. Hence, this new functionality should NOT affect existing code. Please let me know if you find any problem.Note:
moorMod=1
doesn't seem to be working well with shared moorings. There's something weird going on when we lump the dynamic matrices (stiffness, damping, etc) to the body. The dynamic tension calculation seems to be ok.Type of change
Testing
Some examples of this new functionality are given below
Comparison of RAFT results of the UMaine VolturnUS-S semisubmersible (under both waves and wind) against OpenFAST. 'qs' stands for quasi-static (
moorMod=0
) and 'dyn' stands for dynamic (lumped mass approach implemented in this PR,moorMod=1
). The 'dyn' results correspond to the case included in the examples folder.Comparison of RAFT results against OpenFAST of the UMaine VolturnUS-S semisubmersible (under both waves and wind) with a taut mooring system using multi-segment lines
Fairlead and anchor tensions of a two-unit array with shared moorings (also UMaine VolturnUS-S semisubmersible under both waves and wind). No comparison against FAST.Farm yet.
Checklist
Tests are not passing on GitHub actions because this PR requires MoorPy capabilities that weren't merged yet (NREL/MoorPy#29). All tests pass locally.Tests are passing after the new MoorPy release.