My interest in adjoint equations began with Antony Jameson's research on optimal aerodynamic design. This technique, using the adjoint potential, Euler or Navier-Stokes equations, is very efficient in determining the gradient of an objective function with respect to many design variables.
Other web pages discuss my interests in the use of adjoint solutions for optimal design within HYDRA, and error analysis. In this page, I discuss my interests in the underlying theory, formulation, approximation and solution of adjoint equations.
In 1997, Niles Pierce and I considered the proper formulation of adjoint boundary conditions for the Euler and Navier-Stokes equations, proving that there is a limited set of objective functions for which the standard formulation of the problem is wellposed, and determining some key properties of the solutions to the adjoint quasi-1D and 2D Euler equations . This led to papers in which we derived a closed form solution for the adjoint quasi-1D Euler equations, with and without shocks [2,5].
Working at the interface between mathematics and engineering, I've always been concerned about explaining key mathematical approaches as clearly as possible to the engineering community. Paper  attempts to explain the key ideas of optimal design using adjoints, introducing the ideas at the algebraic level before proceeding to partial differential equations.
I am a firm advocate of the "fully-discrete" approach to approximating adjoint equations, in which one starts with the discretisation of the original nonlinear PDE, and then linearises it and forms its transpose. This gives numerical results which would be identical to finite difference sensitivities obtained from the nonlinear calculation with infinitesimal step size on a computer with infinite machine precision. It is not that there is anything theoretically wrong with the "continuous" approach of formulating the adjoint PDE and then approximating it using a discretisation which might be entirely different to that used for the nonlinear PDE. Rather, it is pragmatic issues which make me prefer the "fully-discrete" approach.
One is the fact that the "fully-discrete" method is completely prescriptive; there is a straightforward process by which one generates the adjoint code, and this can be significantly aided by the use of Automatic Differentiation techniques to automatically generate key pieces of the adjoint code.
Another is that it is possible to solve the discrete adjoint equations using an adjoint version of the highly-optimised iterative methods developed for the nonlinear equations. This is the subject of papers [4,6], with  also discussing the complexities that arise with the imposition of strong boundary conditions.
My latest research interest is in what happens when the underlying nonlinear solution has a shock, and the conditions under which the computed adjoint solution will approach the analytic solution as one refines the computational grid. My first paper on this topic  presents numerical results indicating it is necessary to smear the shock over a few grid points to get a convergent adjoint discretisation. Subsequent numerical analysis, in joint work with Stefan Ulbrich, has proved that this is the case.