Electromagnetic Theory

Courant Condition

/koo-RAHN kuhn-DISH-uhn/
Bounding the explicit time step of an FDTD simulation, this stability criterion (formally the Courant-Friedrichs-Lewy or CFL condition) requires that a wave cannot travel more than one spatial cell per time step. On a uniform cubic Yee cell grid the limit is Δt ≤ Δx / (c√3) ≈ 0.577Δx / c, so a 1 mm cell caps the step at about 1.93 ps. Exceed it and the leapfrog update diverges exponentially within a few hundred iterations. The criterion couples spatial and temporal resolution: refining the mesh to resolve a thin millimeter-wave feature forces a proportionally smaller step and a longer run, making it one of the dominant cost drivers in full-wave electromagnetic analysis.
Category: Electromagnetic Theory
3D limit: Δx / (c√3)
Courant number: ≤ 1/√d

Why FDTD Time Steps Have a Hard Ceiling

The condition was introduced in 1928 by Richard Courant, Kurt Friedrichs, and Hans Lewy for finite-difference solutions of partial differential equations, long before it became the central constraint of time-domain electromagnetic solvers. In an explicit scheme the field at the next instant is computed only from values already known at the current and previous instants. For that to remain physical, the numerical domain of dependence must contain the true physical domain of dependence, which is the cone defined by the wave speed. Stated plainly, a disturbance must not be able to propagate across more than one grid cell during a single time step. Violating that requirement breaks causality in the discrete update and the algorithm has no way to capture energy that has physically moved beyond the cells it is reading from.

In FDTD the electric and magnetic fields are interleaved in space and time on the staggered Yee grid and advanced by a leapfrog scheme. A von Neumann stability analysis of that update produces an amplification factor whose magnitude stays at unity only while the Courant number S = cΔt√(1/Δx² + 1/Δy² + 1/Δz²) remains at or below one. Above that threshold the amplification factor exceeds one for the highest spatial frequencies the grid can represent, so round-off noise at the Nyquist limit is multiplied every step and the solution blows up. There is no soft margin: the transition from stable to divergent is abrupt, which is why solvers compute the limit exactly and then apply a fractional safety factor.

Because the bound is set by the smallest cell anywhere in the model, mesh design and time-step cost are inseparable. A conformal or non-uniform mesh that adds a few tiny cells to resolve a feed gap, a thin dielectric, or a sharp metal edge forces every cell in the entire domain to march at the smaller step. This is the practical reason millimeter-wave structures with fine internal geometry are expensive to simulate, and it motivates subgridding, local time stepping, and unconditionally stable implicit formulations.

Dimensional Scaling and the Magic Time Step

The square-root-of-dimension factor tightens the limit as the problem gains spatial dimensions: 1D allows Δx/c, 2D allows Δx/(c√2), and 3D allows Δx/(c√3). A useful special case appears in 1D, where running exactly at the Courant limit cancels numerical dispersion entirely, giving an exact result known as the magic time step. That cancellation does not survive in two or three dimensions, so 3D solvers must still trade cell density against phase accuracy independently of stability.

Stability Limit by Dimension and Scheme

General Courant-Friedrichs-Lewy (CFL) limit:
Δt ≤ 1 / (c × √(1/Δx² + 1/Δy² + 1/Δz²))

Uniform cubic cell (3D FDTD):
Δtmax = Δx / (c√3) ≈ 0.577 × Δx / c

Courant number (must satisfy):
S = cΔt√(1/Δx² + 1/Δy² + 1/Δz²) ≤ 1

Where c = wave speed in the medium, Δx = cell size, d = dimensionality. Practical solvers use a safety factor 0.5 ≤ S ≤ 0.99. Example: Δx = 1 mm cubic, c = 3 × 108 m/s → Δtmax ≈ 1.93 ps.

Time-Step Limits Across Schemes

Scheme / DimensionCourant limitΔt at 1 mm cellStabilityTypical use
1D FDTDΔx / c3.33 psConditional (magic step exact)Transmission-line models
2D FDTDΔx / (c√2)2.36 psConditionalPlanar / waveguide cross-section
3D FDTDΔx / (c√3)1.93 psConditionalFull-wave 3D structures
Non-uniform meshΔxmin / (c√3)Set by smallest cellConditional (worst cell)Conformal millimeter-wave geometry
ADI-FDTD (implicit)No CFL boundAny Δt (accuracy-limited)UnconditionalFine features, large Δt
Common Questions

Frequently Asked Questions

How do you calculate the maximum FDTD time step from the Courant condition?

For a uniform 3D Yee grid the maximum stable step is Δtmax = 1 / (c√(1/Δx² + 1/Δy² + 1/Δz²)). With a cubic cell this reduces to Δtmax = Δx / (c√3) ≈ 0.577Δx / c, so a 1 mm cell gives about 1.93 ps. Solvers apply a Courant safety factor S between 0.5 and 0.99 and run at Δt = S × Δtmax. A lower S adds margin against round-off and dispersion; S near 0.99 minimizes the iteration count to steady state.

What happens when the Courant condition is violated in an FDTD simulation?

The explicit leapfrog update goes unstable: field amplitudes grow exponentially each step and typically diverge to non-physical values or NaN within a few hundred iterations. It shows up as high-spatial-frequency checkerboard noise that doubles roughly every step once the Courant number passes 1/√d. There is no graceful degradation, so the only fixes are reducing Δt below the limit or switching to an unconditionally stable implicit scheme such as ADI-FDTD.

Does a finer mesh make the Courant time step smaller?

Yes. The stable step scales linearly with the smallest cell dimension, so halving the cell size halves Δt and doubles the iteration count for the same run time. On a non-uniform or conformal mesh the global step is set by the smallest cell anywhere in the domain, which is why a single fine feature like a thin substrate layer or a narrow gap can dominate runtime. Subgridding and local time-stepping relax this by letting fine regions step faster than the coarse grid.

How is the Courant stability limit different from numerical dispersion error?

The Courant condition governs stability, whether the solution stays bounded; numerical dispersion governs accuracy, how closely the simulated phase velocity matches the true one. A run can be perfectly stable yet still inaccurate if cells are coarse relative to the wavelength. The practical workflow is to size cells for dispersion (about 10 to 20 cells per wavelength) and then set Δt for stability via the Courant limit. Running exactly at the limit in 1D cancels dispersion (the magic step), but that does not hold in 2D or 3D.

Modeled, Then Built

Need Hardware That Matches the Simulation?

Our millimeter-wave components are designed against full-wave FDTD and frequency-domain models, then verified on the bench. Talk to our engineering team about a part that hits your simulated targets.

Get in Touch