Skip to content
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

Flexible floating platforms #537

Merged
merged 429 commits into from
Jan 29, 2021
Merged

Conversation

HaymanConsulting
Copy link
Contributor

@HaymanConsulting HaymanConsulting commented Aug 26, 2020

Complete this sentence
THIS PULL REQUEST IS READY TO MERGE!!!

Feature or improvement description
This pull request adds the ability to model flexible floating platforms with multiple potential flow bodies and flexible connections. A significant rewrite of the HydroDyn Morison module and large modifications to SubDyn was required.

  • Major revisions to SubDyn
    • New input file format
    • Guyan damping
    • Guyan load correction
    • Raleigh damping
    • Cables
    • Rigid links
  • Major revisions to HydroDyn
    • New method for calculating buoyancy
    • multiple bodies for potential flow methods
    • revision of internal data handling for potential flow models (WAMIT)
    • significant rewrite of the Morison module
    • new input file format
    • new driver level test cases
  • Glue code changes
    • coupling of SubDyn to HydroDyn for flexible floating platforms

Impacted areas of the software
HydroDyn

  • calculation methods
  • input file format
    SubDyn
  • calculation methods
  • input file format
    Glue-code
  • coupling between SD and HD

Test results, if applicable
r-test baselines need updating pending final verification (current branch: f/TCF-mods-Dev)

  • Extract new input motion time series for the modules/hydrodyn/hd_5MW* floating cases using the comparable fully coupled OpenFAST regression test results.
  • baseline rerun:
    • linux-gnu
    • linux-intel
    • macos-gnu
    • windows-intel
  • update the NBodyMod example cases -- these are not run in testing, but are examples for format
  • add the subdyn driver level test cases

To Do

  • Update the api_change.rst with changes to the HD input file
  • Whats failing with the regression tests?
    • All regression tests now run (2020.12.21).
    • The hd_OC3tripod_offshore_fixedbottom_wavesirr case fails with
       ErrMsg returned: HydroDyn_CalcOutput:Morison_CalcOutput:The lowest element of a Morison member
      
    has become partially submerged! This is not allowed. Please review your model and create a
    discretization such that even with displacements, the lowest element of a member does not
    become partially submerged.```
    This case was revised so this no longer is an issue (heave was set to -3m which didn't make any sense for a fixed bottom case).
    • The channel names from HydroDyn changed, so comparisons should be made only with common named channels (testing cannot currently generate plots automagically when names are different)
    • The buoyancy calculations have changed considerably from before, leading to very small differences in floating cases.
    • Angular displacements of the platform now couple HydroMx or HydroMy terms to HydroMzi properly. This shows as a HydroMzi value that is larger than before in the TLP floating case.
  • Consolidate all HydroDynOutListParameters.xlsx into the docs/OtherSupporting/OutListParameters.xlsx
  • We also need to get my LinearAero branch merged into OpenFAST first, and then merge the changes I've made there into this PR (Greg had already merged a bunch of that in here).
  • It looks like there is a bug in the code. From the test build (https://github.com/OpenFAST/openfast/pull/537/checks?check_run_id=1051937722).
  • If AeroDyn is not used, BladeProps won't be allocated and NumBlNds unknown.
  • verify compiles in single and double precision
  • fix VTK visualization for Morison and other HD related meshes (see GJH 4/23/20 comments in FAST_Subs.f90)

ebranlard and others added 30 commits March 26, 2020 21:52
Sorry, this massive commit will basically make Morison.f90 and related files new entries in the repo.
An_drag now zeroed for each joint loop
Added cosPhi_ref to member data (reference value of cos(Phi) at init)
Draft h_c and deltal calculations for lumping external distributed HD loads
Replaced time marching seabed crossing Z-valued tests with i_floor tests
Added nodeInWater to calculations for end loads: F_I_End, F_IMG_End
interpolation factor (s) was incorrect because Intel compiler was applying integer math
i_floor = NElements + 1 means complete member is below seabed
Checking for node submergence when computing side external hydrodynamic loads
There are still conflicts which will be corrected by hand in the next commit
@andrew-platt andrew-platt self-assigned this Jan 27, 2021
@andrew-platt andrew-platt requested a review from jjonkman January 27, 2021 16:02
@andrew-platt andrew-platt marked this pull request as ready for review January 27, 2021 16:02
@andrew-platt andrew-platt changed the title Tcf mods2 Flexible floating platforms Jan 27, 2021
Copy link
Collaborator

@jjonkman jjonkman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've spent much time on this branch developing/reviewing theory, reviewing source code, and checking verification results. I'm ready for this branch to be merged into dev.

@rafmudaf
Copy link
Collaborator

Congrats to everyone working to get this to the finish line. It looks close!

I modified the regression test scripts to compare the channels common to both the new results and the stored baseline solutions. There are a few channels in a couple of cases that don't quite match up. @jjonkman @ebranlard @andrew-platt could you comment on the differences here?

For reference, I've also attached the html files containing the complete set of common channels here: plots.zip.

5MW_OC4Jckt_DLL_WTurb_WavesIrr_MGrowth

Screen Shot 2021-01-27 at 10 56 48 AM

Screen Shot 2021-01-27 at 10 57 16 AM

Screen Shot 2021-01-27 at 10 57 52 AM

Screen Shot 2021-01-27 at 10 58 05 AM

Screen Shot 2021-01-27 at 10 58 25 AM

Screen Shot 2021-01-27 at 10 58 35 AM

5MW_OC3Trpd_DLL_WSt_WavesReg

Screen Shot 2021-01-27 at 11 07 28 AM

Here's a zoomed-in snapshot of the channel above.

Screen Shot 2021-01-27 at 11 07 43 AM

Screen Shot 2021-01-27 at 11 06 38 AM

A zoomed-in snapshot of the channel above.

Screen Shot 2021-01-27 at 11 06 52 AM

Screen Shot 2021-01-27 at 11 06 20 AM

Screen Shot 2021-01-27 at 11 07 59 AM

Screen Shot 2021-01-27 at 11 07 04 AM

@andrew-platt
Copy link
Collaborator

It looks like we may be triggering instability in SubDyn in the fixed bottom cases. @ebranlard , should we set some of the new damping for these cases? I had left those empty when I updated the format.

from the NRELOffshrBsline5MW_OC3Tripod_SubDyn.dat file:

False            GuyanLoadCorrection - Include extra moment from lever arm at interface and rotate FEM for floating.
-------------------- FEA and CRAIG-BAMPTON PARAMETERS---------------------------
             3   FEMMod      - FEM switch: element model in the FEM. [1= Euler-Bernoulli(E-B);  2=Tapered E-B (unavailable);  3= 2-node Timoshenko;  4= 2-node tapered Timoshenko (unavailable)]
             1   NDiv        - Number of sub-elements per member
True             CBMod       - [T/F] If True perform C-B reduction, else full FEM dofs will be retained. If True, select Nmodes to retain in C-B reduced system.
            12   Nmodes      - Number of internal modes to retain (ignored if CBMod=False). If Nmodes=0 --> Guyan Reduction.
             1   JDampings   - Damping Ratios for each retained mode (% of critical) If Nmodes>0, list Nmodes structural damping ratios for each retained mode (% of critical), or a single damping ratio to be applied to all retained modes. (last entered value will be used for all remaining modes).
             0   GuyanDampMod - Guyan damping {0=none, 1=Rayleigh Damping, 2=user specified 6x6 matrix}
  0.000, 0.000   RayleighDamp - Mass and stiffness proportional damping  coefficients (Rayleigh Damping) [only if GuyanDampMod=1]
             6   GuyanDampSize - Guyan damping matrix (6x6) [only if GuyanDampMod=2]
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
---- STRUCTURE JOINTS: joints connect structure members (~Hydrodyn Input File)---

@andrew-platt
Copy link
Collaborator

The M1N1FDxi is the viscous drag force calculated in HD. @jjonkman , can you comment on the validity of the change seen there?

@jjonkman
Copy link
Collaborator

@rafmudaf and @andrew-platt

Regarding the high-frequency ringing in heave in the fixed-bottom r-test cases, this is because the heave damping that was previously been included in these models via AddBLin(3,3) in HydroDyn is no longer used when PotMod = 0. Instead, I would shift the AddBLin(3,3) value from HydroDyn to SubDyn, via GuyanDampMod = 2 and GuyanDampSize = 6 and setting the associated (3,3) element of the matrix. This should be changed for the OC3-monopile, OC3-tripod, and OC4-jacket models.

Regarding the M1N1FDxi from the OC3-tripod test, it appears that the member outlist in HydroDyn has been changed in the updated r-test; I'm not sure why this was changed, but that is likely the culprit

Best regards,

@andrew-platt
Copy link
Collaborator

Updated the OpenFAST regression tests:

  • For fixed bottom cases, moved the AddBLin damping terms from HD into Guyan damping matrix in SD. This cleaned up the ringing in the vertical direction and results now match well.
    • Note: there is an offset in some of the vertical forces in the SD joint outputs: @ebranlard comments

a small offset could be persent because before the output of subdyn was : K x + fg and now it's just K x , where fg was the gravitational weight of the member. and if members are not along the z direction, then the offset will be seen in the x/y/z becasue these outputs are in element system

  • 5MW_OC3Trpd_DLL_WSt_WavesReg:

    • Noise is significantly reduced in M1N2FKxe (see above plot)
      Screen Shot 2021-01-27 at 4 18 09 PM
    • Initial transient is slightly worse in YawBrFzp, but agrees well after initial transients. Considering the change in the damping method used, this is acceptable.
      Screen Shot 2021-01-27 at 4 21 14 PM
  • OC4Semi case:

    • There is a small change in the platform pitch (0.1 degree maximum change from 1.4 degrees to 1.5 degrees) and in sway motion (~2 mm maximum difference). These are likely both due to removing the AddCLin terms and instead using the new buoyancy calculation formulation. This results in slightly different restoring moments due to location of the buoyancy cans relative to the simplified method with AddCLin matrix.
      Screen Shot 2021-01-27 at 4 12 33 PM

All other cases appear to match well now, especially considering the heavy reformulations of calculations in HD and SD.

@andrew-platt andrew-platt requested a review from rafmudaf January 27, 2021 23:44
This is now ready for merging!!!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants