Table of Contents
CFL stability condition (2D FDTD)
The CFL (Courant–Friedrichs–Lewy) stability condition limits how far time stepping can advance relative to the grid spacing. If the time step is too large, numerical errors can grow instead of remaining bounded. For the two-dimensional Yee scheme in vacuum, the limit is:
$$ \Delta t\leq\frac{1}{c_0\sqrt{\Delta x^{-2}+\Delta y^{-2}}} $$
Here $c_0$ is the speed of light in vacuum, and $\Delta x$ and $\Delta y$ are the cell spacings. FDTD CUDA's courant_dt() multiplies this upper bound by a dimensionless factor courant in $(0, 1]$, which defaults to 0.99. For square cells of width $h$, this gives:
$$ \Delta t=\frac{\mathrm{courant}\,h}{c_0\sqrt{2}} $$
Halving both cell spacings therefore halves the allowed time step. Resolving a smaller spatial feature also requires more steps to simulate the same physical duration.
With Options::dt set to zero, the simulation derives its time step from courant. An explicit positive time step is checked against the vacuum limit unless check_stability is disabled. The check uses $c_0$; a custom material with a faster wave speed requires a smaller time step. Meeting the stability limit does not by itself guarantee accurate results.
