Discrete adjoint optimization with OpenFOAM