Processing linearization output to obtain PID controller coefficients

Dear Dezheng.Zhu,

Can you clarify what DOFs you have enabled in your model and in which matrix elements you are seeing the spike in?

Best regards,

Dear Jonkman,
I am really sorry to miss your reply until today. I checked the settings, and I switched on the DOF : FlapDOF1、DrTrDOF、GenDOF and TwFADOF1. I see the spike in the matrix element A(7:12, 1:6).
Best regards!

Dear Jonkman,
I used to omit the spike and delete the corresponding linearization file. But I find the Matrix A is different from that I obtained from FASTV7. They are 5MW Land Wind Turbine. I switched on switched on the DOF : FlapDOF1、DrTrDOF、GenDOF and TwFADOF1. And the wind speed is 18mps.

OpenFAST3.0

FASTV7

They are really different! Could you please help me?

Best regards!

Dear @Dezheng.Zhu,

It is hard to compare these results when they are uploaded as images. Can you share the actual matrix data? Are you sharing the state matrix A at one azimuth angle (if so, which one) or is this the azimuth-averaged result? Has MBC3 been applied to convert the blade states from the rotating to fixed frame of reference?

The submatrix, A(7:12,1:6) represents the matrix -M^-1*K. Do you see spikes in all elements of this 6x6 matrix, or just some? Can you share plots of the diagonal elements from this matrix as a function of azimuth angle, i.e, plot A(7,1) for all azimuths between 0 and 360, A(8,2) for all azimuth angles, etc.?

Best regards,

Dear Jonkman,
Thank you for your reminding. I sort out the results as follows
First, let me explain my process. In fastv7, when you use GetMats.m and type the name of the FAST output file, you will get the azimuth-averaged A Matrix. Then you can use mbc3.m to get MBC azimuth-averaged A Matrix. But in openfast, the azimuth-averaged A Matrix is from fx_getMats.m and the MBC azimuth-averaged A Matrix is from fx_mbc3.m. Is that right?

The openfast3.0 result: MBC azimuth-averaged A Matrix is:

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000
-4.4399 0.0009 -15.6614 0.3462 0.1101 -0.0094 -0.0680 -0.0711 -0.1833 0.0187 0.0048 -0.0007
0.0000 0.0000 172.6470 0.0000 0.0000 0.0000 0.0000 0.0000 1.2367 0.0000 0.0000 0.0000
-0.0391 -0.0100 -198.4052 0.0730 0.0013 0.0002 -0.0031 -0.0035 -1.4247 0.0061 0.0001 0.0004
13.5543 23.3855 1128.4132 -24.3600 -0.7628 -0.0553 -9.5805 -88.3915 -80.4761 -5.5803 -0.0153 -0.1180
3.5936 -39.4072 -12.0217 -1.7937 -18.5938 -6.7508 -8.4832 -0.8249 -0.6286 -0.0358 -5.2901 -2.5448
-1.3678 3.2745 -0.3843 -0.0661 6.6542 -19.5159 4.5808 -8.9037 -8.9299 -0.2012 2.5482 -5.2917

The FASTV7 reulst: MBC azimuth-averaged A matrix

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000
-4.4236 -0.0297 -15.7805 0.3465 0.1078 -0.0092 -0.0568 -0.0524 -0.1652 0.0205 0.0053 -0.0008
0.0000 0.0000 172.8289 0.0000 0.0000 0.0000 0.0000 -2.7057 1.2384 0.0000 0.0000 0.0000
-0.0350 -0.0001 -198.5793 0.0740 0.0003 0.0001 -0.0013 2.6991 -1.4295 0.0066 0.0002 0.0004
11.1819 0.0437 1111.2052 -24.1975 -0.1545 0.0073 -9.6796 -88.1677 -80.2060 -5.7189 -0.0258 -0.1297
7.5477 6.4647 33.9133 -0.6997 -18.9350 -6.8246 -8.6005 -1.2635 -1.0668 -0.0498 -5.4039 -2.5276
-1.5840 0.7705 -2.9679 0.0767 6.8577 -18.7353 4.4532 -8.8307 -8.8574 -0.2223 2.5402 -5.3990

The openfast3.0 result: azimuth-averaged A Matrix without MBC is:

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000
-4.4399 0.0009 -15.6614 0.1141 0.1161 0.1161 -0.0680 -0.0711 -0.1833 0.0062 0.0062 0.0062
0.0000 0.0000 172.6470 0.0000 0.0000 0.0000 0.0000 0.0000 1.2367 0.0000 0.0000 0.0000
-0.0391 -0.0100 -198.4052 0.0237 0.0247 0.0247 -0.0031 -0.0035 -1.4247 0.0020 0.0020 0.0020
17.6052 25.6039 1130.6319 -20.7460 -1.2432 -1.2456 -9.5806 -88.3923 -80.4768 -5.3874 -0.1035 -0.0894
11.5306 30.5759 1135.6035 -1.1958 -22.4830 -1.2432 -9.5804 -88.3910 -80.4755 -0.0894 -5.3874 -0.1036
11.5272 13.9767 1119.0040 -1.1947 -1.2456 -22.4829 -9.5803 -88.3914 -80.4759 -0.1036 -0.0894 -5.3874

The fastV7 result: azimuth-averaged A Martrix without MBC is:

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000
-4.4236 -0.0297 -15.7805 0.1155 0.1155 0.1155 -0.0568 -0.0524 -0.1652 0.0068 0.0068 0.0068
0.0000 0.0000 172.8289 0.0000 0.0000 0.0000 0.0000 -2.7057 1.2384 0.0000 0.0000 0.0000
-0.0350 -0.0001 -198.5793 0.0247 0.0247 0.0247 -0.0013 2.6991 -1.4295 0.0022 0.0022 0.0022
11.1818 0.0437 1111.2053 -21.6928 -1.2510 -1.2538 -9.6796 -88.1676 -80.2059 -5.5072 -0.1057 -0.1059
11.1818 0.0437 1111.2053 -1.2539 -21.6927 -1.2510 -9.6796 -88.1678 -80.2061 -0.1059 -5.5073 -0.1057
11.1819 0.0436 1111.2051 -1.2510 -1.2538 -21.6926 -9.6796 -88.1677 -80.2061 -0.1057 -0.1059 -5.5073
The MBC azimuth-averaged A matrix are different in A(10:12,1:3). And the azimuth-averaged A Matrix are different in A(10:12,2).

I see spikes in all elements of this 6*6 Matrix. Next is openfast MBC A Matrix diagonal element plots for every azimuth.
A(7,1)

A(8,2)

A(9,3)

A(10,4)

A(11,5)

A(12,6)

Also, I see spikes in azimuth-averaged matrix with on MBC in AvgA(7:12,1:4).
Best regards!

Dear @Dezheng.Zhu,

Regarding the spikes, I’m curious if the following pull request solves the issue you are seeing: https://github.com/OpenFAST/openfast/pull/1050. These changes were targeted at eliminating spikes that we were seeing in linearizations with BeamDyn, but the changes also effect other modules like AeroDyn and ElastoDyn. Can you recompile OpenFAST with these changes and see if it eliminates the spikes?

The spikes are likely throwing off the azimuth averaged results. If the spikes are removed (either by avoiding the azimuth angles that have the spike or by applying the changes from the above-referenced PR), do the azimuth averaged matrices match better?

Regardless, there certainly are differences in how OpenFAST and FAST v7 perform linearizations (and I would expect the OpenFAST approach to be more robust). Rather than directly comparing the state matrices themselves, it may be more useful to compare the resulting eigensolution in terms of, e.g., the natural frequencies and damping ratios of the various modes. How do these compare between OpenFAST and FAST v7?

Best regards,

Dear Jonkman,
I download the openfast-dev and recompile it. The spikes reduce and only happen in A(7:12,2:3).

Yes, avoiding the azimuth angles that have the spike makes the azimuth-averaged matrices match better. The results about openfast and fastv7 are close.

Best regards!

Dear @Dezheng.Zhu,

I’m glad eliminating the spikes results in closer results between OpenFAST and FAST v7.

To reduce the spikes, did you compile the dev branch of OpenFAST, or did you compile the changes from PR #1050? PR #1050 has not yet been merged into the dev branch of OpenFAST. I’m hoping the use of PR #1050 eliminates spikes altogether; is that the case?

Best regards,

Dear Jonkman,
I complied the dev branch of OpenFAST. Sorry, I am not familiar with github. In the issue, I cannot find the code changed and don’t know how the code changed. Do I need to change the code by myself or where can I find the code?Thank you!
Best regards!

Dear @Dezheng.Zhu,

The code changes are found in the PR: Fix aeroelastic stability analysis with BeamDyn by ptrbortolotti · Pull Request #1050 · OpenFAST/openfast · GitHub. You’d have to merge these code changes into your branch of OpenFAST and recompile.

Best regards,

Dear Jason,


I opened up 14 degrees of freedom and got x_op results are as shown in the above figure. It seems to be a numerical value of 14 degrees of freedom and their derivatives. (1) I want to know how to set values that can only obtain these 14 degrees of freedom? Without their derivatives appearing.

To be precise, I want this matrix A corresponding to these 14 degrees of freedom, but now this matrix is 28 * 28, as shown in the figure above. (2) Can you tell me how this matrix is composed of these 14 degrees of freedom? In this way, I can separate what I want, which is the matrix A (14 * 14) corresponding to these 14 degrees of freedom.
Thank you in advance!

Dear @Liye.Zhao,

I’m not sure I understand what you want. The A matrix is written in first-order form in terms of the first order states of the equations of motion. The states include both displacements and velocities (the first time derivatives of the displacements). The A matrix typically has the following form in relation to the second-order form involving mass (M), stiffness (K), and damping (C):

A = [ 0, I; -M^-1 * K, -M^-1 * C ]

where I is the identity matrix.

Best regards,