Time-dependent optimal control of Stokes flow

Section author: Marie E. Rognes <meg@simula.no>, Steven Vandekerckhove <Steven.Vandekerckhove@kuleuven.be>

Problem definition

The problem is to minimise the following tracking-type functional

\[J(y, u) = \frac{1}{2} \int_{0}^T \int_{\Omega} | y - z |^2 \, \mathrm{d}x \, \, \mathrm{d}t + \frac{\alpha}{2} \int_{0}^T \int_{\Omega} |u|^2 \, \mathrm{d}x \, \, \mathrm{d}t\]

subject to the time-dependent Stokes equation

\[\begin{split}y_t - \nu \Delta y + \nabla p &= u(t) \qquad \mathrm{in} \, \Omega \times (0, T), \\ - \nabla \cdot y &= 0 \qquad \mathrm{in} \, \Omega \times (0, T), \\ y(\cdot, t) &= 0 \qquad \mathrm{on} \, \partial \Omega \times (0, T), \\ y(\cdot, 0) &= y_0 \qquad \mathrm{in} \, \Omega .\end{split}\]

In particular, we aim to

\[\min J(y, u) \textrm{ over } (y, u)\]

Discretization

Using the implicit Euler discretization in time with timestep \(\Delta t\), the time-discretized differential equation reads: for a given \(u^n\), for each time step \(n\), find \((y^n, p^n)\) such that

\[ \begin{align}\begin{aligned}\begin{split} y^{n} - \Delta t \, ( \nu \Delta y^{n} - \nabla p^{n}) = \Delta t \, u^n + y^{n-1} \\\end{split}\\- \nabla \cdot y^{n} = 0\end{aligned}\end{align} \]

Let \(V\) be the space of continuous piecewise quadratic vector fields that vanish on the boundary \(\partial \Omega\). Let \(Q\) be the space of continuous piecewise linear vector functions that have average value zero. Multiplying by test functions \(\phi \in V\) and \(q \in Q\), integrating by parts over \(\Omega\), the problem reads: find \(y_h^{n} \in V\) and \(p_h^{n} \in Q\) such that

\[\begin{split}\langle y_h^{n}, \phi \rangle + \Delta t \langle \nu \nabla y_h^{n}, \nabla \phi \rangle - \Delta t \langle p_h^{n}, \nabla \cdot \phi \rangle &= \Delta t \langle u^n, \phi \rangle + \langle y_h^{n-1}, \phi \rangle \\ - \Delta t \langle \nabla \cdot y_h^{n}, q \rangle &= 0\end{split}\]

hold for all \(\phi \in V\) and \(q \in Q\). Note that we here have multiplied the last equation by \(\Delta t\) for the sake of symmetry: this can be advantageous for the solution of resulting linear system of equations.

Implementation

We start our implementation by importing the dolfin and dolfin_adjoint modules:

from dolfin import *
from dolfin_adjoint import *