D'autres ont déjà commenté la question du préconditionnement de ce que j'appellerai des matrices "monolithiques", c'est-à-dire par exemple la forme discrétisée d'une équation scalaire telle que l'équation de Laplace, l'équation de Helmholtz ou, si vous voulez la généraliser, la valeur vectorielle équation d'élasticité. Pour ces choses, il est clair que la multigrille (algébrique ou géométrique) est gagnante si l'équation est elliptique, et pour d'autres équations, elle n'est pas aussi claire - mais quelque chose comme SSOR fonctionne souvent assez bien (pour une certaine signification de "raisonnable").
Pour moi, la grande révélation a été de savoir quoi faire à propos de problèmes qui ne sont pas monolithiques, par exemple pour l'opérateur de Stokes
Lorsque j'ai commencé l'analyse numérique il y a une quinzaine d'années, je pense que les gens espéraient que les mêmes techniques pourraient être appliquées à de telles matrices comme ci-dessus, et la direction de la recherche était soit d'essayer directement plusieurs grilles, soit d'utiliser des généralisations de SSOR lisseurs de point "comme Vanka) et des méthodes similaires. Mais cela a disparu car cela ne fonctionne pas très bien.
(ABTB0).
Ce qui est venu remplacer cela était ce qui était initialement appelé "préconditionneurs basés sur la physique" et plus tard simplement (et peut-être plus précisément) "préconditionneurs de blocs" comme celui de Silvester et Wathen. Ceux-ci sont souvent basés sur des éliminations de blocs ou des compléments Schur et l'idée est de construire un préconditionneur de telle manière que l'on puisse réutiliser des préconditionneurs pour des blocs individuels qui sont connus pour bien fonctionner. Dans le cas de l'équation de Stokes, par exemple, le préconditionneur Silvester / Wathen utilise la matrice
(A0BBTA−1B)−1
lorsqu'il est utilisé comme préconditionneur avec GMRES, il en résulterait une convergence en exactement deux itérations. Puisqu'il est triangulaire, l'inversion est également beaucoup plus simple, mais nous avons toujours le problème de ce que nous devons faire avec les blocs diagonaux, et là on utilise des approximations:
où le tilde signifie remplacer l'inverse exact par une approximation. C'est souvent beaucoup plus simple: parce que le bloc
A est un opérateur elliptique,
~ A - 1(A−1˜0B(BTA−1B)−1˜)
AA−1˜est bien approximé par un cycle en V multigrille, par exemple, et il s'avère qu'ici,
est bien approximé par une ILU d'une matrice de masse.
(BTA−1B)−1˜
Cette idée de travailler avec les blocs individuels qui composent la matrice et de réutiliser des préconditionneurs sur des blocs individuels s'est avérée extrêmement puissante et a complètement changé notre façon de penser les systèmes d'équations de préconditionnement aujourd'hui. Bien sûr, cela est pertinent car la plupart des problèmes réels sont, en fait, des systèmes d'équations.