NREL / ROSCO_toolbox

A repository for generating ROSCO controller input files and more.
http://rosco-toolbox.readthedocs.io/
Apache License 2.0
23 stars 20 forks source link

add support to multiple Reynolds airfoil polars #20

Closed ppozzobon closed 3 years ago

ppozzobon commented 3 years ago

Adds capability to read a multi-Reynolds airfoil polar when calculating Cp surface with CCBlade.

I couldn't find a pull request template. The change is pretty straight-forward, so I hope this is ok as is.

nikhar-abbas commented 3 years ago

Hi, Thanks for the pull request - sorry about the delay on looking into it.

A few things here: 1) Thanks for pointing out the bug in not multiplying 1e6 for the reynolds number. 2) I'm curious what the utility for this is? Seemingly, the idea is to get different Cp surfaces for varied wind speeds, which would, theoretically, change a controller gain schedule. That said, my feeling is that if you want to be re-scheduling the controller to specific reynolds numbers, the use of ccblade and simplified rotor models for tuning the controller should be questioned at a higher level altogether. 3) The way these polar tables are read in the source code is admittedly a bit sloppy and should be more along the lines of the load_blade_info function (I'll be sure to fix this). That said, I am unable to test your changes as I do not have a turbine model with multiple airfoil polar tables for each blade section, as is the case if the aerodynamics are changing for each polar table. For the controls teams, our primary use of the multiple polar table functionality in OpenFAST has been for trailing edge flap control, where only a set of the airfoil files have multiple polar tables (and thus ntab>1).

So, perhaps most importantly - what is the end-goal of these changes? Perhaps that will help me understand what is needed a bit more.

Thanks, Nikhar

ppozzobon commented 3 years ago

Hi @nikhar-abbas

The only motivation was to avoid errors I was getting when calculating the Cp surface when using a fast model with multiple airfoil tables.

In my case, I have a set of airfoil files with one table for each reynolds, ranging from 5e4 to 1e7. This gives slightly different aerodynamic coefficients in each table (the tendency is an increase in Cl and Cd with increasing reynolds). These coefficients were calculated with xfoil.

When I was calculating the Cp surface, only the first airfoil table was passed to CCBlade (the ones with reynolds = 5e4). The reynolds at the blade tip of my model were about 2e6. As a result, I was getting an unexpected Cp surface.

Note that the bug in not multiplying 1e6 for the reynolds number could have lead me to somewhat correct results if the first table in my files were for, say, reynolds = 1e6 or 2e6.

Unfortunately I cannot share the fast model that motivated me to do these changes. As soon as I get another with multiple tables I'll commit on this branch.

Pedro

nikhar-abbas commented 3 years ago

@ppozzobon

Just wanted to check in on this - do the issues you were remedying with this PR a while back persist? Please let me know if they are. Some updates were made to how the blade files are read and cc-blade is run, so perhaps things are a bit cleaner for you now.

Thanks, Nikhar

ppozzobon commented 3 years ago

@nikhar-abbas The changes made in commit b6a6f874 made things better.

Now I obtain a reasonable Cp surface, but there is a difference of about 5% in the optimal TSR and Cp max value compared with the results obtained with my PR. This is due to the fact that only one Reynolds table is sent to CCAirfoil. I think this is good enough. Feel free to close this PR.