-
Notifications
You must be signed in to change notification settings - Fork 458
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
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
Develop Prescribed Platform Motion capability with aero-elasticity #617
Comments
Dear Ricardo, The platform motions are structural DOFs of ElastoDyn. As such, they are solved by calculating F=m*a for the acceleration (a, the unknowns) based on applied loads (F, the knowns) and time integrating. I would generally not recommend trying to prescribe some of the states while calculating others, as, this would likely require a rearrangement of the formulation in terms of which terms are knowns (a for the platform, F for other components) and which are unknowns (F for the platform, a for the other components). Instead, I would recommend applying loads at the platform reference point that result in the desired motion of the platform. The user-specified external platform called via CompSub = 2 in the OpenFAST primary input file provides a direct means for setting the platform loads. Similar topics have been discussed a number of times on our forum, e.g. see: https://wind.nrel.gov/forum/wind/viewtopic.php?f=4&t=2259&p=12800. I suggest review these for further information. Best regards, |
Dear jjonkman, Thank you for the explanation, I understand. On that case, according to what I read about the ExtPtfm module and the Craig-Bampton reduction, I first need to produce the reduced matrices (M,C and K) and reduced loads for the floater using a high-fidelity FEM software.
Best regards, |
Dear Ricardo, Actually, I would forget the Craig-Bampton reduction. Instead, I would set the externally applied force in ExtPtfm equal to F = K*( DesiredDisplacement - X ) + C*( DesiredVelocity - Xdot ) This is effectively what the Seismic module of FAST v7 does to impose earthquake excitation of the platform. See equations (1)-(3) in the Seismic documentation for more information: https://drive.google.com/file/d/1YbZgeOZ46R5IiMOT-kpHtoElOfyBlwUG/view?usp=sharing. Best regards, |
Dear jjonkman, I think I understood the force that but I'm not sure regarding the M, C and K matrix inputs. Would these be 6x6 matrices considering the 6 platform degrees of freedom where:
At the same time, I have the feeling that the actual matrix values don't matter as long as they are in accordance with the coefficients k and c used to calculate the prescribed forces. At least looking at the equation of motion for pure surge [mxdd + cxd + kx = F = k(xtarget - x) + c(xdtarget - xd)], I can see the terms cancelling on the left and right sides, is this correct?
And finally, on the ExtPtfm input file:
Should I put the ActiveDOFList to 0? Is there something else I need to change? Best regards, |
Dear Ricardo, My understanding is that you want to prescribe the motion of the platform. As such, you don't need to consider any physically correct values for platform mass/inertia, hydrodynamics, or moorings. Instead, as discussed in the Seismic documentation, you should specify an artificially high platform mass/inertia, and choose a stiffness, damping, and force that results in the desired motion. In your equation of motion, you've double booked the c*xd and k*x terms. Instead, the single DOF equation of motion should be: (This is equivalent to m*xdd = c*(xdtarget - xd) + k*(xtarget - x).) The ExtPtfm module allows you to specify M, C, K, and F for a rigid platform by setting FileFormat = 0 (Guyan). I would choose M such that when it is added to the physical mass/inertia of the wind turbine atop the platform that M dominates. C and K can be derived from M as discussed in the Seismic documentation. Then, F includes the terms that are left on the right-hand side: F = C*xdtarget + K*xtarget. If the mass added via ExtPtfm (M) is large relative to the physical/mass inertia of the wind turbine, then I would expect you could get by with making M, C, and K diagonal matrices (the Seismic module didn't have to worry about off-diagonal terms because Seismic only applied to the platform translation DOFs). I hope that helps. Best regards, |
Dear Ricardo, I'm not following everything you are saying, but from my original description, I was suggesting that the mass in ExtPtfm be set much larger than the full system mass (actual platform mass + tower mass + nacelle mass + rotor mass). The stiffness and damping can be derived from that mass and an actuator frequency that is higher than the highest natural frequency of the turbine model when the platform is fixed. With these values for M, C, and K, you should get the desired motion to match any target motion you specify. Best regards, |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
Good evening,
I'm trying to implement a capability in OpenFAST that will allow a user to prescribe periodic platform motions to the simulations. The objective is to run these simulations with aero-elasticity so I'm trying to see how to implement this in a fully coupled framework instead of in the AeroDyn module alone. I'll show below where in the code I'm standing now and where I'm thinking of making the changes. If you could give me some guidance, it would be amazing.
As far as my understanding goes, ElastoDyn is the module that receives the loads and calculates the displacements, velocities and accelerations of the system's DOF, so the motion prescription should be done here. I also went through the code starting from the OpenFAST driver (FAST_Prog.f90) and it lead me to ElastoDyn. In the beginning of ElastoDyn.f90 (line 557), there's this:
and
UpdateValues
is set to.TRUE.
.At the beginning of the function
ED_CalcContStateDeriv
(ElastoDyn.f90 line 1825), there's this:The 4 functions found in this piece of code (
CalculatePositions, CalculateAngularPosVelPAcc, CalculateLinearVelPAcc and CalculateForcesMoments
) calculate an object calledRtHSdat
which seems to contains partial moments, forces and linear and angular accelerations which will be used to calculate the same total quantities in theED_CalcOutput
routine. TheRtHSdat
object contains the following properties, among others:My first idea was to prescribe all the fields in
RtHSdat
that correspond to the linear and angular positions, velocities and accelerations from the inertia frame origin to platform reference (point Z) but there seem to be some platform motions (including the actual platform DOF like surge and pitch) which relate to the objectsx%QT, x%QDT and m%Q2DT
as can be seen below (ElastoDyn.f90 line 931):Also, the
RtHSdat
properties of interest are calculated fromx%QT, x%QDT and m%Q2DT
and partial angular and linear velocities generally speaking. Now, I think I should prescribedx%QT, x%QDT and m%Q2DT
and partial angular and linear velocities that are used to calculate theRtHSdat
properties from the inertia frame origin to platform reference (point Z).Is this reasoning correct or am I completely off of the tracks? If not, I think
x%QT, x%QDT and m%Q2DT
are straightforward to prescribe since they seem the position, velocity and acceleration of the typical platform degrees of freedom corrected by a constant (which I don't know what it is) but I don't understand what are the partial angular and linear velocities.Best regards,
Ricardo Amaral
The text was updated successfully, but these errors were encountered: