A number of algorithm developments are presented for adjoint methods using the "discrete" approach in which the discretization of the nonlinear equations is linearized and the resulting matrix is then transposed. With a new iterative procedure for solving the adjoint equations, exact numerical equivalence is maintained between the linear and adjoint discretizations. The incorporation of strong boundary conditions within the discrete approach is discussed, and difficulties associated with the use of linear perturbation and adjoint methods for applications with strong shocks are also examined
Computer-aided design (CAD) tools are extensively used to design industrial components, however, contrary to e.g. computational fluid dynamics (CFD) solvers, shape sensitivities for gradient-based optimization of CAD-parametrized geometries have only been available with inaccurate and non-robust finite differences. Here, algorithmic differentiation (AD) is applied to the open-source CAD kernel Open CASCADE Technology using the AD software tool ADOL-C (Automatic Differentiation by OverLoading in C++). The differentiated CAD kernel is coupled with a discrete adjoint CFD solver, thus providing the first example of a complete differentiated design chain built from generic, multi-purpose tools. The design chain is demonstrated on the gradient-based optimization of a squared U-bend turbo-machinery cooling duct to minimize the total pressure loss.