CFD tutorial no. 3 — Aerodynamic CFD meshing
Three levels on the same geometry

This aerodynamic CFD meshing tutorial meshes the same wing three times, and compares what each step delivers.

Start with tutorial no. 1

Aerodynamic CFD meshing: tutorial for choosing the preset

CFD tutorial no. 3 of 20. The steps described here are those of the HELICIEL CFD Tool window, opened from Heliciel: they assume the PRO CFD/BEM upgrade is active. The preset values quoted are those of the catalogue shipped with the software; the numerical results depend on your geometry and your operating point, and should be read from the software.

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.

  1. What a preset carries
  2. Pass 1: Wing Level 1
  3. Pass 2: Wing Level 2
  4. Pass 3: Wing Level 3
  5. Reading the quality report
  6. 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 :

For wings, the drop-down list offers five entries. Each carries its level number and, in parentheses, the quality it targets :

What the list showsSurfaceEdgesBackgroundLayersEstimated y+What it's for
Wing Level 1 (Good)3412×10×10550 to 70Feasibility test : does the geometry go through ?
Wing Level 2 (Good+)4516×14×14735 to 50The everyday run : the pressure gradient becomes readable
Wing Level 3 (Very good)5720×18×181015 to 25Precise leading edge, visible separation
Wing Level 4 (Excellent)5720×18×181210 to 15Publication quality
Wing Level 5 (y+1 TEST)4516×14×14141 targeted, not measuredMeasurement 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.

Mesh panel of the Parameters tab with the wing preset drop-down list
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.

comparison of the leading edge meshed at Level 1 and Level 3 on the same wing
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 :

PassCellsMeshingCore·hoursIterationsCLCDLift-to-drag ratioSkewness max
Level 151 8591 min 100,2153040,8860,072112,297,45
Level 2198 1753 min 230,6212330,9010,064314,026,58
Level 3810 78428 min 305,2281940,9060,060115,099,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.

Cp pressure map on the wing at Level 1 and Level 3 side by side
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 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.

overlay of problem cells highlighted in red on a blade in the 3D viewer
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 :

  1. Always start with the lowest level. It costs nothing and it catches geometry errors, which are the most common ones ;
  2. 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 ;
  3. 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 »

  1. First CFD propeller simulation
  2. Reading the OpenFOAM case folder
  3. Choosing the mesh preset (you are here)
  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
  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 side: blade design, choosing the rotation speed, performance curves. CFD comes after them, to verify and to see.