Uso de multirredes algebraicas para preacondicionar operadores de convección-difusión

8

Implementé un Navier Stokes basado en la discretización FEM y PETSc para resolver el sistema lineal de ecuaciones. Para crear un procedimiento de solución eficiente, sigo el documento "Precondicionamiento eficiente de las ecuaciones de Navier-Stokes linealizadas para flujo incompresible" (Silvester et al.), Que proponen un enfoque de complemento de Schur. Funciona bastante bien en el sentido de que tengo un número casi constante de iteraciones independientemente del tamaño de malla y el paso de tiempo para los puntos de referencia simples que también se presentan en este documento (flujo de cavidad impulsado en 2D y paso hacia atrás). Pero en este momento, resuelvo el bloque de velocidad superior con un solucionador directo paralelo (MUMPS). El bloque de Schur de presión se resuelve con solucionadores inexactos como se propone en el documento.

En el artículo, los autores proponen ejecutar en cada iteración externa un solo ciclo V multirredes y usar un punto Gauss-Seidel más suave para aproximar la inversa de este operador discreto de convección-difusión. Como no puedo usar fácilmente un método geométrico de cuadrícula múltiple, pensé en reemplazar el solucionador directo por un ciclo V algebraico de cuadrícula múltiple (boomeramg del paquete hypre). Pero luego pierdo el número constante de iteraciones mientras hago la malla más fina.

¿Alguno de ustedes tiene una idea de cómo crear un preacondicionador espectralmente equivalente y eficiente para el inverso de las matrices de velocidad basadas en multirredes algebraicas? ¿Hay algo inherente que no permita hacer uso de multirredes algebraicas en este caso? Si no, ¿cuál podría ser la fuente de perder la escala de iteración constante?


Editar:

Agregué algunos puntos de referencia para diferentes solucionadores del bloque de velocidad. El problema que se resuelve es el flujo de cavidad 2D estándar, la discretización con Taylor-Hood y un refinamiento uniforme de la caja de la unidad.

Solucionador de Exakt (MUMPS)

h=132h=164h=1128h=1256

un V-AMG (algebraico, boomeramg)

h=132h=164h=1128h=1256

106

h=132h=164h=1128h=1256

108

h=132h=164h=1128h=1256

Thomas W.
fuente

Respuestas:

2

Lo que hizo fue reemplazar el solucionador (directo) exacto en la parte superior izquierda por uno en el que solo realiza un solo ciclo V. El camino a seguir es resolver el bloque superior izquierdo en su preacondicionador usando un solucionador iterativo (por ejemplo, GMRES) usando el V-cycle AMG como preacondicionador para este solucionador interno. La experiencia muestra que si usa F-GMRES como solucionador externo, entonces el solucionador interno GMRES no necesita ser terriblemente preciso. Solo lo suficientemente preciso como para permitir que produzca un número casi constante de iteraciones externas.

Wolfgang Bangerth
fuente
Seguí su sugerencia e hice algunas pruebas para reemplazar el solucionador exacto por fgmres (creo que uno tiene que usar también la variante flexibal de gmres ya que el solucionador interno como multigrid no debería comportarse como un operador lineal) con V-AMG como preacondicionador . Agregué los resultados a mi pregunta anterior. Como puede ver, cuando reemplazo el ciclo V por un solucionador con tolerancia relativa, obtengo los mismos resultados. Solo ejecutar el solucionador interno a una tolerancia absoluta hace que la iteración externa sea constante al precio de aumentar el número de iteraciones internas.
Thomas W.
¡Encontré el problema! Sorprendentemente, el problema no se debió a una mala aproximación espectral del operador de convección-difusión, sino a algún error que cometí en la parte del complemento de Schur. Por lo tanto, incluso un ciclo V está bien para el bloque de velocidad y el solucionador requiere 10 iteraciones por paso de tiempo independientemente del tamaño de la malla.
Thomas W.
Contento de escuchar. Sus resultados están ciertamente en línea con nuestra experiencia en el documento 35 aquí: math.tamu.edu/~bangerth/publications.html#x-reviewed
Wolfgang Bangerth