OpenFAST / openfast

Main repository for the NREL-supported OpenFAST whole-turbine and FAST.Farm wind farm simulation codes.
http://openfast.readthedocs.io
Apache License 2.0
657 stars 448 forks source link

Wind turbine analysis subjected to earthquake excitation #541

Closed zz17635 closed 2 years ago

zz17635 commented 3 years ago

Greetings!

It seems the "SubDyn" module in OpenFAST always assumes a fixed-base boundary condition during a dynamic analysis. However, I remember reading in a previous article stating that it was possible to perform a wind turbine analysis with earthquake excitation at its base using the FAST software. I wander if it is still an accessible function in the current OpenFAST?

Also, just for a discussion, since the OpenFAST framework bundles a number of different modules in charge of different aspects of wind turbine simulation, how hard would it be to add an additional module to analyse the soil-structure interaction (SSI) using a beam-element model of wind turbine pile (or incorporate the OpenFAST with other software such as OpenSEES for modelling its pile and the associated SSI phenomenon)?

Thank you

jjonkman commented 3 years ago

Dear @zz17635,

Regarding your first question, I believe you are referring to the Seismic version of FAST v7, which allowed the user to prescribe motion at the tower base to simulate seismic loading of wind turbines. Unfortunately, the functionality of Seismic from FAST v7 has not yet been ported over to FAST v8 or OpenFAST. The Seismic version of FAST v7 is still available if you wish to use it.

Regarding your second question, this question is indeed timely. NREL has been working on developing a new module (named SoilDyn) for modeling soil-structure interaction. SoilDyn includes options for interfacing to the REDWIN DLLs for a super-element representation of the soil hysteresis, as well as provides an option for a simple 6x6 stiffness matrix (coupled springs model), and a placeholder for future implementation of nonlinear p-y and t-z curves. SoilDyn has been developed in a feature branch of OpenFAST and pull request will be issued soon to bring this into the Dev branch.

Best regards,

zz17635 commented 3 years ago

Thank you for the info @jjonkman , it would be interesting to try out FAST v7.

It is quite difficult to find the old versions so I shear the link here for anyone else who might come in here: https://wind.nrel.gov/forum/wind/viewtopic.php?f=4&t=2517&p=14833&hilit=FAST+v7+download#p14833

I also found a documentation for seismic analysis in FAST, named Seismic Loading for FAST: https://pdfs.semanticscholar.org/3343/4fb2c054ca04126c60805e46631b3bd9fb08.pdf

Only, from the link above, the downloaded FAST v7 or v8 seems does not have the certifying test examples as described in the seismic documentation. Is this link directing me to the correct FAST and where could I find relevant examples?

Could you disclose an approximate release time of SoilDyn?

Best regards,

jjonkman commented 3 years ago

Dear @zz17635,

Thanks for posting the link. I hadn't placed Seismic version of FAST v7 in the corresponding Google Drive directory, but now I have. The Seismic archive now included there includes the compiled FAST v7 executable with Seismic modification, the Seismic source code (SUBROUTINE UserPtfmLd()), example models, and a copy of NREL/SR-5000-53872.

Best regards,

zz17635 commented 3 years ago

Dear @jjonkman,

Weirdly I only saw a "Seismic_v2.00.00.exe" newly added to the "jjonkman -> FAST -> FASTv7.02" directory of the Google Drive link. Could you please confirm the location of the rest items you mentioned?

Best regards,

jjonkman commented 3 years ago

Dear @zz17635,

_Seismicv2.00.00.exe is a self-extracting archive containing all of the items I mentioned.

Best regards,

danielmpedersen commented 3 years ago

Dear @jjonkman I am just wondering if the SSI solution mentioned here: https://rick-openfast.readthedocs.io/en/ssi/source/user/subdyn/input_files.html#ssi-input-file stil is possible? I tried it out and did not get any error, but in the echo file the input was not recognized at all. Is this an old feature for FAST v7 and not OpenFAST?

Daniel

jjonkman commented 3 years ago

Dear Daniel,

You are referencing a branch of OpenFAST developed by Rick Damiani that was never migrated into the dev or main branches of OpenFAST. However, that soil-structure interaction (SSI) functionality was incorporated into the major upgrade to SubDyn recently merged into the dev branch of OpenFAST through PR # https://github.com/OpenFAST/openfast/pull/537. So, you should be able to use that functionality if you upgrade to the current dev branch of OpenFAST.

Best regards,

danielmpedersen commented 3 years ago

Dear Jason, Thank you for your resoonse Jason. I am fearly new to OpenFAST and I am just wondering how I implement the changes? Do I copy the code from "Files Changed" tab in the PR and compile the Fast.snl i visual studio again or is there a faster way?

Best regards

jjonkman commented 3 years ago

Dear @danielmpedersen,

This PR has already been merged into the dev branch of OpenFAST, but has not yet been migrated to main: https://github.com/OpenFAST/openfast. I'm not sure if you've forked or cloned the OpenFAST github repository, but if so, you can simply select the "dev" branch. Otherwise, you can select the dev branch and download the files as a zip archive.

Best regards,

danielmpedersen commented 3 years ago

Dear Jason

I have now compiled the dev branch and edited the input files so that the new version is able to run, but there seems like there is an error with the SubDyn as I am not able to get it to write a summery file or visualize it in ParaView. Is this a known issue and is there a fix that I can do?

Best regards

jjonkman commented 3 years ago

Dear @danielmpedersen,

I'm not aware of any problems in this regard.

Please note that the SubDyn summary file is now in YAML format, with the extension *.SD.sum.yaml.

What problem are you facing with visualization? Please note that the SubDyn interface uses a point mesh, so only the nodes show up, not the elements. And the SubDyn visualization is only shown with VTK_type = 3, which has not changed from previous versions.

Best regards,

danielmpedersen commented 3 years ago

Dear Jason,

I have not realised that the summary file had a new extension, so sorry about that.

I am trying to model the INNWIND 10MW wind turbine on top of the INNWIND jacket and I am getting errors that the angles in GetSmllRotAngs() are larger than 0.4 radians, which I assumes is because I have released the DOFS in the ElastoDyn file for the platform. How should I model the interface between a jacket and the turbine? When I have these DOFS fixed for the platform I do not get any motion at this location.

Best regards

jjonkman commented 3 years ago

Dear @danielmpedersen,

To ensure coupling between the substructure and supported wind turbine, you should enable the six platform DOFs in ElastoDyn when SubDyn is enabled. Further details are documented in the Modeling Considerations section of the SubDyn documentation: https://openfast.readthedocs.io/en/dev/source/user/subdyn/modeling.html.

From your error message, it sound like your model has gone numerically unstable, likely because of the use of a time step that is too large for the natural frequencies you are trying to resolve in the model.

Best regards,

danielmpedersen commented 3 years ago

Dear Jason,

Thank you for your response, it was verry helpful to read the modeling considerations.

I want to compare the coupled eigenfrequencies from OpenFAST to the eigenfrequencies I have from a similar model in abaqus. Is the eigenfrequencies in the SubDyn summary file for the full system calculated with or without water surrounding the submerged structure? In the part for "Known Limitations and Future Work" there is a point that says; "The dynamics system reduction is performed in the absence of external loading (e.g., hydrodynamic added mass)." Does this imply that the eigenfrequencies are calculated without water for the full system or only for the CB frequencies? The eigenfrequencies I get in OpenFAST is much higher than the frequencies I should get.

Best regards

jjonkman commented 3 years ago

Dear @danielmpedersen,

The eigensolution reported in the SubDyn summary is for the SubDyn model only, without contributions from external boundary conditions or applied loads (the wind turbine attached to the top, added mass, etc.). As stated in the SubDyn documentation, this is how the system reduction (CB and static modes) is performed.

The coupled time-domain solution in OpenFAST, of course accounts for the coupled response----including the coupling between the substructure and turbine, added mass, etc. And you can get the full-system eigensolution--to find the natural frequencies, mode shapes, and damping of the full system model--through the linearization functionality of OpenFAST.

Best regards,

danielmpedersen commented 3 years ago

Dear Jason, Thank you for your last response, it was verry helpful.

In my master thesis I am looking at earthquake on wind turbines and wonder if there is a possibility to apply a displacement as a function of time at the springs presented in the SSI-file? If this is not possible now, do you know if there is a place in the code where this could be implemented by me and how comprehensive do you think it would be?

Best regards

danielmpedersen commented 3 years ago

Dear Jason, When I am performing a linearization of the whole structure and use the matlab-toolbox to process the result I get this error:

Error

I am following this page https://github.com/OpenFAST/r-test/blob/dev/glue-codes/openfast/5MW_Land_ModeShapes/vtk-visualization.md to visualize the mode shapes when the error ocurs.

Best regards

jjonkman commented 3 years ago

Dear @danielmpedersen,

Can you share the 10MW-Jacket.1.lin file that you are post-processing with MBC3?

Best regards,

danielmpedersen commented 3 years ago

Dear Jason,

Here is my file. 10MW-Jacket.1.zip

Best regards

bjonkman commented 3 years ago

I think there is a bug in the OpenFAST code you are using. This has been fixed in the latest OpenFAST dev branch, or you can modify your existing code with this change: https://github.com/OpenFAST/openfast/pull/647/commits/7c96e981de8b7b013adf4c119fc6f5132c74b70c (i.e., add those 6 lines to your code), rebuild OpenFAST and try again.

bjonkman commented 3 years ago

I should also mention that if you wanted to, you could also just modify the text in the .lin files (this might be tedious if you have a bunch of them!)

Order of inputs:
     Column   Operating Point                     Rotating Frame? Derivative Order Description
   ---------- ---------------                     --------------- ---------------- -----------
          1    0.000E+00                                 T               0         ED Blade 1 pitch command, rad
          2    0.000E+00                                 T               0         ED Blade 2 pitch command, rad
          3    0.000E+00                                 T               0         ED Blade 3 pitch command, rad
          4    7.049E+05                                 F               0         ED Yaw moment, Nm
          5   -9.999E+01                                 F               0         ED Generator torque, Nm
          6    0.000E+00                                 F               0         ED Extended input: collective blade-pitch command, rad
          7    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
          8    0.000E+00                                 T               0         AD                                                                                                                                                                                                     
          9    0.000E+00                                 T               0         AD                                                                                                                                                                                                     
         10    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         11    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         12    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         13    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         14    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         15    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         16    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         17    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         18    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         19    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         20    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         21    0.000E+00                                 T               0         AD                                                                                                                                                                                                      
         22    0.000E+00                                 T               0         AD                                                                                                                                                                                                      

MBC is having trouble with the lines that have blank AD descriptions. You can tell MBC to ignore those lines, though, by setting the Rotating Frame? column to False instead of True.