L'idée principale derrière le multigrille est la projection. J'essaie d'y penser comme suit:
Supposons que je veuille résoudre un PDE avec beaucoup de précision, alors je procède à discrétiser le domaine (disons, en utilisant la méthode des différences finies) sur une grille très fine avec beaucoup, beaucoup de points. Au final, j'ai configuré mon système d'équations et je suis prêt à le résoudre. J'essaie d'utiliser mon solveur itératif préféré (jacobi, gauss seidel, gradient conjugué, etc ...). Je continue d'attendre plus d'une journée et je réalise que mon ordinateur essaie toujours de calculer la réponse !!!
La raison pour laquelle ces méthodes itératives ne fonctionnent pas rapidement est que (généralement) lorsque vous configurez un grand système d'équations comme celui-ci, la matrice elle-même a des valeurs propres extrêmement proches de 1. Pourquoi est-ce important? Parce que le taux de convergence de nombreuses méthodes itératives est inversement lié à la plus grande valeur propre (voir le lien de Christian Clason aux Brigid's Multigrid Tutorial Slides, partie 1, page 27). Ainsi, plus la valeur propre est proche de 1, plus la méthode itérative est lente. (Remarque: cela simplifie un peu les choses, mais cela aide à motiver le besoin de multigrilles).
De toute évidence, il est toujours plus rapide de résoudre le problème s'il y a moins d'inconnues (c'est-à-dire sur une grille grossière avec moins de points de grille). Mais plus important encore, la solution (ou la solution approximative) sur une grille plus grossière est un bon point de départ pour résoudre le problème sur une grille plus fine. C'est l'idée clé derrière la plupart (sinon la totalité) des méthodes multigrilles. pourquoi est-ce le cas? Intuitivement, cela a du sens, mais il existe un moyen mathématiquement rigoureux de justifier cela.
Examinons les modes de Fourier de l'erreur dans une méthode itérative (pour les arguments, disons jacobi ou gauss seidel) appliquée au problème de grille fine d'origine. Nous verrions qu'au cours des premières itérations, la plupart des erreurs haute fréquence (hautement oscillatoire) sont supprimées! C'est très bien, mais il y a une erreur de basse fréquence (moins oscillatoire) qui persiste et ne disparaît pas rapidement. En fait, c'est une erreur de basse fréquence qui empêche une méthode itérative standard de converger rapidement.
lorsque nous résolvons le problème sur une grille plus grossière (disons, par une méthode itérative comme jacobi ou gauss-seidel), nous sommes essentiellement capables de supprimer les erreurs de fréquence inférieure beaucoup plus rapidement (c'est-à-dire en moins d'itérations) que sur la grille fine . Donc, si nous résolvons le problème d'une grille grossière, nous avons une solution dont les erreurs de fréquence inférieures ont été considérablement réduites. Ainsi, il serait utile comme point de départ pour une méthode itérative sur la grille plus fine.
Bien qu'il existe différentes méthodes multigrilles, la plupart d'entre elles fonctionnent selon certaines variations suivantes:
- Commencez par le problème de la grille fine
- Projeter sur une grille grossière (également connue sous le nom de restriction )
- Approximer la solution sur la grille grossière (en utilisant un autre solveur)
- Projetez la solution de grille grossière sur la grille plus fine (également appelée prolongation )
- En utilisant la projection de 4. comme estimation initiale, résolvez le problème de la grille fine par une méthode itérative.
Pour moi, la partie la plus difficile de la méthode multigrille est les projections entre les grilles. Les tutoriels Briggs proposés par @ChristianClason traitent ce sujet beaucoup mieux que moi.
Ce site n'est peut-être pas un bon endroit pour demander une explication détaillée avec le pseudocode (comme indiqué dans la FAQ , "Si vous pouvez imaginer un livre entier qui répond à votre question, vous en demandez trop."), Alors vous voudrez peut-être pour commencer avec l'un des livres classiques sur ce sujet (énumérés ci-dessous) et revenir avec des questions spécifiques sur les détails concrets avec lesquels vous avez des problèmes.
Briggs, Tutoriel multigrille , SIAM, 2000 (Vous pouvez télécharger des diapositives ici et ici ) Ceci est une source occasionnelle, fournissant une introduction douce aux principes multigrilles, principalement pour les problèmes elliptiques.
Brandt, Multigrid Techniques , édition révisée, SIAM 2011 , (ou téléchargez le pdf ). Il s'agit d'un grand développement de la philosophie multigrille et de la modélisation multiéchelle et a de bonnes chances de changer profondément votre façon de penser les solveurs implicites. Le site Web d'Achi Brandt contient de nombreuses autres références, dont son Review of Multiscale Scientific Computation 2000 .
Trottenberg, Oosterlee et Schueller, Multigrid , Academic Press, 2001 Cela a plus d'exemples de travail que Brandt, y compris de nombreuses expériences et des détails sur des méthodes spécifiques, en particulier dans le contexte de la dynamique des fluides.
Hackbusch, Méthodes et applications multigrilles , Springer, 1985 Ceci fournit une théorie de convergence rigoureuse, incluant des "multigrilles du deuxième type" pour les opérateurs intégraux de Fredholm.
la source
Un autre classique:
Des exemples de codes peuvent être trouvés sur MGNet
la source