
The CFL Number, short for Courant–Friedrichs–Lewy number, is a foundational concept in computational fluid dynamics (CFD) and numerical analysis. It governs how large a time step you can take in explicit numerical schemes while preserving stability and accuracy. In practice, getting the CFL number right is the difference between a stable simulation that runs to completion and a fragile calculation that diverges or yields spurious results. This comprehensive guide explains what the CFL Number is, how it is computed, how it influences your choice of numerical schemes, and how to handle CFL considerations on modern grids and in complex simulations.
The CFL Number: What It Is and Why It Matters
Definition and intuition
The CFL Number measures how far information travels across a computational grid during one discrete time step in relation to the grid spacing. In its simplest form for a one-dimensional flow with velocity u, the CFL Number is defined as:
CFL = |u| Δt / Δx
Here, Δt is the time step and Δx is the grid spacing in the flow direction. The central idea is that during a single time step, a signal or disturbance should not move more than one cell width; otherwise, the numerical scheme might fail to capture the correct propagation of information, leading to instability or inaccurate results.
For multi-dimensional problems, the CFL Number generalises to include the contributions from velocities in all directions and, depending on the numerical method, may also incorporate wave speeds such as acoustics. A common, practical form in three dimensions is:
CFL = max over all cells of (|u| Δt/Δx + |v| Δt/Δy + |w| Δt/Δz)
Where (u, v, w) are the velocity components and (Δx, Δy, Δz) are the corresponding grid spacings. This consolidated form reflects how quickly information can traverse the grid spatially in a given time step.
Stability and the role of the CFL Number
The key link is between the time discretisation of the governing equations and the propagation of physical information. Explicit time-stepping schemes rely on the CFL Number staying below a certain threshold to remain stable. If the CFL Number is too large, the numerical solution can blow up or produce non-physical oscillations. Implicit schemes, by contrast, often permit larger time steps because they treat some terms implicitly, dampening potential instabilities, though they come with higher computational cost per step.
Thus, the CFL Number is not merely a theoretical bound; it guides practical decisions: how big a time step you can take, which numerical scheme is appropriate, and how you structure a simulation for accuracy and efficiency. In many CFD projects, achieving an optimal CFL Number is a balancing act between stability, accuracy, and computational resources.
Why the CFL Condition Is Crucial Across Schemes
Explicit versus implicit time stepping
In explicit time-stepping methods, you calculate the state at the next time level purely from known values at the current level. This straightforward approach is fast per step, but it imposes a strict CFL constraint. If the CFL Number exceeds the stability limit, the method becomes unstable. Typical explicit schemes include forward Euler, MacCormack, and various upwind or flux-limited schemes used in CFD for convective transport.
Implicit schemes, such as backward Euler or Crank–Nicolson, involve solving a system of equations at each time step. These methods are generally more stable for a given time step and can accommodate higher CFL Numbers. The trade-off is increased computational cost per step due to solving linear or nonlinear systems, sometimes with significant computational complexity for large three-dimensional problems.
Convection, diffusion, and waves
The CFL Number is particularly sensitive to the dominant physical mechanism in a problem. In convection-dominated flows, the convective speed sets the scale for the time step via the convective CFL. In acoustics or compressible flows, wave speeds (the speed of sound) can dramatically constrain the time step, yielding a much smaller CFL Number if acoustic effects are strong. Diffusive terms, depending on the discretisation, can impose their own stringent restrictions, especially in stiff diffusion-dominated problems.
In practice, many simulations aim to satisfy a conservative CFL bound for stability, often prioritising a smaller CFL Number to ensure robust results across complex features like shocks, boundary layers, and turbulence.
Computing the CFL Number in Practice
Step-by-step method for a simple 1D grid
Consider a one-dimensional domain discretised with uniform spacing Δx and a velocity field u. To estimate the CFL Number for a simulation undergoing time step Δt, follow these steps:
- Compute the local convective speed: |u|
- Evaluate the ratio Δt/Δx for the grid cell(s) of interest
- Multiply by the local speed: CFL_cell = |u| Δt / Δx
- Take the maximum CFL across all cells to obtain the global CFL Number: CFL = max(CFL_cell)
Modern CFD codes typically perform this calculation automatically, taking into account the most restrictive cells and the chosen numerical scheme. For non-uniform grids, Δx varies by cell, and you may need to compute CFL on a per-cell basis, then select the maximum value to represent the global bound.
Extending to multiple dimensions
On a Cartesian 3D grid, the procedure is similar but accounts for velocity components in each direction and the corresponding grid spacings. A practical approach is to compute for each cell:
CFL_cell = max( |u| Δt/Δx , |v| Δt/Δy , |w| Δt/Δz )
Then the global CFL Number is the maximum of CFL_cell over all cells. For schemes that involve combined effects of u, v, w across directions, some implementations use a sum or more sophisticated flux-based estimators, but the max of directional ratios is a widely used and robust heuristic.
Local time stepping and adaptive CFL
Some simulations employ local time stepping where different parts of the grid advance with different Δt values, effectively using a local CFL Number that may exceed a global bound. This can improve efficiency for problems with extreme disparities in grid spacing or velocity magnitudes. Alternatives include adaptive mesh refinement (AMR), where grid resolution changes dynamically, prompting on-the-fly adjustments to Δt to maintain an acceptable CFL Number across refinement levels.
Guidelines for Choosing Time Steps Based on the CFL Number
Typical targets for explicit schemes
For straightforward explicit schemes on uniform grids, a common practical range is to keep the global CFL Number below 0.5 to 0.9, depending on the numerical method in use. Simple upwind schemes might tolerate CFL up to 1.0 in some circumstances, but many practitioners prefer a conservative target to maintain accuracy, especially in the presence of nonlinearities, shocks, or turbulence.
When the grid is highly non-uniform, or when there are strong gradients, a smaller CFL Number can help to resolve transient features more accurately and reduce the risk of spurious oscillations or numerical diffusion that could smear important details in the flow field.
Tips for diffusion-dominated or stiff problems
In cases where diffusion is significant, or the governing equations exhibit stiffness (for example, highly diffusive terms or strong chemical reactions), the stability restrictions can behave differently. If the diffusion term imposes a tight constraint, you may find yourself reducing Δt considerably. In such scenarios, implicit or semi-implicit schemes can offer a practical path to larger time steps while maintaining stability and accuracy.
Balancing accuracy and efficiency
While a smaller CFL Number typically enhances stability and reduces numerical dispersion, it also means more time steps are necessary to reach a given physical time. The computational cost scales with the number of steps, so in large simulations you must weigh stability against computational efficiency. A well-tuned CFL Number, combined with an appropriate grid resolution and an efficient solver, often yields the best compromise between speed and fidelity.
CFL Number on Real-World Grids: Uniform, Non-Uniform, and AMR
Uniform grids
On a uniform grid, the calculation of the CFL Number is straightforward. You determine Δx, Δt, and a characteristic speed, apply the formula, and ensure the global CFL remains within your chosen bound. Uniform grids simplify both the stability analysis and the implementation of boundary conditions, making the CFL Number a predictable guide for time stepping.
Non-uniform grids
Non-uniform grids introduce spatial variation in Δx. In such cases, it is common to compute CFL per cell and use the maximum value to guide Δt selection. The smallest grid spacing often dictates the maximum permissible Δt, and fine zones near boundaries or within boundary layers can be particularly influential in limiting the time step. When using non-uniform grids, you should be mindful of how local refinement alters the global CFL strategy and whether adaptive time stepping is appropriate.
Adaptive mesh refinement (AMR)
AMR dynamically refines or coarsens the grid based on solution features. This adaptivity can cause abrupt changes in local CFL requirements. CFD codes with AMR typically incorporate CFL-aware controls that adjust Δt as the mesh evolves. In practice, you may need to monitor the maximum CFL across refinement levels and tune your time stepping strategy to maintain stability without sacrificing resolution in critical regions such as shock fronts or separating flows.
Common Pitfalls and How to Avoid Them
Ignoring the distinction between convective and acoustic speeds
Some simulations are prone to overestimating the allowable time step by neglecting acoustic speeds. If you are simulating compressible flows or aeroacoustics, the speed of sound can be the limiting factor in the CFL Number. Failing to account for this can yield unstable computations, especially when strong pressure waves are present. Always include the relevant wave speeds in your CFL calculation when dealing with compressible physics.
Overreliance on a single global CFL threshold
While many practitioners rely on a single global CFL Number, certain problems benefit from a more nuanced approach. Local time stepping or semi-implicit methods can deliver stability with larger effective time steps in some regions while maintaining strict control in more sensitive zones. In complex geometries, consider regional CFL strategies or hybrid schemes that preserve stability without over-constraining the entire domain.
Neglecting grid quality and numerical dissipation
A poor grid or low-quality discretisation can introduce numerical errors that masquerade as stability issues. Even with an appropriately chosen CFL Number, a coarse mesh near sharp gradients can produce excessive numerical diffusion or Gibbs phenomena. Invest in adequate grid resolution, particularly near boundary layers, shocks, and regions of high curvature, to ensure the CFL Number truly reflects the solver’s stability characteristics.
Examples and Practical Scenarios
1D linear advection with upwind discretisation
In a simple 1D linear advection scenario using an upwind scheme, the maximum stable CFL Number is often close to 1.0. If u is positive and Δt/Δx is chosen so that CFL ≈ 0.8, you typically obtain stable, accurate transport of the initial profile without excessive numerical diffusion. Reducing CFL further can sharpen the stability margin for more complex initial data or nonlinear constitutive relations.
Non-linear Burgers’ equation on a non-uniform grid
For a non-linear problem like Burgers’ equation, with velocity-dependent flux, the CFL Number must be evaluated using the local magnitude of velocity and the local grid spacing. In regions where shocks form, the velocity gradient becomes large, and local CFL can spike. In such cases, it is prudent to choose a conservative global CFL Number and rely on the scheme’s dissipation to maintain stability, or switch to a robust shock-capturing method with inherent numerical diffusion that damps non-physical oscillations.
Compressible Navier–Stokes on a refined mesh
When simulating compressible flow on a refined mesh, the speed of sound often dominates the CFL constraint. If the Mach number is moderate, the convective CFL might still control the time step, but you should verify that the acoustic CFL is not violated. In practice, many high-fidelity simulations employ a multi-physics approach where the time step is chosen to satisfy a safe limit for both convective and acoustic parts of the fluxes.
Integrating CFL Management into Your CFD Workflow
Planning the run: from grid to time step
Begin with a grid that resolves the essential physics of your problem. Estimate a reasonable characteristic velocity and a grid spacing plan that captures critical features. Then select a target CFL Number based on the numerical scheme and the expected transient behaviour. Run a short test to verify stability, monitoring for oscillations, negativity of quantities such as density or pressure, and the emergence of numerical artefacts. Adjust Δt or refine the mesh as needed before committing to longer production runs.
Automating CFL control
Modern CFD packages often offer built-in controls to automatically adjust Δt to maintain a specified CFL Number. This can simplify workflow, particularly on complex geometries or when AMR is used. When enabling automated CFL control, validate that the automatic adjustments do not introduce unexpected step rejections or excessive wall-clock time due to overly conservative re-timing.
Validation and verification considerations
Verification ensures your code solves the discretised equations correctly, while validation checks that the solution matches physical reality. In both stages, the CFL Number plays a critical role. Conduct convergence studies by refining the grid and reducing the time step, observing whether key quantities converge to stable values. If results depend sensitively on the CFL Number, re-examine the numerical scheme, boundary treatments, and potential modelling assumptions that could be driving the sensitivity.
CFL Number Across Different Numerical Methods
Finite difference methods
In finite difference schemes, the stencil choice and flux discretisation heavily influence the stability bound. For linear advection with a simple upwind stencil, the CFL Number bound is often straightforward; for higher-order stencils and non-linear convection, stability limits can be more nuanced, requiring careful experimentation and sometimes lower CFL Numbers to maintain monotonicity and prevent non-physical oscillations.
Finite volume methods
Finite volume schemes emphasise conservation properties. The CFL Number is particularly important in flux-based calculations where ensuring that the numerical fluxes respect stability and conservation laws is key. High-resolution schemes with limiters can maintain accuracy at higher CFL Numbers, but boundary conditions and mesh quality still influence stability.
Finite element and discontinuous Galerkin methods
Discontinuous Galerkin (DG) methods and certain finite element approaches impose their own stability constraints tied to polynomial order, mesh size, and explicit time integration choices. The CFL Number for DG schemes often depends on the local polynomial degree and the chosen time integrator. High-order methods can be highly accurate but may require more restrictive CFL Numbers to ensure stability in the presence of sharp features.
Frequently Asked Questions About the CFL Number
Can the CFL Number exceed 1?
Yes, in some schemes and problem settings, particularly with certain implicit methods or highly dissipative fluxes, the effective stability limit can allow CFL Numbers greater than 1. However, for many standard explicit schemes and typical CFD problems, staying below 1 is a prudent rule of thumb to ensure robust stability and accuracy.
What is a typical maximum CFL Number in practice?
Practically, for explicit methods on complex 3D grids, therapists of stability usually aim for a CFL Number between 0.3 and 0.9, depending on the scheme, the physics, and the presence of shocks. In smooth, well-resolved, and linear regimes, you might approach the higher end of that range. Always verify with a tailing test run and monitor for numerical artefacts.
How does mesh quality affect the CFL Number?
Mesh quality can influence the effective stability of a scheme. Highly skewed cells, abrupt refinements, or poor aspect ratios can reduce the safe time step. In such cases, the apparent CFL Number that yields a stable solution may be lower than predicted by a simple uniform-grid estimate. Pay attention to mesh metrics and, if necessary, adjust the grid or adopt local time stepping strategies.
Concluding Thoughts on the CFL Number
The CFL Number is more than a technical constraint; it is a practical compass that guides how we model, simulate, and interpret fluid dynamics on a computer. By understanding the underlying physics that the CFL Number encapsulates—the speed of information propagation relative to the grid—we gain a powerful tool for designing stable, accurate, and efficient simulations. Whether you are tackling a simple advection problem or a turbulent, compressible, multi-physics scenario, a deliberate approach to CFL management helps ensure that your numerical experiments are credible, reproducible, and computationally viable.
In summary, the CFL Number is a dynamic part of CFD practice: compute it carefully, respect the stability bounds of your chosen numerical method, accommodate grid non-uniformity with local considerations, and balance accuracy with efficiency. With this mindset, your explorations in fluid dynamics become more reliable, and your results more trustworthy.