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

ServoDyn Structural control submodule (formerly TMD) #607

Merged
merged 80 commits into from
Feb 10, 2021

Conversation

andrew-platt
Copy link
Collaborator

@andrew-platt andrew-platt commented Dec 7, 2020

This pull request is ready to merge

This update includes significant contributions from the following people at the Univeristy of Massachusetts in Amherst.

Feature or improvement description
The TMD module within ServoDyn has been updated and renamed to Structural Control (StC). This module is used to simulate tuned mass dampers attached to a wind turbine. This includes the following updates:

  • Multiple StC elements at Nacelle, Tower, Blades, and/or floating platform (each StC element is a unique instance of the StC module).
    • Specified within the ServoDyn input file.
    • Blade StC is identical on each blade (one set of blade StC's at applied per StC module instance)
  • StC options:
    • Vertical DOF for an StC element
    • Tuned Liquid Column Damper (TLCD) option
    • Force time series input at an StC element
  • Updated ServoDyn file parsing and input file passing

Impacted areas of the software

  • ServoDyn input file format
    -Modeling of tuned mass dampers

To complete before PR

  • Update ServoDyn input files in r-test
  • User documentation on StC
  • User documentation on ServoDyn

Test results, if applicable
Currently no test cases exist for the StC module.

sphinx-html processes files in alphabetical order.  So any files with the bibliography contents for a module must be the very last file in _alphabetical_ order.  Found out the hard way after 3 hours of trying to figure out why my bibliography for servodyn-stc was broken in readthedocs....
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 haven't reviewed the source code changes in detail, but overall this looks good to me. Just a few comments, mostly pertaining to the ServoDyn and StC input files and related documentation:

Can we reference the contribution of Prof. Matt Lackner at UMASS-Amherst in this pull request?

Can the "platform" StC instances be referred to as "substructure" instead in the input file and documentations? E.g., change "NumPtfmStC" to "NumSStC" etc.  And in the StC documentation, refer to the rigid platform in ElastoDyn or the flexible substructure in SubDyn (fixed or floating). The term "platform" is OK for floaters, but not fixed-bottom systems.  The term "substructure" is more general and industry accepted.

I'm not sure how StC_CMODE or StC_SA_MODE work now or in combination with the future changes to DISCON. Does StC_CMODE = 2 do anything? Presumably StC_SA_MODE is only used when StC_CMODE = 1? (If, so, this could be documented.) Are all StC_SA_MODE options implemented and controlled be the remaining inputs in this section?

@andrew-platt
Copy link
Collaborator Author

andrew-platt commented Feb 4, 2021

I made the change from "platform" to "substructure" this morning.

StC_CMODE

The StC_CMODE has two options

CMODE_Semi            = 1          !< semi-active control
CMODE_Active          = 2          !< active control

The semi-active option is currently enabled.
The active control is not enabled. Currently there are no placeholders for the active control, so it is unclear to me what signals are required for passing to a controller. This will need some design work before implementing.

StC_SA_MODE

The StC_SA_MODE is the semi-active control method. This does not require any connection to a controller. I'm not completely certain that all 5 options make sense for all structural control options (for example, I'm not sure if ground hook control for the blade StCs is reasonable). I don't have much documentation on exactly how these function. From the code, there are 5 options currently programmed for it:

SA_CMODE_GH_vel       = 1          !< 1: velocity-based ground hook control;
SA_CMODE_GH_invVel    = 2          !< 2: Inverse velocity-based ground hook control
SA_CMODE_GH_disp      = 3          !< 3: displacement-based ground hook control
SA_CMODE_Ph_FF        = 4          !< 4: Phase difference Algorithm with Friction Forc
SA_CMODE_Ph_DF        = 5          !< 5: Phase difference Algorithm with Damping Force

@rafmudaf rafmudaf added the Approved: Update baselines Pull request is ready for updated regression test baselines label Feb 4, 2021
@andrew-platt andrew-platt changed the base branch from dev to main February 9, 2021 22:06
@andrew-platt andrew-platt changed the base branch from main to dev February 9, 2021 22:06
The original baselines for these two cases on macos had been generated using macos 10.14.6 (High Sierra) with gcc-10.2.0, but after upgrading to macos 10.15.7 (Catalina), some of the math libraries in the framework changed.  This resulted in minor differences in the some of the matrix solves in subdyn for these two cases which gives small differences in the loads at two nodes (very small when compared to the magnitude of the loads at the foundation.  These are the only two cases with multiple cross members, and only cases that showed this problem.

This updates so that all cases pass on macos 10.15.7 (Catalina) with gcc-10.2.0 (from homebrew).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Approved: Update baselines Pull request is ready for updated regression test baselines Module: ServoDyn Type: Enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants