 
Summary: ADjoint: An Approach for the Rapid Development
of Discrete Adjoint Solvers
Charles A. Mader
and Joaquim R. R. A. Martins
University of Toronto, Toronto, Ontario M3H 5T6, Canada
and
Juan J. Alonso
and Edwin van der Weide§
Stanford University, Stanford, California 94305
DOI: 10.2514/1.29123
An automatic differentiation tool is used to develop the adjoint code for a threedimensional computational fluid
dynamics solver. Rather than using automatic differentiation to differentiate the entire source code of the
computational fluid dynamics solver, we have applied it selectively to produce code that computes the flux Jacobian
matrix and the other partial derivatives that are necessary to compute total derivatives using an adjoint method. The
resulting linear discrete adjoint system is then solved using the portable, extensible toolkit for scientific computation.
This selective application of automatic differentiation is the central idea behind the automatic differentiation adjoint
(ADjoint) approach. This approach has the advantage that it is applicable to arbitrary sets of governing equations
and cost functions, and that it is exactly consistent with the gradients that would be computed by exact numerical
differentiation of the original solver. Furthermore, the approach is largely automatic, thus avoiding the lengthy
development times usually required to develop adjoint solvers for partial differential equations. These significant
