Issues related to the Blade Element Momentum (BEM) theory

Dear @Abhinay.Goga,

Presumably you are modeling the land-based NREL 5-MW baseline wind turbine; is that correct? In that case, I would say the frequencies around 0.33 Hz are the first tower fore-aft and side-side bending modes and the frequencies around 0.5-0.7 Hz are the first blade-flapwise bending modes.

I agree with your workaround in ACDC to handle conditions above the cut-out wind speed.

Regarding your specific questions:

  1. Yes, that sounds reasonable, although I don’t see (and wouldn’t expect) a large variation for small changes in rotor speed, so, picking a small rotor speed near zero sounds reasonable. If you lock the rotor with GenDOF = FALSE in ElastoDyn, this will impact some full-system modes, so, it is better to do as you have done by keeping GenDOF = TRUE with a small rotor speed.
  2. ACDC will try to match modes across different operating points, but it is always good to visualize the modes to confirm that ACDC’s interpretation is correct.
  3. For time-domain-based analysis, I think it would be easier to compute power-spectral densities (PSDs) from the time series of various deflection outputs (tower-top, blade-tip), which should allow you to spot the full-system natural frequencies (which you can match to the results from ACDC) and excitation frequencies. This will enable you to identify which full-system modes are dominating the response. I’d be afraid that “moving average amplitudes cycles” would only allow you to see the lowest-frequency mode.

Best regards,

Dear Jason and all,

Yes, I was using the land-based NREL 5-MW baseline wind turbine for the ACDC analysis. Thank you for confirming both my workaround and the idling simulation setup.

I now agree that my previous moving-average/zero-crossing approach is only estimating the dominant low-frequency response and is not really identifying the coupled structural modes. It also has several drawbacks: the averaging window introduces a delay, and the zero-crossing count can be affected when the signal oscillates asymmetrically about its mean.

Since I did not know of a suitable way to estimate frequency continuously during a time-domain simulation, I also experimented with a PSD-based estimator. Similar to the moving-average approach, it estimates the frequency content from a finite time window, so it also introduces a delay, but it additionally provides the relative spectral energy around different frequency bands.

From reading the DTU active damping report and some vibration literature, my current understanding is the following, and I would appreciate it if you could point out where my interpretation is incorrect.

For a single-degree-of-freedom spring-mass-damper system:

  1. Below the natural frequency (stiffness-dominated region): the response is primarily displacement-dominated, so using tower-top displacement for feedback seems reasonable.
  2. Near the natural frequency (resonance): the damping force is proportional to velocity, which is why nacelle fore-aft velocity is commonly used for active tower damping.
  3. Above the natural frequency (mass-dominated region): inertial effects become dominant, suggesting that acceleration (or the derivative of nacelle velocity) may become more relevant. I am less certain about this interpretation and would appreciate any comments.

Initially I used either moving-average frequency estimation or a PSD estimate to determine whether the measured response was below, near, or above the tower natural frequency, and then switched between displacement-, velocity-, or acceleration-based control accordingly.

However, from your comment, I realized that this interpretation is probably too simplistic. Even if the response is close to the tower natural frequency, the structural response is still a combination of several coupled full-system modes. In other words, being “near resonance” does not necessarily mean that only the velocity-related component is important. The measured response can still contain significant displacement- and acceleration-related contributions from other participating modes.

To investigate this further, I generated an ACDC modal library for my idling operating points and then, offline, projected measured OpenFAST outputs (tower-top FA/SS displacement and nacelle FA/SS velocity) onto the output eigenvectors from the linearized models. For each analysis window, I selected the library entry that produced the best reconstruction of the measured outputs.

This seems to produce a reasonable estimate of:

  • the closest matching operating point,
  • the dominant damped frequency,
  • the modal amplitude,
  • the modal phase,

At the moment I am trying to understand how this information should be used in a controller.

Is the correct direction to estimate the modal coordinates (or modal participation) online and base the control action on those estimated modal states, rather than trying to classify the response simply as stiffness-, resonance-, or mass-dominated?

Or am I approaching the problem from the wrong perspective altogether?

I would greatly appreciate your thoughts.

Kind regards,

Dear @Abhinay.Goga,

I agree with your summary explanation for the simple 1-DOF mass-spring-damper system.

However, I’m not sure I understand your second part about projecting OpenFAST outputs onto the output eigenvectors and the associated impact on control to comment on that.

Best regards,

Dear Jason and all,

I think I did not explain my approach clearly in my previous post. My current work is focused on your comment from July 30 regarding using PSDs together with the ACDC results.

I actually see the controller as two independent estimation problems.

1. Modal estimation (using ACDC)

I extracted the linearization matrices (A, B, C, and D), eigenvectors, and modal information from the ACDC-generated .lin files and stored the required data in a MAT file. At the start of the simulation, this modal library is loaded, and using the measured tower displacement, nacelle velocity, and rotor thrust as inputs, I estimate the corresponding modal states with a Kalman filter.

The purpose of this observer is not to determine the control magnitude. Instead, it estimates the current modal state, i.e., the modal displacement, modal velocity, and modal phase of the dominant tower mode. After smoothing over approximately one tower cycle, I use the reconstructed modal phase to determine the sign (direction) of the flywheel command.

2. Dynamic state estimation (using PSD)

During the time-domain simulation, I compute PSDs of the tower-top FA and SS displacement signals using a 100-second moving window (after the initial 100-second data collection, the PSD is updated every second). The objective here is different: I use the PSD to estimate how the vibration energy is distributed around the tower natural frequency.

My interpretation is that the PSD indicates whether the response is currently more stiffness-dominated, resonance-dominated, or mass-dominated. Based on that information, I determine the magnitude of the flywheel command. For example, the controller can place more emphasis on displacement-based control in stiffness-dominated regions, velocity-based control near resonance, and acceleration-based control in mass-dominated regions.

In other words, the two estimators have different responsibilities:

  • ACDC + Kalman observer: estimates the modal shape and phase, which determines the direction (sign) of the control action.
  • PSD: estimates the dynamic state of the tower response, which determines the magnitude and weighting of the control action.

Therefore, the PSD is not being used to identify the mode itself. Instead, it is used to characterize the current dynamic behavior of the already identified tower mode.

My questions:

  1. I wonder whether this separation of responsibilities is physically meaningful?
  2. Does it make sense to use the ACDC eigenvectors to reconstruct the modal phase while using the measured PSD to determine how much the response is stiffness-, resonance-, or mass-dominated?
  3. Or is there a more appropriate way to combine the modal information from ACDC with the measured time-domain response for active tower damping?

Any comments or suggestions would be greatly appreciated.

Kind regards,

Hi Abhinay,

Jason asked me to respond with a controls perspective.

On your first question, the split between phase and magnitude is a reasonable way to think about a feedback law, but your implementation may not keep them separate. Blending the displacement, velocity, and acceleration feedback changes the phase of the control force, in addition to its magnitude.

On the second: using the eigenvectors to map measurements into modal coordinates makes sense. I am less sure about the PSD side. The PSD windowing will be too slow to respond, and I read it as characterizing the excitation rather than a changing state of the tower. It’s also possible that controlling for the mass- or stiffness-dominated components changes the effective natural frequency of the tower.

On the third: I’d use ACDC information in the design, rather than in an online controller. You could also try a simple bandpass filter (or other frequency domain methods) before going to a Kalman filter.

These are just my two cents. The best way to answer your questions may be to test them in simulation.

Best, Dan

Dear Dan, Jason, and all,

Thank you again for the previous suggestions.

I am now testing a much simpler signal-based approach. I have tested a pure nacelle-speed-based damping approach, and it damps the tower in some regions while exciting it in others. Therefore, the issue still appears to be related to phase detection.

I use second-order band-pass filters around the tower first fore-aft frequency for the tower-top displacement (TTDspFA) and nacelle fore-aft velocity (NcIMUTVxs). I also use Fourier analysis of the tower displacement and fore-aft force (LSSGagFxa) to obtain their phase angles and calculate the instantaneous phase difference

ΔϕFx=ϕF−ϕx.

My interpretation is based on the usual single-DOF frequency-response behavior:

  • ΔϕFx≈0°: stiffness-dominated response, where force and displacement are approximately in phase.
  • ΔϕFx≈±90°: resonance region, where displacement and force are approximately in quadrature and force is approximately in phase with velocity.
  • ΔϕFx≈±180°: mass-dominated response, where force and displacement are approximately opposite in phase.

Based on this, I am currently testing the following very simple switching logic:

function [u_twr_dmp, PhaseDiff_Fx] = ...
    SpeedEstimator(PhaseLSSGagFxa, PhaseTTDspFA, TTDspFA, Ncl_sp_FA)

Kx = 20.0;
Kv = 12.0;
v_max = 6.0;

PhaseDiff_Fx = mod(PhaseLSSGagFxa - PhaseTTDspFA + 180,360) - 180;

% Stiffness dominated: force approximately in phase with displacement
if PhaseDiff_Fx >= -10 && PhaseDiff_Fx <= 10

    u_twr_dmp = Kx*TTDspFA;

% Mass dominated: force approximately opposite to displacement
elseif PhaseDiff_Fx >= 170 || PhaseDiff_Fx <= -170

    u_twr_dmp = -Kx*TTDspFA;

% Remaining region: default velocity feedback
else

    u_twr_dmp = Kv*Ncl_sp_FA;

end

u_twr_dmp = max(min(u_twr_dmp,v_max),-v_max);

end

My initial idea was therefore not to continuously blend displacement, velocity, and acceleration feedback. Instead, I first tried to identify the excitation region and then use the corresponding feedback quantity for the fluid-speed command: displacement in the stiffness-dominated region, velocity around resonance, and acceleration/opposite displacement in the mass-dominated region. The motivation is that I would ideally like the flywheel system to perform load reduction, active damping, and load rejection.

Is the phase difference between the measured fore-aft force and tower displacement a meaningful online indicator? From the simulations, it appears that the force and displacement signals are nearly in phase most of the time during idling. Applying a displacement-based fluid command also performs well in some regions but introduces excitation in others.

I would greatly appreciate your comments on this.

Best regards,