¿Qué bibliotecas tienen un buen soporte de alto nivel para multigrid?

17

Estoy planeando usar multirredes para calcular algunos valores y vectores propios, y noté que PETSc tiene soporte de alto nivel para multirredes. La documentación de PETSc dice que esta parte de PETSc no debe usarse, ya que se reemplazará pronto.

¿Qué otras bibliotecas tienen soporte de alto nivel para multigrid, y aproximadamente qué tan pronto PETSc lanzará el nuevo soporte multigrid?

Dan
fuente
2
El nuevo MG está presente en petsc-dev y funciona, al igual que el nuevo solucionador GAMG. Estamos a la espera de lanzar hasta que podamos cambiar cada ejemplo (y hay cientos). Simplemente comenzaría a usar petsc-dev ahora.
Matt Knepley

Respuestas:

7

Tanto PETSc como Trilinos tienen buenos métodos algebraicos de múltiples cuadrículas.

deal.II implementa métodos geométricos de múltiples cuadrículas para discretizaciones de elementos finitos, ver por ejemplo el programa tutorial del paso 16 .

Wolfgang Bangerth
fuente
2
PETSc hace MG geométrica si usa una cuadrícula DMDA (cartesiana) desde entonces sabemos cómo construir interpoladores y problemas gruesos.
Matt Knepley
11

La multirredes PETSc (como preacondicionador) es bastante madura y se puede usar con cualquiera de los solucionadores KSP (método iterativo de Krylov) en PETSc escribiendo:

-pc_type mg

Sin embargo, esto requiere que tenga alguna forma de generar sus niveles gruesos, como tener cuadrículas estructuradas definidas por objetos PETSc DA, que se volverán gruesos automáticamente.

O, si desea usar multirredes algebraicas del paquete HYPRE, puede usar

-pc_type hypre

O del paquete ML con

-pc_type ml

Estos se descargan durante el proceso de configuración agregando

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

a su línea de comando ./configure.

La parte que se deprecia (por ahora) es el marco DMMG, que está siendo reemplazado por el solucionador FAS SNES (no lineal) y un mejor soporte para manejar discretizaciones multinivel mientras usamos MG o FAS mientras hablamos. El otro reemplazo (para problemas lineales) es

-pc_type gamg -pc_gamg_type sa

Este es un código más nuevo, nativo en PETSc, multirrid algebraico de agregación suavizada altamente escalable.

Peter Brune
fuente