Draft. This manual is new and still growing. If something here does not match what you see in the software, the software is right — tell us and we will fix the page.
Courant number
In a transient case the Simulation control panel asks for a time step, and then immediately offers to take it away from you again: Adjust time step to Courant number, which is on by default for every transient case. The molecular and rarefied solvers are the exception and turn it off: a particle method has no flux to measure a Courant number from.
That is not the application being protective. The time step in a transient CFD run is not a free parameter — it is set by the mesh and the flow, and the only real choice you have is whether you compute it yourself or let the solver do it every step.
What it is
For a cell of size Δx, with fluid moving through it at speed U, over a step Δt:
Co = U · Δt / Δx
It is the number of cells the flow crosses in one time step. Co = 1 means the fluid moves exactly one cell per step. Co = 10 means it crosses ten.
The number that governs the run is the maximum over every cell in the domain, which is set by the worst combination of a small cell and a fast flow. That combination is usually not where you would guess: the smallest cells are in the boundary layer, where the flow is slow, and the fastest flow is in the free stream, where the cells are large. The maximum often turns up somewhere in between — around a leading edge, through a gap, at the edge of a refinement region.
Why it constrains you
There are two separate reasons, and they get conflated.
Stability
An explicit scheme computes the new value of a cell from the old values of its neighbours. If the flow crosses more than one cell in a step, information has physically travelled further than the scheme can see, and the scheme has no way to account for it. Above roughly Co = 1, explicit schemes are unconditionally unstable — not inaccurate, unstable. The solution grows without bound in a few steps.
Most solvers here are implicit and are not subject to that limit. They will happily run at Co of 50 without diverging.
Accuracy
This is the reason that still applies when stability does not.
An implicit scheme at Co = 10 is integrating the transport term over a step during which the fluid has crossed ten cells. Whatever structure existed across those ten cells has been averaged over in a single step. The scheme is stable because it is implicit; it is inaccurate because it has stepped straight over the spatial detail you paid for when you built the mesh.
The visible symptom is diffusion. Gradients smear. A vortex weakens as it convects. A shed wake looks blurrier than it should. Nothing crashes and nothing warns you.
So: stability sets a hard limit for some schemes, and accuracy sets a softer but real one for all of them.
The consequence people miss
Mesh and time step are not independent choices. Halving the cell size in a transient run roughly doubles the number of time steps and multiplies the cost of each one by the cell increase. This is why a transient study is qualitatively more expensive than a steady one, and why the cheap version of a case — 2-D, or a reduced domain — earns its place in a transient mesh study far more than in a steady one.
The report's cost section gives you the numbers to size the next run from the last one: wall clock, cores, steps, seconds per step and cell-steps per core-second. Doubling the cells roughly doubles the cost per step; halving the time step doubles the number of them.
How the application handles it
Adjust time step to Courant number. With this on, the solver recomputes the step every iteration to hold the limit you set. The Time step field then only supplies the first step — after that, the solver is in charge.
This is almost always what you want, because the maximum Courant number is a property of the solution and the solution changes as the run develops. A step that was safe during start-up can be far too large once the flow has accelerated, and one that was chosen for a fully developed flow will be wastefully small at the beginning.
Max Courant is the limit being held. The default is 1 for a single-phase case. The reason PISO and PIMPLE differ is structural — PISO makes a single pass of pressure–velocity coupling per step, so the step has to be small enough that one pass is enough. PIMPLE iterates within the step, which is what buys the larger Courant number. It is not free: those outer correctors cost solver work, and past some point you spend more per step than you save in steps.
On a PISO case the application will lower this to 0.5 behind you. Selecting PISO with Courant adjustment on rewrites any limit above 0.5 and logs "max Courant lowered to 0.5 (PISO has no outer corrector)". The reasoning is that the step is chosen from the previous step's number, so a limit of exactly 1 is regularly exceeded and PISO has no outer corrector to absorb it. Note the field's own hint still reads "1 is safe for PISO; PIMPLE with outer correctors tolerates 5–10.", which is what the application then overrides. Take 0.5 as the PISO number.
Max time step caps the step from above regardless of Courant. This is the control that stops a slow-moving region from letting Δt grow until it steps over the physics you are trying to resolve. If you are resolving a shedding cycle, an oscillation or a wave, set this.
Both Max Courant and Max time step are only on screen while Courant adjustment is on. Turn the toggle off to drive Δt yourself and neither field is there to find.
Two-phase cases get a second, tighter limit. An interface that crosses more
than a fraction of a cell in a step smears, and once smeared it does not sharpen
again. The two-phase families — VoF, marine, cavitation, compressible VoF,
miscible mixing and drift flux — default to a maximum Courant number of 0.5 and
write a separate interface limit, maxAlphaCo, also 0.5. The interface, not the
bulk flow, is what sets the step.
Supersonic cases default to 0.2, the tightest default in the product, and for a different reason: the solver is explicit and central, so its stencil is stable to a fraction of a cell per step rather than a whole one.
A steady run has no Courant number in this sense at all. SIMPLE has no time step; its equivalent stability control is the relaxation factors. See Convergence and residuals.
The other constraint: the physics has its own time scale
The Courant number puts an upper bound on the step. It does not tell you the step is small enough.
If the case is about something with a frequency — vortex shedding, a wave passing, a valve opening, a rotor blade sweeping past a stator — then you need enough steps to resolve that, and it is a completely separate requirement. Courant stability might permit a step that gives you a handful of steps per shedding cycle, which is nowhere near enough to represent the cycle.
The rule is simply: work out both bounds and take the smaller.
- The Courant bound, from the smallest cell and the fastest local flow
- The physical bound, from the shortest time scale you want to see resolved
Neither one implies the other, and only the first one is enforced automatically.
What too large a step looks like
| Symptom | Likely cause |
|---|---|
| Divergence within the first few steps | Initial step far too large. Turn Courant adjustment on, or start smaller |
| A value that is not a number, early | Same, usually with a bad initial field on top |
| Runs stably, but everything looks diffuse | Courant limit too high for accuracy. Stable, and smearing the answer |
| A free surface that starts sharp and goes fuzzy | Interface Courant limit too high |
| Per-step residuals creeping up over the run | Steps no longer converging within their correctors; the step has grown too large as the flow developed |
| A periodic phenomenon with the wrong amplitude or frequency | Too few steps per period — the physical bound, not the Courant one |
The last one is the one that does not announce itself, and it is the reason Max time step exists as a separate control from Max Courant.
Where you act on this
- Reference → Simulation control panel — time step, Courant adjustment, maximum time step, write interval
- Reference → Numerics panel — schemes, and the algorithm's corrector settings
- Steady or transient — whether you need a time step at all
- Convergence and residuals — what convergence means inside a time step
- Troubleshooting — for a run that diverged