Reference Guide

kOmegaSST vs kEpsilon in OpenFOAM: How to Choose

Picking the wrong turbulence model doesn't just affect accuracy — it can cause divergence, wrong wall shear stress, and badly predicted separation. This guide explains when to use kOmegaSST versus kEpsilon versus Spalart-Allmaras, how to set correct inlet values for each, what y+ your mesh needs, and how to configure the model in constant/momentumTransport (or turbulenceProperties in older OpenFOAM versions).

By CFDpilot · Updated April 30, 2026

1. The decision framework

All three main RANS models are two-equation models (or one-equation for SA), but they behave very differently near walls and in adverse pressure gradients:

2. kOmegaSST configuration

// constant/momentumTransport (OpenFOAM v2106+)
simulationType  RAS;

RAS
{
    model           kOmegaSST;
    turbulence      on;
    printCoeffs     on;
}

For older versions the file is constant/turbulenceProperties with identical syntax.

Inlet boundary conditions for kOmegaSST

You need initial values for k and omega. Compute them from turbulence intensity I (typically 0.01–0.10) and a turbulence length scale L:

// U_ref = 20 m/s, I = 0.05, L = 0.1 m
// k = 1.5 * (U * I)^2 = 1.5 * (20 * 0.05)^2 = 1.5 m²/s²
// omega = k^0.5 / (C_mu^0.25 * L) = 1.225 / (0.3 * 0.1) ≈ 40.8 1/s

// 0/k — inlet
inlet
{
    type    fixedValue;
    value   uniform 1.5;
}

// 0/omega — inlet
inlet
{
    type    fixedValue;
    value   uniform 40.8;
}

// 0/nut — inlet (typically 0 or small value)
inlet
{
    type    calculated;
    value   uniform 0;
}

Wall treatment for kOmegaSST

kOmegaSST has a blended near-wall formulation — it can run in both low-Re (y+ ≈ 1) and high-Re (y+ 30–300) modes. In low-Re mode no wall functions are needed for k and omega; set k = 0 at the wall and use omegaWallFunction for omega (it handles both regimes internally).

// 0/k — walls (low-Re resolved BL)
walls
{
    type    fixedValue;
    value   uniform 0;
}

// 0/omega — walls (works for both y+ regimes)
walls
{
    type    omegaWallFunction;
    value   uniform 1;
}

// 0/nut — walls
walls
{
    type    nutkWallFunction;
    value   uniform 0;
}

3. kOmegaSST limitations — high angle of attack and post-stall flows

kOmegaSST is the right default for attached and mildly separated flows, but it has a well-documented failure mode at high angles of attack: it over-predicts attached flow and systematically delays or suppresses stall. Understanding why matters more than just knowing to switch models.

Why RANS over-predicts attachment

All RANS models compute turbulent stresses via the Boussinesq hypothesis: turbulent stresses are proportional to mean strain rate via a scalar eddy viscosity. In strongly separated regions, the eddy viscosity grows large — it artificially diffuses momentum and keeps the boundary layer attached longer than it physically is. The kOmegaSST strain-vorticity limiter (the F2 blending function) reduces this effect compared to plain kOmega, but not enough to capture massively separated flows correctly.

The second problem is that post-stall is inherently unsteady — vortex shedding, intermittent reattachment, dynamic stall cycles. Steady-state RANS cannot capture this by construction. Even a perfect turbulence model would fail in steady mode above stall.

Practical decision ladder for external aerodynamics

Mesh requirements at high AoA

At high angles of attack, the adverse pressure gradient and separation point move upstream and the wake grows substantially. Two regions become critical:

A skewness above ~10–12 in the curved boundary layer region degrades gradient accuracy precisely where the pressure gradient is steepest. If your checkMesh reports maximum skewness above 10 near the aerofoil surface, fix it before interpreting high-AoA results.

4. kEpsilon (realizable) configuration

// constant/momentumTransport
simulationType  RAS;

RAS
{
    model           realizableKE; // or: kEpsilon for standard
    turbulence      on;
    printCoeffs     on;
}

Inlet values for kEpsilon

// U_ref = 20 m/s, I = 0.05, L = 0.1 m
// k = 1.5 m²/s² (same formula)
// epsilon = C_mu^0.75 * k^1.5 / L = 0.09^0.75 * 1.5^1.5 / 0.1 ≈ 17.1 m²/s³

// 0/k — inlet
inlet
{
    type    fixedValue;
    value   uniform 1.5;
}

// 0/epsilon — inlet
inlet
{
    type    fixedValue;
    value   uniform 17.1;
}

Wall treatment for kEpsilon

kEpsilon always requires wall functions. Never use y+ ≈ 1 with kEpsilon — the model equations are not valid in the viscous sublayer. Target y+ between 30 and 300. Wall patches need epsilonWallFunction and kqRWallFunction:

// 0/epsilon — walls
walls
{
    type    epsilonWallFunction;
    value   uniform 0;
}

// 0/k — walls
walls
{
    type    kqRWallFunction;
    value   uniform 0;
}

5. Spalart-Allmaras configuration

SA uses a single transport equation for the modified turbulent viscosity nuTilda. It is very robust and ideal when you want a reliable converged solution without worrying about y+ requirements (it works across both y+ regimes).

// constant/momentumTransport
RAS
{
    model       SpalartAllmaras;
    turbulence  on;
}

// 0/nuTilda — inlet (typical: 3-5 * nu)
// nu_air = 1.5e-5 m²/s
inlet
{
    type    fixedValue;
    value   uniform 4.5e-5;
}

// 0/nuTilda — walls
walls
{
    type    fixedValue;
    value   uniform 0;
}

6. LES turbulence models

Large Eddy Simulation resolves large eddies directly and models only the sub-grid scale (SGS) motions. LES is far more expensive than RANS but necessary for accurately capturing unsteady flow structures, noise generation, and large-scale separation.

Smagorinsky model

The classic SGS model. Simple and robust, but slightly overdissipative. Works well for isotropic turbulence and basic shear flows.

// constant/momentumTransport
simulationType  LES;

LES
{
    model       Smagorinsky;
    turbulence  on;

    Smagorinsky
    {
        Ck  0.094;
        Ce  1.048;
    }
}

WALE model

Wall-Adapting Local Eddy-viscosity (WALE) gives zero SGS viscosity in laminar shear regions and near solid walls, making it more accurate for wall-bounded flows without requiring van Driest damping functions.

// constant/momentumTransport
LES
{
    model       WALE;
    turbulence  on;

    WALE
    {
        Ck  0.094;
        Ce  1.048;
        Cw  0.325;
    }
}

For LES, boundary conditions are typically the same as RANS for the mean quantities. The SGS model fields (nut, k) are usually initialised to zero and develop from the resolved flow field.

7. DES and SAS — hybrid RANS/LES for separated flows

Detached Eddy Simulation (DES) and Scale-Adaptive Simulation (SAS) are hybrid approaches that apply RANS near solid walls and switch to a LES-like mode in detached regions. They are the practical solution for post-stall aerodynamics, bluff body wakes, and any case where full LES is too expensive but steady RANS is known to be wrong.

kOmegaSST-DES

DES uses the RANS length scale (ω-based) near walls and replaces it with the local mesh size in separated zones, triggering the Smagorinsky SGS model implicitly. The transition between RANS and LES regions is controlled automatically by comparing the RANS length scale to the local cell size Δ.

// constant/momentumTransport
simulationType  LES;  // DES is declared under LES in OpenFOAM

LES
{
    model       kOmegaSSTDES;
    turbulence  on;
    printCoeffs on;
}

Boundary conditions for k, omega, and nut are identical to kOmegaSST — DES does not change the near-wall treatment. DES must be run as transient (PIMPLE). A Courant number below 1 is the minimum; target Co < 0.5 in the detached region for accurate eddy resolution.

Mesh requirement: the wake and separation zone need a mesh fine enough to resolve the dominant eddies. A good rule of thumb is that the cells in the separated region should be roughly isotropic (aspect ratio near 1). Highly stretched wake cells degrade DES accuracy significantly.

kOmegaSST-SAS (Scale-Adaptive Simulation)

SAS modifies the kOmegaSST equations to include a von Kármán length scale term that makes the model self-adapt to resolved flow structures. It is less aggressive than DES — it activates LES-like behaviour only in highly unsteady regions — but requires no special mesh treatment at the RANS/LES interface.

// constant/momentumTransport
simulationType  RAS;  // SAS is declared under RAS

RAS
{
    model       kOmegaSSTSAS;
    turbulence  on;
}

SAS is a good intermediate step: cheaper to set up than DES (no LES mesh requirements in the separation zone), and more physically consistent than URANS for strongly unsteady separated flows. If SAS gives unsteady results that match experiment reasonably well, there is often no need to go to full DES.

When to use which

8. k-kl-omega — transition-sensitive model

The k-kl-omega model (also called the Walters-Cokljat transition model) predicts laminar-to-turbulent transition. It solves three transport equations: turbulent kinetic energy k_t, laminar kinetic energy k_l, and specific dissipation rate omega. It is appropriate when boundary layer transition location significantly affects the flow or drag.

// constant/momentumTransport
RAS
{
    model       kkLOmega;
    turbulence  on;
}

// 0/kt — inlet
inlet
{
    type    fixedValue;
    value   uniform 0.001;  // small value; transition is predicted internally
}

// 0/kl — inlet
inlet
{
    type    fixedValue;
    value   uniform 0;
}

This model requires a well-resolved boundary layer mesh (y+ ≈ 1) and is significantly more sensitive to initial conditions than kOmegaSST. Transition models are not recommended unless the transition location is known to substantially affect your quantity of interest.

9. γ-Reθ (gammaReTheta) transition model

The γ-Reθ model (Langtry-Menter, also called SST transition model) is the standard approach for flows where boundary layer transition drives the result — typically Re < 5×10⁵. At these Reynolds numbers, a laminar separation bubble (LSB) forms on the suction side of an aerofoil: the laminar boundary layer separates, transitions to turbulent, and either reattaches (forming the LSB) or bursts into full separation. The stall angle depends almost entirely on whether the bubble bursts. Neither kOmegaSST nor k-kl-omega models this mechanism reliably.

How it works

Two additional transport equations are solved on top of kOmegaSST:

The transition onset is driven by the free-stream turbulence intensity (Tu) and a pressure gradient parameter. Getting Tu right at the inlet is therefore critical — it directly sets the predicted transition location.

Configuration

// constant/momentumTransport
simulationType  RAS;

RAS
{
    model       gammaReThetatSST;
    turbulence  on;
    printCoeffs on;
}

Four fields are required in 0/:

// 0/gamma — intermittency
internalField   uniform 1;  // 1 = turbulent initial field (let it develop)
inlet
{
    type    fixedValue;
    value   uniform 1;
}
walls
{
    type    zeroGradient;
}

// 0/ReThetat — transition onset Re_theta
internalField   uniform 100;  // rough estimate; model will compute correct value
inlet
{
    type    fixedValue;
    value   uniform 100;
}
walls
{
    type    zeroGradient;
}

// k and omega — same as kOmegaSST, but k at inlet must reflect true Tu
// Tu = 0.1% → k = 1.5 * (U * 0.001)^2

Critical setup points

Known limitations

The Langtry-Menter correlation was calibrated on flat-plate and NACA profile data at moderate Re. It can under-predict the stall angle when the LSB is at the leading edge (short bubble) because the reattachment length is sensitive to the local pressure gradient in ways the correlation doesn't fully capture. If you observe early stall with γ-Reθ despite correct Tu, check the mesh resolution at the leading edge (at least 5–6 cells across the bubble region is a starting point) and consider running a sensitivity study on the inlet Tu.

10. Turbulence model coefficients — when to adjust

OpenFOAM uses standard model coefficients by default. In most cases these should not be changed. However, for specific applications, validated coefficient adjustments exist:

// Adjusting model coefficients in constant/momentumTransport
RAS
{
    model       kEpsilon;
    turbulence  on;

    kEpsilonCoeffs
    {
        Cmu         0.033;
        C1          1.176;
        C2          1.92;
        sigmaEps    1.3;
    }
}

11. Quick selection summary

Get the right turbulence model for your case — free

Upload your case and CFDpilot recommends the correct model, inlet values, and wall treatment based on your flow regime.

Check my setup →
Official documentation

Frequently Asked Questions

When should I use kOmegaSST instead of kEpsilon in OpenFOAM?

Use kOmegaSST whenever you have wall-bounded flows, adverse pressure gradients, or mild separation — external aerodynamics, aerofoils, or internal duct flows where wall shear stress accuracy matters. Use kEpsilon (realizable) for free shear flows (jets, wakes, mixing layers) where wall accuracy is less critical.

What y+ is required for kOmegaSST in OpenFOAM?

kOmegaSST has a blended near-wall formulation. For full boundary layer resolution (low-Re mode), target y+ approximately 1 with at least 10 cells across the boundary layer. For wall function mode (high-Re), target y+ between 30 and 300. Avoid y+ values between 5 and 30 — the buffer layer where both approaches are inaccurate.

How do I set the turbulence model file in OpenFOAM v2106 vs older versions?

In OpenFOAM v2106 and later, use constant/momentumTransport. In older versions (Foundation and ESI up to v2012), use constant/turbulenceProperties. The syntax inside the file is identical — only the filename changes.

Can I use kEpsilon with a y+ of 1 in OpenFOAM?

No. kEpsilon is not valid in the viscous sublayer. Its wall functions assume the first cell is in the log-law region (y+ between 30 and 300). Using kEpsilon with y+ near 1 produces incorrect wall shear stress and turbulence quantities. Switch to kOmegaSST if you need to resolve the boundary layer.

What is the difference between Smagorinsky and WALE for LES in OpenFOAM?

Smagorinsky is simpler and works well for isotropic turbulence but overpredicts SGS viscosity in laminar and near-wall regions. WALE gives zero SGS viscosity in laminar shear regions and near walls without requiring van Driest damping, making it more accurate for wall-bounded LES simulations.

How do I compute omega for the inlet boundary condition in kOmegaSST?

Use the formula: omega = k^0.5 / (C_mu^0.25 * L), where C_mu = 0.09, k is the turbulent kinetic energy, and L is the turbulence length scale (typically 0.07 times the hydraulic diameter for pipe flows). Alternatively: omega = epsilon / (C_mu * k) if you have computed epsilon first.

Why does kOmegaSST not predict stall on my aerofoil in OpenFOAM?

RANS models including kOmegaSST systematically over-predict attached flow at high angles of attack. The Boussinesq hypothesis produces high eddy viscosity in the separation zone, which artificially suppresses the instabilities that cause stall. Additionally, post-stall flow is inherently unsteady — steady RANS cannot capture it regardless of model quality. Switch to transient PIMPLE (URANS) for stall onset, and to kOmegaSSTDES for post-stall prediction.

What is the difference between DES and SAS in OpenFOAM?

DES (kOmegaSSTDES) explicitly switches from RANS to an LES-like mode based on a comparison between the RANS length scale and local mesh size — it requires the mesh in the separated zone to be fine enough to support the switch. SAS (kOmegaSSTSAS) adds a von Kármán length scale term to the RANS equations, letting the model self-adapt to resolved unsteadiness without needing special mesh treatment at the interface. SAS is easier to set up; DES is more physically rigorous for massively separated flows.

When should I use gammaReTheta instead of kOmegaSST in OpenFOAM?

Use gammaReThetatSST when the transition location significantly affects your quantity of interest — typically Re < 5×10⁵ for external aerodynamics. At these Reynolds numbers, a laminar separation bubble forms on the suction side and the stall angle depends on whether it reattaches or bursts. kOmegaSST assumes fully turbulent flow from the leading edge and cannot model this mechanism. The gammaReTheta model requires y+ ≈ 1 and a correctly specified inlet turbulence intensity (Tu) — the transition onset correlation is calibrated against Tu.