This aerodynamic CFD meshing tutorial meshes the same wing three times, and compares what each step delivers.
Aerodynamic CFD meshing: tutorial for choosing the preset
The question comes up in every study : which aerodynamic CFD meshing preset should you choose ? Rule-of-thumb answers (« as fine as possible ») are useless : a finer mesh costs time, memory, and doesn't always improve what you actually care about. The only way to decide is to measure it on your own geometry.
The experiment : we mesh the same wing three times, at the Wing Level 1, Wing Level 2 and Wing Level 3 presets, and each time we note the number of cells, the meshing time, and the shape of the leading edge. A wing is used rather than a propeller because the comparison reads more clearly here ; the approach holds identically for a rotor. The figures given below were recorded on the wing model shipped with Heliciel (modeles\aile.hlc, 10 m span, 52,35 m/s in air at 1,012 kg/m3), meshed on eleven processes : so you can reproduce exactly the same experiment.
- Prerequisites : a finished wing in Heliciel, PRO CFD/BEM upgrade active ;
- Duration : about one hour for the three meshes and reading their results ;
- What you get out of it : the minimum level that your geometry requires, and a quantified argument for not going any higher.
- Tutorial outline:
- What a preset carries
- Pass 1: Wing Level 1
- Pass 2: Wing Level 2
- Pass 3: Wing Level 3
- Reading the quality report
- The rule you take away from it
1: What a preset carries
An aerodynamic CFD meshing preset is not a single slider. Each catalogue entry sets simultaneously :
- the surface refinement level, which governs the size of the cells hugging the airfoil skin ;
- the sharp-edge level, applied to the leading edge and trailing edge ;
- the background grid, in number of cells along X, Y and Z ;
- the number of boundary layers and their expansion ratio.
For wings, the drop-down list offers five entries. Each carries its level number and, in parentheses, the quality it targets :
| What the list shows | Surface | Edges | Background | Layers | Estimated y+ | What it's for |
|---|---|---|---|---|---|---|
| Wing Level 1 (Good) | 3 | 4 | 12×10×10 | 5 | 50 to 70 | Feasibility test : does the geometry go through ? |
| Wing Level 2 (Good+) | 4 | 5 | 16×14×14 | 7 | 35 to 50 | The everyday run : the pressure gradient becomes readable |
| Wing Level 3 (Very good) | 5 | 7 | 20×18×18 | 10 | 15 to 25 | Precise leading edge, visible separation |
| Wing Level 4 (Excellent) | 5 | 7 | 20×18×18 | 12 | 10 to 15 | Publication quality |
| Wing Level 5 (y+1 TEST) | 4 | 5 | 16×14×14 | 14 | 1 targeted, not measured | Measurement instrument, not a production level |
Two remarks on this list. First, Level 3 and Level 4 share the same surface refinement : what separates them is the boundary layers, more numerous and finer. Moving from one to the other doesn't buy you geometry, it buys you skin.
Second, Level 5 is not a step above Level 4, despite its rank in the list. Its geometry is exactly that of Level 2 — same background, same surface, same edges — and only its boundary layers change. It answers a single question : can the mesher produce a first cell fine enough to target a y+ of 1 ? As long as no transition model is wired into the chain, a y+ of 1 delivers nothing more than a y+ of 20, since OpenFOAM's wall functions are insensitive to it. It's an instrument, not a quality level : leave it aside for a production run.

The Parameters tab of a wing case : the Mesh panel with its list and its estimate, the OpenFOAM Solver panel reduced to its preset. Five entries for a wing, eight for a free propeller, four in a closed duct.
2: Pass 1 — Wing Level 1
Select Wing Level 1 (Good) from the list, then Mesh. On the test wing : 51 859 cells in 1 min 10, i.e. 0,215 core-hours. The solver runs right after and converges in 304 iterations.
Show menu : uncheck 3D model, check CFD mesh (Cyan), and zoom in on the leading edge with the scroll wheel. You see cells that are clearly larger than the leading-edge radius. The airfoil is represented, but its nose is rounded off by the discretization.
This level has one precise use, and only one : checking that the geometry goes through. Is the STL closed ? Is the domain correctly sized ? Is symmetry applied ? One minute is enough to answer. It's the smoke test, not a run.

The same leading edge, meshed at Level 1 (left) and Level 3 (right): what refinement buys you
3: Pass 2 — Wing Level 2
Switch the list back to Wing Level 2 (Good+), then Delete mesh and Mesh again — the preset list stays locked as long as a mesh exists. Result : 198 175 cells in 3 min 23, 0,621 core-hours, convergence in 233 iterations. Four times as many cells as pass 1 for three times the time.
This is the everyday working level for a wing profile. The pressure gradient at the leading edge becomes readable, the seven boundary layers give a y+ in the thirties, and the steady-state run converges without difficulty with the Standard (Wing) solver preset, the one the interface offers by default on a wing case.
A word on the Symmetry checkbox in the Parameters tab : for a wing, it only calculates a half-span and halves the mesh. The loaded model is then a half-wing, and the span read by the solver is already correct. On the other hand, checking symmetry fully locks the Insert tab, because an inserted object could fall inside the removed half of the domain — snappyHexMesh would then silently ignore it, with no error and no effect.
4: Pass 3 — Wing Level 3
Third pass at Wing Level 3 (Very good). Result : 810 784 cells in 28 min 30, 5,228 core-hours, followed by 5 min 09 of solver time and convergence in 194 iterations. Note in passing that the estimate shown in the Mesh panel announced 3,98 million cells and 1 h 06 : it's an order of magnitude, not a promise — on pass 1, by contrast, it underestimated the cell count by a factor of 4,5.
Go back to the leading edge and compare with the first pass : the curvature is now described by several cells, and the ten boundary layers at an expansion ratio of 1.08 stack a thin, regular sheath over the whole skin. This is the level at which you start to see an incipient separation as something other than a caricature.
Here are the three passes side by side, exactly as they came out :
| Pass | Cells | Meshing | Core·hours | Iterations | CL | CD | Lift-to-drag ratio | Skewness max |
|---|---|---|---|---|---|---|---|---|
| Level 1 | 51 859 | 1 min 10 | 0,215 | 304 | 0,886 | 0,0721 | 12,29 | 7,45 |
| Level 2 | 198 175 | 3 min 23 | 0,621 | 233 | 0,901 | 0,0643 | 14,02 | 6,58 |
| Level 3 | 810 784 | 28 min 30 | 5,228 | 194 | 0,906 | 0,0601 | 15,09 | 9,71 |
The cost rises faster than the resolution. Between pass 2 and pass 3, the cell count is multiplied by 4,1 — but the meshing time by 8,4, and so is the core-hour cost. A mesh twice as fine never costs twice as much.
Now the question that decides it : not « does it look nicer ? » but « has the quantity I'm after actually changed ? ». And the answer isn't the same depending on the quantity. Lift gains 1,7 % from pass 1 to pass 2, then only 0,57 % from pass 2 to pass 3 : it is converged as early as Level 2. Drag, on the other hand, still loses 6,5 % between the last two passes after having lost 10,8 % : it is not converged, even at Level 3. This is the rule in CFD, and it's worth remembering : lift, carried by the pressure distribution, settles early ; drag, which lives in the boundary layer, demands far more resolution. If you're sizing on lift, stop at Level 2 ; if you're after a drag figure, Level 3 isn't even enough.
One last surprise, in the final column : refining degraded the mesh quality. The maximum skewness improves from pass 1 to pass 2 (7,45 then 6,58), then climbs back up to 9,71 at Level 3. Faces with degenerate decomposition follow the same trend — 138, then 477, then 809 — and Level 3 adds five cells with a determinant below 0,001. By squeezing cells onto a twisted geometry, the mesher produces more strained shapes. A finer level is therefore not automatically a healthier mesh, and that's one more reason to read the quality report rather than trust the preset's number.

The same wing at Level 1 and Level 3 : what refinement buys you on the pressure map, where the table above tells you what it costs
5: Reading the quality report
After each meshing run, the verification tool writes its report to the Logs tab. Three lines are worth your attention :
- the number of cells, which governs memory and computation time ;
- the maximum non-orthogonality and the skewness : cells that are too distorted make the solver diverge. There's nothing for you to fix yourself — the non-orthogonal correctors are part of what the solver preset already sets up — but a report flagging a lot of skewed cells tells you the real fix lies on the meshing side ;
- the status of each boundary, line by line.
The viewer also has a diagnostic tool : Show > Highlight problem cells menu. It colours very small-volume cells in red — the ones that, on a blade, sit at sharp edges and choke Phase 2's time step. A mesh can pass the overall check and still contain a few dozen of these cells ; seeing them on screen beats inferring them from a divergence three hours later.

Show > Highlight problem cells: the very small-volume cells, right where they are
6: The rule you take away from it
Three lessons from this experiment, valid beyond the test wing :
- Always start with the lowest level. It costs nothing and it catches geometry errors, which are the most common ones ;
- Go up one notch as long as the result keeps moving, stop once it doesn't. That's mesh convergence, and it's the only defensible argument for justifying a level ;
- For a propeller, be wary of blade thickness resolution. A blade's thickness is 2 to 5 % of its chord. On a 300 mm-diameter rotor, that's two to three millimetres, while the background cell is a hundred and fifty. At the Express and Trend levels, the blade simply isn't resolved : those levels give you a trend, not a force. The quantitative threshold sits at Free Level 5 — Study.
Next in the series : boundary layer and y+, which extends this tutorial directly, then the MRF zone, which explains what a rotor mesh contains beyond a wing mesh.
The collection of twenty CFD tutorials
« Previous: Reading the OpenFOAM case folder | Next: The MRF zone and Phase 1 »
- First CFD propeller simulation
- Reading the OpenFOAM case folder
- Choosing the mesh preset (you are here)
- 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
- 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 side: blade design, choosing the 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