A question concerning Cp surface generation with OpenFAST

Dear OpenFAST team and users,

I have generated Cp surfaces for different wind speeds for my turbine model and I wanted to know if my results are OK. Can you please comment?
I used 30 simulations per windspeed and I set all degrees of freedom in elastodyn files to ‘false’. each simulation had a different rotation speed of the rotor and I was changing the pitch angle collectively for all blades from -10 to 20 degrees during 20 minutes of simulated time. The results seemed fine but I have doubts now…
Does changing the pitch angle slowly guarantee to simulate steady states?

For example, if I run a similar simulation with constant pitch 0 degrees, for a windspeed 11 m/s the resulting Cp output is constant at about 0.39 consistent with the results from the simulations where the pitch angle changes steadily. Does that mean I can get away with the surface I have generated? Or is it absolutely necessary to maintain the pitch angle at a constant value for a while, to get the right Cp?

For comparison, I ran one short simulation where I change the pitch from -5 to 0 degrees at 10 rpm windspeed 11 m/s like the surface above. I mean, except for the wobble, the value is fine. I am simulating a direct drive turbine.
BS



please comment

Dear Bartosz,

If you have eliminated all dynamics (degrees of freedom)–both structural and aerodynamic–then you should be able to generate the aerodynamic surface as you have. It sounds like you’ve already eliminated all structural DOFs in ElastoDyn. Aerodynamically, the equivalent would be quasi-steady aerodynamic assumptions, i.e., BEMT without unsteady airfoil dynamics (WakeMod = 1, AFAeroMod = 1).

Please note that because you are assuming the wind turbine to be rigid, it may be simpler to generate the aerodynamic surface with the standalone AeroDyn driver rather than through OpenFAST with all DOFs in ElastoDyn disabled.

Also, we have been working with Envision energy to develop an updated driver for OpenFAST that is set up to directly compute these aerodynamic surfaces, both with and without blade flexibility enabled. Once complete, this functionality will become publicly available through an OpenFAST release.

Best regards,

Dear dr Jonkman

Thank you for your swift reply!

I was using AFAeroMod=2 :frowning:.
I wanted to use the rigid rotor results as a reference value, and progressively introduce other degrees of freedom to assess their influence.
Should I allow for the turbine to settle by keeping the pitch angle constant for a while if I want to include other DOFs?
If I wanted to keep the rotational speed of the rotor constant at 10 rpm, and change the pitch angle from -10, to 20 degrees, and turn on the Generator DOF, will I need some torque control as well?

I hope your driver will work out great, like the rest of OpenFAST :slight_smile:.

BS

Dear Bartosz,

Yes, if you have DOFs enabled (structural or aerodynamic) , it would likely make sense to allow the dynamics to settle until a steady state is reached before switching to the next pitch angle.

If you’ve disabled the generator DOF in ElastoDyn (GenDOF = False), then there is no need to introduce a torque controller.

Best regards,

Dear Jason,

If the generator DOF is turned off, does that mean that for the same operation at a constant rotational speed I would have to have a generator torque equal to the rotor torque for a direct drive rigid shaft?

BS

Dear Bartosz,

A similar question regarding GenDOF in ElastoDyn was asked and answered here: GenDOF simple question...or is it? - #2 by Jason.Jonkman.

Best regards,

Dear Bartosz,

I would like to know how did you obtain this Cp surface. If you are able to share your script with me through PM or e-mail I would be glad.

Best regards

Hello,

I generated the surface by running a series of simulations where the pitch angle is changed steadily while the wind speed and rotor speed are constant. That is for the rigid rotor case. Check Jason Jonkman’s explanation above for hints on how to model the rotor as rigid. For the flexible system, where there are many possible influences from changing of the turbine displacements in all the degrees of freedom it will be necessary to only take into consideration the steady-state results. I did this by running a simulation with pitch changing by steps and fitting a surface through Cp values for the steady conditions. This is more challenging but can be done too.
Look:


I don’t have a script for that. I just run simulations and check the results. once I have a dataset, I have a .m script in Matlab which I am using to get plots. If it suits you, send your results and I can try to make it work and then sen back to you. :slight_smile:

Edit:
for that to work you’d have to have the RtAeroCp output to your .out file by adding it to the in Aerodyn file list of demanded outputs. Together with other outputs like RotSpeed and why not the TSR and Cq and Ct. I guess I could just send you my matlab file, but this isn’t really practical, because I have different names for my simulations .out but have a go. otherwise, ROSCO does it too. I’ve tried it to get the gain scheduling for the controller but I’m still in working on it.

here are my scripts, if you decide you need them, but I guess there are easier ways to do the same thing :slight_smile:
dropbox.com/sh/2wcdvk18swsh … h5r0a?dl=0

Hi again,

Thank you for sharing your scripts. I was refering to the surface plot .m script but thanks for more detailed explanation maybe someone else can benefit from them.

Best regards.

Edit: I see that you are trying to get gain scheduling for pitch controller. I have used “Advanced Control Design for Wind Turbines Part I: Control Design, Implementation, and Initial Tests” NREL report (chapter 3.3) for my pitch controller which looks like working for now.

Dear Deniz,

This is very nice of you. I’ll have a look. I hope your controller turns out super!
By the way, which generator model is used in the base controller for CART turbine? Is it the simple model or rather the Thevenin equivalent circuit model?

BS

I am sorry I do not know which generator model is used in CART WT. Maybe someone else can you with that.

Best regards.

Dear Deniz, dr Jonkman,

I greatly appreciate your help so far!

I have been running some mere simulations of my model and come across an issue:
These simulations were meant to generate a set of initial conditions for different wind speeds, that I would use later. I was looking for platform displacements and generator torque and speed so that I can limit the initial transients when starting simulations.

Here’s my IC set for steady, uniform wind of 6m/s:
PtfmSurge 3 m
ptfmPitch 0.84 deg
OOoPDefl1 3 m
GenSpeed 6.16 r.p.m.
GenPwr 0.65 MW
GenTq 1.02 kN-m
RtTSR 9.9
RtAeroCp 4.67

I have two questions:

  • The value of Cp seems too much (it is steady). For a rigid rotor and turbine, with quasi-steady aerodynamic settings the maximum Cp I obtained was 4.52. How can this be explained?
  • The Cpmax I used for calculating VS_Rgn2K was 4.52 with CpmaxLambda 9.35. What could be the reason for the RtTSR not reflecting this?

Kindest Regards,

BS

Dear Bartosz,

A Cp above the Betz limit (of 0.593) does not really make sense to me. RtAeroCp may temporarily exceed the betz limit if the solution is undergoing a transient, but I would only use RtAeroCp under steady conditions or in a time-averaged sense. I’d have to understand more about what you are doing to comment more.

Best regards,

Dear dr Jonkman,

It was a typo. the Cp is 0.467.
Which is close to my maximum Cp 0.452 and I was unsure of where this difference could come from.

I am running simulations with steady wind for example 6 m/s, in order to let the turbine settle and use the steady state displacements of the platform as initial conditions for other simulations which have waves and changing wind. I am doing this in order to avoid the possibility of platform rapid motions in the transients in the beginning of the simulation which sometimes prevent me from running the total case.

Dear Bartosz,

It is always good to set proper initial conditions to reduce the simulation start-up transients.

My understanding is that you are asking why your simulation is resulting in a Cp (of 0.467) that is higher than the maximum Cp (of 0.452) that you calculated in prior simulations…is that correct? Can you clarify what is different between these two sets of simulations (e.g., in terms of DOFs or features enabled/disabled)?

Best regards,

Dear dr Jonkman,

Exactly, this is the reason for my initial question.
While checking the differences I noticed I had the tip, hub and tower losses disabled in the simulation, and after enabling them the Cp is much closer at 0.4533 so I would say this solves my problem.
Thank you for your suggestion!

as for my RotTSR, now it stabilizes at 9.88 instead of 9.35. I calculated VS_Rgn2K using the formula
kform.PNG
for Cpmax i put 0.452 and for CpmaxLambda 9.35 corresponding to the maximum point

I obtained the Cp distribution using the rigid system with all elastodyn DOF disabled.
After that I enabled the following DOFs:
True FlapDOF1 - First flapwise blade mode DOF (flag)
True FlapDOF2 - Second flapwise blade mode DOF (flag)
True EdgeDOF - First edgewise blade mode DOF (flag)
False TeetDOF - Rotor-teeter DOF (flag) [unused for 3 blades]
False DrTrDOF - Drivetrain rotational-flexibility DOF (flag)
True GenDOF - Generator DOF (flag)
False YawDOF - Yaw DOF (flag)
True TwFADOF1 - First fore-aft tower bending-mode DOF (flag)
True TwFADOF2 - Second fore-aft tower bending-mode DOF (flag)
True TwSSDOF1 - First side-to-side tower bending-mode DOF (flag)
True TwSSDOF2 - Second side-to-side tower bending-mode DOF (flag)
True PtfmSgDOF - Platform horizontal surge translation DOF (flag)
True PtfmSwDOF - Platform horizontal sway translation DOF (flag)
True PtfmHvDOF - Platform vertical heave translation DOF (flag)
True PtfmRDOF - Platform roll tilt rotation DOF (flag)
True PtfmPDOF - Platform pitch tilt rotation DOF (flag)
True PtfmYDOF - Platform yaw rotation DOF (flag)
and ran some simulations to check if the difference would be important. I had good agreement for most cases I managed to run so I’m using my Cp data from the first set of simulations (rigid rotor, tower, static aerodynamics).
So now it’s a floating turbine with flexible blades and tower. I’m using Simulink interface now.
Could rotor plane tilt due to platform pitch be the reason for the turbine to stabilize at TSR 9.88?

Regards,

Bartosz Stachowicz

Dear Bartosz,

The floating platform pitch could certainly play a role in the rotor performance, as could blade deflection. You’ve also enabled the GenDOF, so, the controller will now also play a role if the rotor speed or blade-pitch angle differ between the two sets of simulations.

Best regards,

Dear Jason,

I have run some more simulations and I am happy with the Cp I get most of the time if the initial conditions are OK. At least it seems to me to be close to the max value I obtained from the rigid simulations. I mean the Cp in Region 2 of variable speed control. I am attaching some plots of a simulation like this. Can you please comment on the torque ripple right after the controller goes into region 2.5? Is this normal? I think I set the speeds and slopes OK but I was thinking that maybe this is because the turbine was accelerating in this case and the ripple was due to the inertia. What is your opinion?

Best Regards

BS

Ps: I am attaching more plots in my next post, cheers



Here are some blow-up plots of torques 2 and 2.5 and the pitch angle. Wind speed is in the image with platform motions. Can I linearize about any of the operating points from this simulation?

Thank you!