Courant Number (CFL) & Time Step Calculator
Courant Number (CFL) and Time Step Calculator
CFL from velocity, cell size and time step, and the time step a target CFL needs — judged against the limit that applies to YOUR solver, because an explicit scheme diverges above 1 and an implicit one is stable at 50 and wrong. Plus the vortex-shedding constraint, the total step count and the wall clock.
Courant number and time step
Air at 20 m/s over a 50 mm cylinder, 2 mm cells, a 1.5×10⁻⁴ s time step, implicit unsteady RANS, 1 s of flow time at 2.5 s of wall clock per step
The Courant number, the two ways to invert it, and the shedding constraint
- CFL
- Courant–Friedrichs–Lewy number: the number of cells a fluid particle crosses in one time step. Named for the 1928 paper that established it as the condition for a difference scheme to have any chance of converging to the differential equation
- U
- the speed at which information moves. Flow speed for an incompressible solver; |u| + c for a compressible one, because acoustic waves also have to be followed
- Δx
- cell size along the flow. The maximum CFL a solver reports comes from the worst cell in the domain, which is usually a small cell in a fast region rather than the near-wall cell
- St
- Strouhal number, f·D/U. About 0.2 for a circular cylinder across four decades of Reynolds number
- N
- time steps per shedding cycle. 20 to 40 for engineering URANS; 100 or more for acoustics and detailed wake work
- Fo
- Fourier (diffusion) number νΔt/Δx². The second explicit limit, at most about 0.5 in 1-D and 1/6 in 3-D. Not computed here because it needs the viscosity, but in a fine near-wall cell it is usually the one that binds
Worked example
Air at 20 m/s over a 50 mm cylinder, 2 mm cells, a 1.5×10⁻⁴ s time step, implicit unsteady RANS, 1 s of flow time at 2.5 s of wall clock per step
The Courant number itself: CFL = U·Δt/Δx = 20 × 1.5×10⁻⁴/0.002 = 1.5. A particle crosses one and a half cells per step
WHAT THAT MEANS DEPENDS ENTIRELY ON THE SOLVER, and this is why the page exists. On an explicit scheme 1.5 is a divergence and the run is already dead. On the implicit URANS scheme chosen here it is a normal working value. In an LES it is at the edge — stable, but the smallest resolved eddies are being smeared in time
Invert it for the time step. CFL = 1 needs Δt = Δx/U = 0.002/20 = 1×10⁻⁴ s. That is the number to use if the solver is explicit
Now the shedding constraint, which is a completely different argument. f = St·U/D = 0.2 × 20/0.05 = 80 Hz, so the shedding period is 12.5 ms. At 30 steps per cycle the step must be 12.5 ms/30 = 4.167×10⁻⁴ s
AND HERE THE COMMON GUIDANCE IS WRONG. It is often said that the shedding criterion binds tighter than the Courant condition. Compare them: 4.167×10⁻⁴ s from shedding against 1×10⁻⁴ s from CFL = 1. The Courant condition is over four times tighter. Work it out in general and the shedding criterion only binds when D/Δx is less than CFLtarget·St·N, which here is 1 × 0.2 × 30 = 6 cells across the body. This mesh has 25. On any grid that resolves the body at all, the Courant target binds. What is true is that an implicit solver has no Courant STABILITY limit, so on an implicit run the shedding criterion is often the only constraint left — which is a different statement
At your own time step the shedding cycle gets 12.5 ms/1.5×10⁻⁴ = 83 steps, comfortably inside the 20 to 40 guidance and heading towards acoustic resolution
The bill. One second of flow time at 1.5×10⁻⁴ s is 6,667 steps; at 2.5 s of wall clock each that is 16,667 s, or 4.63 hours. Drop to the binding step of 1×10⁻⁴ s and it is 10,000 steps and 6.94 hours. One second of flow time is also 80 shedding cycles, which is a generous averaging window — halve the flow time and you halve the bill
One more limit that is not on this page because it needs the viscosity: the explicit diffusive limit ν·Δt/Δx² at most about 0.5 in 1-D and 1/6 in 3-D. For air at 20 °C in these 2 mm cells that allows Δt up to 0.13 s, so convection binds here by three orders of magnitude. In a 10 μm near-wall cell the same limit is 3.3×10⁻⁶ s and it would be the binding one
The same Courant number, read three ways
| Courant number | Explicit scheme | Implicit unsteady RANS | LES, DES or SAS |
|---|---|---|---|
| 0.2 | stable, cheap per step, expensive in steps | more time accuracy than most RANS transients need | ideal |
| 0.5 | normal working value | conservative | the usual target |
| 1.0 | the one-dimensional stability limit exactly | fine | the upper edge of good practice |
| 2 | DIVERGES | normal | eddies starting to smear |
| 5 | DIVERGES | the upper end of normal | the resolved spectrum is being damped |
| 20 | DIVERGES | stable; second-order time accuracy is gone | not scale-resolving in any meaningful sense |
| 1000 | DIVERGES | stable, converged residuals, meaningless time history | no |
Which constraint binds: the Courant target or the shedding resolution
| Cells across the body D/Δx | Δt from CFL = 1 | Δt from 30 steps per cycle (St = 0.2) | Which binds |
|---|---|---|---|
| 2 | D/(2U) | D/(6U) | shedding, by 3× |
| 6 | D/(6U) | D/(6U) | exactly equal — the crossover |
| 10 | D/(10U) | D/(6U) | Courant, by 1.67× |
| 25 | D/(25U) | D/(6U) | Courant, by 4.17× |
| 100 | D/(100U) | D/(6U) | Courant, by 16.7× |
| 400 | D/(400U) | D/(6U) | Courant, by 66.7× |
Strouhal numbers worth having to hand
| Body | St | Reynolds number range where it holds |
|---|---|---|
| Circular cylinder, subcritical | 0.20 to 0.21 | about 300 to 1.5×10⁵ |
| Circular cylinder, laminar street | 0.12 to 0.20, rising with Re | about 47 to 190 |
| Circular cylinder, above the drag crisis | 0.25 to 0.30 | above about 3.5×10⁶ |
| Square cylinder, face normal to the flow | 0.12 to 0.14 | 10³ to 10⁵ |
| Flat plate normal to the flow | about 0.15 | 10³ to 10⁵ |
| Sphere | about 0.2 | 800 to 2×10⁵ |
Stability, accuracy, and why the same Courant number means three different things
The Courant number is the number of cells a fluid particle crosses in one time step, and that is all it is. CFL = UΔt/Δx. Everything interesting about it follows from asking what happens when the answer exceeds one, and the honest answer is: it depends entirely on how the equations are being advanced in time. That is the distinction this page is built around, because a calculator that prints UΔt/Δx and stops has told you nothing you could not do in your head.
For an explicit scheme the limit is arithmetic, not judgement. An explicit update computes the new value in a cell from old values in that cell and its neighbours. If the physical domain of dependence — where the information actually comes from — reaches outside the cells the scheme looked at, no amount of care in the discretisation can recover it, and the scheme is unconditionally unstable. That is the Courant–Friedrichs–Lewy condition of 1928, and above CFL = 1 an explicit run does not degrade, it diverges. Two refinements matter in practice. In more than one dimension the condition is Δt·Σ|u_i|/Δx_i at most 1, so a flow at 45 degrees through cubic cells hits the limit when the reported one-dimensional Courant number is 0.707 in 2-D or 0.577 in 3-D. And for a compressible solver the relevant speed is |u| + c, not |u| — at Mach 0.2 that is six times larger and the allowable step is six times smaller, which is the whole reason low-Mach compressible work is done with preconditioning or an implicit scheme.
For an implicit scheme there is no stability limit at all, and that is the trap. An implicit solver assembles and solves a system that couples the whole domain at each step, so information can travel any distance in one step and the scheme is stable at a Courant number of ten, or a hundred, or ten thousand. It will report converged residuals the whole way. What degrades is accuracy: a second-order implicit scheme retains its formal order only when the solution changes little per step, and once a feature moves several cells per step it is being stepped over rather than followed. Nothing in the solver monitors this. A transient run at CFL = 200 that reports beautiful residuals and a smooth force history is very often a sequence of loosely coupled steady solutions, and the time history it produces is fiction.
For a scale-resolving run, target CFL of about 1 regardless of the scheme. LES and DES resolve eddies in space, and the argument for keeping the Courant number near 1 is that there is no point resolving a structure on the grid and then advecting it in jumps. The temporal discretisation damps what the grid resolved, the resolved spectrum rolls off too early, and the subgrid model is credited with dissipation the time step is really supplying. Most LES practitioners aim for a maximum Courant number of about 1 in the region of interest with an average well below that. The scheme being implicit does not change the target, it only changes what happens when you miss it: an explicit LES blows up, an implicit one quietly under-resolves.
The vortex-shedding constraint is a separate argument and the common guidance about it is wrong. It is widely said that resolving a shedding cycle binds tighter than the Courant condition. Set both out: the Courant target gives Δt = CFL·Δx/U, and N steps per shedding cycle gives Δt = D/(St·U·N). Both are proportional to a length over U, so the velocity cancels and the comparison reduces to a pure ratio of lengths. The shedding criterion binds only when D/Δx is below CFL·St·N — with the usual CFL = 1, St = 0.2 and N = 30, that is six cells across the body. Nobody meshes a cylinder with six cells across it. On a mesh with a hundred cells across the body the Courant target is seventeen times tighter. The grain of truth is that an implicit solver has no Courant limit, so on implicit runs the shedding criterion is often the only constraint anybody applies — which is a statement about practice, not about which number is smaller.
Two limits this page deliberately does not compute, and one it does. It does not compute the diffusive (Fourier) limit νΔt/Δx², which for an explicit viscous term must stay under about 0.5 in 1-D and 1/6 in 3-D; in fine near-wall cells that limit binds long before the convective one, and it needs a viscosity this page does not ask for. It does not compute the acoustic Courant number for a compressible solver, because you should put |u| + c into the velocity box yourself and see it. What it does compute is the bill: total steps and wall clock at both your step and the binding step, because the decision that actually gets made is not “what is the right time step” but “what can I afford between now and Thursday”, and it is better made with the two numbers side by side.
Frequently asked questions
What Courant number should I use?
There is no single answer, which is why this page asks which solver you are on. Explicit: 0.5 to 0.9, and never above 1, less in 3-D. Implicit unsteady RANS: 1 to 5 is normal, and the real constraint is resolving the physical timescale rather than the cell crossing. LES, DES or SAS: aim for a maximum of about 1 in the resolved region whatever the scheme. Pseudo-transient marching to a steady state: as large as the solver will take, because the time history is not being used for anything.
My implicit run has a Courant number of 300 and the residuals are perfect. Is that a problem?
The residuals are telling you the linear system was solved, which it was. They say nothing about whether the time step resolves the physics. At CFL = 300 a feature moving with the flow crosses three hundred cells per step, so anything transient is being stepped over. If you are driving to a steady state this is exactly right and the time history is meaningless by design. If you intend to report a time history, a frequency, a phase or an unsteady load, cut the step until the quantity you care about stops moving when you halve it — that is the only convergence test that means anything in time.
Which velocity and which cell size go in?
The velocity at which information crosses the cell, and the cell it crosses. For an incompressible solver that is the local flow speed; for a compressible density-based solver it is |u| + c, which at Mach 0.2 in air is about six times the flow speed. The cell size is measured ALONG the flow and it is the cell that produces the worst Courant number in the domain — usually a small cell somewhere fast, not the thin near-wall cell, where the velocity is small for the same reason the cell is thin.
Does the near-wall cell set the time step?
Rarely, for convection, because the velocity there is small: a y+ = 1 cell is thin but the streamwise velocity in it is a few per cent of the free stream, so the convective Courant number is modest. It very much does set the limit for an explicit viscous term, where the Fourier number νΔt/Δx² must stay below about 0.5 in 1-D and 1/6 in 3-D; a 10 μm cell in air allows only about 3×10⁻⁶ s on that basis. This is why explicit codes use local time stepping for steady work and implicit schemes for wall-resolved unsteady work.
How many time steps per shedding cycle do I actually need?
20 to 40 is the usual engineering guidance and it will give you the shedding frequency and the force amplitudes. It is not enough for aeroacoustics, for the fine structure of the wake, or for anything where the pressure spectrum matters — Flexcompute’s Flow360 documentation, for example, recommends about 100 steps per cycle. The test to trust is your own: halve the step, and if the frequency and the RMS lift move, you were not resolved.
Is the Courant number the same as the diffusion number?
No, and confusing them costs explicit runs. The Courant number UΔt/Δx is about convection and its explicit limit is 1. The diffusion or Fourier number νΔt/Δx² is about viscous transport and its explicit limit is about 0.5 in one dimension and 1/6 in three. Because it goes as Δx², halving the cell size quarters the allowable time step instead of halving it, so on a fine mesh the diffusive limit overtakes the convective one. A stable-looking explicit run that blows up when the mesh is refined is almost always hitting this.
Why does my compressible run need such a tiny time step?
Because the Courant number for a density-based compressible solver is built on |u| + c, the fastest wave in the system, not on the flow speed. In air at 20 °C the speed of sound is about 343 m/s, so a 20 m/s flow has an acoustic Courant number eighteen times the convective one. If the acoustics are not part of the answer, that entire factor is wasted; the standard remedies are low-Mach preconditioning, an implicit scheme, or a pressure-based solver.
How long will my run take?
Steps times seconds per step, and the page does both with your own cost figure. The part people get wrong is the flow time: a shedding case needs several cycles to flush the initial transient and then enough cycles to average over, so ten to thirty cycles is a realistic target and the initial transient is usually the cheapest thing to cut. Measure the cost per step from a short trial rather than estimating it — the inner-iteration count is often the difference between a run that finishes overnight and one that does not.
Related calculators
References
- R. Courant, K. Friedrichs and H. Lewy, Über die partiellen Differenzengleichungen der mathematischen Physik, Mathematische Annalen 100 (1928), 32–74. The origin of the condition and of the statement that the numerical domain of dependence must contain the physical one — which is why the explicit limit is a property of the scheme rather than a tuning parameter.
- ANSYS Fluent Theory and User’s Guides, sections on transient formulations and the Courant number, for the distinction between the explicit density-based solver’s stability limit and the implicit formulation’s unconditional stability. Cited, not reproduced.
- Flexcompute, Flow360 documentation — Time Stepping. Source for the shedding frequency estimate f = St·U/D used as a time-step criterion and for the recommendation of about 100 steps per shedding cycle, which is quoted here beside the more common 20 to 40 engineering guidance rather than in place of it.
- A. Roshko, On the Development of Turbulent Wakes from Vortex Streets, NACA Technical Note 2913 (1953) and NACA Report 1191. A US Government work. Source for the cylinder Strouhal behaviour underlying the St values tabulated here.
- Derivation performed for this page rather than taken from a source: the two candidate time steps are Δt = CFL·Δx/U and Δt = D/(St·U·N), so their ratio is D/(CFL·St·N·Δx) and the velocity cancels. The shedding criterion binds only when D/Δx < CFL·St·N, which is 6 for CFL = 1, St = 0.2 and N = 30. This contradicts the common claim that the shedding criterion usually binds tighter, and the contradiction is arithmetic rather than a matter of opinion.
Setup guidance, not validation. Correlations have ranges of validity and cell-count estimates are order-of-magnitude. A converged simulation is not a correct one. Full disclaimer at calcengines.com/disclaimer/
