In this work we solve the optimal control problem

where is the control variable, the state variable and a target function. The minimization problem is subject to the elliptic partial differential equation

We use the steepest descent method based on the adjoint methodology. The corresponding adjoint system writes as

The directional derivative of the cost function is given by

and the control variable is updated according to

for some value of .

## Getting Started

The solver must be compiled in the terminal. It is advisable to first clean previous compilations with

```
wclean
```

and then use

```
wmake
```

### Prerequisites

OpenFOAM C++ library must be installed in order to compile the code.

The OpenFOAM distribution provided by the OpenFOAM Foundation was used.

## Running a Case

In order to run the solver move to the case folder *poissonAdjoinFoamCase* and type in the command line

```
./Allprepare
poissonAdjointFoam
```

The *poissonAdjointFoam* solver has been tested in a square domain with zero Dirichlet boundary conditions and . The target function is .

### Warning

It might be needed to use

```
sed -i -e 's/\r$//' filename
```

and

```
chmod +x filename
```

in order to be able to execute

```
./filename
```

## References

- F. Tröltzsch.
*Optimal control of partial differential equations: theory, methods, and applications*. American Mathematical Soc., 2010.