Estou planejando usar multigrid para calcular alguns autovalores e vetores, e notei que o PETSc tem suporte de alto nível para multigrid. A documentação do PETSc diz que essa parte do PETSc não deve ser usada, pois será substituída em breve.
Quais outras bibliotecas têm suporte de alto nível para multigrid e em quanto tempo o PETSc lançará o novo suporte multigrid?
Respostas:
Tanto o PETSc quanto o Trilinos têm bons métodos multigrid algébricos.
O deal.II implementa métodos geométricos multigrid para discretizações de elementos finitos, consulte, por exemplo, o programa do tutorial da etapa 16 .
fonte
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.
fonte