Mach Number exceeds 0.3

Hi everyone,

I am working with the WP Baseline model (OpenFast 3.1.0) and I can not figure out why I get this warning in my simulations:

FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:RotCalcOutput:BEMT_CalcOutput(node 17,
blade 2):UA_CalcOutput:Mach number exceeds 0.3. Theory is invalid. This warning will not be
repeated though the condition may persist.

What I found is that at the beginning of my simulation there is a peak in the rotor speed, even though I have speed control enabled (should control the rotor speed to 20.4 rpm). I attached some plots where the issue is shown.


  1. Can anyone help me get rid of the peak?
  2. Does the warning turn off unsteady aerodynamics or could it mess up the simulation in another way?

Please feel free to ask for more information if you need them.

Thanks a lot and Best Regards!

Dear @Jakob.Roth,

This peak in rotor speed appears to be caused by the use of improper initial conditions, which result in a large start-up transient. To minimize start-up transients, it is generally recommend to initialize both the rotor speed and blade-pitch angles to their expected (mean) values based on the mean hub-height wind speed being simulated. Without that, the controller may take some time to resolve its operational state, or in the worst case, go unstable. In your case, it looks like you should initialize the blade-pitch angles to about 16 degrees to eliminate the large start-up transient.

This Mach number error is triggered by the Beddoes-Leishman unsteady airfoil aerodynamics models of AeroDyn. As of OpenFAST v3.0, the unsteady airfoil aerodynamics models will automatically be turned off and on depending on the angle of attack–see: Add ability to turn unsteady aero back on during a simulation by bjonkman · Pull Request #647 · OpenFAST/openfast · GitHub.

Best regards,

Hi Jason,

Thank you, that helped me a lot.

I tried using 15 degrees initial pitch (elastodyn input file) before, and it does appear in the out-file in the first line (also in the plot but you can not see it), but it immediately jumps back to around 5 degrees in the second time step. Is there another variable I should change if I want to use initial pitch?

I attached some screenshots of my input files in case you could find the mistake there



Thanks a lot and best regards!

Hi @Jakob.Roth,

It could be that the controller you are using is quite sensitivity to the initial conditions. What are the steady-state values of the rotor speed and blade pitch angle if you apply the associated steady wind speed at hub height? These are the values I would use as initial conditions.

Best regards,

The expected steady-state values of the rotor speed and pitch angle are 20.463 rpm and 20 degrees, thats what I used as initial conditions. But no matter what values I use, the pitch angle always goes back to around 5.6 degrees immediately, which I really do not understand. I attached some new simulation plots where I used constant wind speeds.

I am using PCMode 3 and I used the pitch.ipt file from the “WP_VSP_ECD” r-test and I did not change it at all (only the minimum pitch angle, but this does not have an influence on the result)




Dear @Jakob.Roth,

The response at 10 m/s makes sense to me because that is below the rated wind speed of the WindPACT 1.5-MW baseline turbine, where the rotor speed should be less than 20 rpm and the pitch should be minimum.

At 20 m/s, I am surprised that the pitch angle is suddenly dropping from its initial value. That said, I’m not too familiar with the baseline pitch controller for the WindPACT 1.5-MW turbine. Can you share your ServoDyn input file?

Regardless, other than a start-up transient that is longer than it would be otherwise, the system response seems to recover quickly and the start-up transient should not effect the system response after the transient has diminished.

Best regards,

If you have a closer look at the 20 m/s plot, the initial pitch angle is also 20 degrees. I tried different combinations of initial rotor speeds, initial pitch angles and wind speeds but the pitch angle jumps always back to 5-6 degrees.

Here is my ServoDyn input file:

------- SERVODYN v1.05.* INPUT FILE --------------------------------------------
FAST certification Test #12: WindPACT 1.5 MW Baseline with many DOFs with VS and VP and ECD wind. Model properties from “InputData1.5A08V07adm.xls” (from C. Hansen) with bugs removed.
---------------------- SIMULATION CONTROL --------------------------------------
False Echo - Echo input data to .ech (flag)
0.004 DT - Communication interval for controllers (s) (or “default”)
---------------------- PITCH CONTROL -------------------------------------------
3 PCMode - Pitch control mode {0: none, 3: user-defined from routine PitchCntrl, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
0 TPCOn - Time to enable active pitch control (s) [unused when PCMode=0]
9999.9 TPitManS(1) - Time to start override pitch maneuver for blade 1 and end standard pitch control (s)
9999.9 TPitManS(2) - Time to start override pitch maneuver for blade 2 and end standard pitch control (s)
9999.9 TPitManS(3) - Time to start override pitch maneuver for blade 3 and end standard pitch control (s) [unused for 2 blades]
2 PitManRat(1) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 1 (deg/s)
2 PitManRat(2) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 2 (deg/s)
2 PitManRat(3) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 3 (deg/s) [unused for 2 blades]
2.6 BlPitchF(1) - Blade 1 final pitch for pitch maneuvers (degrees)
2.6 BlPitchF(2) - Blade 2 final pitch for pitch maneuvers (degrees)
2.6 BlPitchF(3) - Blade 3 final pitch for pitch maneuvers (degrees) [unused for 2 blades]
---------------------- GENERATOR AND TORQUE CONTROL ----------------------------
1 VSContrl - Variable-speed control mode {0: none, 1: simple VS, 3: user-defined from routine UserVSCont, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
1 GenModel - Generator model {1: simple, 2: Thevenin, 3: user-defined from routine UserGen} (switch) [used only when VSContrl=0]
0.95 GenEff - Generator efficiency [ignored by the Thevenin and user-defined generator models] (%)
False GenTiStr - Method to start the generator {T: timed using TimGenOn, F: generator speed using SpdGenOn} (flag)
False GenTiStp - Method to stop the generator {T: timed using TimGenOf, F: when generator power = 0} (flag)
1080 SpdGenOn - Generator speed to turn on the generator for a startup (HSS speed) (rpm) [used only when GenTiStr=False]
0 TimGenOn - Time to turn on the generator for a startup (s) [used only when GenTiStr=True]
9999.9 TimGenOf - Time to turn off the generator (s) [used only when GenTiStp=True]
---------------------- SIMPLE VARIABLE-SPEED TORQUE CONTROL --------------------
1800 VS_RtGnSp - Rated generator speed for simple variable-speed generator control (HSS side) (rpm) [used only when VSContrl=1]
8376.58 VS_RtTq - Rated generator torque/constant generator torque in Region 3 for simple variable-speed generator control (HSS side) (N-m) [used only when VSContrl=1]
0.002585 VS_Rgn2K - Generator torque constant in Region 2 for simple variable-speed generator control (HSS side) (N-m/rpm^2) [used only when VSContrl=1]
9.9999E-06 VS_SlPc - Rated generator slip percentage in Region 2 1/2 for simple variable-speed generator control (%) [used only when VSContrl=1]
---------------------- SIMPLE INDUCTION GENERATOR ------------------------------
9999.9 SIG_SlPc - Rated generator slip percentage (%) [used only when VSContrl=0 and GenModel=1]
9999.9 SIG_SySp - Synchronous (zero-torque) generator speed (rpm) [used only when VSContrl=0 and GenModel=1]
9999.9 SIG_RtTq - Rated torque (N-m) [used only when VSContrl=0 and GenModel=1]
9999.9 SIG_PORt - Pull-out ratio (Tpullout/Trated) (-) [used only when VSContrl=0 and GenModel=1]
---------------------- THEVENIN-EQUIVALENT INDUCTION GENERATOR -----------------
9999.9 TEC_Freq - Line frequency [50 or 60] (Hz) [used only when VSContrl=0 and GenModel=2]
9998 TEC_NPol - Number of poles [even integer > 0] (-) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_SRes - Stator resistance (ohms) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_RRes - Rotor resistance (ohms) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_VLL - Line-to-line RMS voltage (volts) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_SLR - Stator leakage reactance (ohms) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_RLR - Rotor leakage reactance (ohms) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_MR - Magnetizing reactance (ohms) [used only when VSContrl=0 and GenModel=2]
---------------------- HIGH-SPEED SHAFT BRAKE ----------------------------------
0 HSSBrMode - HSS brake model {0: none, 1: simple, 3: user-defined from routine UserHSSBr, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
9999.9 THSSBrDp - Time to initiate deployment of the HSS brake (s)
9999.9 HSSBrDT - Time for HSS-brake to reach full deployment once initiated (sec) [used only when HSSBrMode=1]
9999.9 HSSBrTqF - Fully deployed HSS-brake torque (N-m)
---------------------- NACELLE-YAW CONTROL -------------------------------------
0 YCMode - Yaw control mode {0: none, 3: user-defined from routine UserYawCont, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
9999.9 TYCOn - Time to enable active yaw control (s) [unused when YCMode=0]
0 YawNeut - Neutral yaw position–yaw spring force is zero at this yaw (degrees)
0 YawSpr - Nacelle-yaw spring constant (N-m/rad)
0 YawDamp - Nacelle-yaw damping constant (N-m/(rad/s))
9999.9 TYawManS - Time to start override yaw maneuver and end standard yaw control (s)
2 YawManRat - Yaw maneuver rate (in absolute value) (deg/s)
0 NacYawF - Final yaw angle for override yaw maneuvers (degrees)
---------------------- AERODYNAMIC FLOW CONTROL --------------------------------
0 AfCmode - Airfoil control mode {0: none, 1: cosine wave cycle, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
0 AfC_Mean - Mean level for cosine cycling or steady value (-) [used only with AfCmode==1]
0 AfC_Amp - Amplitude for for cosine cycling of flap signal (-) [used only with AfCmode==1]
0 AfC_Phase - Phase relative to the blade azimuth (0 is vertical) for for cosine cycling of flap signal (deg) [used only with AfCmode==1]
---------------------- STRUCTURAL CONTROL --------------------------------------
0 NumBStC - Number of blade structural controllers (integer)
“unused” BStCfiles - Name of the files for blade structural controllers (quoted strings) [unused when NumBStC==0]
0 NumNStC - Number of nacelle structural controllers (integer)
“unused” NStCfiles - Name of the files for nacelle structural controllers (quoted strings) [unused when NumNStC==0]
0 NumTStC - Number of tower structural controllers (integer)
“unused” TStCfiles - Name of the files for tower structural controllers (quoted strings) [unused when NumTStC==0]
0 NumSStC - Number of substructure structural controllers (integer)
“unused” SStCfiles - Name of the files for substructure structural controllers (quoted strings) [unused when NumSStC==0]
---------------------- CABLE CONTROL -------------------------------------------
0 CCmode - Cable control mode {0: none, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface]
“unused” DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface]
“DISCON.IN” DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface]
“DISCON” DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface]
“default” DLL_DT - Communication interval for dynamic library (s) (or “default”) [used only with Bladed Interface]
false DLL_Ramp - Whether a linear ramp should be used between DLL_DT time steps [introduces time shift when true] (flag) [used only with Bladed Interface]
9999.9 BPCutoff - Cutoff frequency for low-pass filter on blade pitch from DLL (Hz) [used only with Bladed Interface]
0 NacYaw_North - Reference yaw angle of the nacelle when the upwind end points due North (deg) [used only with Bladed Interface]
0 Ptch_Cntrl - Record 28: Use individual pitch control {0: collective pitch; 1: individual pitch control} (switch) [used only with Bladed Interface]
0 Ptch_SetPnt - Record 5: Below-rated pitch angle set-point (deg) [used only with Bladed Interface]
0 Ptch_Min - Record 6: Minimum pitch angle (deg) [used only with Bladed Interface]
0 Ptch_Max - Record 7: Maximum pitch angle (deg) [used only with Bladed Interface]
0 PtchRate_Min - Record 8: Minimum pitch rate (most negative value allowed) (deg/s) [used only with Bladed Interface]
0 PtchRate_Max - Record 9: Maximum pitch rate (deg/s) [used only with Bladed Interface]
0 Gain_OM - Record 16: Optimal mode gain (Nm/(rad/s)^2) [used only with Bladed Interface]
0 GenSpd_MinOM - Record 17: Minimum generator speed (rpm) [used only with Bladed Interface]
0 GenSpd_MaxOM - Record 18: Optimal mode maximum speed (rpm) [used only with Bladed Interface]
0 GenSpd_Dem - Record 19: Demanded generator speed above rated (rpm) [used only with Bladed Interface]
0 GenTrq_Dem - Record 22: Demanded generator torque above rated (Nm) [used only with Bladed Interface]
0 GenPwr_Dem - Record 13: Demanded power (W) [used only with Bladed Interface]
---------------------- BLADED INTERFACE TORQUE-SPEED LOOK-UP TABLE -------------
0 DLL_NumTrq - Record 26: No. of points in torque-speed look-up table {0 = none and use the optimal mode parameters; nonzero = ignore the optimal mode PARAMETERs by setting Record 16 to 0.0} (-) [used only with Bladed Interface]
GenSpd_TLU GenTrq_TLU
(rpm) (Nm)
---------------------- OUTPUT --------------------------------------------------
False SumPrint - Print summary data to .sum (flag) (currently unused)
1 OutFile - Switch to determine where output will be placed: {1: in module output file only; 2: in glue code output file only; 3: both} (currently unused)
True TabDelim - Use tab delimiters in text tabular output file? (flag) (currently unused)
“ES10.3E2” OutFmt - Format used for text tabular output (except time). Resulting field should be 10 characters. (quoted string) (currently unused)
0 TStart - Time to begin tabular output (s) (currently unused)
OutList - The next line(s) contains a list of output parameters. See OutListParameters.xlsx for a listing of available output channels, (-)
“GenTq”
“GenPwr”
END of input file (the word “END” must appear in the first 3 columns of this last OutList line)

And here is the ServoDyn input as a picture, which is not that terrible to read:

Dear @Jakob.Roth,

I’m not seeing anything in your ServoDyn input file that would cause this odd behavior. I would guess there is something in the baseline pitch controller for the WindPACT 1.5-MW turbine that is causing this odd behavior, which I’m not familiar with. I’m not sure I have anything else to suggest other than to review this controller.

But as I said before, other than a start-up transient that is longer than it would be otherwise, the system response seems to recover quickly and the start-up transient should not effect the system response after the transient has diminished.

Best regards,

You are right, I am going to use just the simulation results after the start-up. I would have liked to understand the behavior but it works fine like this.

Thank you a lot for your detailed investigation on this topic.
And also thank you in general for your extensive help in this forum! Never seen you leaving a question unanswered.

1 Like