O multigrid PETSc (como pré-condicionador) é bastante maduro e pode ser usado com qualquer um dos solucionadores KSP (método iterativo de Krylov) no PETSc digitando:
-pc_type mg
No entanto, isso requer que você tenha alguma maneira de gerar seus níveis aproximados, como ter grades estruturadas definidas por objetos PETSc DA, que serão aumentadas automaticamente.
Ou, se você quiser usar multigrid algébrico do pacote HYPRE, poderá usar
-pc_type hypre
Ou do pacote ML com
-pc_type ml
Estes são baixados durante o processo de configuração, anexando
--download-hypre=1 --download-ml=1
à sua linha de comando ./configure.
A parte que é depreciada (por enquanto) é a estrutura DMMG, que está sendo substituída pelo solucionador SNES (não-linear) FAS e melhor suporte para lidar com discretizações multiníveis enquanto usa MG ou FAS como falamos. A outra substituição (para problemas lineares) é
-pc_type gamg -pc_gamg_type sa
Este é um código mais novo, nativo no PETSc, multigrid algébrico de agregação suavizada altamente escalável.