Campbell Diagram & MBC3 output relation

Dear Jason,

Yes, the rotor speed can influence the natural frequencies of a wind turbine. The rotor speed likely has a strong influence on the blade natural frequences (flap and edge bending) and less influence on the support structure frequencies.

The process for calculating natural frequencies at different rotor speeds using FAST/MBC3 and plotting the Campbell diagram is discussed in the posts of this forum topic above.

Best regards,

Dear Jason,

I am trying to get the natural frequencies of the tower and blade. So I started with linearization analysis with FAST V7 and post process the results with MBC & CampbellDiagram.xls. I linearized FAST at different rotor speed (0 -10 RPM), analyze them and got the Campbell Diagram. I found something strange at RPM=4 for my model: second Tower FA natural frequency dropped down dramatically at 4 RPM. I checked the inputs for CampbellDiagram at 4 RPM and found the following:

At 4 RPM, the order of the index number for MBC_ModeShapeMagnitude changed. For other rotor speeds, the order is 48 47 46 45 … 38 37 36 35 (14 DOFs), but for 4 RPM, the order is 48 47 46 45 … 38 36 35 37. Does this order affect the result?

Just to confirm my understanding of the CampbellDiagram.xls. Here is how I find the natural frequency for each DOF: Find the cell with green background for each DOF (each row) .Then go up to find the natural frequency corresponding to the cell with green background in the same column, which is the natural frequency I used in my plot. e.g. at 4 RPM sheet in my attached excel file, the natural frequency for 2nd DOF ( Tower 1st SS) is 0.17667 Hz. Am I doing this in the right way?

Thanks very much!

Regards,
jinsong

Dear Jinsong,

I tried to download the attachment from your post, but the download is blank; I don’t believe the file has been uploaded correctly. Can you reattach it? (I’m afraid I can’t answer your question without viewing the file.)

Best regards,

Dear Jason,

Thanks for your help!
I reattached the file in this post. Please try to download again to see if it works.

Regards,
jinsong
CampbellDiagram.xls (1.26 MB)

Dear Jinsong,

The green background and red bold font in the worksheets are simply aids to help you interpret the results. Because a cell is highlighted green doesn’t guarantee that the corresponding column is the natural frequency for the given row. I see in your results at 4rpm that you’ve actually identified 0.18492 Hz as the natural frequency of both the 1st and 2nd tower fore-aft bending modes. However, this is not possible – both modes can’t have the same frequency. I would call the 0.18492-Hz mode at 4rpm the 1st tower fore-aft bending mode. I would call the 2.0851-Hz mode at 4rpm the 2nd tower fore-aft bending mode.

Please note that I see you’ve used the same frequency for multiple modes in other places in the spreadsheet. For example, at 0rpm, I see you’ve identified the 0.27128-Hz mode both as the drivetrain torsion and 1st blade edgewise bending mode, but I would call the 0.27128-Hz mode the drivetrain torsion mode and the 1st blade edgewise bending mode is at 0.63-0.64 Hz.

Best regards,

Dear Jason,

Thanks very much for your help with the Campbell Diagram. I think I got the idea how the excel works now. Really appreciate your help!

Regards,
Jinsong

Dear Jason,

I am trying to plot the Campbell Diagram for the 15 MW IEA Semisubmersible test case using the CampbellDiagram excel workbook available within this forum. The MBC3 output data based on the linearization results (Please see attached linearization output file) were obtained using OpenFAST (v2.4.0) for 0-14 rpm following the same procedure described in “FAST modularization framework for wind turbine simulation: full-system linearization”, Torque 2016 paper. I have enabled all except the Teeter, DrTrain, and Generator DOFs. I can see that the natural frequencies for the platform DOFs are being nicely picked while the tower and blade DOFs are not rightly picked. I see the same columns (e.g.: K7 and M7 for 0 rpm ) are being picked for the tower and blade DOFS. Please see attached the CampbellDiagram excel workbook. Based on my understanding gained from the forum, I see the maximum values of the mode shape for both the rows and columns are useful in identifying the full system natural frequencies. But it is not very clear to me how to pick the natural frequencies as the maximum values of the mode shape for most of the rows (DOFs) pick the same column. I would like to know if there is anything wrong with the linearization results from OpenFAST or is it a postprocessing issue. Just for the information, I had no problem following this procedure in generating the Campbell Diagram for the 5MW Land-based and OC4 Semisubermisble cases.

Your help is highly appreciated.
CampbellDiagram.xlsm (550 KB)
15MW_Semi-0.1.lin.txt (109 KB)

Dear Srinivasa,

Well, I don’t have the time to process this spreadsheet for you. It certainly takes time and expertise to interpret the Eigenanalysis results, especially for coupled floating wind turbine models. If the full system is too difficult to interpret, I would suggest working up the complexity in steps, e.g., start with fewer DOFs enabled. Can you properly identify all modes with a fixed base? For the floating system, it may help to start with a rigid RNA (no yaw, drivetrain, or blade DOFs enabled) before enabling these flexibilities later. And ensure that your results at 0 rpm and no aerodynamics make sense before moving on to cases with rotor rotation and aerodynamics enabled.

Best regards,

Dear Jason,

Thanks for your reply. I provided the spreadsheet for the sake of supporting my query related to picking the full system frequencies when the maximum values of the modes shapes highlighted with green backgrounds refer to the same column (natural frequency). A similar question was asked in this forum (Eigenanalysis FAST) in the past. Although I do agree with your reply to this question, I do not understand how the phase values are being used in the spreadsheet to pick the right modes in case of a DOF belonging to a certain natural frequency when there are many mode shape magnitudes with green background. I thought the right mode for a DOF (say tower) is first picked by finding out the maximum value (green cell) along its row and then the value in the corresponding column gives the natural frequency. In case, if the several modes contain green cells pointing to the same column then I should look for the column with the maximum value (red cell) in the same row as the DOF. But this seems not always true. Please let me know if this is true.

I do agree it certainly takes time and expertise to interpret the Eigenanalysis results and as a non-expert, I am trying to learn the techniques followed in this community from the discussions here in the forum. I understand how linearization and MBC transformation are used to compute the full-system natural frequencies, mode shape vectors, and damping ratios for offshore wind turbines as nicely described here (FAST Modularization Framework for Wind Turbine Simulation: Full-System Linearization and User’s Guide to MBC3) but nowhere I found information on the procedure used in the spreadsheet. It would be really helpful if you can refer to any report/article where I can find technical information related to this procedure.

In fact, I have already tried linearization i) for the tower only DOFs with all other DOFs disabled, ii) for the tower, blades only DOFs enabled without any aerodynamics and rotor rotation. In the first case, I can see the spreadsheet is able to pick the right modes as there are only 4 dofs. However, for the second case, I see the spreadsheet is not picking up the right modes. Moreover, I cannot rely on the first case results to identify the modes for the second case as the mode magnitudes for the tower changes. I do have some idea about the values of the natural frequencies for the 1st tower modes and platform DOFs based on my simulations run using BModes and white-noise excitation PSDs. The problem is in picking the modes for the blades as their natural frequencies are closely spaced.

Best regards,

Dear Srinivasa,

We did not publish a report on how to use the CampbellDiagram spreadsheet. The green highlighting and red bold font are not guaranteed to pinpoint the correct mode, but they are there just to help focus your eyes on terms that are likely important for proper interpretation. For example, a tower fore-aft bending mode likely has a lot of blade-flapwise deflection, so, the red bold element need not be the tower mode. The simpler models are easier to interpret, and once you have a rough idea of the natural frequencies of key modes, the more sophisticated models are easier to interpret because some modes can be identified quickly.

The MBC scripts have recently been updated (available in the MATLAB toolbox: github.com/OpenFAST/matlab-toolbox) and the Excel spreadsheet is now automatically generated from MATLAB, eliminating the need for the old CampbellDiagram.xls spreadsheet, which required manual copying/pasting from MATLAB. In the new auto-generated spreadsheet, each eigenvector is normalized so that the maximum element is unity and with the DOF contributions to each mode sorted from largest to smallest (rather than green and red highlighting). This further helps with interpretation, but still requires skill and effort. OpenFAST v2.4 also now supports mode shape visualization (through the generation of VTK files), which also helps a lot with interpretation. Some documentation of this functionality is also available in the ReadMe file of the MATLAB Toolbox.

Best regards,

Dear Jason,

Thanks for the reply. If I understood you correctly the green/red bold fonts pinpoint pairs of tightly coupled DOFs. For example, if I know the 1st tower FA mode frequency apriori then I can use the green/red bold fonts to identify the 1st blade flapwise mode. Am I right?

I did use these MATLAB scripts for 5MW and 15MW semisubmersible cases but the interpretation of the modes still requires visual inspection as you pointed out. In fact, I posted a query (in June 2020) related to the mode identification using the MATLAB scripts (Question #1 for turbulence fields (points outside of field)) for the 5MW case, then you replied that manual interpretation is still needed.

To my knowledge, the features related to the automatic generation of excel spreadsheet and mode identification were previously available but not fully functional (at least in my case when I tried using them on Mac). I think the creation of Campbell_Summary file with information related to the coupled DOFs is a more recent update. However, it is confusing to use this information for mode picking. For example (see attached a screenshot of my Campbell_Summary file for the 15MW case), for 0 rpm the 8th DOF (with frequency=0.428Hz has last column " ED 1st FLAP cos - " while 1 rpm (frequency=0.428Hz) has the last column “ED 1st EDGE coll. - ED 2nd FLAP cos - ED 1st tower FA - ED 1st FLAP sin - ED Platform horizontal sway translation DOF - ED 1st FLAP coll.” It is not very clear to me how a mode with 0.428Hz shows different coupled DOFs contributions. This information for the same DOF is not consistent for higher rpm as well. Can you please explain how this can be possible?


Regards

Dear Srinivasa,

The green and red highlighting are just guides, but because a cell is highlighted doesn’t guarantee a specific mode.

I’m not familiar with a “Campbell_Summary” file, but this appears to be the operating point (OP) rather than the mode shapes. Instead, I would expect the auto-generated Excel spreadsheet to look something like the following:


Best regards,

Dear Jason,

Yes, I do have the Excel spreadsheet automatically generated using the MATLAB scripts. This file is not different from the manually generated except that it is now automated. I am trying to understand the algorithm behind mode identification. I can see that the mode identification algorithm used in the MATLAB toolbox code is not 100% foolproof which makes it sometimes pick the wrong modes.

Best Regards,

Dear @Jason.Jonkman @Jinsong.Liu @Jason.Lai
Right now I am trying to calculate for the natural frequencies of NREL 5MW wind turbine. However, several problems occurred. Could you please help me to figure these out?

First, about setting the initial parameters when linearizing for natural frequencies. As shown in the following figure, when doing the linearization, we should disable the InflowWind and AeroDyn modules and first set the rotor speed to be zero.

In my comprehension, disabling the InflowWind and AeroDyn modules means to put ‘unused’ before corresponding files in .fst, as shown in the following figure. Is that right?

My DOF is set as follows.

When set the rotor speed to be zero, can I just simply modify the RotSpeed in ElastoDyn.dat to be 0, which is shown below.

After doing those settings, my linearization failed, and the notice shows like this:

I guess the problem is due to the parameter setting. Could you please help me to figure these out?

Second, about the CampbellDiagram for NREL 5MW wind turbine.
For the natural frequency of 1st drivetrain torsion, the data differs. As shown in the Definition of a 5-MW Reference Wind Turbine for Offshore System Development, the natural frequency of drivetrain is 0.6205Hz.

Nevertheless, from FAST modularization framework for wind turbine simulation: full-system linearization, we know that the natural frequency for drivetrain is about 1.6Hz when rotor speed= 0 rpm(stationary condition), which is different from 0.62Hz shown in the Definition document. Could you help me explain why these happen? And which data should we rely on?

Thank you sooooo much!!! Looking forward to your early reply!!!

Dear @Yinghan.Liu,

You should disable InflowWind and AeroDyn if you want to linearize in the absence of aerodynamic loads. To do this it is not necessary to set InflowFile = AeroFile = “unused” (though you certainly can do so), but you should set CompInflow = CompAero = 0.

You can certainly set RotSpeed = 0, but because the aerodynamic torque will be zero when AeroDyn is disabled, you should ensure that the generator torque in ServoDyn is also zero (or you should disable ServoDyn as well, and if you disable ServoDyn, I would disable the nacelle-yaw DOF in ElastoDyn as well, YawDOF = FALSE).

The drivetrain torsion mode of the NREL 5-MW baseline wind turbine is around 0.6 Hz when the generator is locked (GenDOF = FALSE, corresponding to a fixed-free condition) and around 1.6 Hz when the generate is free to rotate (GenDOF = TRUE, corresponding to a free-free condition). In most conditions, I would expect GenDOF = TRUE, as it is quite rare to park a large rotor with mechanical brake.

Best regards,

Dear @Jason.Jonkman
I am truly grateful for your help! You are so patient and kind!!

For the first problem, I verify my parameters setting in OpenFAST under your guidance, but the linearization still aborted. Could you help me figure out why this happens?
To be more specific, I have already set CompInflow = CompAero = 0 in .fst..


What is more, after setting the RotSpeed = 0, I also make some changes in ServoDyn in order to ensure that the aerodynamic torque is zero.

However, the linearization still cannot work, and it gives such hint. Could you plz help me find where the problem locates?

I also tried another method to make sure the aerodynamic torque is zero, as disabling ServoDyn. However, the linearization also goes wrong. It only produces one linearization file, but I set the linearization times to be 36.

For the second problem, I am trying my best to understand your detailed answer. Can I understand like this? The fixed-free condition (GenDOF = FALSE) means the generator can only rotate at a constant speed without the ability to make small changes? The free-free condition (GenDOF = TRUE) means the generator can rotate freely?

Thank you soooo much!!!

Dear @Jason.Jonkman
Sorry for interrupting you again!
I have another two questions to ask:

First. Under your guidance, I also try to calculate for the natural frequency when RotSpeed=2 rpm. In my comprehension, the only difference of parameter setting between 0rpm and 2rpm is the initial rotor speed RotSpeed we set in ElastoDyn.dat.
Here I still disable CompServo, since I think when we diable AeroDyn and InflowWind, both the aerodynamic torque and the generator torque are zero. But how does the rotor and generator rotate when the torque is zero? This is a question I am confused about.
The error hint is shown as following.

Second. When I analyze the linearization results, I find that the number of mode is always less than the number of states, when states is 15, the modes is only 14.

The following figure shows that, after doing MBC, the number of states is only 15.

However, the number of modes is only 14, which is equal to the number of eigenvalues, dampratios, dampedfrequencies, nuturalfrequencies, etc.

It shows that there is a rigid body mode. Is that the reason why the modes shown in the mbc_data.eigSol is one less than the states? Furthermore, after disabling the GenDOF, the number of states become equal to the number of modes, which is 14.

Could you help me explain why this happens?

Thanks for your time and patience!

Dear @Jason.Jonkman
After a heat discussion with my friend, we are still confused about the condition to calculate for natural frequency: in the absence of aerodynamic loading. However, how can the rotor rotate if we don’t give it a aerodynamic torque, which is resulted from the inflow wind?

We are looking forward to your reply! Thank you sooooooo much!

Dear @Yinghan.Liu,

When the rotor is not spinning (RotSpeed = 0), OpenFAST will only linearize once after finding the steady-state solution (because other azimuth angles are never reached), effectively overwriting the value of NLinTimes to 1.

When RotSpeed = 2 rpm, OpenFAST will linearize NLinTimes around the 360-degree azimuth rotation of the rotor once a steady-state solution has been found. But in your case, it looks like a steady-state solution cannot be found; in this case, OpenFAST will just linearize once at the end for reference purposes. Without knowledge of your input file settings, I’m not sure why a steady-state solution is not being found. But I would suggest plotting the time series to see if the solution is approaching a steady state such that increasing TMax will result in convergence, or not. Or perhaps the TrimTol needs to be changed to ensure that a steady-state solution is found.

When GenDOF = FALSE, the generator is no longer a degree of freedom that reacts to applied moments. As with any DOF in ElastoDyn, a disabled DOF means that the acceleration is zero and the speed is constant and equal to the initial speed, regardless of loads applied. If the initial rotor speed (RotSpeed) is zero, then the generator will not rotate at all. Whether spinning at a constant speed or nonrotating when GenDOF = FALSE, the generator-side of the shaft acts as a cantilevered boundary condition, resulting in a fixed-free condition of the torsion mode of the shaft.

Without any aerodynamic or generator torque, I would expect expect there to be negligible damping of the generator DOF, which is a rigid-body mode, and so, if you set a nonzero initial RotSpeed, this speed should be maintained without applying external torques.

The eigensolution computed by the MBC3 post-processor drops rigid-body modes that don’t have a natural frequency, which is why MBC3 calculates one less mode than the number of DOFs enabled when GenDOF = TRUE.

Best regards,

Dear Jason,

I really appreciate your help! Now the problem is solved after adjusting the tolerance TrimTol.

Thanks again!

1 Like