Linearization OpenFAST Region 2

Dear @Jason.Jonkman,

I’m trying to linearize the NREL 5MW onshore wind turbine in Region 2 for control purpose using OpenFast v3.0.0. I want to verify if everything is well done before going to the control part.

For the linearization, I used the following input parameters:

  • Linearize = True, CalcSteady = True, YCMode = 0 and PCMode = 0.
  • TrimCase = 2 as suggested in Fast User’s Guide for Region 2.
  • TrimTol = 0.005 and TrimGain = 1000.
  • VSContrl = 0 as you have suggested in the following post Learizing Baseline 5MW Wind Turbine with FAST - #28 by Jason.Jonkman .
  • GenTiStr = True and TimGenOn > TMax as you have suggested in this post Linearization OpenFAST Region 2 - #2 by Jason.Jonkman .
  • WindType = 1 and HWindSpeed = {4, 6, 9} m/s
  • RotSpeed: You mentioned in the Fast User’s Guide that “During Region 2 trim (TrimCase = 2), the solution computation may also become unstable if your desired rotor speed is below the rotor speed that results in the maximum power coefficient at a given wind speed and rotor collective blade pitch angle. In this case, the only way to obtain a successful trim solution is to increase your desired rotor speed condition“. Therefore, I deduced the rotor speed Omega_Opt (rad/s) that corresponds to the maximum power coefficient (by considering a tip-speed ratio TSR_Opt = 7.55, a rotor radiusR=63 mand the chosen mean wind speedv = 4, 6 or 9 m/s) from the following formula TSR_Opt = Omega_Opt * R / v. Afterwards, I have chosen a desired rotor speed RotSpeed (rpm) = (Omega_Opt * 60/(2 Pi)) + 0.5.

Using the above parameters, I obtained the results in the following folder Linearization - Google Drive . I included for each chosen wind speed, the OpenFast input and output files, with plots of the outputs: RotSpeed, Torque and Power of the linearized model.

Next, in order to validate the linearized model, I used Simulink (with the following parameters for the NL model: PCMode = 4, VSContrl = 4, GenTiStr = True, TimGenOn = 0,GenTiStp = True, TimGenOf = TMax + 50) to compare the OpenLoop Linear vs NL models (Simulink Figures below) response, using a perturbation on the generator torque that begins after 20 s with different amplitudes as follows: dTg = {0, 50, 100, 150, 200, 1000} N.mand wind disturbance dv = 0. The results corresponding to each wind speed are included in the same google drive in the folder named “Lin_vs_NL“.

I have the following questions:

  1. Can you please confirm the input parameters being used?
  2. Is the method used to compute RotSpeedcorrect ? If not, how to choose the value of RotSpeed in Region 2 ?
  3. What is a good disturbance amplitude dTg for the generator torque that can be used to compare the Linear vs NL model responses for validation of the linearized model? And when should it be applied (I used 20s)? Using a value dTg = 0returns approximately the same outputs, dTg = {50, 100, 150, 200}returns results with a drop in the outputs of the linear model but it seems to be still acceptable, but using dTg = 1000 Nmleads a large drop in the outputs of the linear model.
  4. Is the drop observed in the linear model outputs, especially for the rotor speed, normal?

Thank you in advance.

Regards.

Dear @Bilal.Tout,

Here are my responses:

  1. Your inputs look OK, but based on your time series, I’m surprised OpenFAST considers the steady-state solution converged. It may help to expedite convergence by increasing TrimGain a bit, e.g., by a factor of 4-5 or lowering TrimTol by a factor of 4-5.
  2. I agree with your approach, but I’m not sure if you need to add 0.5 rpm to the desired rotor speed.
  3. For the linear model, I’m not sure why you have time-varying rotor speed without any input perturbations. Are you azimuth-averaging the matrices to get a time-invariant model and eliminating the generator azimuth state before time integrating? Regarding the perturbation of generator torque, at 6 m/s, I see the operating point torque is around 10 kNm, so, 100 Nm is 1% and 1000 Nm is 10%.
  4. I would expect increasing generator torque without increasing the wind speed to result in a drop in rotor speed, but it is not clear to me yet why the linear and nonlinear models are not matching. I would first ensure the solution before the perturbation is matching.

Best regards,

Dear @Jason.Jonkman,

Thank you for your responses.

Regarding your responses 1 and 2, I increased TrimGain to 4000 instead of 1000, and I removed the + 0.5 rpm from the equation used to compute RotSpeed.

Concerning your response 3, I’m using the following procedure to obtain the linearized LTI model:

  • PLTV model is obtained by simulating the nonlinear model at the given steady wind speed for multiple azimuth angles (36).

  • PLTV model is transformed into a weakly PLTV model using the MBC transformation to transform states, inputs and outputs into a nonrotating frame.

  • LTI system is obtained by azimuth-averaging the weakly PLTV system, then eliminating the generator azimuth state.

However, I realized that in the simulation, I was adding the operating point to the outputs corresponding to the azimuth average using a lookup table having as input the rotor position, instead of using the mean value of the operating point of each output. Using the mean (over 36 azimuth angles) of the operating point, I obtained the following rotor speed output for a mean wind speed HWindSpeed = 6 m/s and without any input perturbations (dTg = 0, dv = 0):

Can I consider that this LTI response matches that of the NL model response? Or they should match perfectly?

Best Regards.

Dear @Bilal.Tout,

Thanks for the update.

Regarding (1) and (2), are you getting better convergence of rotor speed when you compute the steady-state solution?

Regarding (3), with zero input perturbations, the response of the LTI model should be zero for the output perturbations. In this case, the linearized solution should match the steady-state solution. So, I don’t understand why the linear and nonlinear models are not matching because the steady-state solution should be the converged nonlinear solution.

Best regards,

Dear @Jason.Jonkman,

I tried increasing TrimGain to 4000, 5000 and even 10000, but this did not yield better results in terms of convergence to a steady-state operating point.

Consequently, I maintained TrimGain = 1000, but I decreased TrimTol from 0.005 to 0.0001 for a mean wind speed 6 m/s, so I obtained the results I added to the drive link Linearization - Google Drive under the folder TrimTol_0.0001.

The output RotSpeed, Torque and Power obtained from the linearization process are as follows:

Question 1: Can I consider now that the convergence to the steady state solution is well achieved?

Next I compared linear and NL model responses with generator torque perturbations dTg = {0, 50, 100, 1000} N.m introduced using a step block in Simulink with a final value time of 200s(time when the perturbation begins).

With zero input perturbation (dTg = 0), I obtained the following results of Rotor speed and Power:

Question 2: Can I consider that the linear and NL responses match now for zero input perturbations?

Finally, using a non zero perturbation of the generator torque (dTg = {50, 100, 1000} N.m), results in the Drive link Linearization - Google Drive , returns results with a drop in the outputs of the linear model which increases as the perturbation amplitude increases. For instance, results when dTg = 100 N.m are the following:

Question 3: Is this drop in output normal, since we are moving away from the linearization operating point? Or is there a problem that leads to this drop ?

Best Regards.

Dear @Bilal.Tout,

Regarding (1), does increasing TrimGain result in faster convergence? Regardless, your results with a smaller TrimTol look more converged.

Regarding (2), what is causing the oscillation in rotor speed and power in the linear model without input perturbations? I would not expect this after azimuth-averaging.

Regarding (3), it looks like the linear and nonlinear models agree well soon after the 100 Nm perturbation, but then the linear solution diverges and I’m not sure why. Do the linear and nonlinear models agree better with a smaller input perturbation?

Best regards,