-
Notifications
You must be signed in to change notification settings - Fork 446
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
Loads and response transferring in OpenFAST #282
Comments
Dear @Robinjun, When HydroDyn is coupled to OpenFAST, HydroDyn receives the position, orientation, velocities, The data transfer between ElastoDyn or SubDyn and HydroDyn occurs using built-in mesh-to-mesh mapping routines. The theoretical background of this mesh mapping is documented in a couple papers: https://www.nrel.gov/docs/fy14osti/60742.pdf and https://www.nrel.gov/docs/fy16osti/63203.pdf. While the platform in ElastoDyn only has a point mesh with a single point element, the SubDyn module has a point mesh with multiple point elements. HydroDyn has several line and point meshes. It would be possible to replace HydroDyn with a CFD solver, but this would not be trivial. I'm sure there is much that could be discussed about that, but I'll defer to the CFD experts to comment. Best regards, |
Dear @jjonkman, |
Dear @Robinjun, Are you asking where in the source code the data transfer between ElastoDyn and HydroDyn happens? The ElastoDyn-HydroDyn transfer involves a rigorous input-output solve due the implicit nature of the coupling. There are several cases for this input-output solve depending on which modules are enabled. Assuming you are not using BeamDyn or SubDyn, the ElastoDyn-HydroDyn input-output solve happens in routine FAST_Solver.f90/ED_HD_InputOutputSolve(). I hope that helps. Best regards, |
Dear @jjonkman, I want to analyse hydrodynamic behavior of wind turbine semi-platform under the wave environment. At the beginning, I use STAR-CCM+ to calculate the loads of wave acting on the platform in the first time step. Then I want to transfer these loads to OpenFAST to calculate the responses (e.g. dispalcement ) of platform in the first time step. Maybe it's the ElatoDyn module to do this calculation. After calculating the responses in OpenFAST, I want to transfer these responses to STAR-CCM+, so that STAR-CCM+ can calculate the loads acting on the platform in the second step by appling the responses data from OpenFAST. Then the loads are transferred to OpenFAST again to calculate the responses of the platform. Loads and responses transferring continues each time step till the maximum modeling time is reached. It seems that my coupling of OpenFAST and STAR-CCM+ is to replace the HydroDyn module in OpenFAST. May I should find the place where loads are transferred between HydroDyn and ElastoDyn. My questions are:
I wish your answer! Thank you very much! |
Dear @Robinjun, Here are my answers to your questions:
I'll let others who are more experienced with CFD and/or STAR-CCM+ comment further. Best regards, |
Dear @jjonkman,
|
Dear @Robinjun, u_ED, p_ED, x_ED, xd_ED, z_ED, OtherSt_ED, y_ED and m_ED are the inputs to, parameters of, continuous states of, discrete states of, constraint states of, other states of, outputs from, and miscellaneous variables of the ElastoDyn module. All modules of FAST / OpenFAST have a similar set of variables (inputs, parameters, states, outputs) -- see the FAST modularization framework overview paper (http://www.nrel.gov/docs/fy13osti/57228.pdf) and NWTC Programmer's Handbook (https://nwtc.nrel.gov/system/files/ProgrammingHandbook_Mod20130717.pdf) for more information. The forces and moments applied to the platform are inputs to ElastoDyn (stored in u_ED) and outputs from HydroDyn (stored in y_HD). The platform motions (position/orientation, velocities, accelerations) are outputs from ElastoDyn (stored in y_ED) and inputs to HydroDyn (stored in u_HD). But the routine FAST_Solver.f90/ED_HD_InputOutputSolve() establishes a rigorous input-output solve between ElastoDyn and HydroDyn by solving an implicit set algebraic equation using Jacobians. Unless your hydrodynamic solver functions in a similar way to HydroDyn (whereby the Jacobian of its outputs with respect to inputs) can be calculated, my guess is it will not be trivial to modify this routine for compatibility with your own hydrodynamic solver. Best regards, |
Hi @jjonkman And I'd like to know about the possibility of connecting to different modules of OpenFAST through the S-Function and maybe even change their inputs during a simulation. |
Hi @armin-zbf, The OpenFAST-Simulink interface is currently set up to support the implementation of user-specified controls in Simulink, with inputs to the S-Function from Simulink including generator torque and power, yaw position and rate, blade-pitch angles, and high-speed shaft braking fraction. I'm not sure what kind of inputs you are referring to, but including other inputs would require changes to the OpenFAST S-Function and OpenFAST dynamic library source code. And depending on the type of inputs added, the numerical stability of the coupled solution could be challenging because the OpenFAST S-Function is treated as a discrete-time block (so, e.g., implicit coupling where a force input depends on an acceleration output could be problematic). Best regards, |
Thanks for your answer, since I got your reply I've been trying to understand the codes in ElastoDyn.f90, FAST_SFunc.c, and HydroDyn.f90. |
Dear @armin-zbf, By "6 DoF stabilizing forces", I presume you mean three forces and three moments applied to the platform reference point in ElastoDyn; is that correct? These loads are not currently considered in the OpenFAST S-Function. So--similar to the discussion in the following issue: #548 --you'll need to change the Simulink interface and the OpenFAST glue code to pass these loads from Simulink to ElastoDyn. In the case of loads applied to the platform reference point, you'd need to set the module-level input to ElastoDyn PlatformPtMesh. You haven't stated how this stabilizing force is being calculated. But as I said earlier, because the OpenFAST S-Function is treated as a discrete-time block, implicit coupling where the load input depends on an acceleration output (e.g., to consider hydrodynamic added mass) could be problematic. Best regards, |
Dear @jjonkman I also would like to ask where can I find some detailed information about the frames and axis used for the calculations? Because as I was testing I understood a change in FrcZAllt(2) would cause a change in heave and to sway. So just to make sure, FrcZAllt(1), FrcZAllt(2), and FrcZAllt(3) correspond to surge, heave, and sway? and MomXAllt(1), MomXAllt(2), and MomXAllt(3) correspond to roll, yaw, and pitch? |
Dear @armin-zbf, As I mentioned in my prior post, you should set the module-level input to ElastoDyn PlatformPtMesh in the OpenFAST glue code. You should not need to change ElastoDyn in any way because PlatformPtMesh is already applied to the platform appropriately within ElastoDyn. PlatformPtMesh is a point mesh with a single point element and contains a force field with three elements (the three applied forces in the OpenFAST global inertial frame coordinate system) and a moment field with three elements (the three applied moments in the OpenFAST global inertial frame coordinate system). The change to the OpenFAST glue code should be very similar to what is discussed in #548, with PlatformPtMesh set instead of HubPtLoad. Normally PlatformPtMesh is set from the outputs of HydroDyn, SubDyn, a user-defined external platform, or a mooring module, but you want it set from the inputs to the S-Function from Simulink. Best regards, |
Hello. I want to ask the question about loads and responses transferring in OpenFAST and I wish your answers or suggestions.
I learn that loads and responses are transferred between different modules via the FAST driver program (glue code) in OpenFAST. I want to know
1.After calculating loads in HydroDyn module, how are the loads transferred to the ElastoDyn module?
2.What exactly loads are they? Three forces and three moments in three different directions?
3.Where can I find these loads and change them so that I can transfer my own loads data to ElastoDyn module?
Actually, I want to repalce the loads in HydroDyn with that in CFD software (e.g. STAR CCM+), and transfer them to ElastoDyn module. Then I want to transfer the responses (e.g. displacement, position) from ElastoDyn to CFD software. I want to couple OpenFAST and STAR CCM+. Are there any documents for guidance?
I wish your answers or suggestions. Thank you very much!
The text was updated successfully, but these errors were encountered: