3.3. ADAPTIVE MESH REFINEMENT 117
level is 9(N/s)s
2
= 9Ns since s
2
operations are required to calculate the interaction
between one box and its neighbors.
It should be noted that while the multi-pole expansion is oriented towards the sources,
the local expansion is oriented toward the targets. In addition, when performing the final
summation, the focus of the O(N log N) algorithm is on the targets: For a given target,
the contributions from the sources in its interaction list are summed up from scale to
scale. In FMM, however, the focus is on the sources. At each scale, for each box, one
asks what the contributions are for the sources in that box to the boxes in its interaction
list. Previously we were examining the interaction list of the targets. Now we examine
the interaction list of the sources. This dual viewpoint is very important for generalizing
analysis-based fast summation algorithms to other settings.
3.3 Adaptive mesh refinement
Adaptivity is a central issue in modeling and computation. There are different kinds
of adaptivity: Adaptively choosing the models, discretization methods, stopping criteria,
time step size, and the mesh. Well-known examples of adaptive numerical techniques
include:
1. Adaptive numerical quadrature in which new quadrature points are added based
on some local error indicators [15].
2. ODE solvers with adaptive time step size selection [15].
3. Adaptive mesh refinement for solving PDEs [1].
Here we will focus on adaptive mesh refinement for solving PDEs. This has been devel-
oped along two different lines:
1. Adaptive finite element methods pioneered by Babuska and Rheinboldt [3, 4], which
are based on rigorous a posteriori error estimates.
2. Adaptive finite difference or finite volume methods for nonlinear time-dependent
PDEs such as the ones that arise in gas dynamics, pioneered by Berger, Collela,
Oliger, et al. [8]. In this case, it is much harder to develop rigorous a posteriori
error estimates. Thus, quantities such as the gradients of the numerical solutions
are often used as the error indicators.