Optimization Methods and Software Vol. 20, No. 6, December 2005, 645–663 A-revolve: an adaptive memory-reduced procedure for calculating adjoints; with an application to computing adjoints of the instationary Navier–Stokes system MICHAEL HINZE*† and JULIA STERNBERG‡ †Institut für Numerische Mathematik and ‡Institut für Wissenschaftliches Rechnen, Technische Universität Dresden, D-01069 Dresden, Germany (Received 12 February 2003; revised 1 December 2003; in final form 20 February 2004) This article presents a low-storage and low-run-time approach for calculating numerical approxima- tions of adjoint equations for the instationary Navier–Stokes equations with adaptive evaluation of the discretization step. It utilizes adaptive checkpointing. The amounts of memory reduction due to checkpointing and of the increase in run-time caused by repeated forward integration of the Navier– Stokes equations are reported. It is one result that memory reduction of two orders of magnitude only causes a slow down factor of 2–3 in run-time. It is a further result that the adaptive checkpointing for the instationary Navier–Stokes equations causes only a slight increase of the run-time compared to the static optimal checkpointing. The amounts of run-time increase caused by the adaptive checkpoint allocations compared with the static optimal checkpointing are reported as well. Keywords: Optimal control; Navier–Stokes system; Adaptive checkpointing 1. Introduction Adjoints are the most important tool for computing sensitivities in control problems for the time-dependent Navier–Stokes equations, in particular when the number of control variables is large and thus forbids approaches based on finite difference methods. To illustrate the role of adjoints for calculating sensitivities let us consider the following abstract optimal control problem: find an optimal control u U that minimizes the functional ˆ J (u) := J (y(u), u) = J 1 (y) + J 2 (u), (1) where y Y and u are related through the equality constraints G(y, u) = G 1 (y) Bu = 0. (2) Here we assume that J = J 1 (y) + J 2 (u): Y × U R and G: Y × U Z are sufficiently smooth mappings, B denotes the linear, bounded control operator and (U,(·, ·) U ), (Y, (·, ·) Y ) *Corresponding author. Email: hinze@math.tu-dresden.de Optimization Methods and Software ISSN 1055-6788 print/ISSN 1029-4937 online © 2005 Taylor & Francis http://www.tandf.co.uk/journals DOI: 10.1080/10556780410001684158