La méthode multipolaire rapide (MMR) (en anglais Fast multipole method, FMM) est une technique mathématique développée pour accélérer le calcul des forces de longue portée dans le problème à N corps. Elle procède à l'expansion de la fonction de Green du système par une expansion multipolaire, le groupement des sources voisines permettant de les traiter comme une source unique[1].
Description
La MMR a aussi été appliquée à l'accélération des solveurs itératifs dans la méthode des moments appliquée aux problèmes d'électromagnétique[2].
Elle a été introduite pour la première fois par Leslie Greengard et Vladimir Rokhline[3] et a pour base l'expansion multipolaire du vecteur de l'équation d'Helmholtz. En traitant les interactions entre des fonctions très différentes par la MMR, il n'est pas nécessaire de stocker les éléments de matrices correspondants, ce qui réduit de beaucoup la quantité de mémoire nécessaire. Si la MMR est appliquée de manière hiérarchique, elle réduit la complexité des produits de matrices et de vecteurs dans un solveur itératif en la faisant passer de O(N²) à O(N log(N)), voire O(N) dans certains cas. Cet outil a élargi le domaine d'application de la méthode des moments à de plus grands problèmes qu'auparavant.
La MMR introduite par Rokhlin et Greengard a été reconnue comme l'un des dix plus importants algorithmes du XXe siècle par la Society for Industrial and Applied Mathematics[4]. Elle réduit considérablement la complexité du produit matrice-vecteur en introduisant un certain type de matrice dense qui apparaît dans de nombreux problèmes de physique.
↑Rokhlin, Vladimir (1985). Rapid Solution of Integral Equations of Classic Potential Theory. J. Computational Physics Vol. 60, p. 187-207.
↑ Nader Engheta, William D. Murphy, Vladimir Rokhlin, and Marius Vassiliou (1992), The Fast Multipole Method for Electromagnetic Scattering Computation, IEEE Transactions on Antennas and Propagation 40, 634-641.
pyExaFMM, implantation de la méthode multipolaire rapide en langage python, avec la possibilité d'accélérer les calculs en utilisant un processeur graphique