< Back to Blog

July 2018


Johan Hoffman

Adaptive algorithms in CFD: How to optimise a mesh

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:

  • The adjoint equations are linearised at a computed approximation of the primal (usual) Navier-Stokes solution, which introduces a linearisation error. Since turbulent flow is a chaotic system, this linearisation error could potentially grow exponentially.
  • In the adjoint equations, the direction of time is reversed. Thus the full time series of the primal solution must be computed and stored to solve the adjoint equations. This represents a huge amount of data for a large-scale CFD problem.
  • A so called discrete adjoint approach (solely based on the discretised form of the adjoint equations) often fails, since the stability of the discrete primal system does not translate to stability of the discrete adjoint system.
  • Turbulence models make the adjoint equations much more complicated by introducing additional variables and sensitivities.


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 a review of research in the area, see: Encyclopedia of Computational Mechanics - John Wiley & Sons Ltd.

For an open source implementation, see: FEniCS-HPC.