Adjoint Approaches For Optimal Flow Control