Choosing between k-omega SST and k-epsilon depends on how you treat the wall. Compare the two models, see which y+ each needs, and calculate the first cell height.

DEEB-FLOW illustration of velocity streamlines in an aerodynamics case
Concept illustration from the DEEB-FLOW case library. It is not a result from this article.

The model choice is a choice about the wall

Ask a group of CFD engineers which turbulence model to use and most will say k-ω SST. Ask what y+ their last mesh had at the wall and the answers come more slowly.

The second question decides whether the first answer was any good. Choosing between k-ω SST and k-ε is largely a choice about how you treat the wall, and a good model on the wrong near-wall mesh gives a worse answer than a simpler model used properly. This article explains what each model does well, which y+ each needs, and how to calculate the first cell height before you mesh.

What the two models are

Both are two-equation models. Both add a turbulent viscosity to the flow equations and calculate it from two transported quantities. They differ in the second quantity.

  • k-ε transports the turbulent kinetic energy k and its dissipation rate ε. It dates from the early 1970s. It is well behaved in the bulk of a flow, insensitive to what you assume about turbulence at the inlet, and cheap. Its weakness is the wall. The standard form cannot be integrated through the viscous sublayer, so it relies on wall functions to bridge the gap. It also tends to predict separation too late and too small under adverse pressure gradients, and it overproduces turbulence at stagnation points.
  • k-ω transports k and the specific dissipation rate ω. It can be integrated down to the wall and handles adverse pressure gradients better. Its weakness is the opposite one. In its original form, the solution depends on the free-stream value of ω you happen to set.
  • k-ω SST, published by Menter in 1994, uses k-ω near the wall and blends to a k-ε formulation away from it, taking the stronger half of each. It also limits the turbulent shear stress in adverse pressure gradients, which improves its prediction of separation.

That history explains why SST became the default, and a default still has to be checked against the case in front of you.

What is y+ and why does it matter?

y+ is a dimensionless distance from the wall.

y+ = y × u_τ / ν

Here y is the distance from the wall to the centre of the first cell, u_τ is the friction velocity, which is the square root of the wall shear stress divided by the density, and ν is the kinematic viscosity. The value tells you which part of the boundary layer your first cell sits in.

Regiony+What happens there
Viscous sublayery+ < 5Viscosity dominates and velocity is linear in distance
Buffer layer5 < y+ < 30Neither description fits well
Log-law region30 < y+ < 300Turbulence dominates and velocity follows the logarithmic law

That leaves two strategies.

  • Resolve the boundary layer. Put the first cell in the viscous sublayer, at y+ of about 1, with a dozen or more cells across the boundary layer. The model is integrated to the wall. This is what k-ω SST was built for.
  • Use wall functions. Put the first cell in the log-law region, at y+ of 30 or above, and let an algebraic formula supply the wall shear stress. This is how standard k-ε is meant to be used.

The place to avoid, with standard wall functions, is in between. A first cell at y+ of 10 sits in the buffer layer, where the assumptions of the formula do not hold. Many current solvers offer blended or automatic wall treatments that reduce this penalty without removing it.

Working out the first cell height

Do this before meshing. It takes five minutes and saves a remesh. As a worked example, take air at 20 m/s over a surface 1 m long, with a density of 1.2 kg/m³ and a kinematic viscosity of 1.5 × 10⁻⁵ m²/s. The skin friction comes from a flat-plate correlation.

Re = U × L / ν = 20 × 1 / (1.5 × 10⁻⁵) = 1.33 × 10⁶C_f ≈ 0.058 × Re^(-0.2) = 0.00346τ_w = ½ × ρ × U² × C_f = 0.5 × 1.2 × 400 × 0.00346 = 0.83 Pau_τ = √(τ_w / ρ) = √(0.83 / 1.2) = 0.83 m/sy = y+ × ν / u_τy+ = 1: y = 1.8 × 10⁻⁵ m = 0.018 mmy+ = 30: y = 5.4 × 10⁻⁴ m = 0.54 mm

That y is the distance to the cell centre. In a cell-centred solver the first cell is twice as tall, about 0.036 mm to resolve the wall and about 1.1 mm for wall functions. A factor of thirty in first cell height is a large difference in cell count and in the aspect ratio of those cells. It is the real cost of the choice.

Two cautions apply. The flat-plate correlation is an estimate, so check the y+ the solver reports after the first run and adjust. And y+ varies over a surface. It falls towards zero at separation and reattachment points, which is exactly where wall functions fail.

Which model for which job?

SituationI would start withWall treatment
External aerodynamics, lift and dragk-ω SSTResolved, y+ about 1
Separation or adverse pressure gradients, as in diffusers, bends and bluff bodiesk-ω SSTResolved
Wall heat transferk-ω SSTResolved, because heat transfer is decided in the sublayer
Large internal flow, mostly attached, limited cell budgetRealizable k-εWall functions, y+ above 30
Free jets and mixing layers far from wallsk-ε familyNot critical
Strong swirl or strongly curved streamlinesConsider a Reynolds stress modelDepends on the model
Transition from laminar to turbulent flow mattersA transition model based on SSTResolved, y+ about 1

If you cannot afford to resolve the wall on a large industrial geometry, a k-ε model with wall functions used correctly is a defensible choice. An SST model on a mesh with y+ of 60 everywhere is running on its wall functions and has lost much of the reason you chose it.

What neither model can do

Both assume a single turbulent viscosity that is the same in every direction. That fails in strongly swirling flow, in secondary flows in non-circular ducts and in flows with strong streamline curvature.

Both average the turbulence away. If your question is about unsteady loads, noise or mixing driven by large eddies, a RANS model answers a different question from the one you asked, and scale-resolving methods are the tool.

Both were calibrated on simple flows. Far from those flows, treat the result as an estimate and check it against data, or at least against a second model.

Common mistakes

  • Choosing SST by habit and never checking y+. The model then runs on a wall treatment you did not choose.
  • Refining the wall mesh while using standard wall functions. The first cell moves into the buffer layer and the result gets worse.
  • Judging y+ by its average. Look at the distribution on the surfaces that matter.
  • Comparing two models on two different meshes. The difference then belongs to the mesh as much as to the model.
  • Expecting the turbulence model to fix a mesh problem. No model compensates for cells that are too coarse or too distorted.

The short version

Decide how you will treat the wall, which is a decision about cell budget and about whether separation or heat transfer matters. That decision mostly picks the model for you. Then compute the first cell height, mesh to it, and check the y+ you actually got.

Sources & further reading

Related service

CFD & flow

Compare geometry and operating conditions before committing to a design.

Explore services
All articles