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.
Wind turbine CFD calculation: energy-capture rotor tutorial
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.
- Prerequisites : a wind or tidal turbine rotor designed in Heliciel ;
- Duration of the case shown here : 7 min 20 s of meshing, 1 min 04 s for Phase 1, 28 min 58 s for Phase 2 ;
- What you get out of it : knowing whether your rotor captures what it should, and where what it doesn't capture goes.
- Tutorial outline:
- The rotor studied, and what the BEM says about it
- The direction of things on an energy-capture rotor
- Creating the case and meshing
- What the preset changes: three meshes on the same rotor
- Phase 1 MRF: the first result
- Phase 2: the sliding mesh
- Viewing the flow: pressures, flow lines, cuts, iso-surfaces
- Placing the result against the Betz limit
- 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 diameter | 4,000 m (hub ∅ 620 mm) |
| Number of blades | 3 |
| Wind | 5,5 m/s (19,8 km/h) |
| Rotation speed | 166,8 rpm — TSR 6,35, J = 0,495 |
| Fluid | air, ρ = 1,143 kg/m³, 20 °C |
| Blade tip | 35,4 m/s — Mach 0,105, Re 6,3·105 |

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 power | 626 W |
| Kinetic energy flux through the disc | 1 166 W |
| Betz limit | 691 W (16/27 of the flux) |
| Power coefficient Cp | 0,537 — i.e. 91 % of 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.

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 :
| Preset | Background | Surface refin. | Cells/chord | Layers | Ph.2 revolutions | Cost |
|---|---|---|---|---|---|---|
| Level 1 — Express | 6×6×6 | 3-4 | 1,5 | 0 | 0,1 | ×1 |
| Level 2 — Enhanced Express | 8×8×8 | 4-5 | 3,5 | 1 | 0,1 | ×1,5 |
| Level 3 — Balanced | 8×8×8 | 4-5 | 7 | 2 | 0,25 | ×3 |
| Level 4 — Trend | 8×6×6 | 5-6 | 9 | 2 | 0,3 | ×5 |
| Level 5 — Study | 10×8×8 | 6-7 | 12 | 3 | 0,5 | ×11 |
| Level 6 — Fine study | 12×16×16 | 7-8 | 48 | 6 | 0,75 | ×29 |
| Level 7 — Production | 12×16×16 | 8-9 | 96 | 10 | 1 | ×55 |
| Level 8 — Reference | 16×20×20 | 9-10 | 240 | 20 | 1,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.
| Preset | Cells | Meshing | Phase 1 | CFD thrust | vs BEM | CFD torque | vs BEM |
|---|---|---|---|---|---|---|---|
| Level 1 | 20 885 | 1 min 00 | 28 s | 99,0 N | −57 % | −2,16 N·m | −94 % (sign reversed) |
| Level 3 | 83 798 | 4 min 24 | 53 s | 213,8 N | −7,6 % | 16,85 N·m | −53 % |
| Level 5 | 235 460 | 7 min 20 | 1 min 04 | 223,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 :

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.

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.

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 :
- Level 1 doesn't just say "less accurate," it says wrong. The torque comes out negative : with 1,5 cells per chord and no boundary layer, the blade practically doesn't exist for the solver, and the calculation describes a rotor that would consume energy instead of producing it. An Express preset is for checking that a chain runs, never for drawing conclusions.
- Thrust converges fast, torque slowly. This is the general rule : thrust is carried by the pressure distribution, which a few cells per chord are enough to approximate ; torque depends on a difference between nearly opposite forces and on the boundary layer, hence on the fineness near the wall.
- Refinement doesn't redeem everything. Even at Level 5, the CFD torque remains a little over half the BEM torque. This is not a gap that closes by moving up a notch : on this same rotor, earlier tests at 2,4 then 14,8 million cells did not bring the torque closer to the BEM value. A gap this persistent is addressed by looking at the boundary layer and y+ (tutorial no. 9), the turbulence model (no. 8) and the profile polars (no. 12), not by adding cells.
5: Phase 1 MRF: the first result
Phase 1 solves the flow in MRF — Multiple 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 :

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 :
- the moment about the rotation axis : on an energy-capture rotor it is positive — the machine produces. Multiplied by the angular velocity, it gives the mechanical power at the shaft ;
- the axial force, which here is a thrust endured : it is the load that the mast, the bearings and the structure must absorb. It is far from negligible, and it often sizes the structure as much as the torque sizes the generator.
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 :
- forces averaged over complete blade passages instead of a frozen position ;
- the fluctuation amplitude of the loads at blade passage — the RMS — which feeds the fatigue and noise proxy ;
- a wake that actually develops, with its blade-tip vortices.
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 time | 28 min 58 s across 11 processes |
| Simulated time | 0,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 fluctuation | 0,52 N on thrust (0,23 %), 0,19 N·m on torque (0,94 %) |
| Blade passage frequency | 8,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.

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.

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.

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 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 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.

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 : 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 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.

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 :
- against the theoretical limit, which tells you what the machine leaves on the table ;
- against the BEM result of the same project, which tells you whether the two methods agree — the approach of tutorial no. 6.
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 diameter | 16,000 m (hub ∅ 2 720 mm) |
| Number of blades | 2 |
| Current | 2,4 m/s (4,7 knots) |
| Rotation speed | 18,2 rpm — TSR 6,35, J = 0,495 |
| Fluid | seawater, ρ = 1 028 kg/m³, 10 °C |
| Shaft immersion | 10 m — sets the reference pressure |
| Blade tip | 15,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 power | 779,9 kW |
| Kinetic energy flux | 1 387 kW |
| Betz limit | 822 kW (16/27 of the flux) |
| Power coefficient Cp | 0,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.
| Preset | Cells | Thrust | vs BEM | Torque | vs BEM |
|---|---|---|---|---|---|
| Level 1 | 21 610 | −334 016 N | −49,7 % | −420 505 N·m | +2,5 % |
| Level 3 | 69 317 | −443 091 N | −33,9 % | −82 801 N·m | −80,2 % |
| Level 5 | 148 514 | −450 717 N | −31,3 % | −11 040 N·m | −97,6 % |

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.

Level 3, 69 317 cells : the skin becomes smooth, the root-to-tip gradient appears and the blade-tip suction takes shape.

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

The same machine in Phase 2, sliding mesh : the rotor actually turns, and the torque regains its sign.
| Level 5 | Thrust | vs BEM | Torque | vs 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 »
- First CFD propeller simulation
- Reading the OpenFOAM case folder
- Choosing the mesh preset
- The MRF zone and Phase 1
- Phase 2 with sliding mesh
- Comparing BEM and CFD
- Reading the convergence of a run
- Turbulence models
- Boundary layer and y+
- Reading a pressure map
- Where the forces come from
- Checking an airfoil polar
- Marine propeller and cavitation
- Wind turbine and tidal turbine (you are here)
- Fan in a closed duct
- Aircraft propeller, cruise and static thrust
- The optimisation loop
- Calibrating on a reference
- From the hull to the propeller
- 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.

Global site map
Mecaflux
Tutorials Mecaflux Pro3D
Tutorials Heliciel
Mecaflux Store
Compare software functions
Quotes, Orders, Payment Methods
project technical studies