Reference Guide

OpenFOAM Turbulent Prandtl Number: Setting Prt and alphat

The turbulent Prandtl number (Prt) controls how much heat your turbulence model transports — yet OpenFOAM hides it in two different places with two different defaults, and the location has moved between versions. This guide explains what Prt actually does, where to set the bulk and wall values across OpenFOAM forks and versions, and when tuning it is a real fix versus a band-aid over a model deficiency.

By CFDpilot · Updated June 2026

1. What the turbulent Prandtl number controls

In a RANS energy equation, heat is transported by two mechanisms: molecular conduction and turbulent mixing. OpenFOAM expresses the combined effect as an effective thermal diffusivity:

alphaEff = nu/Pr + nut/Prt
           ↳ laminar    ↳ turbulent

The laminar part uses the molecular Prandtl number Pr (a fluid property, set in thermophysicalProperties). The turbulent part uses the turbulent Prandtl number Prt together with the turbulent viscosity nut produced by your turbulence model. For compressible solvers the turbulent thermal diffusivity field is:

alphat = rho * nut / Prt

So Prt is the ratio of turbulent momentum diffusivity to turbulent thermal diffusivity. A lower Prt means more turbulent heat transport (higher alphat); a higher Prt means less. This single number is how the eddy-viscosity model links momentum turbulence to heat — the Reynolds analogy in one coefficient.

2. The two defaults: bulk vs wall

The most common source of confusion is that OpenFOAM carries two independent turbulent Prandtl numbers, with different defaults:

These are not the same parameter read from two files — they are two separate code paths. Changing one does not touch the other. For wall-bounded heat transfer it is the wall value that dominates your surface heat flux.

3. Setting the bulk Prt (version-dependent)

Where the bulk Prt lives changed when the OpenFOAM Foundation split thermal transport into its own library. Check your fork and version.

ESI/.com (v1706–v24xx) and Foundation ≤ v7

The EddyDiffusivity model reads Prt from the RAS model's coefficients sub-dictionary in constant/turbulenceProperties. The sub-dict name matches your model — kOmegaSSTCoeffs, kEpsilonCoeffs, etc.:

// constant/turbulenceProperties
RAS
{
    RASModel        kOmegaSST;
    turbulence      on;
    printCoeffs     on;

    kOmegaSSTCoeffs
    {
        Prt         0.85;   // bulk turbulent Prandtl number
    }
}

If you omit it, EddyDiffusivity falls back to Prt = 1.0.

Foundation v8 and later

From OpenFOAM (Foundation) v8, turbulent thermal transport moved into the ThermophysicalTransportModels library. The bulk Prt is now set in constant/thermophysicalTransport (the eddyDiffusivity model), not in the turbulence dictionary. From v10 the turbulence file itself was renamed momentumTransport. On these versions, a Prt placed in kOmegaSSTCoeffs is simply ignored.

// constant/thermophysicalTransport  (OpenFOAM.org v8+)
laminar
{
    model       eddyDiffusivity;
    Prt         0.85;
}

The exact key nesting varies slightly between releases — verify against a tutorial shipped with your build before relying on it.

Boussinesq solvers

The Boussinesq buoyant solvers (buoyantBoussinesqSimpleFoam, buoyantBoussinesqPimpleFoam) take a different route again: Prt is a dimensioned entry in constant/transportProperties:

// constant/transportProperties
Prt             [0 0 0 0 0 0 0] 0.85;

4. Setting the wall Prt

The near-wall thermal diffusivity is handled by an alphat wall function, set per-patch in 0/alphat. The Jayatilleke variant is the standard for high-Re wall treatment; it carries its own Prt (default 0.85) plus a P-function constant for the sublayer resistance:

// 0/alphat
hotWall
{
    type            compressible::alphatJayatillekeWallFunction;
    Prt             0.85;
    value           uniform 0;
}

If you change the bulk Prt for physical reasons, change it here too — otherwise the wall keeps mixing heat at the default 0.85 while the bulk uses your new value, which is inconsistent.

5. The gotcha: bulk and wall are independent

This is the trap that sends people in circles on the forums: you set Prt in turbulenceProperties, rerun, and the wall heat flux barely moves. That is expected. For a wall-bounded case — a heatsink, a cooled channel, a heat exchanger — the wall-function Prt governs the surface heat transfer, because that is where the steep thermal gradient is resolved by a model rather than the mesh. The bulk Prt mostly affects mixing away from walls.

Rule of thumb: if you are tuning heat transfer to match an experiment, start with the alphat wall-function Prt, and keep the bulk value consistent with it.

6. Choosing a value: gases vs liquid metals

The constant-Prt assumption is the Reynolds analogy: turbulence transports heat and momentum with similar efficiency. How well that holds depends on the molecular Prandtl number of your fluid.

7. When Prt tuning is — and isn't — the right lever

It is tempting to treat Prt as a knob to fit a stubborn heat-transfer result. Sometimes that is legitimate; often it is masking a different problem.

Before reaching for Prt on a wall-bounded case, confirm convergence, check that y+ matches your wall treatment, verify the inlet turbulence and flow-rate boundary conditions, and consider a transition-sensitive model (kkLOmega, or k-omega SST with the γ-Reθ transition equations) if the flow is transitional. A 5–15% heat-transfer error from a fully-turbulent RANS model on a transitional flow is about what the model can deliver — Prt will not close it cleanly.

FAQ

What is the default turbulent Prandtl number in OpenFOAM?

Two defaults: Prt = 1.0 in the bulk (via the EddyDiffusivity model, alphat = rho*nut/Prt) and Prt = 0.85 at walls (via the alphat wall functions). They are independent.

Where do I set the turbulent Prandtl number in OpenFOAM?

Bulk Prt depends on version: for ESI/.com (v1706+) and Foundation ≤ v7 it goes in the RAS model coeffs in constant/turbulenceProperties (e.g. kOmegaSSTCoeffs { Prt 0.85; }); for Foundation v8+ it moved to constant/thermophysicalTransport; Boussinesq solvers read it from constant/transportProperties. The wall Prt is always set per-patch in the alphat wall function in 0/alphat.

What is alphat in OpenFOAM?

alphat is the turbulent (eddy) thermal diffusivity field. It is computed, not solved: alphat = rho*nut/Prt for compressible solvers. The energy equation uses the effective diffusivity alphaEff = nu/Pr + nut/Prt.

Why doesn't changing Prt in turbulenceProperties change my results?

Either you are on OpenFOAM Foundation v8+ (where the bulk Prt moved to thermophysicalTransport, so the value in kOmegaSSTCoeffs is ignored), or your case is wall-bounded and the result is governed by the alphat wall-function Prt rather than the bulk value. Set both consistently.

What turbulent Prandtl number should I use for liquid metals?

Greater than 1. DNS data put it around 0.9–1.5, approaching ~2 at high Péclet number, because the Reynolds analogy fails at low molecular Prandtl number. A constant value is a rough model; variable-Prt (Péclet-dependent) correlations are more accurate for liquid-metal heat transfer.

Does the turbulent Prandtl number affect wall heat transfer?

Yes — primarily through the wall-function Prt. For wall-bounded cases the alphat wall-function Prt sets the predicted surface heat flux; lowering it raises alphat and increases heat transfer. The bulk Prt mostly affects mixing away from walls.

Official documentation

Get your heat transfer setup diagnosed — free

Upload your case and CFDpilot checks your alphat boundary conditions, Prt placement for your OpenFOAM version, and the turbulence–thermal coupling that governs wall heat flux.

Diagnose my case →