Taxonomía de preacondicionadores de ILU


8

Aprendí que para el solucionador BiCGStab para sistemas lineales dispersos es casi siempre necesario usar un preacondicionador. Ahora me di cuenta de que elegir una buena depende del problema.

Navegando por la web descubrí que hay muchos preacondicionadores basados ​​en ILU (ILUT, MILU, etc.) Aquí es donde me confundí.

Me preguntaba si alguien puede explicar brevemente la taxonomía de los preacondicionadores de ILU, dar algunas fuentes de literatura para algunos en particular y cuáles son adecuados para BiCGStab.

La configuración en la que estoy trabajando es CFD, y el código se basa en la discretización de volumen finito no estructurado. Probablemente se necesitarán preacondicionadores diferentes para la ecuación de impulso y las ecuaciones de transporte para los escalares de turbulencia.

Respuestas:


9

Un preacondicionador, digamos M, es una aproximación en la matriz del sistema, digamos A, que cambia el problema a otro problema con un espectro de valor propio mejorado. Un preacondicionador perfecto sería inverso de A, es decir, inv (M) = A.

Desafortunadamente, este inverso normalmente no está disponible, es demasiado complicado de calcular, requiere más espacio para almacenar debido al relleno introducido durante la factorización y también puede sufrir errores de redondeo. Por lo tanto, un preacondicionador debería ser fácil de calcular y aplicar pero efectivo.

Además del preacondicionador básico como Jacobi o Gauss-Seidel (o SOR), uno de los preacondicionadores más frecuentes es ILU (IC en problemas simétricos: está trabajando en CFD para los sistemas o no simétricos)

La selección del preacondicionador normalmente depende de su problema. ILU tiene muchas variantes como ILUT, ILUS, MILU, etc. Puede consultar la literatura que agregué al final. Para problemas con dificultad leve, se puede usar ILU (0) pero a medida que los problemas se vuelven más difíciles, es decir, el número de Reynolds aumenta más rellenos (por ejemplo, ILU (1)) con estrategias de umbral (ILUT). El problema es que los usos avanzados de ILU requieren más memoria y la determinación del patrón de dispersión que ahora es diferente de la matriz de su sistema. En este caso, debe calcular el patrón de esparticidad simbólicamente primero y numéricamente después.

Hay varias ideas para reducir el trabajo de computación,

  • uso de preacondicionadores rezagados en los que evita volver a calcular el preacondicionador incluso si el sistema lineal varía.
  • uso de LU-SGS como preacondicionador que podría implementarse eficientemente con algoritmos de división de flujo.
  • uso de métodos sin matriz, el que preferí en mi trabajo de doctorado. Los solucionadores de Newton-Krylov donde no se necesita el jacobiano esperan un preacondicionador que normalmente se calcula con una aproximación de bajo orden y probablemente con algoritmos basados ​​en colores (aunque es más difícil en problemas no estructurados).
  • uso de solo operadores de difusión como laplaciano y evitar términos convectivos (no es eficiente para reducir el número de iteraciones)
  • multigrid, donde utiliza un suavizador simple como w-Jacobi o SOR en una jerarquía de cuadrícula. para problemas no construidos, debe usar Multirrid Algebraico (AMG) en lugar de geométrico.
  • y muchos otros (multiplico el número de mis entradas por 10).

Dado que el problema no es simétrico, existen principalmente dos solucionadores para usar: GMRES o BiCGStab. (QMR o TFQMR son otra alternativa, pero creo que su rendimiento está por debajo de esos dos). GMRES normalmente es un mejor solucionador si aún no tiene un problema de almacenamiento debido a que los vectores almacenados son necesarios para reiniciar; este es un problema si el preacondicionador es deficiente o si tiene un dof muy grande. BiCGStab requiere solo cuatro productos Matrix-Vector, lo que es bueno para grandes problemas pero normalmente inferior a GMRES. (¡Preferí GMRES pero me gusta mucho BiCGStab!)

Todo este problema de preacondicionador y solucionador lineal es muy complejo. Puedo sugerir algunos libros para leer. Su punto de partida debe ser Plantillas para la solución de sistemas lineales. Este es un libro gratuito. En este libro se explican los suavizadores tanto como solucionadores independientes como preacondicionadores en solucionadores de Krylov. También puede consultar los "Métodos iterativos para sistemas lineales dispersos" de Yousef Saad. Es definitivo en la biblioteca de su institución. La primera edición también está disponible aquí .

Antes de concluir, le recomiendo que mire marcos como Petsc , Trilinos o incluso Hypre y también los archivos proporcionados por 1 . Proporcionan preacondicionadores con algo de programación. En realidad, hay más libros para ofrecer, pero también eche un vistazo a "Técnicas y aplicaciones de preacondicionamiento matricial" de Ke Chen. Los códigos de Matlab están disponibles con el libro.

Buena suerte en tu viaje, la necesitarás.


¡Muchas gracias! Tengo ambos libros y todavía estoy cavando, ¡este es un tema realmente interesante!
Johntra Volta

2

El libro de Y. Saad es también una de las referencias estándar para solucionadores y preacondicionadores.


Ahora entiendo que es uno de los héroes de los métodos espaciales de Krylov. Probablemente lo mataría con preguntas si fuera mi asesor.
Johntra Volta
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.