• Aucun résultat trouvé

3.2 Parallélisation en espace

3.2.2 Résolution des équations aux dérivées partielles

Une approximation par des différences finies permet de déterminer la valeur d’une fonction

u solution au problème d’EDP à une localisation x0, grâce aux valeurs se trouvant à des localisations assez proches de x0.

approxima-tion de degré 1 :

u(x) ≈u(x + h) − u(x)

h . (3.53)

En effet, si u est différentiable en x, alors u(x) est la limite, quand h → 0 du quotient ci-dessus. Plus h sera petit, meilleure sera l’approximation de la dérivée. Il est également possible que le pas h soit positif ou négatif, auquel cas, l’approximation sera respectivement explicite ou implicite.

On suppose maintenant que la fonction u est deux fois différentiable, dans ce cas, on peut écrire la formule de Taylor du premier ordre :

u(x + h) = u(x) + u(x)h +12u′′(ξ)h2 . (3.54) En arrangeant l’équation 3.54, on obtient :

u(x + h) − u(x)

h − u(x) =12u′′(ξ)h . (3.55)

Alors l’erreur commise par l’approximation du premier ordre 3.53 peut être bornée par un multiple du pas de temps h

¯ ¯ ¯ ¯u(x + h) − u(x) h − u(x) ¯ ¯ ¯ ¯ ≤ C |h| , (3.56)

où C = max¡12|u′′(ξ)|¢. L’approximation est effectivement de premier ordre, car l’erreur est proportionnelle à h.

De façon similaire, il est possible d’utiliser des approximations d’ordres supérieurs, notam-ment si on veut approcher la dérivée seconde u′′, qui peut intervenir dans l’EDP. Pour cela, on effectue des développements de Taylor d’ordre plus élevés. Dans le cas des différences finies, le maillage est vu comme un ensemble de points, que l’on appelle également nœuds. Cet ensemble de points permet de quadriller le domaine de définition de la fonction u. Le calcul des valeurs à chacun de ces nœuds permet de déterminer la solution discrète. Evidemment, des nœuds se trouvent sur le bord du domaine, ce qui permet d’imposer des conditions aux limites, permettant de décrire la dynamique de la fonction u sur ces bords. L’écart entre chaque nœud voisin est décrit par le pas du maillage, qui va dépendre de la direction, même si en général, le même pas est utilisé dans toutes les directions.

Dans le cas des différences finies, pour faciliter la discrétisation des différents opérateurs, on situe les nœuds du maillage sur une grille, dont les directions sont parallèles aux axes de

référence. Cela signifie que les mailles sont forcément de forme rectangulaire, ce qui entraîne l’utilisation d’une géométrie assez simple pour définir le domaine.

Je reviendrai plus en détails sur la méthode des différences finies dans la partie 3, qui seront sur les différents modèles. Je détaillerai bien évidemment le schéma de discrétisation pour chaque modèle, permettant de le résoudre numériquement.

3.2.2.2 Approximation par des éléments finis

Le but de cette section n’est pas de faire un cours détaillé, ni de re-démontrer certains aspects de la méthode des éléments finis. Pour cela, le lecteur peut trouver des ouvrages très complets sur ce sujet, comme Lucquin (1998); Ciarlet (2007). Je vais expliquer les principes de cette méthode, ainsi que ses différences avec la méthode présentée dans la section 3.2.2.1. Ensuite, je présenterai rapidement l’outil FreeFem, permettant de résoudre des EDP avec cette méthode. Principes généraux

La méthodes des éléments finis consiste à trouver une solution fiable, de manière discrète, à un problème posé. Comme pour la méthodes des différences finies, le domaine de définition du problème est scindé en plusieurs morceaux, que l’on appellera mailles, de telle sorte que cet espace soit polygonal par morceaux.

Figure 3.3 – Maillage du domaine représentant un cerveau (Lancaster et al., 2007).

Cette méthode, contrairement à celle des différences finies, permet l’utilisation de mailles tétraédriques. Cela entraîne un meilleur découpage des géométries complexes, contrairement à un maillage régulier, comme on a pu le voir dans la méthode précédente. Le plus souvent, la

forme des mailles est triangulaire, mais rien empêche d’utiliser des formes de mailles plus exotiques. On trouvera, par exemple Figure 3.3, le maillage d’un domaine représentant le cerveau. Le maillage d’un tel domaine serait compliqué dans le cas des différences finies. Il n’est pas non plus nécessaire d’utiliser un maillage régulier, c’est-à-dire identique sur tout l’espace. Il est possible de resserrer le maillage à certains endroits d’intérêt, afin d’obtenir une solution plus fine, soit en utilisant des tailles de mailles de plus en plus petites, ou encore, en prenant des degrés plus élevés de polynômes, comme par exemple de degré 2 pour des côtés ou arêtes ayant une courbure.

Le maillage permet également de définir les éléments finis, qui sont les données d’un domaine géométrique, d’un espace de fonctions (polynomiales, en général) et d’un ensemble de formes linéaires sur cet espace, également appelées degrés de liberté.

Après obtention de ces éléments finis, on écrit la formulation variationnelle (ou formulation faible) du problème, que l’on cherche à résoudre sur un domaine Ω, ce qui revient à un problème du type :

Trouver u ∈ V tel que a(u,v) = l(v), ∀v ∈ V ,

où V est un espace de Hilbert, a une forme bilinéaire et l une forme linéaire. On va ainsi chercher à déterminer une approximation de u, en utilisant le maillage de Ω, avec lequel on va définir un espace Vhde dimension finie Nh. Le problème discret sera donc le suivant :

Trouver uh∈ Vhtel que a(uh, vh) = l(vh), ∀vh∈ Vh ,

Ensuite, en utilisant une base (φ1,...,φNh) de Vh, on décompose uh sous la forme d’une combinaison linéaire de cette dernière :

uh=NXh i =1

λiφi . (3.57)

En injectant, la relation 3.57 dans le problème discret, et en appliquant les propriétés de linéarité de a, on obtient :

Trouver λ1,...,λNhtels que

Nh

X

i =1

λia(φi, vh) = l(vh), ∀vh∈ Vh . Maintenant, prenons vh= φjune fonction de la base de Vh, alors on a :

Trouver λ1,...,λNh tels que

Nh

X

i =1

ce qui est équivalent à résoudre le système linéaire suivant :     a(φ11) ... a(φNh1) .. . ... a(φ1Nh) ... a(φNhNh)         λ1 .. . λNh     =     l(φ1) .. . l(φNh)     , (3.58)

ou encore, en simplifiant l’écriture :

AΛ = L . (3.59) Pour éviter que la résolution de ce système soit trop lourde, on cherche au maximum à rendre la matrice A creuse. Pour cela, il est conseillé de prendre une base (φ)idont les fonctions seront nulles le plus souvent, hormis sur quelques mailles. Cela aura pour conséquence d’annuler la plupart des termes a(φij), car correspondant à des fonctions φi et φj de supports disjoints. De plus, on réorganisera la matrice A de telle façon qu’elle soit une matrice à bande, dont la largeur sera la plus petite possible. Dans ce cas, on peut tirer avantage de la structure particulière de la matrice pour utiliser moins de mémoire. Il est inutile de stocker des zéros, on se restreint donc à mettre en mémoire uniquement les bandes de la matrice. On utilise alors soit un stockage profil, soit un stockage morse, ou encore un stockage bande, ne nécessitant que le stockage de deux ou trois tableaux à une dimension suivant le type de stockage. Ce type de stockage s’applique également au système obtenu par la méthode des différences finies, comme nous le verrons dans la partie III.

Une des principales difficultés réside dans le calcul des intégrales, afin de déterminer les termes a(φij) et l(φj). C’est pour cela que l’on prend des polynômes comme base, car les calculs des intégrales sont soit immédiats, ou alors en utilisant des formules de quadrature. De plus, la vitesse de convergence est directement liée au degré des polynômes.

FreeFem

Pour résoudre un problème d’EDP numériquement à l’aide des éléments finis, on peut dé-velopper son propre code en différents langages tels que C/C++, Python ou Fortran. Mais il existe également un freeware FreeFem++ (Hecht, 2012), développé au Laboratoire Jacques-Louis Lions de l’Université Pierre et Marie Curie an 1987 sous le nom de MacFem, et que l’on retrouve sur les principaux systèmes d’exploitation comme Windows, Mac OS X, ou Unix. Ce logiciel est caractérisé par un langage de script, hérité du C++ à partir de 1992.

Il permet de créer des maillages ainsi que de résoudre des équations aux dérivées partielles, en utilisant des bibliothèques de solveurs linéaires tels que : LU, Cholesky, gradient conjugué, GMRES, etc. Il est également possible de l’interfacer avec d’autres logiciels comme Medit ou Gnuplot. En plus de résoudre des EDP, il est possible de créer des maillages, de les sauver dans

un fichier, puis de les lire. On peut aussi adapter le maillage suivant les points d’intérêts de la solution.

Pour tout-autre information, le lecteur est invité à consulter la documentation officielle de FreeFem, très bien détaillée, où l’on peut trouver différents exemples d’utilisations.