Geometric multigrid with applications to computational fluid dynamics