6x6 Rigid Body Matrix for tower top (RNA) assembly

Hello Everyone,
I hope all of you are doing well. I am a new user of OpenFast and am trying to understand how openfast works by using the examples provided especially the 5MW land based wind turbine model.
In the Elastodyn module, we need mode shapes and for those we need to use Bmodes. While It was easy to compute the other structural aspects, i am struggling with the calculation of rotor interia terms i.e. the 6x6 matrix. I have read the previous posts and understood that by linearization we can obtain that matrix. But, when i try the results arent in the same form. The input files are as follows:

.fst

elastodyn

servo

output



I know this might be repetitive but i would really appreciate any suggestion

BR.

Dear @KanwarOsama.Zulfiqar,

Are you trying to follow the process outlined in the following forum topic for computing the 6x6 rigid-body mass matrix from ElastoDyn: OpenFast 2nd order Linearization?

I see that in ElastoDyn you’ve only enabled 6 platform degrees of freedom, which is correct. But I don’t see that you’ve included the platform load inputs as an input in the linearized system, which requires that LinInputs = 2 in the OpenFAST primary (.fst) input file. While the forum topic I linked to above mentioned how to derive the mass matrix from the input-transmission (D) matrix, this requires that you include the 6 platform accelerations (3 translations, 3 rotations) in the OutList of ElastoDyn, which you have not included. However, the platform accelerations are also included in the first time-derivative of the continuous states (xdot), and so, you can also derive the mass matrix by inverting the 6x6 submatrix of the input matrix (B) associated with the platform load inputs and the platform accelerations, once LinInputs = 2.

Best regards,

Dear @Jason.Jonkman

Thank you for your reply. As you explained, i Turned the LinInputs = 2 and then placed the 6 degrees of freedom in the elastodyn file. However, i still dont think i am getting the right result as the D matrix that i am getting is of the order 6x456 and the B matrix is 12 x 456. The changes i did are here

.fst

. eslastodyn


.lin



Dear @KanwarOsama.Zulfiqar,

You’ll need to extract the 6x6 submatrix from the full B matrix, relating the platform load inputs with the platform accelerations. This would be rows 7-12, but I’m not sure what columns because haven’t shared the full order of inputs.

FYI: You won’t need the outputs if you are calculating the mass matrix from the B matrix, but I see that when you added the platform acceleration outputs, you added the rotational accelerations twice instead of the distinct translation and rotation accelerations.

Best regards,

Dear @Jason.Jonkman
Thanks for pointing out the mistake, really appreciate it. I did remove the outputs from the Elastodyn file and generated the new .lin file. I can see that the rows 7 to 12 are the only non zeros in this matrix. In the .lin file, I have this order of inputs (I believe this picture has the ones that I need)

From the B matrix, I found the corresponding 6 x 6 matrix as follows.

One last question is that does this matrix seem okay. I dont know if it previously has been shared on the forum. Many thanks again.

Dear @KanwarOsama.Zulfiqar,

That sounds correct. Now compute the inverse of this 6x6 submatrix to find the rigid-body mass matrix. What do you find?

Note that you seem to be using a quite coarse precision for linearization. We generally recommend outputting a much finer precision when linearizing an OpenFAST model, such as OutFmt = “ES17.9E2”. Without that, numerical round-off may impact the accuracy of the matrix inverse calculation, and thus impact the accuracy of the mass matrix.

Best regards

Hi,
Thanks for your time again. I do see that there are differences in the inverse matrix for the coarse and fine settings. I will post both of them

Inverse matrix for coarse setting

Inverse matrix for finer setting

Dear @KanwarOsama.Zulfiqar,

Both of these matrices look a bit off, e.g., because i would expect the (1,1), (2,2), and (3,3) elements to be identical and equal to the RNA mass, which is 350,000 kg for the NREL 5-MW baseline wind turbine. I’m not fully sure what you have done wrong (without reviewing all of your files in detail), but please find a similar discussion the following forum topic: Rotor and Nacelle Mass moment of Inertia Tensors.

Best regards,

Dear @Jason.Jonkman ,
Thank you for guiding me to that specific post. Now, i have been able to get the mass very close to the actual mass of RNA in M(1,1), M(2,2) and M(3,3) which i will share below. I would also like to share the changes i made. i tried different things but my mass matrix remained the same as I shared above. But then i tried to change the parameters mentioned below:

I changed the Tower Base Height very close the actual height (87.5999) but doesnt work, openfast records an error. But when changed to a height of (87.58), i get the following matrix from the .lin file

.lin matrix

The inverse of the above matrix provides the following matrix:

I think this looks more closer to your description as well. Does it feel reasonable now? Thank you for your help again..

Br,
Kanwar

Dear @KanwarOsama.Zulfiqar,

Indeed, your results are now aligned with my expectation.

Best regards,

1 Like