A new approach for the development of discrete adjoint solvers is presented. This methodology hinges upon exposing the algorithmic structure of the original solver to the formulation of the adjoint problem. The process yields a corresponding algorithmic description for the adjoint solver, which is subsequently assembled utilizing a library of reverse mode differentiated routines generated by the algorithmic differentiation (AD) tool TAPENADE. The proposed technique is applied to an unstructured incompressible finite volume flow solver, which implements a segregated pressure correction SIMPLE algorithm for steady-state problems and employs an external library to solve sparse linear systems. The implementation of the flow solver is thoroughly documented to illustrate how its algorithm can be decomposed into an instructive procedural description. The AD-driven development approach is initially applied to the laminar solver to construct a corresponding baseline adjoint code. Relevant issues concerning the handling of external linear system solvers in the adjoint code and the use of AD in a library-based programming environment are addressed. The flexibility of the approach is then highlighted by deriving a recipe for the adjoint Spalart-Allmaras turbulence model and implementing it in the baseline solver in a modular fashion. The assembled discrete adjoint solver is verified against sensitivity derivative values produced by a forward mode differentiated tangent-linear solver and the original solver via divided differences. Surface forces and power loss across the system are used as objectives and mesh nodes on specified boundary patches as design variables. In accordance with the theory of AD, the adjoint solver is shown to be iteratively consistent, i.e. exact dual, with the tangent-linear solver. The adjoint and tangent-linear Spalart-Allmaras turbulence models are observed to run into stability problems as the Reynolds number of the flow is increased. The structured assembly of the adjoint solver allows the developer to introduce various code optimizations to improve its performance. This contributes to the adjoint solver's low overhead in memory consumption and computational time. The achieved efficiency ensures that the computation of the sensitivity gradients could be carried out at the same resolution as the flow physics even in industrial scale applications.
|Translated title of the contribution||Modulaarinen menetelmä diskreettien liittotilaratkaisijoiden kehittämiseen ja ylläpitoon - sovelluksia kokoonpuristumattomaan Navier-Stokes ratkaisijaan|
|Publication status||Published - 2014|
|MoE publication type||G4 Doctoral dissertation (monograph)|
- discrete adjoint method
- algorithmic differentiation
- automatic differentiation