Richardson Extrapolation
Combine solutions on two or three meshes to estimate the exact answer and the discretization error, using the known order of accuracy.
Estimating the Limit
If a scheme converges at a known order and the meshes are in the asymptotic range, solutions on successively finer meshes approach the exact answer in a predictable pattern. Richardson extrapolation exploits that pattern to estimate the exact continuous solution from a small number of finite-mesh solutions, and hence to estimate the discretization error on each.
The Two-Mesh Formula
For solutions f1 (fine) and f2 (coarse) with refinement ratio r and order p, the extrapolated estimate of the exact value is f1 plus the difference (f1 minus f2) divided by (r to the power p, minus one). The correction term is also an estimate of the discretization error remaining on the fine mesh.
python
def richardson(f_fine, f_coarse, r=2.0, p=2.0):
correction = (f_fine - f_coarse) / (r**p - 1.0)
exact_est = f_fine + correction
error_est = abs(correction) # error on the fine mesh
return exact_est, error_est
print(richardson(1.0025, 1.0100)) # -> estimate and errorConditions for Validity
- The meshes must be in the asymptotic range; otherwise the assumed order is wrong and the extrapolation misleads.
- The order p should be confirmed from three meshes, not assumed, before trusting a two-mesh extrapolation.
- The solution must be smooth; discontinuities break the underlying expansion.
From Estimate to Safe Bound
Richardson extrapolation gives a point estimate of the error, but design work needs a bound, not a best guess. The Grid Convergence Index wraps the Richardson estimate in a safety factor to turn it into a conservative error band. Used carefully, with the order verified rather than assumed, Richardson extrapolation is the standard tool for turning a convergence study into a quantitative discretization-error estimate for the error budget.