Automatic Differentiation software can be very helpful in simplifying the development of adjoint codes for design optimisation. The HYDRA code we are developing with Rolls-Royce uses Tapenade, developed at INRIA, to generate the linear and adjoint versions of the key nonlinear "kernels" within the code -- the bits which would be very time-consuming and error-prone to write by hand.
To explain how AD software can be used, a paper entitled "Using Automatic Differentiation for Adjoint CFD Code Development" has been written for presentation at the Post-SAROD Indo-French Workshop on Recent Developments in Tools for Aerodynamics & Multidisciplinary Optimization in Bangalore in December 2005. This paper has been based around a simple demonstration code developed by Devendra Ghate for inviscid flow around a 2D airfoil; both the paper and the code can be downloaded from the links below.
A "hands-on" tutorial was held at ADA on Wednesday December 14th, the day after the Workshop. I went through the testcase code in complete detail, and participants had an opportunity to see how Tapenade generates the linear and adjoint subroutines, and to test out the resulting linear and adjoint codes.
In his latest research, Devendra has developed the capability to compute Hessians, the matrix of second derivatives of an output function with respect to the input parameters defining the design or the modes of uncertainty. For details on this, please follow this link.