# Using algebraic multigrid for preconditioning convection-diffusion operators

I implemented a Navier Stokes based on FEM discretization and PETSc for solving the linear system of equations. To create an efficient solution procedure, I follow the paper "Efficient preconditioning of the linearized Navier-Stokes equations for incompressible flow" (Silvester et al.), which propose a Schur complement approach. It works quite fine in the sense that I have a nearly constant number of iterations independently of mesh size and timestep for the simple benchmarks that are also presented in this paper (2D driven cavity flow and backward facing step). But at the moment, I solve the upper velocity block with a parallel direct solver (MUMPS). The pressure Schur block is solved with inexact solvers as proposed in the paper.

In the paper, the authors propose to run in each outer iteration a single multigrid V-cycle and using a point Gauss-Seidel smoother to approximate the inverse of this discrete convection-diffusion operator. As I cannot easily use a geometric multigrid method, I thought to replace the direct solver by one algebraic multigrid V-cycle (boomeramg from the hypre package). But than I loose the constant number of iteratons while making the mesh finer.

Does any of you has an idea how to create a spectrally equivalent and efficient preconditioner for the inverse of the velocity matrices based on algebraic multigrid? Is there something inherent which does not allow to make use of algebraic multigrid in this case? If not, what could be the source of loosing the constant iteration scaling?

Edit:

I added some benchmarks for different solvers of the velocity block. The problem is solved is the standard 2D driven cavity flow, discretization with Taylor-Hood and a uniform refinement of the unit box

Exakt solver (MUMPS)

$$h = \frac{1}{32}$$: 25 iter $$h = \frac{1}{64}$$: 25 iter $$h = \frac{1}{128}$$: 25 iter $$h = \frac{1}{256}$$: 22 iter

one V-AMG (algebraic, boomeramg)

$$h = \frac{1}{32}$$: 30 iter $$h = \frac{1}{64}$$: 30 iter $$h = \frac{1}{128}$$: 39 iter $$h = \frac{1}{256}$$: 48 iter

FGMRES with preconditioner V-AMG (algebraic, boomeramg), rtol: $$10^{-6}$$

$$h = \frac{1}{32}$$: 30 iter $$h = \frac{1}{64}$$: 29 iter $$h = \frac{1}{128}$$: 30 iter $$h = \frac{1}{256}$$: 47 iter

FGMRES with preconditioner V-AMG (algebraic, boomeramg), atol: $$10^{-8}$$

$$h = \frac{1}{32}$$: 27 iter $$h = \frac{1}{64}$$: 27 iter $$h = \frac{1}{128}$$: 28 iter $$h = \frac{1}{256}$$: 26 iter