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
668 stars 452 forks source link

InflowWind module modifications and the establishment of batch file to autorun the openfast program #1522

Open HiHabi opened 1 year ago

HiHabi commented 1 year ago

Hello, I would like to conduct structural health monitoring research on the tower jacket substructure using OpenFAST and obtain load history data of the upper structure of a wind turbine through OpenFAST. Therefore, I would like to ask if it is possible to change the wind field data in the inflowwind module to simulate the load effect of the upper structure of the wind turbine under different environments, or should I use the TurbSim software to create similar wind field data?

Also, I would like to ask if the wind turbine load design in OpenFAST can be analyzed using a batch file method combined with the aforementioned method of changing wind speed data to conduct a structural health monitoring method. Thank you.

jjonkman commented 1 year ago

Dear @HiHabi,

I'm not sure I fully understand your question, but certainly it is possible to simulate different wind conditions in OpenFAST and see their effect on the response and loading of a wind turbine installed on a jacket substructure. TurbSim can be used to generate different wind conditions with full-field turbulence.

Regarding setting up a batch scripts to run multiple TurbSim and OpenFAST simulations, this is standard practice. Similar questions were discussed in the following OpenFAST GitHub issue: https://github.com/OpenFAST/openfast/issues/573, as well as on our forum: https://forums.nrel.gov/t/iterative-matlab-simulations-with-openfast-and-default-controller/4785.

Best regards,

HiHabi commented 1 year ago

Dear Jonkman,

I apologize for not providing a detailed explanation of my question earlier. I am currently researching health monitoring applications for jacket substructures and need to apply a time-varying load to the top of the structure of wind turbine. I have already constructed a finite element model of the soil/jacket structure/tower, so I only need to obtain the time-varying load data at the top of the wind turbine nacelle (hub).

There are two directions to my question, as follows:

  1. In order to achieve health monitoring, I need to analyze the time-varying loads on the top of the nacelle under different wind speeds. To change the wind field data in OpenFAST, should I start by generating turbulent wind fields from TurbSim and inputting them into the InflowWind module, or can I generate multiple random wind field data directly from the InflowWind module and use them for the time historic analysis of the wind turbine hub in OpenFAST? What are the differences between TurbSim and InflowWind modules, and can I perform the analysis of TurbSim, InflowWind, and OpenFAST all at once in version 3.4.1 of OpenFAST to obtain the required data? Or do I need to adjust the input/output data for each module separately?

  2. To generate a large amount of time-varying load data, I need to write a script to automate the OpenFAST operation process, including changing the wind field/inflow wind speed data to generate structural response data under different wind speed conditions. Therefore, I would like to know how to integrate the different modules mentioned above and complete the script I need.

Thank you very much for your time and detailed reply.

Best regards.

jjonkman commented 1 year ago

Dear @HiHabi,

Here are my answers to your questions:

  1. The InflowWind module of OpenFAST provides a means by which wind inflow data files can be used by OpenFAST. But you must generate these wind inflow data files in a preprocessing step (e.g., through the use of TurbSim for full-field turbulence or IECWind for deterministic wind gusts). You must adjust the input/output data for each module separately (hence the need for a script if you intend to run many cases).
  2. This is exactly what the scripts discussed in my posts linked above do--run a series of simulations across different wind conditions by generating wind inflow data in a preprocessing step (via TurbSim for full-field turbulence or IECWind for deterministic wind gusts), followed by the OpenFAST simulations. Several input settings in TurbSim/IECWind and OpenFAST modules (InflowWind, ElastoDyn, etc.) need to be changed for each simulation.

Please note that the time-varying loads at the top of the wind turbine will depend on the motion of the support structure, so, are you planning some sort of two-way coupling between your finite-element model and OpenFAST (OpenFAST <--> FEA) or are you planning to neglect these effects with a one-way coupling (OpenFAST --> FEA)?

Best regards,

HiHabi commented 1 year ago

Dear Jonkman, Much thanks for your kind response.

  1. Regardingto first point, I'm planning to use Turbsim for the complete simulation, as it seems necessary to perform a health monitoring in the presence of turbulence. I also wanted to ask how to modify the environmental variables in Turbsim and whether I can use a script to modify the input data each cases. Finally, do I need to adjust the wind field data modified in Turbsim again in InflowWind module, or can it be directly entered into OpenFAST for calculation?

In addition, I did not see any modules or applications related to IECWIND in the openfast/module. Could you please show me where could I find any relevant information?

  1. Based on the automation script you mentioned in your second point and the link provided, could I found and exsisted script in the matlab tool-box/ python toolbox on OpenFAST GitHub to meet my requirements and make changes to the environmental input in Turbsim and perform different run-cases? I'm now try to understanding the content from python tool-box and try to create the script that could meet my requriements.

Regarding your final question, I saw options for {CompSub} in the reg-test file of 5MW_OC4Jckt_DLL_WTurb_WavesIrr_MGrowth.fst, for which is regarding to the substructure dynamics. Is this the coupling relationships you mentioned? If so, are there any documents that I could study on to create a better analysis method. Currently, my research is based on one-way coupling(OpenFAST --> FEA) and ignores the interaction between the two parts. If there's any better suggestions, please feel free to guide me. Best regards,

jjonkman commented 1 year ago

Dear @HiHabi,

It sounds like you have not yet reviewed the TurbSim documentation. I would start there: https://openfast.readthedocs.io/en/main/_downloads/cb14d3e2d3533d76e405d730fea19846/TurbSim_v2.00.pdf (particularly Appendix B).

When using TurbSim wind data in InflowWind, the only thing you need to set in InflowWind is the name of the TurbSim-generated wind data file for WindType = 3. That said, when changing wind conditions, you typically need to change other OpenFAST inputs such as the initial conditions for rotor speed and blade-pitch angle, as has been discussed several times on this GitHub site and our forum.

IECWind is available here, although it doesn't sound like you want to simulate deterministic gust cases: https://www.nrel.gov/wind/nwtc/iecwind.html.

I'm not familiar with an existing script in the MATLAB or Python toolbox that will do exactly what you want, but scripts are available to read and write input files, which should enable you to write your own script. Certainly WISDEM and WEIS can already do what you want (and much more), but these are bigger packages and may be overkill for your needs.

OpenFAST can already model wind turbines atop jacket structures via SubDyn in a two-way coupled mode, like the case you mentioned. The support structure super element capability of ExtPtfm provides capability for including coupled effects if you want to model the details of the jacket outside of OpenFAST but can provide OpenFAST a super-element representation of the support structure; ExtPtfm is documented here: https://openfast.readthedocs.io/en/main/source/user/extptfm/index.html.

There have also been other discussions on this GitHub page, as well as on our forum, about how to modify source code to enable direct two-way coupling between OpenFAST and other software.

Best regards,

HiHabi commented 1 year ago

Dear @jjonkman , thanks again for your kind response.

I will restart on studying the TurbSim, InflowWind modules and the user guides again, sorry for not detailed and completely understanding the theories and the operations for both modules. Shall I ask any questions when I'm confused again about the previous contents?

About the python toolbox, I'd seen some of the relating script for the changing input datas for the modules of openfast, assuming I could also create those I'm needed. Still appreciate for your kind response.

On the two-way coupling question, the final goal of my research is to done the SHM on a Abaqus FEA to analysis the responses on the welded spot, and classify the heath stage for the parts. Therefore I'm pretty sure this can't be done through just OpenFAST, and that's the questions about how can I constructer a more realistic method to include the two-way coupling mode in OpenFAST and the Abaqus, any good ideas from your experiences?

Best regards, Jack

jjonkman commented 1 year ago

Dear @HiHabi,

You can use this site and our forum to ask questions, but I would always suggest reviewing the documentation first and searching the issues, discussions, and our forum before asking questions. It is likely that most questions have been asked and answered before.

Regarding your coupling, from the situation you describe, I would say that the standard practice would be to either (1) solve the coupled full-system dynamic response in OpenFAST standalone and then transfer the loads at select sections of the substructure to a detailed FEA model for stress/strain calculations or (2) implement the effect of the detailed FEA model in OpenFAST via the super-element approach via ExtPtfm.

Best regards,

HiHabi commented 1 year ago

Deat @jjonkman,

Currently I've finished utilizing the openfast program, and had the quite decent results, thanks for you guidence. However, still with some questions about the outcome of the SubDyn inside the openfast program, taking the "5MW_OC4Jckt_DLL_WTurb_WavesIrr_MGrowth" for instance, it appears that the SubDyn results after running OpenFAST didn't include the interaction force at the Transition Piece (TP part) of the wind turbine jacket structure? Concerning my ongoing program, it would be better to recieve the interactional force for the TP parts?

Best regards,

jjonkman commented 1 year ago

Dear @HiHabi,

I'm not sure I understand your question. OpenFAST will consider the interaction between at the transition piece between the tower in ElastoDyn and the jacket in SubDyn when the six platform degrees of freedom in ElastoDyn are enabled.

Best regards,

HiHabi commented 1 year ago

Dear @jjonkman , Taking the reg_test folder "5MW_OC4Jckt_DLL_WTurb_WavesIrr_MGrowth" for instance, which may be better to explain my questions, and might be easier for you to explain.

from the ElastoDyn.dat file, the controls of DOFs are basically all True, pic as follow

截圖 2023-04-20 00 02 17

however, from the output of the ElastoDyn, I'd only seen the displacements of TP parts without the interaction forces, which I expected to be like the output results from SubDyn, offering the base reactions as following pic, from the SybDyn.bat output information.

截圖 2023-04-20 00 06 58

The results from the ElastoDyn.bat seem only offers the interaction force at the tower tops but not at the TP parts, any advices on reaching the interaction force at TP parts? Or the output of interaction force of TP parts weren't design in the origin. the ElastoDyn.bat, output information as follow

截圖 2023-04-20 00 10 30

Hope I did clarify my question properly, and thanks for you responses. Best regards,

jjonkman commented 1 year ago

Dear @HiHabi,

I'm still not sure I really understand your question, but you seem to be asking which output parameters from SubDyn and ElastoDyn correspond to the reaction forces at the transition piece. The SubDyn outputs are IntfFXss for X-component force, IntfMxss for X-component moment (and likewise for Y and Z forces for moments). I would expect these to closely match the tower-base forces and moments from ElastoDyn (TwrBsFxt and TwrBsMxt, likewise for y and z) if the tower base location and platform reference point in ElastoDyn are coincident. You can always add the outputs you want to the OutList sections of the SubDyn and ElastoDyn input files.

Best regards,

HiHabi commented 1 year ago

Dear @jjonkman , the results of ItnfFXss, inftMXss etc. are exactly the outputs I'm searching for, however I hadn't seen any of these output option from the .out file after running the openfast. Am I searching on the wrong file, or some error had just occurred. Plz show me were can I found the datas such as IntfFXss, InftMXss etc. after running the program

Best regard,

jjonkman commented 1 year ago

Dear @HiHabi,

You must set the outputs you want OpenFAST to compute in the various OutList sections of the input file for each module. The list of available outputs to be selected from is documented here for most modules: https://openfast.readthedocs.io/en/main/_downloads/3f19498a5dc774461e022b671ff01ec6/OutListParameters.xlsx or in the module-specific user documentation: https://openfast.readthedocs.io/en/main/source/user/index.html#module-documentation.

Best regards,

HiHabi commented 1 year ago

Dear @jjonkman,

As I'm looking to output results as follows: "IntfFXss, IntfFYss, IntfFZss, IntfMXss, IntfMYss, IntfMZss,"/ "IntfTDXss, IntfTDYss, IntfTDZss, IntfRDXss, IntfRDYss IntfRDZss"/ "IntfTAXss, IntfTAYss, IntfTAZss, IntfRAXss, IntfRAYss IntfRAZss" as Transition Piece. Still taking the reg_test - 5MW_OC4Jckt_DLL_WTurb_WavesIrr_MGrowth" for instance, it appears that I will have to modify the SubDyb.dat output list as following pic, to change the memberID and the SDoutlist to reach my goals: image image

if I am looking to get the results for TP part as mentioned, do I have to change the memberID into "24/ 28/ 32/ 36/ 53/ 54/ 55/ 56"as following pic for the interface parts? Or there's other operations details I should be aware of ? thanks for your reply and guidence, best regards,

jjonkman commented 1 year ago

Dear @HiHabi,

As you've noted, the OC4-jacket has 8 joints in SubDyn rigidly connected at the interface to ElastoDyn, which is the transition piece. I would not expect that you'd need to change those. The interface reaction loads (IntfFXss etc.) are the total reaction from all joints connected to this interface.

I agree that you'll want to add SubDyn outputs IntfFXss etc to the SubDyn output list (called SDOutList).

Best regards,

HiHabi commented 1 year ago

Dear @jjonkman ,

As you mentioned, I'd found the SubDyn outputs from the SubDyn.dat from the reg_test folder, as following pic, image Is it all that adding the output items such as IntfFXss, IntfMxss etc. and re-operate the openfast.exe again, supposingly I will get the results I'm looking for?

Best regards,

jjonkman commented 1 year ago

Correct.