Optimal flow control and stability analysis are some of the fields within Computational Fluid Dynamics (CFD) that make extensive use of gradients computed by adjoints, or adjoint-based optimization. However, due to the computational burden of handling the full nonlinear incompressible Navier-Stokes most applications were so far reduced to either operating on the linearized Navier-Stokes equations, or tackling optimization problems with short time horizon, or in simple geometries. To this end we developed a framework in the thermal-hydraulics code Nek5000 -- a highly scalable spectral element code -- which enables large-scale optimization computations in complex geometries using the full nonlinear Navier-Stokes equations.
The bottleneck in such computations stems from the coupling between the forward and the backward problem in the optimization loop, which mandates that entire velocity fields are available all throughout the backward sweep. A mix of memory and disk checkpointing has been developed at ANL to alleviate this issue. The current talk focuses however mainly on the CFD approach to nonlinear adjoints: problem formulation, implementation, validation. Furthermore to improve the disk checkpointing which requires, even in the optimal case, large storage space there is ongoing work on data compression of the velocity field files. As preliminary as this last part of the framework is, at this moment, a few steps towards resolving data compression will be presented, outlining what a suitable data compression algorithm must achieve to be useful in CFD computations, in particular for control and stability applications.