# Which libraries have good high-level support for multigrid?

I'm planning to use multigrid to calulate some eigenvalues and vectors, and I noticed PETSc has high-level support for multigrid. The PETSc documentation says that this part of PETSc should not be used, as it is being replaced soon.

Which other libraries have high-level support for multigrid, and roughly how soon will PETSc release the new multigrid support?

• The new MG is there in petsc-dev and works, as does the new GAMG solver. We are waiting to release until we can change every example (and there are hundreds). I would just start to use petsc-dev now. – Matt Knepley Dec 15 '11 at 23:31

Both PETSc and Trilinos have good algebraic multigrid methods.

deal.II implements geometric multigrid methods for finite element discretizations, see for example the step-16 tutorial program.

• PETSc does geometric MG if you use a DMDA (Cartesian) grid since then we know how to construct interpolators and coarse problems. – Matt Knepley Dec 16 '11 at 19:48
• Update: PETSc does GMG for nested unstructured meshes. Non-nested is available, but the point location could be improved. – Matt Knepley Apr 17 '20 at 13:38

PETSc multigrid (as a preconditioner) is quite mature and may be used with any of the KSP (iterative Krylov method) solvers in PETSc by typing:

 -pc_type mg 

However, this requires that you have some way of generating your coarse levels, such as having structured grids defined by PETSc DA objects, which will be coarsened automatically.

Or, if you want to use algebraic multigrid from the HYPRE package, you can use

 -pc_type hypre 

Or from the ML package with

 -pc_type ml 

These are downloaded during the configuration process by appending

 --download-hypre=1 --download-ml=1 

to your ./configure command line.

The part that is depreciated (for now) is the DMMG framework, which is being replaced by the SNES (nonlinear) FAS solver and better support for handling multilevel discretizations while using either MG or FAS as we speak. The other replacement (for linear problems) is

 -pc_type gamg -pc_gamg_type sa 

This is a newer code, native in PETSc, highly scalable smoothed-aggregation algebraic multigrid.