• Aucun résultat trouvé

Calculs des différentes intégrales rencontrées

II. Théorie 20

6. Implémentation numérique de la MDFT 86

6.3. Calculs des différentes intégrales rencontrées

6.3. Calculs des différentes intégrales rencontrées

Les différents termes de la fonctionnelle qui doivent être calculés lors de la minimisation contiennent plusieurs types d’intégrale sur les différentes variables mises en jeu. On distingue essentiellement trois types d’intégrale : des intégrales sur les angles, des intégrales sur le volume et des intégrales doubles sur le volume au carré.

6.3.1. Intégrales sur le volume

Pour les termes qui contiennent une intégrale simple sur les cordonnées d’espace comme la partie idéale de l’éq. 2.2.6, on réalise directement le calcul dans l’espace direct. L’intégrale est simple-ment approchée par une somme finie,

F [ρ(r)] = ˚ R3 A(ρ(r))dr ≡ F [{ρ(ri)}] ≡ N % i=1 A(ρ(ri))∆V, (6.3.1)

où N = Nx.Ny.Nz avec Nx (resp. Ny, resp. Nz) le nombre de nœuds de la grille selon la direction Ox (resp. Oy, resp. Oz) et ∆V= Lx· Ly· Lz/(Nx· Ny· Nz) le volume d’un voxel élémentaire. On a fait ici une approximation implicite, qui consiste en l’utilisation d’une quadrature simple pour évaluer l’intégrale.

Les méthodes de quadrature sont des approximations pour évaluer la valeur numérique d’une intégrale. On remplace l’intégrale par une somme pondérée en un certain nombre de points appartenant au domaine d’intégration. Par exemple, on a à l’éq. 6.3.1 des points régulièrement espacés avec comme poids le volume du voxel élémentaire.

Pour évaluer l’intégrale sur le volume d’une fonction, on pourrait utiliser une quadrature plus adaptée, c’est à dire qui donnerait une bonne estimation numérique de l’intégrale avec un nombre de point plus faible. Il est évident, par exemple, que la densité varie peu loin de la perturbation, on pourrait ainsi utiliser un maillage plus lâche loin du soluté, plutôt qu’une grille régulière. Cependant, comme on le verra par la suite, pour calculer efficacement les produits de convolution, nous faisons un usage intensif de transformées de Fourier rapides (FFT) et l’algorithme choisi pour faire ces FFT requiert l’utilisation d’une grille régulière.

6.3.2. Intégrales sur la grille angulaire

Ce sont des intégrales de la forme, n(r) = ˆ π θ=0 ˆ φ=0 ˆ ψ=0 ρ(r, Ω)dΩ. (6.3.2)

6.3 Calculs des différentes intégrales rencontrées

Figure 6.3.1.: Visualisation des orientations considérées dans la quadrature de Lebedev, avec de gauche à droite 6, 14, 26 et 38 points. La sphère unité est en rouge et les orientations considérées sont représentées par des points bleus.

Quadrature pour les deux premiers angles d’Euler (θ, φ)

Les intégrations sur la grille angulaire sont réalisées dans l’espace direct exactement de la même manière que pour le volume. Cependant, on n’utilise plus ici de quadrature régulière. À mon arrivée au laboratoire une quadrature du type Gauss-Legendre[91] était utilisée pour les angles (θ, φ). Cette quadrature est conçue pour des intégrales dont le domaine d’intégration est [−1, 1]. Elle donne les n points où la fonction doit être évaluée comme étant les racines du polynôme de Legendre d’ordre n, ainsi que les poids associés à ces points. Cette quadrature est classique et donne des résultats exacts pour les fonctions polynomiales de degré 2n − 1, et donc les harmoniques sphériques d’ordre n − 1. Pour l’intégration sur la sphère unité, avec une quadrature de Gauss-Legendre d’ordre n, comme les nœuds xi tels que i ∈ [1, n], varie entre −1 et 1, on définit θi tel que cos(θi) = xi, de telle sorte que θ varie entre 0 et π. Les angles φi

doivent varier entre 0 et 2π, on les choisit régulièrement espacés sur cette intervalle. On a donc pour une quadrature de Gauss-Legendre d’ordre n, 2n2 points pour décrire les deux premiers angles d’Euler.

Au cours de ma thèse j’ai implémenté dans le code mdft une autre quadrature que celle-ci, la quadrature de Lebedev [92]. Cette quadrature est spécialement développée pour réaliser une intégration sur la sphère unité. Elle est construite sur une symétrie octaédrique. Ainsi, contrai-rement à la quadrature de Gauss-Legendre, les contraintes sur le nombre de points pour calculer numériquement l’intégrale sont fortes. En conséquence, dans la version actuelle du code, on peut utiliser 6, 14, 26 ou 38 points pour décrire les orientations sur la sphère unité. Par exemple, les 6 premières orientations sont dans les directions des centres des faces du cube unité contenant la sphère, les 8 points suivants sont dans les directions des sommets, les 12 points suivants sont orientés dans la direction du milieu des arêtes du cube comme illustré sur la fig. 6.3.1. La quadra-ture de Lebedev est plus efficace qu’une quadraquadra-ture de Gauss-Legendre d’un facteur d’environ 2/3. On peut voir sur la fig. 6.3.2 que les deux quadratures donnent des résultats similaires pour un soluté et un solvant simple.

L’introduction de cette quadrature a été une bonne façon de « mettre les mains » dans un code existant. De plus, il se peut que pour étudier des solutés plus complexe, il soit nécessaire d’avoir une meilleur résolution angulaire, ce qui sera facilité par l’utilisation de la quadrature de Lebedev.

6.3 Calculs des différentes intégrales rencontrées

Figure 6.3.2.: Valeurs des énergies libres de solvatation obtenues en utilisant une grille de Lebedev (cercles noirs) ou de Gauss Legendre (carrés rouges) en fonction du nombre de points de la grille. Le soluté utilisé est un sodium portant une demi charge élémentaire et le solvant un fluide de Stockmayer. La boite fait 25 Å3, avec une grille de 963 points.

Quadrature pour l’angle de rotation propre ψ

Au début de ma thèse, le code ne fonctionnait que pour des solvants strictement linéaires (acétonitrile, fluide de Stockmayer, etc). Pour pouvoir l’utiliser pour le solvant eau il a fallu introduire un nouvel angle d’Euler, celui correspondant à la rotation propre d’une molécule de solvant sur son axe de symétrie principal Cn. J’ai donc introduit l’angle ψ comme une nouvelle variable dont dépendait la densité. Dans le but d’augmenter l’efficacité numérique du code, cet angle a été introduit comme variant entre 0 et 2π/n, où n est l’ordre de l’axe de symétrie principal (soit 2 pour l’eau). La quadrature choisie pour cette nouvelle variable est une quadrature régulière, comparable à celle pour l’angle φ dans la quadrature de Gauss-Legendre.

6.3.3. Intégrales doubles sur le volume

Pour les termes contenant une intégrale double sur le volume, comme par exemple la partie d’excès de l’éq. 2.3.16, le calcul dans l’espace direct apparait comme trop coûteux. Cependant,

6.3 Calculs des différentes intégrales rencontrées

Figure 6.3.3.: Représentation schématique de la façon dont sont calculées, dans le code mdft, les intégrales contenant un produit de convolution comme dans l’éq. 6.3.3.

ces intégrales sont des convolutions de la forme, F [ρ(r)] = ˚ R3 ˚ R3 ∆ρ(r1)c(r12)∆ρ(r2)dr1dr2 (6.3.3) = ˚ R3 ∆ρ(r1) !˚ R3 c(r12)∆ρ(r2)dr2 $ dr1 (6.3.4) = ˚ R3 ∆ρ(r1) [c ⋆ ∆ρ] (r1)dr1, (6.3.5)

où on a séparé les termes dépendant de r2, et ⋆ désigne le produit de convolution entre les deux fonctions ∆ρ et c. On calcule ce produit de convolution en se servant de transformées de Fourier. En effet, une des propriétés intéressantes des transformées de Fourier (voir la sec. 6.4) est que le produit des transformées de deux fonctions est égal à la transformée de Fourier du produit de convolution de ces deux fonctions. Par exemple, la procédure pour calculer l’intégrale de l’éq. 6.3.3 est schématisée sur la fig. 6.3.3 :

– On calcule, si on ne les connait pas déjà, les champs scalaires ∆ρ et c en chaque point de l’espace, c’est-à-dire pour tous les points de notre grille.

– On calcule leurs transformées de Fourier respectives, que l’on note ∆ˆρ et ˆc.

– On multiplie ces deux transformées de Fourier pour calculer la transformée de Fourier du produit de convolution.

– On effectue la transformée de Fourier inverse de ce produit pour obtenir la fonction produit de convolution c ⋆ ∆ρ dans l’espace direct.

– On peut alors calculer l’intégrale de l’éq. 6.3.3 comme on l’a fait avec l’intégrale simple sur l’espace de l’éq. 6.3.1.