Verification of FAST V8 Linearization

Dear Jason,

I am working to linearized the NREL 5 MW model using FAST V8 in region 3. The setup of the basic model was verified by comparing it with the results in the paper: FAST modularization framework for wind turbine simulation: full-system linearization. After that, I set the wind velocity= 12m/s and pitch angle= 3.8deg with the blade 1st flapping, tower 1st fore-apt, and generator DOEs activate in the “OP model”. The linearized model was simulated in MATLAB using all system states and wind velocity, generator torque, and pitch angle as inputs. The generator power and rotor thrust were used as the output.

To verify this model, I gave a small pitch angle (0.02 rad), and set the pitch angle to be (3.8+ 1.1465 deg) and run this model as the “Perturbation model”. The result of “Perturbation model”-“OP model” in the following figure can not match with the Matlab simulation. The dynamic behavior is similar but the steady-state is far from each other. Do you have some suggestions on this problem? Thank you
Verification1.jpg

Dear Xianping.Du,

I see that you’ve enabled the generator DOF. Have you removed the generator azimuth state before simulating with the linear model? MBC and azimuth-averaging should eliminate the influence of the generator-azimuth state, which should then be removed from the linear model before use. This is discussed e.g. in the following forum topic: FAST linearization V7.

Best regards,

Dear Jason,

I tried the fx_mbc3 to deal with the 20 linearization files generated by FAST V8. I did use the MBC.AvgA/B/C/D from the returned result and remove the generator Azimuth state from the MBC.AvgA/B/C . The updated result is attached. It seems the MBC function takes no great effect. Do you have any ideas about this? The model setup and one *.lin were attached for your reference. Thank you


Test18.zip (13 KB)

Dear Xianping,

I don’t see much difference between your two sets of linearization results, which is a bit surprising to me if one has the azimuth state and the other does not. To further verify that you are indeed getting the response you expect, you may want to try without the generator DOF enabled (GenDOF = False).

Regardless, your input file set up looks OK to me. I did notice that your steady-state rotor speed operating point is 12.3 rpm, not 12.1 rpm, which suggests that the blade-pitch angle you are using is not exactly correct for the 12 m/s wind speed to get the desired 12.1 rpm.

The results will also be impacted by the choice of aerodynamic model both in the time-domain simulation and linearization. Are you using WakeMod = 1 (BEM theory) in both? Have you enabled FrozenWake when linearizing (as recommended)?

Best regards,

Dear Jason,

I disabled the generator DOF (GenDOF = False) and the result seems better (1st figure) but the difference can still no be neglected. I also linearized the two models with only the blade 1st flapping (FlapDOF1=TRUE, 2nd figure) and 1st tower fore-aft DOF (TwFADOF1=TRUE, 3rd figure) enabled, respectively. It seems no observable difference in the steady-state response.

After disabling the generator DOF, the rotor speed can be kept at 12.1 rpm.

Yes, I did use the WakeMod = 1 and frozen the wake (FrozenWake=TRUE). The dynamic behaviors of the FAST and linearized mode are similar but a proportional difference. I am not familiar with the code of FAST. Do you know some possible parameters that can fix this problem? For your reference, I did use the ‘lsim()’ in MATLAB with a constant pitch variation as the input. Thank you!

Dear Xianping,

Do you get better agreement between the linear and nonlinear solutions with FrozenWake = False?

Best regards,

Dear Jason,

It is amazing after disabled the Frozenwake (=FALSE) (1st figure) even after enabled the generator DOF (2nd figure), where the bigger difference for rotor thrust may be caused by the variation of rotor speed (12.3 rpm). I checked your paper mentioned above, where the frozen wake is recommended since the equilibrium wake is inaccurate. Also, I check the OpenFAST Documentation for the new function in OpenFAST: “Fixed a bug whereby the time series was affected after the linearization analysis with AeroDyn coupled to OpenFAST when the frozen wake is enabled (FrozenWake = True).” I am a little confusing. I do have limited knowledge of the effect of frozen on linearization. Can you please give a brief description? Thank you

I have to amend something for this simulation. Before the MBC and removing generator azimuth state, the generator power and rotor thrust will increase continually if the simulation time of the linearized model is long enough. After removing the azimuth effect, they can reach the constant steady-state responses quickly as shown in the figures. That should be the biggest difference caused by the azimuth effect in my simulation.

Dear Xianping,

When frozen wake is enabled, the induced velocities are fixed at their operating point values during the linearization process (even when inputs to the aerodyanamic calculation are perturbed). This is more representative of what happens in a dynamic wake situation because it takes time for the wake to reach equilibrium after inputs are perturbed. When frozen wake is disabled, the induced velocities are recalculated with every input perturbation. This is more representative of what happens without dynamic wake.

For example, during a pitch step, without dynamic wake, the wake will instantaneously jump from one state to another. With dynamic wake, during the pitch step, the wake will take time to reach its new equilibrium state.

So, I can see why disabling frozen wake gives a result that is closer to the nonlinear solution without dynamic wake. We recommend to enable frozen wake, because this is more representative of the dynamic wake, which is also recommended.

Best regards,

Dear Jason,

Thank you for your detailed and critical explanation. I can understand that disabling the Fronzenwake is more suitable for my case since I did use the uniform and constant wind velocity. On another aspect, I can not fully understand. You mentioned Frozenwake=TRUE is recommended for the dynamic wake. Since the FAST linearization works on a steady-state operating point, how does this operating point can be reached for the linearization if the dynamic wake exists? Thank you

Best regards,

Dear Xianping,

Currently, the linearization of OpenFAST is only valid for the steady-state wake (BEMT). But enabling frozen wake will produce a linear model better representative of a dynamic wake (DBEMT). We are currently working on improvements to the aerodynamic linearization within OpenFAST that will apply directly to the dynamic wake, which will introduce aerodynamic states into the linear model.

I hope that clarifies things.

Best regards,

Dear Jason,

Understood, thank you for your in-time helps regarding this case!

Best regards,

Xianping Du

Hi Json,

I am working with the most recent version of OpenFAST and am slightly confused about the linearization capabilities. When I attempt to run a linearization with sub-structural dynamics I get an error saying “Linearization is not supported for any of the substructure models”. However, when I run a linearization without sub-structural dynamics there are still platform states in the linearization. Are these states and the associated LTI state-space matrices relevant for controls oriented model development for FOWT? Do you have any idea when linearization will be available for the sub-structure?

Dear Martin,

The master branch of OpenFAST includes linearization for land-based and floating offshore turbines, with the later pertaining only to rigid-body modeling of the substructure. Modules that support linearization include ElastoDyn, BeamDyn, InflowWind, AeroDyn, ServoDyn, HydroDyn, and MAP++.

Recently, we’ve been working to upgrade OpenFAST to model floating substructures as flexible bodies with member-level load calculations, including upgrades to SubDyn, HydroDyn, and the OpenFAST glue code. Along with that upgrade is enhanced linearization that also includes support for linearization of SubDyn, which then means the OpenFAST linearization will support flexible support structures, both fixed bottom and floating. More information is available on this forum here: Extending the dimensions of matrices related to equation of motion - #11 by Jason.Jonkman.

I hope that helps.

Best regards,