FAST: Wind direction changes


I am also a new FAST user trying to simulate the NREL 5-MW wind turbine (onshore model) during a thunderstorm downburst event.

As you know, the wind field during a thunderstorm downburst is non-stationary. Its v-component has non-zero mean, i.e. the horizontal wind direction changes during the event. I prepared the wind field in wnd format and run FAST to estimate the response of the wind turbine. When I looked at the output file, the yaw position (YawPzn - degree) results did not look reasonable to me. They were too small. I understand that this is very large wind turbine and it has big YawSpr and YawDamp too. So I came back to a smaller model (test12 in CertTest folder) and tried running it with a “crazy” wnd wind file I prepared. The wnd wind file had u- and v-components kept constant at 12m/s for the whole grid (80m x 80m), i.e, steady wind at direction of 45 degree. While I expected to see the steady postion (YawPzn - yaw angle) of the turbine to be aligned with the wind direction (45 degree), FAST (the latest version) gave it as approximately 4 degree and the NacYawErr estimate was high. I tried smaller values for v-components, results did not appeared as expected. Note that a “perfect hinge” condition was set, i.e. YawDOF = True, YawSpr = 0, YawDamp = 0. Simulation time was 1000 seconds, TimeStep = 0.05 second.

So my question is: can FAST (and AeroDyn) handle the situation in which the v-component (transverse wind) has non-zero mean?


Best regards

Hieu Nguyen

Dear Hieu,

All utility-scale wind turbines employ an active yaw drive to track the rotor to the wind direction. The controlled yaw motions are, in general, very slow so as to minimize the gyroscopic-induced loads (nacelle-yaw + rotor spinning = nacelle pitching moment). As a result, we typically don’t even implement the yaw controller in our aero-elastic simulations.

Although they are few and far between, free-yaw turbines are typically downwind or include a tail (both features can help a rotor track the wind direction). A free-yaw upwind rotor does is not guaranteed to automatically track wind direction changes.

The NREL 5-MW turbine has a yaw spring and damper only to account for the small amount of compliance in the yaw drive. The model has no yaw control logic included, so, the rotor will not track wind-direction changes.

Test 12 from FAST’s CertTest is a model of the WindPACT 1.5-MW turbine. The default for this model is to disable the nacelle-yaw DOF all together. The machine was not designed to be free in yaw.

FAST/AeroDyn can model situations where the v-component of wind is nonzero, but the full-field wind format is not designed to handle large wind directions. This is because the full-field format uses planes of wind that always march along the X-axis, regardless of wind direction. If you want to model conditions with large wind directions, you should consider using the hub-height, 4D, or user-defined wind formats.

I hope that helps.

Best regards,

Thank you Jason.

Can you please tell me what information the 4-D wind file contains and how FAST/AeroDyn uses that information? Is there any way to generate a wind file in that format?
Furthermore, how to enable the feature in FAST/AeroDyn that reads user-defined wind format?



The 4-D wind files contain the 3-component wind velocities at each time and position on a 3-D spatial grid (X,Y,Z). The files we have are one instance of a LES simulation of a non-dimensional KH-billow, and we have created an input file (*.lep) that scales it. I would NOT recommend that you try to generate you own file in this format–it is complicated and prone to error. If you need 4-D wind files, you can modify a user-defined routine in AeroDyn to read your own wind files.

The AeroDyn source code for this routine is named "UserWind.f90 " You basically need to obtain the velocity (either calculate it there or read a file you’ve stored somewhere) and return it by setting variables VX, VY, and VZ. You will, of course, have to recompile FAST/AeroDyn to use this new routine. Then, to make AeroDyn call the User-Defined wind routine during a simulation, you enter “USERWIND” as the wind file name in the AeroDyn input file.


Thank you Bonnie.

As Jason said, the full-field wind format (wnd) is not designed to handle large wind directions, I have a follow-up question: will the full-field wind format (wnd) together with a UserYawCont routine work well?

I am asking this because by looking at the source code I understand that, even when UserWind subroutine is called, FAST/AeroDyn only needs/reads the wind velocities at blade element’s coordinates (XGRND, YGRND, ZGRND) relative to the inertial reference frame, i.e. at fixed locations on a fixed plane. Am I correct? If so, this is similar to the use of full-field wind format (wnd), in which interpolation is done by the program itself.

My problem is I cannot compute the wind within the UserWind subroutine given (Time, XGRND, YGRND, ZGRND) because of the turbulence part. Could you please suggest me a good way to read in a (formatted) data file for velocity at given time and location (Time, XGRND, YGRND, ZGRND)? This is not straightforward for me because when UserWind is called, it returns only a single velocity vector at time “Time” and location (XGRND, YGRND, ZGRND).

Thank you for your supports.

Dear Hieu,

I think I answered your questions well during our phone call earlier this week. I’ll give a brief summary here for others who are following this topic.

The FAST with AeroDyn code, itself, can model large yaw rotations–with or without a UserYawCont routine. The full-field wind formats produced by TurbSim, however, cannot be used within AeroDyn if they have sizable wind directions. This is because AeroDyn uses the frozen-turbulence assumption to march the full-field planes along the positive X-axis of the inertial frame regardless of the wind direction (a wind direction of zero means the wind flows along the positive X-axis).

The UserWind routine allows one to model or import their own wind data. The inputs to UserWind are the X, Y, and Z coordinates of an aerodynamic analysis node’s location in AeroDyn’s ground coordinate system at an instant of time. The routine is called once per aerodynamic node per aerodynamic time step. These nodes change location over time due to rotor rotation, nacelle yaw motions, blade and tower deflections, etc. The outputs of UserWind are the U, V, and W components (aligned with X, Y, and Z) of the user-defined wind velocity at that location. If you have imported wind data at an array of discrete locations into UserWind, simply interpolate to be able to return the wind velocity at any location within the domain (where the aerodynamic nodes wiill be at any given time).

Best regards,

Dear Jason,

I have one question on FAST simulation.

Suppose I am testing the 5MW turbine with non-turbulent wind field. The V and W components are kept at zero. The longitudinal component, U, is changing from +12 m/s (positive) to -12 m/s (negative) gradually, like below:
Period 1 = (0 to 200 seconds): U = 12 m/s
Period 2 = (200 to 560 seconds): U changes from +12 m/s to -12 m/s gradually
Period 3 = (560 to 1000 seconds): U = - 12 m/s

The generated power in period 1 is 5 MW (good) then goes to zeros in period 2 for some time (I think from U = 3 to -3 m/s) and then at the point U = -3 m/s, the power starts picking up again and increases to about 1.6 MW and stays there for period 3 (U = -12 m/s). So the wind turbine generates 1.5 MW power rate when the wind is blowing downwind (negative wind speed) at U = -12 m/s. Is this reasonable or strange? How do you interpret the results?


Dear Hieu,

It is hard to answer your question without more information.

Have you changed the NREL 5-MW model in any way? Does your model include the default torque and pitch controller that I supply in GH Bladed-style DLL format? Is the model fixed yaw? What wake model in AeroDyn have you enabled (STEADY or DYNIN)?

Can you include plots of wind speed, rotor speed, blade pitch, nacelle yaw, generator torque, and generator power as a function of time to a post?

Best regards,

Dear Jason,

Have you changed the NREL 5-MW model in any way? No I haven’t

Does your model include the default torque and pitch controller that I supply in GH Bladed-style DLL format? Yes

Is the model fixed yaw? No, YawDOF = True, but very small yaw observed (see attached)

What wake model in AeroDyn have you enabled (STEADY or DYNIN)? I am not sure about this, I did not touch the AeroDyn input file to modify this.

Thank you for your response. I have attached several figures in a word file and the FAST input file for the simulation.

Many thanks,
NRELOffshrBsline5MW_Onshore.txt (19.2 KB)
FAST.docx (79.9 KB)

Dear Hieu,

Thanks for the plots. Even the wind input is highly unusual (read: unrealistic), the response looks reasonable. You kept the nacelle yaw fixed while reversing the wind direction, so basically, you’ve forced an upwind turbine to operate downwind (which you can model in the code, but is not practical in real life).

The blades in the NREL 5-MW have an aerodynamic twist that is nearly 0 deg at the tip, increasing to just over 13 deg (towards feather) at the root. In normal (upwind operation), this twist is used to reduce the angle of attack along the inboard sections of the blade. When you force the turbine to operate downwind, this twist is backwards from what you’d want; instead of reducing the angle of attack, the angle of attack is increased, which reduces the performance of the rotor.

Best regards,

Dear Hieu,

I should have mentioned this in my prior post:

By forcing an upwind rotor to operate downwind, not only would the angle of attack be larger because the twist would be backwards (as I stated previously), but the airfoil angles of attack would typically be negative in value in this condition (i.e., they would be larger in magnitude and negative in value). Operating with large negative airfoil angles of attack would tend to reduce the performance of the rotor.

Best regards,