At the core of this technique is a system of adjoint equations that holds sensitivity information, which connects local discretisation errors to the error in a quantity of interest.
This sensitivity information can be obtained by direct solution of the adjoint equations, but this is a non-trivial task. In fact, some would say that it is impossible. In 2001, at a NASA Ames lecture series, this was also what I heard as a young Ph.D. student, eager to share my new results that contradicted that claim.
Guided by a posteriori estimation of the error in wind load prediction, the adaptive algorithm constructs local error indicators that decide what cells in the mesh must be refined to optimise the mesh.
These are some of the challenges met when solving the adjoint Navier-Stokes equations:
Many years have passed since I completed that Ph.D. thesis, but still today adaptive mesh refinement is often assumed to imply heuristic error indicators, such as solution gradients. My message is that there is also a lesser-known family of adaptive algorithms that are based on a posteriori error estimation, where the mesh optimisation directly connects to the target of the simulation (the wind load of a building, for example). The resulting adaptive algorithms have been shown to be highly-efficient. But of course, there are still many exciting challenges to face in this area. Coupled problems, design optimisation and the mathematical foundation are but a few examples.
For an automated cloud service for adaptive algorithms in CFD, register for free here.
For an open source implementation, see: FEniCS-HPC.