Otros ya han comentado sobre el tema del preacondicionamiento de lo que llamaré matrices "monolíticas", es decir, por ejemplo, la forma discretizada de una ecuación escalar como la ecuación de Laplace, la ecuación de Helmholtz o, si desea generalizarla, el valor vectorial ecuación de elasticidad. Para estas cosas, está claro que el multigrid (ya sea algebraico o geométrico) es el ganador si la ecuación es elíptica, y para otras ecuaciones no es tan clara, pero algo como SSOR a menudo funciona razonablemente bien (por algún significado de "razonable").
Para mí, la gran revelación ha sido qué hacer con los problemas que no son monolíticos, por ejemplo, para el operador de Stokes
Cuando comencé con el análisis numérico hace unos 15 años, creo que la gente tenía la esperanza de que se pudieran aplicar las mismas técnicas a las matrices anteriores, y la dirección de la investigación era probar directamente multirredes o utilizar generalizaciones de SSOR (usando " puntos suaves "como Vanka) y métodos similares. Pero esto se ha desvanecido ya que no funciona muy bien.
( AsiTsi0 0) .
Lo que vino a reemplazar esto fue lo que inicialmente se denominó "preacondicionadores basados en la física" y luego simplemente (y tal vez con mayor precisión) "preacondicionadores de bloque" como el de Silvester y Wathen. Estos a menudo se basan en eliminaciones de bloques o complementos de Schur y la idea es construir un preacondicionador de tal manera que uno pueda reutilizar preacondicionadores para bloques individuales que funcionan bien. En el caso de la ecuación de Stokes, por ejemplo, el preacondicionador Silvester / Wathen usa que la matriz
( A0 0sisiTUN- 1si)- 1
cuando se usa como preacondicionador con GMRES daría lugar a la convergencia en exactamente dos iteraciones. Como es triangular, la inversión también es mucho más simple, pero aún tenemos el problema de qué hacer con los bloques diagonales, y allí se usan aproximaciones:
donde la tilde significa reemplazar el inverso exacto por una aproximación. Esto es a menudo mucho más simple: como el bloque
A es un operador elíptico,
~ A - 1( A- 1˜0 0si( BTUN- 1B )- 1˜)
UNUN- 1˜está bien aproximado por un ciclo V multirredes, por ejemplo, y resulta que aquí,
está bien aproximado por una ILU de una matriz de masa.
( BTUN- 1B )- 1˜
Esta idea de trabajar con los bloques individuales que comprenden la matriz y reutilizar los preacondicionadores en los individuales ha demostrado ser enormemente poderosa y ha cambiado por completo la forma en que pensamos hoy en preacondicionamiento de los sistemas de ecuaciones. Por supuesto, esto es relevante porque la mayoría de los problemas reales son, de hecho, sistemas de ecuaciones.