• Aucun résultat trouvé

µcDH c,n+1 ∆t ·b + (Rmσ)−1∇×Hc,n+1·∇×b  + Z Ωv µv n+1 ∆t ·∇ϕ + Z Σµ {(Rmσ)−1(∇×Hc,n+1− js) − ˜un+1×µcH}·(b1×nc 1+ b2×nc 2) + Z Σ ((Rmσ)−1(∇×Hc,n+1− js) − ˜un+1×µcH)·(b×nc+ ∇ϕ×nv) + g((Hc,n+1, φn+1), (b, ϕ)) + s(Hc,n+1, b) = Z Ωc (˜un+1×µcH+ (Rmσ)−1js)·∇×b + Z Γc (a×n)·(b×n) + Z Γv (a×n)·(∇ϕ×n), (3.3.15) où g((Hc,n+1, φn+1), (b, ϕ)) := β2 X F ∈Σµh h−1F Z F (Hc,n+11 ×nc 1+ Hc,n+12 ×nc 2)·(b1×nc 1 + b2×nc 2), (3.3.16) + β1 X F ∈Σh h−1F Z F (Hc,n+1×nc+ ∇φn+1×nv)·(b×nc+ ∇ϕ×nv), s(Hc,n+1, b) := γ Z Ωc ∇·(µcHc,n+1)∇·(µcb). (3.3.17)

La forme bilinéaire g a pour but de pénaliser les quantités Hc,n+1×nc+ ∇φn+1×nv

et Hc,n+1

1 ×nc

1+ Hc,n+12 ×nc

2 au travers des interfaces respectives Σ et Σµ. Cette quantité tend vers zéro lorsque le pas de grille tend vers zéro. Les coecients β1 and β2 sont choisis par l'utilisateur. On utilise ordinairement le couple (β1 = 1 , β2 = 1).

De la même façon, la forme bilinéaire s sert à contrôler la divergence de µcHc; γ est également pris d'ordre 1.

3.4 Méthode de parallélisation

Dans cette section, on présente sommairement la méthode de parallélisation (pour plus de détails se reporter à [38]). On montrera le gain signicatif en temps de calcul permis grâce à une implémentation astucieuse des subroutines de transformées de Fourier rapides de la librairie FFTW3 (pour The Fastest Fourier Transform in the West) dans la parallélisation.

3.4.1 Le système linéaire

L'algorithme décrit précédemment (3.3.9) et (3.3.17) donne lieu à chaque pas de temps à autant de systèmes linéaires indépendants que de modes de Fourier. No-tons np et nu le nombre de n÷uds P1 et P2, composant le maillage méridien Fcf

Eq. champs taille des syst. lin. # de syst. lin. (3.3.11) ur, uθ 2 nu 2 (3.3.11) uz nu 1 (3.3.12) π := p + 1 2u2 np 1 (3.3.13) δ np 1 (3.3.15) H, φ 3nH+ nφ 2

Tab. 3.5  Résumé des diérentes opérations linéaires i.e.dim(M2D

h ) = np et dim(V2D

h ) = 3nu. Pour chaque mode de Fourier le système (3.3.11) donne lieu à deux systèmes linéaires de taille 2nu (les composantes radiale et azimutale du champ de vitesse étant couplées) et un système linéaire de taille nu (la composante axiale du champ de vitesse étant indépendante). La résolution de (3.3.12) et de (3.3.13) conduit à deux systèmes de taille np. Notons nH le nombre de n÷uds P1 présents dans le maillage méridien Fc

h si `H = 1 ou bien le nombre de n÷uds P2

si `H = 2, notons également nφ le nombre de n÷uds P1 présent dans le maillage Fv h

si `φ = 1 ou bien le nombre de n÷uds P2 si `φ = 2. Pour chaque mode de Fourier, le système (3.3.15) donne lieu à deux systèmes linéaires de taille 3nH+ nφ; voir Table 3.5. Les systèmes linéaires sont résolus grâce avec un solveur pré-conditionné biCG-stab. Le pré-conditionneur repose sur une factorisation LU incomplète avec seuillage (ILUT). Le nombre maximum d'entrées non nulles par ligne dans chaque factorisation est xé à 70. La largeur de bande pour chaque pré-conditionneur est minimisée en réordonnant les degrés de liberté via une méthode de Cuthill/McKee-like (see e.g.[73, 21]). Les systèmes linéaires sont considérés comme résolus quand les résidus numériques relatifs sont inférieurs à 10−6. On a observé que la complexité de l'algorithme (pré-conditionnement+biCG-stab) est de l'ordre de O(N1.25) pour un problème du type équation de Laplace, où N est le nombre des degrés de liberté.

Lorsque qu'il n'y a pas de termes non-linéaires, les systèmes linéaires associés à chaque mode de Fourier peuvent être résolus en parallèle. On peut utiliser autant de processeurs que de modes de Fourier. Malheureusement les modes ne sont pas indépendants mais couplés par des termes non-linéaires. La parallélisation est tout de même possible. Pour un nombre de modes de Fourier égal à M +1, on peut faire des simulations sur Nproc processeurs dès que M + 1 est un multiple de Nproc. Les modes sont alors divisés en paquets de taille Nb := (M + 1)/Nproc et chaque paquet est assigné à un processeur. Si on a M + 1 processeurs disponibles, on peut choisir de prendre Nproc = M + 1.

3.4.2 Calcul du terme non-lineaire et tests de performance

Par rapport à la version du code SFEMaNS existante en 2006, un eort particulier a été réalisé pour réduire les temps de communication requis dans le calcul du terme non linéaire. Dans la version antérieure du code numérique, le terme non linéaire était calculé par une méthode pseudo-spectrale sans de-aliasing utilisant des multiplications matrice-vecteur. Une implémentation astucieuse des subroutines de transformées de Fourier rapides de la librairie FFTW3 [23] a permis d'améliorer sensiblement les temps de calcul des simulations non linéaires. Cette méthode détaillée dans [38] est basée sur

un échantillonnage homogène des diérentes données échangées par les processeurs lors du calcul dans l'espace physique du terme non linéaire.

An d'évaluer l'ecacité de la méthode de parallélisation, nous avons évalué la par-tie Navier-Stokes pour les deux versions du code (avec découpage en paquets homogènes et les subroutine FFTW3 et sans découpage avec la multiplication matrice-vecteur). Les tests ont été réalisés sur le cluster IBM SP6 de l'IDRIS. Avec chaque version on résout les équations de Navier-Stokes en considérant M + 1 = 16 modes de Fourier complexes dans un cylindre dont la section méridienne est discrétisée en 46985 n÷uds P2. Cela donne un maillage tridimensionnel composé d'environ 1.5·106 points de grille. Si l'on compare le speed up pour les deux versions du code SFEMaNS (2006 et 2010) sur la gure 3.4, on constate que, lorsque le nombre de processeurs utilisés dans le cal-cul est assez élevé, le speed up est bien meilleur lorsqu'on fait un découpage en paquets homogènes répartis sur les diérents processeurs utilisés dans le calcul.

Fig. 3.4  Tests de speed up (rapport entre le temps de calcul eectué avec un seul processeur et le temps pour un processeur pour un calcul eectué avec n processeurs en fonction de n où nest le nombre de processeurs) pour les deux versions du codes SFEMaNS

D'autres tests non détaillés ici ont montré que, pour des simulations à faible nombre de Reynolds, l'ecacité de la parallélisation est inférieure à 50%. Ceci vient du fait que les processeurs en charge des modes de Fourier élevés passent un temps négligeable à résoudre les systèmes linéaires (les coecients de Fourier étant proches de zéro), mais participent néanmoins au calcul des produits vectoriels via les FFT. En revanche, lors-qu'on se place dans un régime moins diusif (le nombre de Reynolds est susamment grand de sorte que tous les modes de Fourier sont peuplés), on retrouve des coecients d'ecacité parallèle de l'ordre de 100% (voir Table 3.6).

# processeur(s) 1 2 4 8 16

Speed up 1.000 1.549 4.032 5.751 14.45 Ecacité 1.000 0.775 1.008 0.719 0.903

En résumé, la méthode de parallélisation apparaît ecace lorsqu'il y a un mode de Fourier par processeur et que la taille des problèmes à traiter par processeur est susamment grande. L'application de cette méthode de résolution à des cas physiques divers s'avère très prometteuse comme les chapitres suivants vont le montrer.

Chapitre 4

Génération d'ondes d'Alfvén dans un

cylindre