# CFL stability condition (2D FDTD) The **CFL (Courant–Friedrichs–Lewy) stability condition** limits how far [[fdtd-cuda-time-stepping|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.