Outros já comentaram a questão do pré-condicionamento, o que chamarei de matrizes "monolíticas", ou seja, por exemplo, a forma discretizada de uma equação escalar, como a equação de Laplace, a equação de Helmholtz ou, se você deseja generalizar, o valor vetorial equação da elasticidade. Por essas coisas, fica claro que o multigrid (algébrico ou geométrico) é o vencedor se a equação é elíptica e, para outras equações, não é tão clara - mas algo como o SSOR geralmente funciona razoavelmente bem (para algum significado de "razoável").
Para mim, a grande revelação tem sido o que fazer com problemas que não são monolíticos, por exemplo, para o operador Stokes
Quando comecei com a análise numérica, há 15 anos, acho que as pessoas tinham a esperança de que as mesmas técnicas pudessem ser aplicadas a essas matrizes, como acima, e a direção da pesquisa era tentar multigrid diretamente ou usar generalizações do SSOR (usando " smoothers de ponto "como Vanka) e métodos semelhantes. Mas isso desapareceu, pois não funciona muito bem.
( ABTB0 0) .
O que veio substituir isso foi o que foi inicialmente chamado de "pré-condicionadores baseados na física" e mais tarde simplesmente (e talvez com mais precisão) "pré-condicionadores de bloco", como o de Silvester e Wathen. Geralmente, eles se baseiam na eliminação de blocos ou nos complementos de Schur e a idéia é criar um pré-condicionador de tal maneira que se possa reutilizar pré-condicionadores para blocos individuais que funcionam bem. No caso da equação de Stokes, por exemplo, o pré-condicionador de Silvester / Wathen usa que a matriz
( A0 0BBTUMA- 1B)- 1
quando usado como pré-condicionador com GMRES resultaria em convergência em exatamente duas iterações. Por ser triangular, a inversão também é muito mais simples, mas ainda temos o problema do que fazer com os blocos diagonais, e aí se usa aproximações:
onde o til significa substituir o inverso exato por uma aproximação. Isso geralmente é muito mais simples: como o bloco
A é um operador elíptico,
~ A - 1 é bem aproximada por uma ciclo-V multigrade, por exemplo, e verifica-se que aqui,
( A- 1˜0 0B( BTUMA- 1B )- 1˜)
UMAUMA- 1˜ é bem aproximado por uma ILU de uma matriz de massa.
( BTUMA- 1B )- 1˜
Essa ideia de trabalhar com os blocos individuais que compõem a matriz e reutilizar pré-condicionadores em blocos individuais provou ser extremamente poderosa e mudou completamente a maneira como pensamos hoje nos sistemas de equações de pré-condicionamento. Obviamente, isso é relevante porque a maioria dos problemas reais são, de fato, sistemas de equações.