Código algebraico de multirredes

9

Me gustaría comprender más detalles sobre la implementación de los métodos de múltiples cuadrículas algebraicas (AMG). He estado leyendo "Un tutorial de cuadrícula múltiple", que es bastante bueno y explica todos los detalles de la interpolación, el operador de cuadrícula gruesa y la selección de cuadrícula gruesa para AMG. Sin embargo, creo que no hay nada como jugar y leer un código.

Por lo tanto, me gustaría preguntar si alguien conoce algún "código de ejemplo" AMG clásico, como el código FORTRAN de múltiples cuadrículas geométricas disponible al final de "Métodos de múltiples cuadrículas" (SIAM) de SF McCormick. Es bastante difícil obtener un código de alta calidad y producción como BoomerAMG para obtener más información sobre el método.

Bernardo MR
fuente
¿Está específicamente interesado en AMG clásico (en oposición a la agregación suavizada *)? Si es así, indique esto en la pregunta.
Jed Brown

Respuestas:

10

BoomerAMG es parte del paquete Hypre , que es muy sencillo de adquirir. Un código mucho menos complejo si está comenzando a mirar estos métodos podría ser PyAMG .

Peter Brune
fuente
Sí, eché un vistazo a PyAMG, que es un código muy bueno, pero tiene todo esto sobre envolver código C / C ++ en Python, implementa diferentes métodos AMG distintos al "clásico", y así sucesivamente. Estaba buscando algo más simple, que la gente usa para enseñar.
Bernardo MR
44
Desafortunadamente, la experiencia general con el uso y el intento de contribuir a los códigos AMG es que si no tiene una multitud de opciones, no podrá resolver nada que se aproxime a un problema interesante. Por lo tanto, su paquete AMG típico incluirá una serie de opciones para la aproximación de la conexión, la construcción del interpolador y el suavizado que ciertamente es difícil de analizar mediante la lectura del código. Dicho esto, el AMG clásico es muy simple, e implementarlo usted mismo o hacer que sus estudiantes intenten hacerlo por sí mismos (dependiendo de su nivel de habilidad) puede ser el camino a seguir.
Peter Brune
2

Recomiendo encarecidamente la introducción de Alfio Borizi al método algebraico de múltiples cuadrículas. Hay un ejemplo de código fortran 77 en el apéndice A.

Paul
fuente
Creo que está preguntando sobre implementaciones, no más literatura.
Jack Poulson
1
@JackPoulson: tiene una implementación en el apéndice.
Paul
2
Lo siento, aparentemente no puedo leer esta mañana. Votado
Jack Poulson
1
@Paul: Podría estar equivocado, pero creo que este es un código geométrico de múltiples cuadrículas para el problema de Poisson (que también funciona para el caso no lineal).
Bernardo MR
@ BernardoM.R .: Acabo de encontrar este archivo PostScript ... Tiene muchos ejemplos concretos de operadores de prolongación y restricción para problemas de modelo. Sin embargo, en realidad no tiene un código completo, pero aún puede serle útil.
Paul
1

También está el paquete ML que forma parte de Trilinos. Su reputación es igual de buena que la de BoomerAMG / hypre.

Creo que un nuevo paquete de Trilinos para AMG se llama MueLu, y también debería estar disponible en las versiones más recientes.

Todos estos son de código abierto.

Wolfgang Bangerth
fuente
1
MueLu no ha sido liberado y la última vez que hablé con él, Ray no esperaba un lanzamiento público por otro año más o menos. Tenga en cuenta que ML y MueLu (en la medida en que he escuchado lo que contiene) se basan en la agregación suavizada, que es un algoritmo bastante diferente del AMG clásico (en el que se basa BoomerAMG).
Jed Brown
1

He estado trabajando en esta implementación por un tiempo. Es Python / Numpy / Scipy. No es una multigrid algebraica: debe proporcionar su propio operador de restricción. Pero si es una implementación educativa en la que está interesado, agradecería algunas solicitudes de extracción para agregar dicha capacidad.

tsbertalan
fuente