IEA 15 MW RWT: fixed foundations. Discrepancy in RtAeroPwr among OLAF and BEMT

Dear all,

I’m working on the IEA 15 MW RWT to develop my MSc thesis.
At the moment I’m trying to validate the results I obtained with BEMT with a higher fidelity method (OLAF).
For this reason I am currently trying tosimulate the wind turbine with fixed foundations. The wind turbine is modelled as rigid. SubDyn, HydrDyn, ServoDyn and MoorDyn modules are not activated. The wind is uniform and steady, with constant rated value (10.59 m/s).

My concern arises since the RtAeroPwrs that I obtain with OLAF and BEMT differ significantly. In particular, the RtAeroPwr for OLAF is also way higher than rated power.

For OLAF input file, initially I tried following the recommendations on the OpenFAST online documentation. After that I tried modifying the DeltaPsi parameter (suggested as 6° in the documentation) and all the parameters which, according to the documentation, can be defined from it (i.e. DTfvw, nNWPanel, WakeLength, FreeWakeLength). I could not achieve a result closer to BEMT anyway.

Afterwards I tried modifying nNWPanels, FreeWakeLength and WakeLenght parameters, leaving DTfvw untouched: the idea is to increase the near wake region. I could reach steady values closer to BEMT one, but still with more than 8% difference.
I’m attaching a plot where different simulations are compared over time (with Power on the y-axis). It shows BEMT compared with many different OLAF simulations (differences in setting are written in the legend). The recommended values would be nNWPanel=120; FreeWakeLenght=180; WakeLength=600, and are the ones leading to the red dotted line (the farthest from BEMT value).

I was wondering if you knew why the results are so different – or if you could advise on how to achieve a better match.

Thank you very much,
Best regards,

Hi Riccardo,

Thank you for trying this out, and spending your time and computational time investigating this.

We’ve observed similar results with OLAF, the Cp coefficient being higher than BEM. Typically, a longer near wake indeed improves the results.

I unfortunately cannot pinpoint an issue at the moment, comparisons between OLAF and other vortex codes typically show good agreements, so it might be something about segment-based vortex methods.

If you have the time, here are some suggestions on what else you can try:

  • You can plot the axial and tangential inductions along the blade span, that can give an idea of where the differences are.
  • The regularization factor might have a significant impact on the results. You can adjust the WingRegFactor (likely reducing it). You might also find that adjusting the WakeRegFactor has an influence on the results. If you reduce WakeRegFactor, you might want to increase the CoreSpreadEddyVisc a bit.
  • You can use WakeRegMethod=2 (proportional to chord instead of span), but that will change the distribution of axial induction quite a lot, and you’ll therefore have to tune WingRegFactor and WakeRegFactor again.
  • A bit of a shot in the dark, but you can try using VelocityMethod=4 (Segment Tree instead of Particle-Tree). It should be more precise, for not too much computational time overhead. The issue is that then the code uses segments, and the regularization factor for segments and particles might be slightly different, meaning that you will likely need to re-tune these values…
  • You can try to use a slightly different algorithm (more similar to the one used by the vortex code CACTUS). The options are “hidden”. At the end of OLAF input file, you can add the following lines:
------------------- ADVANCED OPTIONS ----------------------------------------------------------
False         InductionAtCP - Compute induction at the Control Points or at the lifting line nodes
False         WakeAtTE        -  Start the wake at the Trailing Edge, or at the lifting line.

Last time I modeled the IEA 15 MW, these are the parameters I used:

0.18    DTfvw              Time interval for wake propagation. {default: dtaero} (s)
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}
default 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.5     WakeRegFactor      Wake regularization factor (m)
0.25    WingRegFactor      Wing regularization factor (m)
2000    CoreSpreadEddyVisc Eddy viscosity in core spreading methods, typical values 1-1000

But I should say that I didn’t compare the results with other codes, so it might need further tuning.

Hopefully, by just adjusting the RegFactors you’ll get a bit closer. But you might stay within the same range of error.

If you don’t mind, please let us know the conclusions of your study.

Thanks a lot, and sorry for the potential frustrations.