Numerical Dispersion
Learning objectives
- Explain numerical dispersion as short wavelengths travelling too slowly
- Use points per wavelength (ppw) as the control on dispersion
- Read the numerical phase velocity from the dispersion relation
- Apply the ppw of 8 to 10 rule when sizing a grid
Stable but Still Wrong
The CFL condition keeps a simulation from exploding, but staying bounded is not the same as being right. A stable finite-difference scheme has a quieter flaw: on a coarse grid it makes short wavelengths travel too slowly. Since a sharp pulse is a sum of many wavelengths, its short ones fall behind and it smears into a trailing wake while its front arrives late. This is numerical dispersion, and unlike stability it does not announce itself with an explosion. It just quietly moves your events.
The one number that controls it is the points per wavelength, ppw: how many grid cells span a single wavelength, . Fine grids relative to the wavelength give a large ppw and clean propagation; coarse grids give a small ppw and dispersion.
Reading the Curve
The left panel launches a pulse to the right and draws it in space and time, so a clean pulse is a straight diagonal. Drop the ppw and watch the diagonal blur into a ringing, lagging smear. The right panel is the scheme's dispersion relation: the numerical phase velocity as a fraction of the true speed. At two points per wavelength, the coarsest a grid can represent, the wave limps along at about two-thirds of the correct speed. By eight to ten points per wavelength the error is under one percent.
That gives the rule every practitioner carries: size the grid so the shortest wavelength you care about spans at least eight cells. The shortest wavelength is the highest frequency divided into the slowest velocity, , so slow rock and high frequencies both push you toward a finer grid. Get this wrong and your synthetic is stable, plausible, and quietly reports wavefronts at the wrong time. A fourth-order stencil buys back some accuracy, which is why the engine offers it; the deeper fix is always enough points per wavelength. With stability and dispersion both understood, the last engine detail is what happens at the edges of the grid.