Hi all,
I am using WT_perf because I am interested in the power coef vs Tip speed ratio behaviour of wind turbines. More specifically, I am interested in the effect of turbulence in the performance curve, and have the lift and drag characteristics of an airfoil tested under turbulence in our wind tunnel.

These however only range from -90 to 90 degrees and consequently, wt_perf won’t let me test over certain pitch angles and certain rotation rates saying that “the current pitch angle being considered is out of the current range of -90 to 90 degrees.” Why is it even considering angles above/below +90/-90 degrees? Please help…



I can’t debug your problem with the information you posted here. If you send all your input files to me, I’ll try to steal a few minutes to see what’s wrong.


Alright, sorry for the delayed reply, but here I am attaching the input file and the airfoil data under turbulence. The input file is basically the first test file because all I want to see is the effect of turbulence compared to no turbulence. If you have any other ideas on how I could better see the effects (i.e. whether I should include twist or not etc) feel free to share it.

So yeah I try to run wt_perf on these files but it complains.

PS. Ok I can’t see where to attach files so I guess I will have to paste it here…

----- WT_Perf Input File -----------------------------------------------------
WT_Perf Test01 input file. UAE Phase 3 turbine (Non-dimen, English, Space, PROP-PC).
Compatible with WT_Perf v3.00f
----- Input Configuration ----------------------------------------------------
False Echo: Echo input parameters to “.ech”?
False DimenInp: Turbine parameters are dimensional?
False Metric: Turbine parameters are Metric (MKS vs FPS)?
----- Model Configuration ----------------------------------------------------
16 NumSect: Number of circumferential sectors.
5000 MaxIter: Max number of iterations for induction factor.
1.0e-6 ATol: Error tolerance for induction iteration.
1.0e-6 SWTol: Error tolerance for skewed-wake iteration.
----- Algorithm Configuration ------------------------------------------------
True TipLoss: Use the Prandtl tip-loss model?
False HubLoss: Use the Prandtl hub-loss model?
True Swirl: Include Swirl effects?
True SkewWake: Apply skewed-wake correction?
True AdvBrake: Use the advanced brake-state model?
True IndProp: Use PROP-PC instead of PROPX induction algorithm?
False AIDrag: Use the drag term in the axial induction calculation?
False TIDrag: Use the drag term in the tangential induction calculation?
----- Turbine Data -----------------------------------------------------------
3 NumBlade: Number of blades.
16.5 RotorRad: Rotor radius [length].
0.2 HubRad: Hub radius [length or div by radius].
3.5 PreCone: Precone angle, positive downwind [deg].
0.0 Tilt: Shaft tilt [deg].
0.00 Yaw: Yaw error [deg].
3.3333 HubHt: Hub height [length or div by radius].
16 NumSeg: Number of blade segments (entire rotor radius).
RElm Twist Chord AFfile PrntElem
0.225 0.000 0.0911 1 False
0.275 0.000 0.0911 1 False
0.325 0.000 0.0911 1 False
0.375 0.000 0.0911 1 False
0.425 0.000 0.0911 1 False
0.475 0.000 0.0911 1 False
0.525 0.000 0.0911 1 False
0.575 0.000 0.0911 1 False
0.625 0.000 0.0911 1 False
0.675 0.000 0.0911 1 False
0.725 0.000 0.0911 1 False
0.775 0.000 0.0911 1 False
0.825 0.000 0.0911 1 False
0.875 0.000 0.0911 1 False
0.925 0.000 0.0911 1 False
0.975 0.000 0.0911 1 t False
----- Aerodynamic Data -------------------------------------------------------
0.0019749 Rho: Air density [mass/volume].
0.0001625 KinVisc: Kinematic air viscosity
0.143 ShearExp: Wind shear exponent (1/7 law = 0.143).
False UseCm: Are Cm data included in the airfoil tables?
1 NumAF: Number of airfoil files.
“airfoils/unsteadyaeroexp/naca4421NoTurbulence.dat” AF_File: List of NumAF airfoil files.
----- I/O Settings -----------------------------------------------------------
True TabDel: Make output tab-delimited (fixed-width otherwise).
True KFact: Output dimensional parameters in K (e.g., kN instead on N)
True WriteBED: Write out blade element data to “.bed”?
True InputTSR: Input speeds as TSRs?
“fps” SpdUnits: Wind-speed units (mps, fps, mph).
----- Combined-Case Analysis -------------------------------------------------
0 NumCases: Number of cases to run. Enter zero for parametric analysis.
WS or TSR RotSpd Pitch Remove following block of lines if NumCases is zero.
----- Parametric Analysis (Ignored if NumCases > 0 ) -------------------------
3 ParRow: Row parameter (1-rpm, 2-pitch, 3-tsr/speed).
2 ParCol: Column parameter (1-rpm, 2-pitch, 3-tsr/speed).
1 ParTab: Table parameter (1-rpm, 2-pitch, 3-tsr/speed).
True OutPwr: Request output of rotor power?
True OutCp: Request output of Cp?
True OutTrq: Request output of shaft torque?
True OutFlp: Request output of flap bending moment?
True OutThr: Request output of rotor thrust?
3, 5, 2.0 PitSt, PitEnd, PitDel: First, last, delta blade pitch (deg).
78, 78, 0.0 OmgSt, OmgEnd, OmgDel: First, last, delta rotor speed (rpm).
0.2, 18, 0.5 SpdSt, SpdEnd, SpdDel: First, last, delta speeds.

*** AIR FOIL DATA ***[color=red]

AeroDyn airfoil file. Compatible with AeroDyn v13.0.
NACA4421 Airfoil, OSU data at Re=0.285 Million, Clean roughness
NREL/TP-442-7817 Appendix B, Viterna used aspect ratio=11
1 Number of airfoil tables in this file
9.0e9 Table ID parameter (Reynolds number in milllions). For efficiency, make very large if only one table.
17.5 Stall angle (deg)
-3.00 Zero lift angle of attack (deg)
0 Cn slope for zero lift (dimensionless)
0 Cn at stall value for positive angle of attack
0 Cn at stall value for negative angle of attack
4.8000 Angle of attack for minimum CD (deg)
0.0250 Minimum CD value
-90.00 -.150 1.9250
-80.00 -.463 1.8500
-70.00 -.700 1.7000
-60.00 -.834 1.4750
-50.00 -.913 1.1880
-40.00 -.775 .8000
-30.00 -.550 .5000
-20.00 -.675 .4880
-17.50 -.725 .5000
-15.00 -.725 .4950
-12.50 -.730 .4900
-10.00 -.588 .4000
-7.50 -.425 .3000
-5.00 -.188 .2130
-2.50 .050 .1250
0.00 .300 .0750
2.50 .575 .0380
5.00 .825 .0250
7.50 1.050 .0380
10.00 1.275 .0625
12.50 1.475 .0750
15.00 1.550 .1250
17.50 1.613 .2000
20.00 1.600 .2500
30.00 1.500 .5500
40.00 1.230 .9500
50.00 1.063 1.3000
60.00 .950 1.7630
70.00 .575 1.9900
80.00 .225 2.0800
90.00 -.175 2.0630

All you have to do is paste the two red bits into separate notepad files and run wt_perf.exe…


I looked at the blade-element file (.bed) and it appears that you are asking WT_Perf to compute the performance in a very poorly performing condition. The power coefficients dropped to worse than -10 on the previous case and you were pushing the TSR even higher when it bombed. The BEM equations are in such an extreme state, that WT_Perf tried an angle of attack outside the +/-90 degree range you gave it. I always provide airfoil tables that are +/-180 degrees to avoid this possibility.

You have two possible work-arounds for your problem. You can either not ask WT_Perf to calculate the performance of such extreme states, or you can extend your airfoil table to +/-180 degrees.

Good luck!


Yeah I was thinking along those lines as well … but can you explain why it starts working when I just decrease the rotation speed (omega)? I can’t go into the wind tunnel to extend my airfoil data so going to -180/180 degrees is out of the question.

Changing the rotation rate changes the angle of attack. Lowering it will increase the angle of attack (if pitched in normal run position). I guess it got the angle of attack back within your inout range.

Use AirfoilPrep to extend the dataset to +/-180 degrees. You can download it from the preprocessor section of our web site.


Isn’t it the TSR that affects the angle of attack? When I change the omega range, I am still testing over the same TSR range - shouldn’t the range of angles of attack be the same?

Yes. Sorry. I forgot you were specifying TSR instead of wind speed when I posted earlier.

When I changed the rotor speed from 78 to 72 rpm in your input file, I got the exact same answers, as I would expect. It fails in the same place.


Well I tried an omega of 68 and it started working. What’s up with that?

It doesn’t work for me. I get the exact same error with 68 rpm as I do at 72 and 78. What version of WT_Perf are you using?


No my bad. I had changed the TSR range as well. Anyway I am using the latest version (v3.10 I think it is?).

I just have another question - in the BED output file, why are there two columns for the axial induction, tangential induction and airflow angles? Furthermore, why is the axial induction given a dimension of degrees (as opposed to dimensionless)? Also, given a TSR and a pitch angle I am calculating the angle of attack using the relationship:

AoA = 90 - arctan(TSR) - pitchAngle

  • is this correct?

Maybe you can include a description of the BED file in the manual in the future. Finally, what is the azimuthal angle - I couldn’t find a solid definition of it yet.

You are looking at the output in tab-delimited form and the columns don’t align well when looking at them with an editor. Please use tab-delimited output for spreadsheets. If you want to look at them with an editor or print them, disable the tab-delimited flag.

No. You ignored the twist. I don’t know the full equation off the top of my head. I’m really swamped this week trying to get a paper finished. If I have some spare time next week, I’ll try to rederive the equation for you.

It would be nice if I had some time to do some development and documentation, but I’ve been reassigned to other projects. Sorry.

Ok. Well thanks for your prompt replies so far. Does anyone else have an idea on how to correctly calculate the angle of attack based on pitch angle and TSR? (the input file I’m using has zero twist, but has a precone angle).

How are you looking for time today?

I had to pull the equations out of the code, but here they are:

VWndGnd  = VelHH*ShearLoc

VTotNorm = VWndGnd*( CosCone*CosYaw*CosTilt - SinCone*( CosYaw*CosAzim*SinTilt - SinYaw*SinAzim ) )
VIndNorm = VTotNorm*( 1.0 - AInd*SWcorr )

VWndTang = -VWndGnd*( CosAzim*SinYaw + CosYaw*SinTilt*SinAzim )
VBodTang = TipSpeed*RLocND(ISeg)
VTotTang = VWndTang + VBodTang
VIndTang = VTotTang*( 1.0 + TInd )

AFang  = ATAN2( VIndNorm, VIndTang )
IncidAng = Twist(ISeg) + Pitch
AlfaR   = AFang - IncidAng

If the variable names are not obvious, please search the source code for them. Everything is explicitly defined in the code.


Thanks :slight_smile:

Another question:

If I am testing over a range of TSR with wt_perf, how can I make the program tell me what the current free stream wind speed for a given TSR and Pitch angle?

Thanks in advance,

Assuming you are referring to the hub-height wind speed…

If you are running combined cases, WT_Perf includes it in the output table. If you are doing the parametric analysis, you will have to calculate it yourself. I do it in Excel:

WS = R*RPM*(Pi/30)/TSR


No, I mean the free stream wind speed (or the incident wind speed) far upstream of the turbine.