Quais bibliotecas têm um bom suporte de alto nível para multigrid?

17

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?

Dan
fonte
2
O novo MG está lá no petsc-dev e funciona, assim como o novo solucionador GAMG. Estamos aguardando o lançamento até podermos mudar todos os exemplos (e existem centenas). Eu começaria a usar o petsc-dev agora.
Matt Knepley

Respostas:

7

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 .

Wolfgang Bangerth
fonte
2
O PETSc faz MG geométrica se você usa uma grade DMDA (cartesiana) desde então, sabemos como construir interpoladores e problemas grosseiros.
Matt Knepley
11

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.

Peter Brune
fonte