Skip to content
SHD Sim
Menu

Validation/Turbulence modelling

Turbulent plane channel

The only case here that tests turbulence modelling, against a DNS rather than an experiment — and it measures what a badly placed first cell costs you.

ValidationMean profile within 0.34 in u+; centreline within 0.20 %

Why this case

Every other case on this site is laminar where it matters. The shock tube is inviscid, the plate is a solid, and neither says anything about the modelling decision that dominates real CFD: what happens between a wall and the first cell centre.

Fully developed flow between two parallel plates is the simplest wall-bounded turbulent flow there is — statistically one-dimensional, no pressure gradient along the wall, no curvature, no separation. That is exactly why it is the reference case. Any disagreement is attributable to the near-wall treatment, because there is nothing else it could be.

Moser, Kim and Mansour resolved it directly, with no turbulence model at all, and published the profiles. A direct numerical simulation is not a measurement, but for this flow it is better than one: it gives every statistic at every height, including quantities that are extremely hard to measure inside the viscous sublayer.

PhysicsIncompressible, fully developed, statistically 1-D
SolverOne-dimensional channel, steady, RANS
ReferenceMoser, R.D., Kim, J., Mansour, N.N. (1999), Physics of Fluids 11(4) 943–945 — the Reτ = 392.24 dataset
AgreementRMS error 0.341 in u+; centreline within 0.20 %
ReproducePin boundaryFoam, set the target velocity and cell count, Run

The reference, and reading it correctly

The dataset is published by its authors and can be downloaded from the Oden Institute’s turbulence database. The comparison below uses the mean-velocity and Reynolds-stress files, fetched from there rather than copied out of any secondary reproduction.

Two checks on the transcription, both of which the data passes: the wall row is exactly zero, as no-slip requires; and the first point sits in the viscous sublayer where u+ = y+ should hold, with 1.0605 against 1.0628 — agreement to 0.2 %.

Set-up

DomainHalf-height 50 mm; one cell along the flow and across the span
WallsNo-slip, top and bottom
Streamwise facesPeriodic — the flow is fully developed by construction
FluidAir, ν = 1.51 × 10⁻⁵ m²/s
MeshUniform, ungraded — so the first cell centre sits at exactly y+ = Reτ/N for N cells
Driving forceA body force adjusted to hold the target mean velocity
Achieved Re_τ395.81 on k-omega SST (+0.91 %), 392.04 on Spalart-Allmaras (−0.05 %)

The ungraded mesh is not laziness, it is the instrument. Because the cells are uniform, one integer moves the first cell centre anywhere from the middle of the logarithmic region down into the viscous sublayer, which is what turns the usual advice about y+ into a measurement.

Result — the mean velocity profile

The channel half-height coloured by velocity magnitude, shown edge-on since the case is one cell wide and deep
The 400-cell wall-normal column itself, coloured by velocity magnitude and y+ — genuinely thin on screen, because boundaryFoam solves this as a single column between the two walls. From the application's own Post-processing image export, the “Mesh adequacy” ready-made view. The chart below is the quantitative comparison against DNS.
Mean velocity in wall units against the DNS, on a logarithmic y-plus axis
u+ against y+. The reference is drawn as a line because it has 129 samples; ours are the nine comparison stations, drawn as the discrete points they are. The law of the wall is the dashed sanity check, not the reference.
Mean velocity at the DNS's own grid stations
y+DNS u+SHD Sim u+difference
1.061.06051.0383−0.022
4.984.80324.7919−0.011
9.538.17548.1681−0.007
19.8011.966011.7352−0.231
29.8613.479013.3558−0.123
50.9614.902015.1856+0.284
98.4016.493017.2154+0.722
198.9118.535019.1471+0.612
392.2420.133020.1727+0.040
RMS difference 0.341 in u+. The stations are the DNS’s own grid points, not round numbers: sampling our run at them is exact, whereas interpolating the reference onto convenient stations would put an error into the one column that must not have one.

The sublayer and the buffer layer are reproduced almost exactly — three stations below y+ = 10 agree to better than 0.03 in u+. The largest disagreement is in the outer layer, and the centreline, which accumulates every error below it, lands within 0.20 %.

The same case on two turbulence models
ModelRe_tau reachedRMS in u+Centreline u+vs DNS
k-omega SST395.81 (+0.91 %)0.34120.173+0.20 %
Spalart-Allmaras392.04 (−0.05 %)0.16419.789−1.71 %
Each driven to the target Reynolds number separately. Neither model is better everywhere.

It is worth resisting the urge to pick a winner here. Spalart-Allmaras follows the profile more than twice as closely and reaches the target Reynolds number almost exactly; k-omega SST puts the centreline within a fifth of a per cent where the other is off by 1.7. A one-line summary of that table would lose the only thing it says.

Error in u-plus at each comparison station
The same comparison as a difference, which makes the outer-layer bias visible.

Result — turbulent kinetic energy

Peak turbulent kinetic energy against the DNS
Quantityy+ of the DNS peakDNSSHD Simdifference
Peak k+16.894.56842.1625−53 %

Result — what a badly placed first cell costs

This is the measurement the case exists for. The near-wall treatment is valid in two places: resolved to the wall, with the first cell inside the viscous sublayer, or with the first cell out in the logarithmic region. In between — the buffer layer — neither assumption holds, and the usual advice is simply to avoid it.

Here is what ignoring that advice actually costs.

Centreline velocity error against the position of the first cell centre
Centreline u+ error against the first cell's y+. Lowest at y+ ≈ 1 and again at y+ ≈ 30; worst between them.
Centreline velocity error against first-cell position
CellsFirst cell y+Centreline u+vs DNS 20.133
4000.9920.173+0.20 %
2001.9420.724+2.94 %
804.8919.081−5.23 %
2615.2521.451+6.55 %
1329.9920.180+0.23 %
849.2219.776−1.78 %
Same physics, same model, same target Reynolds number. Only the mesh changes — and because the mesh is ungraded, the first cell's y+ is an exact consequence of the cell count.

The error is smallest at the two placements where the treatment is valid — +0.20 % at y+ ≈ 1 and +0.23 % at y+ ≈ 30 — and worst in the buffer layer between them, reaching −5.2 % and +6.6 %. A five to seven per cent error in the centreline velocity, from nothing but where the first cell landed.

That is the number worth taking away from this page. It is not an argument that the software is accurate; it is an argument that a mesh which looks perfectly reasonable can cost several per cent, and that the only way to know is to check where your first cell sits.

What the wall treatment setting is worth

The mesh sweep above holds the near-wall treatment fixed and moves the mesh. This does the opposite: same mesh, same model, same target Reynolds number, and only the treatment changed.

Centreline error and profile RMS for each wall treatment, on two meshes
First cellTreatmentRMS in u+Centreline error
y+ ≈ 1Wall functions0.341+0.20 %
y+ ≈ 1Automatic blending0.341+0.19 %
y+ ≈ 1Resolved (low-Re)0.341+0.19 %
y+ ≈ 30Wall functions0.551+0.23 %
y+ ≈ 30Automatic blending0.850−6.07 %
y+ ≈ 30Resolved (low-Re)16.251+78.6 %
On the coarse mesh the RMS is taken over the four comparison stations above the first cell centre. The other five lie below it, and interpolating down to them extrapolates into a region the mesh was never meant to represent.

At y+ ≈ 1 the three are indistinguishable — identical to three decimal places. The blending function inside the model’s own transport equation already handles the near-wall region, and the log-law viscosity is negligible that close to a wall, so which form is written barely matters.

At y+ ≈ 30 they diverge sharply, and correctly. Asking for a resolved treatment on a mesh whose first cell sits out in the logarithmic region removes the modelled near-wall momentum transport, and the flow has to accelerate enormously to carry the same wall shear. A 79 % error in the centreline velocity is the right answer to the wrong question.

What this case found

Setting this benchmark up found three defects in our own software, and none of them was visible to a run that simply completed.

The one-dimensional channel solver was not solving its momentum equation at all. The faces normal to the flow were marked as a direction the solver does not solve in, so the streamwise velocity was never computed: it held its initial value for the entire run, giving a flat profile right up to a no-slip wall. The case reached its end time, wrote its fields, held its target flow rate exactly, and had been passing for months.

The wall treatment setting reached no case file. All three options produced identical conditions, so a user who meshed to y+ ≈ 1 and asked for a resolved treatment was getting a log-law wall function applied where its assumptions do not hold. That one was caught before any run — by noticing that the comparison table being prepared would have had three rows differing only in a label.

Spalart-Allmaras was broken twice over, and the convergence check refused to report a number for it both times rather than publishing one. Its modified viscosity was being set to the freestream value at no-slip walls instead of zero; correcting that took the driving gradient’s swing over the last two thousand iterations from 112.7 to 0.0034. It still would not settle, and the second cause was that the same quantity had no relaxation factor at all — the relaxation block named three turbulence variables and this was not one of them, so the equation ran completely unrelaxed while every other model ran at 0.7. With both corrected it converges in two attempts and gives the lowest profile error on this page.

What this case does not cover

  • Separation. There is none and there cannot be. A model that reproduces this profile perfectly can still predict separation badly.
  • Pressure gradients. The channel is fully developed with none along the wall — and adverse pressure gradients are where eddy-viscosity models actually differ from each other.
  • Meshing. This is a graded block with no geometry in it. Nothing here validates the y+ that a surface mesher’s boundary layers actually achieve on a real body, which is the situation a user is in.
  • High Reynolds number. Reτ = 392 is low. Behaviour at industrial Reynolds numbers is an extrapolation from this page, not a result on it.

Repeat this yourself

Every case here is set up from the worked examples in the product, with no hand-editing of solver files — so you can run it, and get the same numbers. The free tier runs real cases up to 250,000 cells of fluids, or 100,000 nodes of solid, with no account needed to download and no time limit.

All validation cases · Written by the team building SHD Sim.