The application of differentiable programming frameworks to computational fluid dynamics