CFD Tutorial no. 14 — Wind turbine CFD calculation
The rotor that takes instead of gives

This wind turbine CFD calculation tutorial follows a real case end to end : from the BEM result to the wake, through the mesh and the two solver phases.

Start with tutorial no. 1

Wind turbine CFD calculation: energy-capture rotor tutorial

CFD Tutorial no. 14 of 20. The steps described here are those of the HELICIEL CFD Tool window, opened from Heliciel : they assume the PRO CFD/BEM extension is active. This tutorial follows a real case, from the designer through to the wake images : every screenshot and every figure quoted comes from this calculation, run on a desktop PC (i7-8086K, 6 cores, 64 GB, 11 calculation processes). Your values will differ with your geometry and your operating point ; the method, however, is the same.

A wind turbine and an aircraft propeller are the same machine run in reverse : one takes energy from the fluid, the other gives it energy. Wind turbine CFD calculation uses exactly the same chain — same presets, same phases, same solver — but reading the results means flipping the sign and the frame of reference.

The rotor used as an example is a three-blade wind turbine 4 m in diameter, designed in Heliciel then calculated in CFD. We will start from what the BEM says about it, run the meshing and the two solver phases, and finish by looking at the flow.

  1. The rotor studied, and what the BEM says about it
  2. The direction of things on an energy-capture rotor
  3. Creating the case and meshing
  4. What the preset changes: three meshes on the same rotor
  5. Phase 1 MRF: the first result
  6. Phase 2: the sliding mesh
  7. Viewing the flow: pressures, flow lines, cuts, iso-surfaces
  8. Placing the result against the Betz limit
  9. The tidal turbine case

1: The rotor studied, and what the BEM says about it

Everything starts from the Heliciel designer. The rotor is defined there, calculated in BEM, and it is this geometry that goes on to meshing : the CFD redraws nothing, it reads back the STL export of the 3D prototype.

Rotor diameter4,000 m (hub ∅ 620 mm)
Number of blades3
Wind5,5 m/s (19,8 km/h)
Rotation speed166,8 rpm — TSR 6,35, J = 0,495
Fluidair, ρ = 1,143 kg/m³, 20 °C
Blade tip35,4 m/s — Mach 0,105, Re 6,3·105

4-metre three-blade wind turbine rotor modelled in the Heliciel designer before CFD calculation
The rotor in the Heliciel designer : three 2 m blades, streamlined hub. This is the geometry, exported as STL, that the CFD will mesh.

The designer's results panel gives the BEM verdict at the design point, and along the way it gives the two energy benchmarks that govern the whole reading of an energy-capture rotor :

Axial thrust (BEM)231,33 N — force endured, to be carried by the mast
Torque (BEM)35,86 N·m — positive : the machine produces
Shaft power626 W
Kinetic energy flux through the disc1 166 W
Betz limit691 W (16/27 of the flux)
Power coefficient Cp0,537 — i.e. 91 % of the Betz limit

Heliciel results panel with thrust, torque and shaft power placed against the Betz limit
The designer's results panel : pressure delta, axial force, torque, and on the right the shaft power placed between the available kinetic flux and the Betz limit.

Keep these two numbers in mind — 231 N and 35,9 N·m — because everything that follows amounts to asking the CFD whether it confirms them.

2: The direction of things on an energy-capture rotor

On a thrust propeller, the fluid is accelerated : the streamtube contracts downstream, the machine consumes torque and produces thrust. On an energy-capture rotor, everything is reversed : the fluid is slowed down, the streamtube widens downstream, the machine produces torque and is subjected to a thrust that the mast must carry.

Heliciel's axis convention is the same in both cases, and you need to know it to avoid misreading the result : for a propeller, whatever its function, the flow goes toward −X, while the rotation axis stays at +X. The blue arrow in the 3D view shows the flow direction, and it is deliberately longer and wider than the other two so it stands out first.

The bench's results table spells out the rule in full : Fx+ = flow direction → Fx− = Thrust, Fx+ = Drag ; Mx+ = rotation direction → Mx+ = Production, Mx− = Consumption. An axial force whose sign is surprising is therefore almost always explained by this convention, not by a physical anomaly.

three-blade wind turbine rotor in the CFD domain with the axis frame and the flow arrow
The wind turbine rotor in the CFD bench : the blue arrow gives the flow direction, the rotation axis stays at +X.

3: Creating the case and meshing

File > New CFD case (from the current model). Heliciel exports the STL of the 3D prototype, detects the case type — here a free propeller, without duct — and prepares the OpenFOAM folder.

A free wind turbine rotor falls under the free-propeller presets, from Level 1 Express to Level 8 Reference. Each level sets, in one go, the background grid, the surface and edge refinement levels, the target number of cells per chord, the boundary layers, and the number of Phase 2 rotor revolutions :

PresetBackgroundSurface refin.Cells/chordLayersPh.2 revolutionsCost
Level 1 — Express6×6×63-41,500,1×1
Level 2 — Enhanced Express8×8×84-53,510,1×1,5
Level 3 — Balanced8×8×84-5720,25×3
Level 4 — Trend8×6×65-6920,3×5
Level 5 — Study10×8×86-71230,5×11
Level 6 — Fine study12×16×167-84860,75×29
Level 7 — Production12×16×168-996101×55
Level 8 — Reference16×20×209-10240201,5×117

A specific feature of wind turbines : the blades are long and relatively thin, and the ratio between the domain size and the blade thickness is unfavourable. This is exactly the configuration where fast presets fail to resolve the blade. Do not look for a power coefficient with a diagnostic mesh : the quantitative floor remains Level 5 — Study, and that is the one we use for the full calculation.

Meshing the example case at Level 5 produced 235 460 cells in 7 min 20 s across 11 processes. The refinement concentrates where it should : the blade skin, the sharp edges of the leading and trailing edges, and the rotating zone around the rotor. The Mesh checkbox in the 3D scene displays it — but a warning : on a domain this size, the wireframe is too dense to stay readable on screen. It is the checkMesh report, in the Logs tab, that gives the real quality verdict.

4: What the preset changes: three meshes on the same rotor

To show what a preset costs and what it delivers, the same rotor was meshed and calculated in Phase 1 at three levels. Same geometry, same wind, same rotation speed, same solver : only the mesh changes.

PresetCellsMeshingPhase 1CFD thrustvs BEMCFD torquevs BEM
Level 120 8851 min 0028 s99,0 N−57 %−2,16 N·m−94 % (sign reversed)
Level 383 7984 min 2453 s213,8 N−7,6 %16,85 N·m−53 %
Level 5235 4607 min 201 min 04223,4 N−3,4 %19,11 N·m−46,7 %
Project BEM reference : thrust 231,33 N, torque 35,86 N·m. Blade-only forces, averaged over the last 15 iterations of Phase 1 MRF.

The table is also visible to the naked eye. Here is the same quantity — surface pressure — on the three meshes, in the same framing :

surface pressure of a wind turbine calculated with the Level 1 mesh preset
Level 1, 20 885 cells : the blade is reduced to a few facets, the leading edge no longer exists, the pressure map is stepped. This is the geometry the solver actually saw — hence the wrong-sign torque.

surface pressure of a wind turbine calculated with the Level 3 mesh preset
Level 3, 83 798 cells : the blade regains its shape, the root-to-tip gradient appears, the hub remains polygonal. Thrust is already within 8 %, torque is still off by half.

surface pressure of a wind turbine calculated with the Level 5 mesh preset
Level 5, 235 460 cells : smooth surfaces, continuous gradient, resolved blade tips. This is the first level whose figures are worth quoting.

Three lessons can be read directly from this table, and they hold for practically every rotor :

5: Phase 1 MRF: the first result

Phase 1 solves the flow in MRFMultiple Reference Frame : the mesh does not move, rotation is introduced as a term in the equations, inside a cylindrical zone surrounding the rotor. This is a steady-state calculation : it seeks the equilibrium state, not the history of the motion. Full detail in tutorial no. 4.

On the example case, Phase 1 converged in 1 min 04 s. The results panel shows, in order, the rotor data, the sign convention, the BEM reference, then the CFD result :

CFD/BEM results panel of a wind turbine after Phase 1 MRF
After Phase 1 : 223,36 N of thrust and 19,11 N·m of torque for the blades, 334 W at the shaft, Cp 0,279 — to be compared with the 231,33 N and 35,86 N·m of the BEM reference recalled just above.

Two quantities govern the interpretation :

Also check the split between blades and hub, which the bench separates, as well as the split between the pressure share and the viscous share. On our rotor, the blade torque breaks down into +22,0 N·m of pressure and −2,5 N·m of friction : friction already eats up 11 % of what the pressure produces. And the hub, for its part, captures nothing — it drags and it rubs ; a large viscous share in its axial moment is a pure loss, and that is the kind of finding that justifies a hub fairing.

6: Phase 2: the sliding mesh

Phase 1 freezes the rotor in one position. Phase 2 actually makes it turn : the rotor zone slides against the fixed domain, and the two meshes communicate through a non-conformal interface recomputed at every time step. The calculation becomes unsteady — it describes a history, not an equilibrium. This is the subject of tutorial no. 5.

What Phase 2 brings, and what Phase 1 cannot give :

It comes at a cost : the time step is driven by the Courant number, and an auto-tuner raises it in steps as long as the calculation stays stable — on this case, from 3,1·10−4 s to more than double, which halved the time per revolution along the way.

Actual calculation time28 min 58 s across 11 processes
Simulated time0,2736 s — 0,76 rotor revolution
Blade thrust (average over 2 blade passages, 444 points)225,54 N — BEM deviation −2,5 %
Blade torque (same average)20,56 N·m — BEM deviation −42,7 %
RMS fluctuation0,52 N on thrust (0,23 %), 0,19 N·m on torque (0,94 %)
Blade passage frequency8,34 Hz (3 blades at 166,8 rpm)

The verdict fits in one sentence : Phase 2 confirms Phase 1 on the averages — 225,5 N versus 223,4 N, 20,6 N·m versus 19,1 N·m — and it adds what Phase 1 could not say. The load fluctuation stays modest here (0,23 % of thrust, 0,94 % of torque) : an isolated three-blade rotor, with no mast ahead of the blades and no wind gradient, has no reason to beat hard. On a real machine, with the tower shadow, this same figure would be quite different — and that is precisely why it is measured.

CFD results panel after Phase 2 sliding mesh on a wind turbine
After Phase 2 : the source shown becomes "Sliding Mesh (actual rotation)". A reading caution — the panel displays the final instant (225,27 N, 20,80 N·m), while the comparison against the BEM is made on the average of the last blade passages (225,54 N, 20,56 N·m), recorded in the case's benchmark file. Here the two nearly coincide, because this rotor barely beats ; on a machine that fluctuates, the gap between the two would be quite different. On an unsteady calculation, a snapshot is never a result — even when it happens to land right.

Phase 2 sliding mesh running on a wind turbine with the revolution counter
A calculation in progress : the bench narrates what it is doing on the 3D scene — the initial BEM estimate, then convergence reached and automatic stop at iteration 2 772. While it runs, it also announces the current revolution, the progress and the time remaining, and drops intermediate checkpoints — an interrupted calculation resumes from the last point written.

7: Viewing the flow

Once the calculation is finished, the Results tab controls everything the 3D scene can show : the phase displayed, the surface pressures, the flow lines, the wake, four cut planes with their quantity and orientation, a free cut, and four iso-surface levels.

CFD results control panel with cuts, iso-surfaces and surface pressures
The results control panel : here you choose the phase displayed (MRF or Sliding), the surface pressures, the flow lines, the quantity and orientation of the cuts, and the iso-surface levels.

One rule above all : uncheck the 3D model to look at the surface pressures. The grey STL draws over the coloured field and gives a speckled, unreadable map that could wrongly be mistaken for a calculation defect. Without it, the coloured shape of the wind turbine is enough : it is the result.

Surface pressures

This is the most direct reading : the suction on the upper surface, the overpressure on the lower surface, and their variation from blade root to tip. On our rotor, the hub appears yellow — it is in overpressure, it brakes the flow — while the blades turn green then blue toward the tips, where the relative velocity is greatest and the suction strongest.

surface pressure map of a wind turbine's blades calculated in CFD
Surface pressures, 3D model hidden : the coloured skin of the rotor is the result itself. The scale, on the right, runs from 100 995 to 101 229 Pa on this case.

Flow lines

Added on top of the pressures, they tell the story of the fluid's path : its slowing down upstream of the disc, its rotational deflection as it passes the blades, the widening of the streamtube downstream. This is the view that speaks the most, and the one to show first to someone discovering the case. A framing tip : they only come out as continuous strands if the camera stays close ; from a distance, they degenerate into a scatter of particles.

flow lines around a three-blade wind turbine with surface pressures
Flow lines and surface pressures : the fluid slows before the disc, turns as it crosses it, and moves on widening.

Cuts

Four orientations are available, and each answers a different question.

The vertical cut, in axial velocities, shows the velocity deficit in the wake and its slow recovery : this is the very signature of an energy-capture rotor, and the direct measure of what it has extracted.

axial velocity cut showing the velocity deficit in a wind turbine rotor's wake
Vertical cut of axial velocities : the blue zone downstream is the slowed fluid — the wake extends far behind the rotor.

The cut normal to the flow slices this same wake crosswise. The slowed disc stands out clearly from the free stream that stays yellow ; you can read at a glance the diameter actually affected, always larger than that of the rotor.

cut normal to the flow downstream of a wind turbine rotor showing the wake disc
Cut normal to the flow : the wake seen crosswise, slowed core at the centre and free stream all around.

The cylindrical cut follows a given radius — adjustable in the custom cut — and unrolls the blade where it works. It is the cut to favour for turbulence, whose relative dynamic range is wide ; pressure and velocity, on the other hand, share their scale with the whole domain, which flattens the contrast near the blades.

cylindrical turbulence cut in a wind turbine rotor's wake
Cylindrical cut at r = 0,80 m (40 % of the radius), in turbulence. The boundary is sharp and it falls exactly on the rotor plane — but read the scale before concluding : it runs from red at zero up to blue at the maximum, and it is upstream, in blue, that carries the strongest turbulent viscosity. Probed on this case : 0,299 m²/s three metres upstream, versus 0,175 m²/s in the wake — the opposite of what you would expect from a wind turbine, whose wake is the agitated zone. The turbulent viscosity imposed at the domain inlet is already nearly 19 000 times that of air, and it decreases as it crosses the rotor instead of increasing. This cut should therefore be read as a witness of the inlet conditions, not as a map of the wake's actual agitation.

Iso-surfaces

The iso-surfaces close out the reading by giving volume to what the cuts show in plane. Four levels are offered, with their value in pascals ; on this case they range from 101 246 to 101 305 Pa. A tip : check only one or two of them. All four together wrap the rotor in a continuous mass that no longer shows anything ; one or two levels isolate the suction cores, including those of the blade-tip vortices.

pressure iso-surfaces around a wind turbine's blades
Two iso-pressure levels : the detached pockets are the suction cores that the cuts only show in slice.

8: Placing the result against the Betz limit

A rotor cannot extract all the kinetic energy from the flow passing through it : that would require stopping the fluid, hence preventing it from flowing at all. Theory sets a ceiling on the power coefficient — 16/27, i.e. 0,593 — and this Betz limit is what Heliciel's results panel permanently displays next to the shaft power. On our rotor : 1 166 W of kinetic flux, 691 W of Betz ceiling, and 626 W at the shaft according to the BEM.

Once the CFD calculation is finished, there are two comparisons to make :

Here they do not agree completely, and this disagreement is itself a result : thrust agrees to within 5 %, torque does not. A wind turbine whose CFD torque is half the BEM torque is a machine whose actual performance stays uncertain until the question is settled, and the bench flags it on its own — it displays a reliability index and, on this calculation, the warning "nut/nu very high : possible turbulence model instability". That is the lead to follow before adding cells.

A CFD power coefficient that exceeded the theoretical limit would not be a discovery : it would be an error in the reference area, the reference velocity, or a non-converged calculation. It's a good consistency safeguard.

9: The tidal turbine case

A tidal turbine is an energy-capture rotor in a liquid. Everything above applies ; added to it is what tutorial no. 13 describes for liquid fluids : high density, a reference pressure that accounts for immersion, and the risk of cavitation.

This last point is not theoretical on a tidal turbine : the suction on a blade's upper surface at the tip, where the relative velocity is greatest, can approach the vapour pressure at nominal operation. Enter the shaft immersion depth in the project before meshing — the value is locked in at the first meshing.

The full case, in figures

Let's run through the process end to end on the tidal turbine model shipped with Heliciel. The contrast with the wind turbine is instructive : same family of machine, but a rotor four times larger in a fluid a thousand times denser.

Rotor diameter16,000 m (hub ∅ 2 720 mm)
Number of blades2
Current2,4 m/s (4,7 knots)
Rotation speed18,2 rpm — TSR 6,35, J = 0,495
Fluidseawater, ρ = 1 028 kg/m³, 10 °C
Shaft immersion10 m — sets the reference pressure
Blade tip15,3 m/s — Mach 0,011

The BEM reference, at the same operating point :

Axial thrust (BEM)631 647 N — 64 tonnes-force to be carried by the structure
Torque (BEM)+409 191 N·m — positive : the machine produces
Shaft power779,9 kW
Kinetic energy flux1 387 kW
Betz limit822 kW (16/27 of the flux)
Power coefficient Cp0,562 — i.e. 95 % of the Betz limit

The ratio between the two machines is striking : barely 780 kW for a 16-metre rotor, versus 626 W for the 4-metre wind turbine. It is not the diameter that makes the difference, it is the density — water at 2,4 m/s carries far more energy per square metre than air at 5,5 m/s.

The three presets

Same protocol as for the wind turbine : the same case meshed at three increasing levels of refinement, Phase 1 MRF each time.

PresetCellsThrustvs BEMTorquevs BEM
Level 121 610−334 016 N−49,7 %−420 505 N·m+2,5 %
Level 369 317−443 091 N−33,9 %−82 801 N·m−80,2 %
Level 5148 514−450 717 N−31,3 %−11 040 N·m−97,6 %

surface pressure of a tidal turbine calculated with the Level 1 mesh preset
Level 1, 21 610 cells : the blade holds together in a few facets and the hub is polygonal. The pressure map only has value for checking that the case runs.

surface pressure of a tidal turbine calculated with the Level 3 mesh preset
Level 3, 69 317 cells : the skin becomes smooth, the root-to-tip gradient appears and the blade-tip suction takes shape.

surface pressure of a tidal turbine calculated with the Level 5 mesh preset
Level 5, 148 514 cells : 17,9 cells per chord. This is the refinement level from which the geometry seen by the solver matches that of the project.

One quantity converges, the other doesn't

Read the thrust column from top to bottom : −49,7 %, then −33,9 %, then −31,3 %. The gap narrows and the last two levels now differ by only two points : thrust converges, and a Level 5 is enough to know it.

Now read the torque column : +2,5 %, then −80,2 %, then −97,6 %. The torque does not converge — it collapses as the mesh is refined. And Level 1's apparent agreement is a mirage : it carries the wrong sign. By the bench's convention, a negative torque means a machine that consumes ; yet a tidal turbine produces.

The pressure/viscous split at Level 5 explains the collapse in two numbers : pressure torque +11 712 N·m, viscous torque −21 351 N·m. The net torque is a small difference between two terms of opposite sign — the slightest error on either one tips it over. Thrust, on the other hand, is a sum of contributions of the same sign, dominated by pressure : it is structurally far more robust.

This is a general lesson, and it holds for any rotating machine : two quantities from the same calculation do not carry the same reliability. It is not enough for a calculation to "converge" for all its results to be usable.

What Phase 2 changes

surface pressure of a tidal turbine in Phase 2 sliding mesh
The same machine in Phase 2, sliding mesh : the rotor actually turns, and the torque regains its sign.

Level 5Thrustvs BEMTorquevs BEM
Phase 1 — MRF−450 717 N−31,3 %−11 040 N·m−97,6 %
Phase 2 — sliding−476 575 N−26,6 %+170 482 N·m−58,1 %

The torque turns positive again — the machine finally produces, in the calculation as in reality — and reaches 42 % of the BEM value. Thrust gains five points along the way. On this case, the steady Phase 1 simply did not give the right sign : only the actually rotating rotor recovers it.

One reading caution, though. The figure displayed at the end of Phase 2 is a value taken at the end of the calculation, and the presets' Phase 2 only simulates one to two rotor revolutions. Averaged over the last revolution, the same calculation gives −450 809 N and +139 204 N·m, with residual fluctuations of 2,3 % on thrust and 7,6 % on torque. In other words : the regime is not yet established, and the torque bears the trace of it. For a truly stabilised torque value, five to six revolutions would be needed — on the order of an hour of calculation on this mesh.

Remember the hierarchy : Phase 1 gives the thrust and the order of magnitude, Phase 2 gives the torque sign and the blade-passage effects, and only a long transient gives a trustworthy average torque.

A ducted turbine — bulb, Kaplan, penstock — falls under a different configuration : the closed duct, covered in tutorial no. 15, which applies to any confined axial machine, whether it captures or propels.

The collection of twenty CFD tutorials

« Previous: Marine propeller and cavitation  |  Next: Fan in a closed duct »

  1. First CFD propeller simulation
  2. Reading the OpenFOAM case folder
  3. Choosing the mesh preset
  4. The MRF zone and Phase 1
  5. Phase 2 with sliding mesh
  6. Comparing BEM and CFD
  7. Reading the convergence of a run
  8. Turbulence models
  9. Boundary layer and y+
  10. Reading a pressure map
  11. Where the forces come from
  12. Checking an airfoil polar
  13. Marine propeller and cavitation
  14. Wind turbine and tidal turbine (you are here)
  15. Fan in a closed duct
  16. Aircraft propeller, cruise and static thrust
  17. The optimisation loop
  18. Calibrating on a reference
  19. From the hull to the propeller
  20. The deliverable calculation file

This series accompanies the Heliciel design tutorials, which cover the BEM part: blade design, choice of rotation speed, performance curves. CFD comes after them, to verify and to see.