Manipulation of 2D aerodynamics coefficients and OLAF parameters

Dear all,

I am using OpenFAST to calculate the aeroelastic response of a rigid sail that looks like a rectangular (36m span and 9m chord) wing with a composite glass/carbon fiber structure.

First, I needed to validate the use of the OLAF module. To adapt this tool to my case, I modeled 1 blade without rotation. I have access to the CFD results of the 2D aerodynamic coefficient that I used in the input file of the wing data. Then I ran several 3D aerodynamic force measurements by iterating over the PropagationDir parameter of Steady InflowWind (10 m/s). I compared these results to 3D wind tunnel tests.

Our goal was to match 3D results of OLAF to our Wind-Tunnel results. But our wing profile is not classic, it is composed of two elements (a main body and a flap).

To make them match as well as possible I modified the 2D polar (I shifted the stall point) and I wondered if this tweak could have an impact on unsteady aerodynamics results of the Beddoes-Leishman Model.

before :
base

and after :
shifted

Here is my OLAF configuration (default one proposed by OLAF guidelines)

5       IntMethod          Integration method {5: Forward Euler 1st order, default: 5} (switch)
0.1     DTfvw              Time interval for wake propagation. {default: dtaero} (s)
99999   FreeWakeStart      Time when wake is free. (-) value = always free. {default: 0.0} (s)
0.0     FullCircStart      Time at which full circulation is reached. {default: 0.0} (s)
--------------------------- CIRCULATION SPECIFICATIONS ----------------------------------------
1       CircSolvingMethod  Circulation solving method {1: Cl-Based, 2: No-Flow Through, 3: Prescribed, default: 1 }(switch)
default CircSolvConvCrit   Convergence criteria {default: 0.001} [only if CircSolvingMethod=1] (-)
default CircSolvRelaxation Relaxation factor {default: 0.1} [only if CircSolvingMethod=1] (-)
default CircSolvMaxIter    Maximum number of iterations for circulation solving {default: 30} (-)
unused  PrescribedCircFile File containing prescribed circulation [only if CircSolvingMethod=3] (quoted string)
===============================================================================================
--------------------------- WAKE OPTIONS ------------------------------------------------------
------------------- WAKE EXTENT AND DISCRETIZATION --------------------------------------------
420     nNWPanel           Number of near-wake panels [integer] (-)
120     FarWakeLength         Total wake distance [integer] (number of time steps)
60      FreeFarWakeLength     Wake length that is free [integer] (number of time steps) {default: WakeLength}
False   FWShedVorticity    Include shed vorticity in the far wake {default: false}
------------------- WAKE REGULARIZATIONS AND DIFFUSION -----------------------------------------
0       DiffusionMethod     Diffusion method to account for viscous effects {0: None, 1: Core Spreading, "default": 0}    
3       RegDeterMethod      Method to determine the regularization parameters {0:  Manual, 1: Optimized, 2: Chord, 3: Span, default: 0 } 
3       RegFunction         Viscous diffusion function {0: None, 1: Rankine, 2: LambOseen, 3: Vatistas, 4: Denominator, "default": 3} (switch)
3       WakeRegMethod       Wake regularization method {1: Constant, 2: Stretching, 3: Age, default: 1} (switch)
0.6     WakeRegFactor       Wake regularization factor (m)
0.6     WingRegFactor       Wing regularization factor (m)
1000    CoreSpreadEddyVisc  Eddy viscosity in core spreading methods, typical values 1-1000 

I tried to make some tweaks to the wake parameters but these seem to be the most stable.

I was wondering what you thought of my OLAF setup and my method of matching the 3D polar to the wind tunnel results.

Thank you very much,

Best regards,

Theo

Dear Theo,

The fact that your wing has multiple elements, and has a fairly low aspect ratio can indeed be challenging for a lifting line method, I’m guessing that can explain some of the differences you observe. There could be other sources, either something in the measurements (like wall effects, turbulence, Reynolds number effects), or something off in the OLAF modeling.

Modifying the 2D polar data is probably what will have the greatest impact on the 3D lift curve. Of course, the best would be to be able to use the 2D polar from the measurements. If your modifications are limited to changing the stall point, it seems reasonable since there could be quite some uncertainty on the stall behavior of an airfoil.

Your inputs for the OLAF simulation appears reasonable.

  • You could get rid of the FarWake (FarWakeLength=FreeFarWakeLength=0) and increase the near wake length, since the FarWake introduces some approximations. The near wake length will be a function of your mean wind speed, the extent of the wake downstream and your time step. I don’t have guidelines for a fixed wing, but I would guess an extent of 10 wing span downstream would be plenty. (I would still experiment with different distances to see the impact and convergence. )
  • You need a simulation time that corresponds at least to 2 nNWPanel x dt , to ensure that the wake is in equilibrium. You can check that the loads are converged at the end of the simulation.
  • The spanwise discretization (number of points along the span), might affect your results. I’m not sure how many you are using. You can try different spanwise discretizations 25 50 75 100 and see how your results are affected and if you somehow reach a convergence.
  • Once you decide on a number of spanwise point, you can try a parametric study on the Wing/WakeRegParameters, varying them from 0.2 to 2.0.
    All this will have smaller impact on the lift curve as the change in polar that you did, but would be a good exercise to do on the original set of polars to understand what affects the performances of the model, and in which propotion.

Regarding the unsteady aerodynamic model, changing the stall point will indeed affect the unsteady airfoil parameters that are used by the Beddoes-Leishman model (most likely the parameter alpha1). In general these parameters are hard to determine and can affect the unsteady performance significantly. In your case, if the wind tunnel had limited turbulence intensity levels, you could run without dynamic stall at first, and since you are studying steady state performances at the moment, the results should in theory not be different with and without the dynamic stall model. In practice, they might be different, in particular if your “Cn slope” does not fit the Cn curve in the linear region. (I personally use my tool pyDatView to open a polar file from OpenFAST, and look at how well the curve “Cn pot” match the “Cn”, and where the points 0,1,2 are. The 1 and 2 points need to be close to stall or close to points where the linear and nonlinear Cn curves start to grow apart).

I hope some of this can be useful. Let us know how things go,

Emmanuel

Hello Emmanuel,

First of all, thank you very much for your quick and precise answer.
I took my time to answer to be sure to have explored all the tracks that you proposed. Here are some of my results for information:
Convergence in nNWPanel : 100 Near Wake Panel at 10m/s is sufficient
Spanwise discretization convergence is achieved at around 40 nodes but at 70 nodes the simulation doesn’t manage to converge even at low angle of attack.

The modification of the WingRegFactor has mainly modified the post-stall results

Then I tested the influence of various unsteady aerodynamic models. I chose to look at the 4th one more in depth (Beddoes-Leishman 4-states model) because it was incompressible and had documentation. I could indeed see the effect of the Cl_Alpha parameter.
I was wondering if you had a recommendation or a method to choose a UA model.

Finally, I saw that I had left the FreeWakeStart parameter at 99999 when I imagine it should be set to 0. It still gives me interesting results (I need to shift the stall point less) but the simulation diverges all the time for large angles of attack and post stall angles of attack. Do you have any suggestions on how to stabilize this kind of simulations, like which parameters to adjust ? I have tried a lot of them without seeing any noticeable changes.

Best regards,
Theo

Hi Theo,

Thank you for trying all this, it’s great work. Having this stepwise approach is definitely the best to gain confidence on the model parameters and find the most suitable ones.

It is a bit unfortunate that you did this with FreeWakeStart=9999, which effectively removes the wake rollup and might result in a different induction profile. You might need to redo the convergence on the number of near wake panels. 100 panels appears slightly low, but it depends on your time step and problem.

I’m not sure what you mean when you say that the simulation diverges for large angles of attack. When wake rollup is active, the wake may become quite chaotic depending on the regularization parameter of the wake. There are several things to do to avoid that:

  • Increase the value of the WakeRegParameter
  • Use WakeRegMethod=3, and increase the value of the parameter CoreSpreadEddyViscosity, this way the wake regularization parameter will increase from WakeRegParameter near the blade, to higher values in the far wake
  • Reduce the length of your Free Far Wake (but keeping the length of your total far wake the same). The far wake corresponds to the root and tip vortices generated after the near wake. After the free far wake, you’ll have a frozen far wake, which will convect with an average velocity and will not distort as much as the free vorticity.

Usually a visual inspection helps. You can use WrVTk=1 or 2 (to look at the end of the simulation only), with a fairly large VTK_fps (to avoid too much IO) and open the files “AllSegment” VTK files in Paraview. If the wake at the end of the simulation is too distorted, likely the wake regularization/CoreSpreadEddyViscosity are too small, if your wake is too smooth, they might be too large. If you want you can share a screen shot of one of your wake, I can give you some kind of opinion.

I hope that helps,

Emmanuel