Hello,

I am currently working on a thesis’ project which includes the computation of campbell diagram, mode shapes and modal dampings of the blades of a 5MW NREL reference wind turbine. I would like to do so using the full model of the machine on OpenFAST.

I have already managed to compute the power curve and the Cp-TSR curves of the rotor but I don’t know how to compute the natural frequencies, mode shapes and modal dampings at different wind speeds. Can you please show me how to do it if it’s possible?

Moreover, I would also like to know if there is the possibility in OpenFAST to perform fatigue analysis and extract the DEL loads.

Thank you so much,

Best regards,

Matteo

Dear Matteo,

Yes, both Campbell diagram (natural frequencies and dampings of the various mode shapes as a function of rotor speed or wind speed) and DELs (damage-equivalent fatigue loads) can be computed by OpenFAST. And both topics have been discussed many times on this forum.

There is general guidance for generating a Campbell diagram and visualizing the mode shapes here: github.com/OpenFAST/matlab-toolbox.

Calculating fatigue loads typically involves running a series of time-domain OpenFAST simulations for the whole turbine system across a range of turbulent operational conditions (perhaps also including start-up/shut-down, parked/idling, and fault conditions). These time-series are post-processed to find the DELs–either short term (per simulation) or lifetime (summed/weighted over the probability distribution), e.g. using MLife: nrel.gov/wind/nwtc/mlife.html.

Best regards,

Dear Jason,

Thank you so much, it seems to work fine with my turbine model.

However, the campbell analysis only shows the first 2 modes for blade and tower.

Is it possible to include higher modes and blade torsional modes for flutter predictions?

Best,

Matteo

Dear Matteo,

The ElastoDyn module of OpenFAST is limited to the first two bending modes in the tower and first two flapwise and first edgewise bending modes in the blades. To consider higher blade-bending modes, as well as other modes like blade torsion, you’ll have to model the blades in BeamDyn instead of ElastoDyn.

Please note, however, that we are currently tracking down a bug associated with BeamDyn linearization–see: github.com/OpenFAST/openfast/issues/823.

Best regards,

Dear Jason,

Thank you so much, I will keep updated on this bug.

I will soon try to implement the fatigue analysis and let you know if everything goes smoothly.

Best,

Matteo

Dear Jason,

I forgot to add another question regarding the computation of modal damping.

Is it possible to compute them in idling condition as a function of the nacelle yaw and rotor azimuth?

Thanks in advance,

Matteo

Dear Matteo,

Yes, the linearization functionality of OpenFAST can be used to compute the full-system modal damping for the idling condition for different nacelle-yaw and azimuth angles.

Best regards,

Dear Jason,

Thanks, is there any implemented procedure such as the one for the campbell diagram?

Best,

Matteo

Dear Matteo,

No, NREL has not provided scripts for modal analysis for the idling condition at different nacelle-yaw and azimuth angles, but you could develop such scripts yourself using the scripts for generating a Campbell diagram that NREL has provided as a starting point.

Best regards,

Dear Jason,

Thank you very much. I will try to implement it starting from Campbell routines.

I was trying to compute the Campbell using BeamDyn (knowing that the result wouldn’t be accurate at the moment) but some errors occur.

Is it enough to change the CompElast flag to “2”?

Best,

Matteo

Dear Matteo.

Changing CompElast from 1 to 2 will switch from modeling the blades in ElastoDyn to BeamDyn. Of course, you’ll also have to set up the BeamDyn model (the BeamDyn primary and blade input files).

What errors are you getting?

Best regards,

Dear Jason,

I have already set up the BeamDyn primary and blade input files and they seem to be linked properly.

However, as I run the simulation, the following error appears and I don’t know what could be the cause.

Best,

Matteo

Dear Matteo,

Are you simply using the BeamDyn input files provided for the NREL 5-MW baseline turbine? My guess is you’ll need to drop the glue code time step (DT) to run the model with BeamDyn enabled. In the OpenFAST v3.0 r-test, the NREL 5-MW baseline turbine model with ElastoDyn (5MW_Land_DLL_WTurb.fst) uses DT = 0.00625 s, but the equivalent model with BeamDyn (5MW_Land_BD_DLL_WTurb.fst) uses DT = 0.0015 s.

Best regards,

Dear Jason,

Thanks for the advice, now it works!

What I am wondering now is how to recognise modes from the Campbell csv file that I get for each operating point (see attached).

The implemented routines recognize the first 2 modes for flap and lag and generate a figure directly.

However, I would like to recognize higher modes and extract the numerical values (even of the first 2) in order to plot them as I like.

From the csv file, I see that each mode has its magnitude and phase related to translations and rotation that I cannot figure out how to connect to the different mode shapes. Can you please give me an hint on how to associate each mode (1,2,3…) to its physical meaning?

Best,

Matteo

Campbell_Point01.csv (755 KB)

Dear Matteo,

The process of identifying the full-system modes from the eigensolution is not straightforward, but has been discussed many times on this forum. I suggest searching and reviewing the various topics where it has been discussed. Proper identification becomes more difficult for the higher modes. The mode shape visualization capability can be used to aid in the process.

Best regards,

Dear Jason,

Thank you so much for all the information.

I will try to implement all the advices you give me and let you know.

Best,

Matteo

Dear Jason,

A I am still working on the computation of the modal damping both in power production and idling.

In power production regime everything goes smoothly after the adaptation of the Campbell tool you provided me.

Regarding the idling condition however, I am experiencing problems in the linearization process.

I have imposed a 90° pitch for the blade and an extreme wind (coherent with the EWM) and run the simulation for different values of the yaw angle.

The problem is that a steady solution cannot be found (even if I use very long simulation times) even if the rotor is actually spinning very slowly with an approximately constant speed. In some other cases instead, the azimuth position oscillates around a mean position.

Hence in both case a steady state solution should be found, correct?

Do you have any guess of what is going on?

What I am currently trying to obtain is something very similar to what you have done in your paper (“Aeroelastic Instabilities of Large Offshore and Onshore Wind Turbines”) in Section 5.3 using iced blades.

Maybe you have some suggestion on how to approach the problem.

Best regards,

Matteo

Dear Matteo,

Have you plotted the time series of various displacements (blade deflection, tower deflection, etc.); are the results converging such that a steady-state condition is clear?

Best regards,

Dear Jason,

I have plotted some interesting quantities and the results are shown below. Everything seems to reach a steady state condition.

I am trying the linearize using CalcSteady=true and TrimCase=2 (as shown in the picture below). In this way, once the rotational speed reaches a constant value, the torque should be constant too and a steady solution should be found.

Regards,

Matteo

Dear Matteo,

Are you forcing a slow roll through a small amount of generator torque? For an idling condition, normally I’d expect the generator torque to be zero; a slow roll can be forced be reducing the blade pitch a bit lower than 90 degrees.

Otherwise, it looks like the solution is not diverging, but is taking a very long time to converge (especially blade flapwise deflection). You could find the mean value of the responses you are seeing and set those as initial conditions in the simulations. You could also try increasing TMax to see if a solution can eventually be found.

Best regards,