Wind speed provided to controller in LES with actuator lines


In a classical BEM model, the controller requires a wind speed that is usually taken at the hub height in the rotor plane (a wind speed estimator based on a Kalmann filter is also used). However when one changes to an LES with actuator lines model, the wind speed at hub height includes the rotor induction, so the question is: where should the wind speed be taken from then?

P.S: We’ve tried to use the wind speed measured at the point where the nacelle anemometer is approximately located and this has yielded good results with the NREL-5MW turbine for several inlet wind speeds (in the range of 8 to 14 m/s) but we would like to confirm if this is the right way to proceed.

Best regards,
Ricardo Amaral

Dear Ricardo,

I would say the answer depends on what you are trying to model in reality.

Are you trying to mimic what a nacelle-mounted anemometer would measure (in the near wake of the rotor and boundary layer of the nacelle)? Then placing the wind measurement as you have sounds correct. (Usually you’d have to correct the measurement to estimate what the free-stream wind speed is.)

Are you trying to mimic what an upwind met-tower would measure (these are likely placed just upwind of the induction zone)?

Are you trying to mimic what a hub-mounted, forward-facing LiDAR would measure? In this case it is probably good to measure at multiple points and weight each measurement according to how the LiDAR functions.

Best regards,

Hello Jason,

Thanks for the quick answer.

I should take it from here. Ricardo kindly offered to ask this question for me since I dit not know about this forum before this day. By the way, thanks for the quick activation of my account.

To describe a bit more the context of this question, a month ago I started to work on the coupling between an in-house high order aero finite volume code (YALES2) and the open sources controller ROSCO currently developed by the NREL. I’m doing my validation tests with NREL-5MW wind turbine model. I know that ROSCO provides a wind speed estimator based on a Kalmann filter but as I do not really get it for now, I’m trying to give directly a relevant wind speed to ROSCO.

As Ricardo already mentioned, for that I’m using a point probe located at the approximated position of the nacelle-mounted anemometer. You mentioned I should correct the measured wind speed to estimate the free-stream speed, so I guess ROSCO needs this free-stream velocity as input ?

I’m confused because in its reference technical paper, authors describes the input velocity as the ‘effective wind speed at the rotor’. In ROSCO’s source code the wind speed input is described as the ‘wind speed at hub height’ (assumed to be in the rotor plane ?). Since I’m a using an actuator lines method to model the wind turbine, I cannot directly put my point probe at this location.

So, where should I ideally put my point probe to avoid any correction ? Can I simply put it upwind of the wind turbine at hub height ?

Thanks a lot for your help.

Best regards,

Etienne Muller

Hi Etienne,

I think it might be best if I respond to this.

First, a quick question - you stated that “ROSCO provides a wind speed estimator based on a Kalman filter but as I do not really get it for now, I’m trying to give directly a relevant wind speed to ROSCO.”. When you say that you do not really get it for now, do you mean that the wind speed estimator is not working for you? Or that you want to use a more simple non-WSE dependent controller to start?

Regardless, I can still answer your questions about the wind speed measurement. The Kalman Filter based wind speed estimator in ROSCO is attempting to estimate the so-called rotor-disk-averaged relative wind speed. This is generally used for the purpose of getting an estimate of the tip-speed ratio of the turbine and to define any wind speed dependent set points that might exist (e.g. the minimum pitch schedule). So, this would include induction effects.

In the ROSCO source code itself, I think the high-level description of “wind speed at hub heigh” might simply be poor nomenclature.

  • When WE_Mode=0, ROSCO uses the wind speed value that is passed to the controller via the 27’th index of the avrSWAP array. I believe that this is generally the measured wind speed at the hub (as in, an anemometer measurement). This is best used in ROSCO for debugging purposes, when a more proper wind speed estimate might not be desired. Using a measurement like this is usually not ideal, but of course might be better than no measurement at all.
  • When WE_Mode=2, ROSCO uses the Kalman filter based wind speed estimator. As described, this is an estimate of the rotor-disk-averaged wind speed.

Hopefully this clarifies things for you,

Hi Nikhar,

Thanks for your feedback on this. Indeed it clarifies a lot of things. Actually I thought about contacting you when reading your conference paper about ROSCO.

When I spoke about the WSE feature of ROSCO, I meant that I’m not familiar with what a Kalmann filter is (but rest assured that it is on my to do list). So I preferred to start by giving directly to ROSCO, using the 27’th index of the avrSWAP array, what I thought to be a relevant wind speed. If I understand correctly your explanations, ROSCO PI controllers responses are rather based on the ‘rotor-disk averaged relative wind speed’ than on the wind speed measured by the nacelle-mounted anemometer. Is that right ?

By the way, can I also define the ‘rotor-disk averaged relative wind speed’ by ‘the flow rate through the rotor disk divided by this disk surface’ ? Because the in-house aero code I use also provides annular probes, which I could use to get an estimate of this wind speed.

Thanks again for your help.

Best regards,


Hi Etienne,

Yes, you are correct, ROSCO’s modules are based on the “rotor-disc averaged relative wind speed”. Perhaps the easiest way to think about it is that, ideally, ROSCO could perfectly know the rotor’s tip-speed ratio. So, I think your suggestion of defining the wind speed as the flow rate through the rotor disk, divided by the surface area, should be appropriate.


Hi Nikhar,

Ok thanks a lot for totally clearing things up. It will really help me.

Before turning to the WSE included in ROSCO, I will try this idea then.

Best regards,