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.
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.
The most common source of confusion is that OpenFOAM carries two independent turbulent Prandtl numbers, with different defaults:
EddyDiffusivity thermal model to build the alphat field everywhere in the domain.alphat wall functions (alphatJayatillekeWallFunction, alphatWallFunction) to set the near-wall thermal diffusivity on each patch.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.
Where the bulk Prt lives changed when the OpenFOAM Foundation split thermal transport into its own library. Check your fork and version.
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.
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.
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;
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.
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.
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.
Prt ≈ 0.85–0.9. There is rarely a good reason to deviate; for air-cooled electronics, HVAC, or aerodynamic heating, leave it near 0.85.alphat becomes weak relative to nut, i.e. Prt = nut/alphat > 1. For accurate liquid-metal heat transfer a constant Prt is a poor model; variable-Prt correlations (functions of Péclet number) are the better route.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.
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.
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.
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.
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.
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.
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.
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 →