Eigenanalysis of a Two-Bladed Turbine with FAST


for my Masters Thesis I am analyzing the rotor natural frequencies of a 3-bladed turbine and a 2-bladed turbine.
For the 3-bladed turbine, I was using FAST along with BModes and MBC3. With BModes I calculated the Blade Mode Shapes coefficients, which I put into the blade input file of FAST (.dat) and then started a linearization (only with rotor DOFs on). With the aid of MBC3 and the Campbell diagram provided in this forum I determined the Eigenfrequencies of the 3-bladed rotor at different speeds.

So far so good, but now I want to repeat the process for a 2-bladed turbine. Since MBC3 is only applicable for 3-bladed rotors, how is the correct approach to calculate the natural frequency of a 2-bladed turbine with FAST? Is there perhaps a similar transformation script (like MBC3)? I’ve read in another post that you need to apply the “Floquet theory”, but unfortunately I’m not familiar with this method.
I would be very grateful for any help and explanations! Thank you in advance!


Dear Randi,

Yes, the eigensolution within MBC3 is only applicable to time-invariant linear state matrices. However, there is no way to filter the periodicity in a 2-bladed turbine, like there is for 3-bladed rotors using MBC and azimuth averaging. Floquet theory is an approach to directly analyze periodic systems. While I’m not expert on Floquet theory myself, you can search NREL’s publication database for papers describing how Floquet theory has been applied to analyze 2-bladed rotors: nrel.gov/research/publications.html.

Best regards,

Dear Jason,

Thank you for your answer and the URL.
I found the report “Floquet Modal Analysis of a Teetered-Rotor Wind Turbine” and I’m trying to understand the method. I linearized the turbine model with FAST and used the state matrices A from the .lin-output to recreate the Floquet approach with Matlab, i.e. computing the transition matrix Φ after one period. But unfortunately the results weren’t correct yet, so now I’m trying to understand the linearization process of FAST first, to get the correct A matrices.

I linearized a 3-blade rotor without control and wind disturbance inputs, so the state space model should be: x’ =A(t) * x, where x= [Δq, Δq’] and x’ = [Δq’, Δq’’].
The model has 9 DOFs, which are the 1st & 2nd flapwise and 1st edgewise bending modes of each of the 3 blades.

The states are:

Row/column 1 = 1st flapwise bending-mode DOF of blade 1 (internal DOF index = DOF_BF(1,1)) Row/column 2 = 1st flapwise bending-mode DOF of blade 2 (internal DOF index = DOF_BF(2,1)) Row/column 3 = 1st flapwise bending-mode DOF of blade 3 (internal DOF index = DOF_BF(3,1)) Row/column 4 = 1st edgewise bending-mode DOF of blade 1 (internal DOF index = DOF_BE(1,1)) Row/column 5 = 1st edgewise bending-mode DOF of blade 2 (internal DOF index = DOF_BE(2,1)) Row/column 6 = 1st edgewise bending-mode DOF of blade 3 (internal DOF index = DOF_BE(3,1)) Row/column 7 = 2nd flapwise bending-mode DOF of blade 1 (internal DOF index = DOF_BF(1,2)) Row/column 8 = 2nd flapwise bending-mode DOF of blade 2 (internal DOF index = DOF_BF(2,2)) Row/column 9 = 2nd flapwise bending-mode DOF of blade 3 (internal DOF index = DOF_BF(3,2)) Row/column 10 to 18 = First derivatives of row/column 1 to 9.

From the.lin-file at Azimuth = 0.00°:
x’ and x have the following values:

[code]op State | op
Derivativs | States
2.547E-01 | -4.121E-04
-1.286E-01 | 1.693E-01
-1.258E-01 | -1.689E-01
-5.541E-01 | 8.301E-04
2.745E-01 | -3.749E-01
2.795E-01 | 3.741E-01
-6.048E-02 | 5.423E-05
3.007E-02 | -4.097E-02
3.041E-02 | 4.091E-02

-1.928E-03 | 2.547E-01
-2.253E-01 | -1.286E-01
2.272E-01 | -1.258E-01
-3.705E-03 | -5.541E-01
5.848E-01 | 2.745E-01
-5.811E-01 | 2.795E-01
-2.667E-04 | -6.048E-02
6.377E-02 | 3.007E-02
-6.350E-02 | 3.041E-02

But now my question is: If I am multiplying the state matrix A with the current state vector x (‘op States’) manually, I am getting different second derivatives as opposed to the ones in the x’-vector from the .lin-output (‘op State Derivatives’ from line 10/after the blank line). It seems that I misinterpreted something here. Are there perhaps conversions involved, which I missed?
I posted the A-matrix and attached the .lin, .fst and linear.dat files at the end of this post. I hope someone can explain this discrepancy, thank you in advance!

x’ = A(t) * x → manually multiplied

[code] 0.2547



Linearization.zip (465 KB)

The A-Matrix has the following form:

Removed (see .lin file)

Dear Randi,

I haven’t looked at your files, but I think you problem is that your treating “op States” as x and “op State Derivatives” as xdot. In actuality, x and xdot are perturbations about the operating point (op) i.e., x = state - op. It is true that xdot = Ax, but it is not true that opdot = Aop. See the “Linearization” chapter of the old FAST User’s Guide for more information: nwtc.nrel.gov/system/files/FAST.pdf.

Best regards,

Dear Jason,

thank you for the clarification! Indeed I confused the perturbation vector with the actual state vector. By integrating x’=A(t)*x(t) from 0 to t and comparing the result with x(t)=Φ(t)*x(0) I seem to get the correct same results.
I hope someone in the forums could help me with the following Floquet analysis, as I’m still not able to get the correct natural frequencies.

My approach is as follows:

  • I linearized my model with FAST. For test purposes I only activated 1 DOF (1st blade flap). I changed the step number to 3600 to get sufficient small timesteps.
  • With GetMats.m from the MBC3-archive I imported the [.lin] output into the Matlab workspace to get the A matrices for each timestep.
  • I wrote a Matlab-script to calculate and integrate (Runge-Kutta) Φ’(t) = A(t)*Φ(t,0) numerically to get the transition matrix Φ(T,0) for one period.
  • With the ‘eig()’ command in Matlab I found out the eigenvectors and eigenvalues of the transition matrix
  • With the eigenvalues, I calculated the damping coefficient and modal frequency, according to equations (12) and (13) of the paper “Floquet Modal Analysis of a Teetered-Rotor Wind Turbine” by K. Stol, et. al.

Could someone please verify, if my approach is correct? I’m grateful for any explanations regarding the Floquet method and how to get/extract the natural frequencies.

I’m curious if there are other methods possible with FAST to get the natural frequencies of a two-bladed turbine? Well, my tutor recommended another software for this case, but of course that means additional familiarization of the program. Thanks in advance!

Best Regards,

Dear Randi,

I’ll let someone more experienced comment on your application of Floquet theory.

Another way to identify natural frequencies of a FAST model is by computing the PSD (or FFT) of FAST time series and identifying the frequency peaks. It is best if you can excite the structure with white noise (e.g., broadband turbulence). However, it may be difficult to identify which frequencies correspond to which modes.

Best regards,