3.2. Espace \(\Pb^1\)-Lagrange#

La méthode des éléments finis est basée sur la méthode de Galerkin, ou d’approximation interne. L’idée est d’approcher l’espace fonctionnel \(\Ho\) par un espace de dimension finie : l’espace éléments finis. Nous nous intéressons à un tel premier espace : \(\Pb^1-\) Lagrange ou plus simplement \(\Pb^1\), composés des fonctions linéaires par triangles.

3.2.1. Maillage triangulaire (ou triangulation)#

Nous découpons maintenant le domaine en triangles pour obtenir un maillage triangulaire (ou triangulation) conforme de \(\Omega\). Un maillage est conforme s’il suit les quelques règles simples suivantes. Une illustration est proposée sur la figure 3.1.

  • L’union des \(\Nt\) triangles doit couvrir \(\Omega\) sans le dépasser : \(\Omega = \bigcup_{p=1}^{\Nt} \tri_p\).

  • L’intersection de deux triangles est soit vide, soit une arête commune complète à chacun des deux triangles, soit un sommet de chacun des deux triangles.

  • Une arête d’un triangle est soit une arête (complète) d’un autre triangle, soit une partie de \(\Gamma\), auquel cas ce segment est complètement inclus soit dans \(\GammaD\) soit dans \(\GammaN\) (il n’y a pas d’arête appartenant à la fois à \(\GammaD\) et à \(\GammaN\)).

Maillages conformes ou non

Fig. 3.1 Différents maillages, conforme ou non.#

Une telle triangulation sera noté \(\Th = \{K_p, p=1, \ldots, \Nt\}\), l’indice \(h\) faisant référence à la finesse de maillage, que l’on définit par le grand diamètre des triangles :

\[h := \max_{\tri\in\Th}(\diam(\tri)) = \max_{p=1,\ldots,\Nt}(\diam(\tri_p)).\]

Le diamètre d’un triangle est la distance maximale entre deux points du triangle. Nous notons de plus \(\Sh\) et \(\Ah\) les ensembles respectivement des sommets et des arêtes de \(\Th\). Pour un triangle arbitraire \(\tri\), nous noterons \([\vertice_{0},\vertice_{1},\vertice_{2}]\) ses sommets ordonnés. De même, pour un triangle \(\tri_p\) du maillage, ses sommets ordonnées seront notés \([\vertice_{0}^{p},\vertice_{1}^{p},\vertice_{2}^{p}]\).

Remark 3.3

Il existe aujourd’hui des mailleurs automatiques open-source, un des plus connu et que nous utiliserons est GMSH (un tutoriel est fourni par moi même). Le maillage automatique reste un métier à part entière tant la complexité est importante notamment en 3D et avec des géométries complexes, non forcément polygonales. D’autres parts, de nombreuses questions sont encore ouvertes aujourd’hui dans ce domaine comme la construction automatique d’un maillage composé de quadrangles. Nous n’entrerons pas dans les détails dans ce sujet, nous serons de simple « utilisateurs et utilisatrices ».

Orientation des triangles

Fig. 3.2 Deux orientations possibles pour un triangle. Dans les maillages considérés, tous les triangles ont la même orientation.#

Voici deux exemples de maillage obtenus avec GMSH, et visualisés avec Paraview :

3.2.2. Fonction linéaire sur un triangle#

Cas du segment (1D). Regardons tout d’abord le cas \(1D\) d’un segment \([\alpha,\beta]\) et d’une fonction \(p\) linéaire sur ce segment : \(p(x) = ax + b\). Les coefficients \(a\) et \(b\) caractérisent la fonction \(p\) et sont, de plus, définis de manière unique dès lors que l’on connait la valeur de \(p\) en \(\alpha\) et en \(\beta\) (2 équations à 2 inconnues, linéairement indépendantes). Cette propriété reste naturellement vraie pour un segment \([\vec{\alpha},\vec{\beta}]\) « plongé » en dimension 2. Un point \(\xx\) de ce segment est décrit par ses coordonées curvilignes : \(\xx(s) = (1-s) \vec{\alpha} + s\vec{\beta}\), pour \(s\in [0,1]\), et un polynôme \(p\) de degré 1 sur \([\vec{\alpha}, \vec{\beta}]\) s’écrit alors \(p(\xx(s)) = (1-s) p(\vec{\alpha}) + s p(\vec{\beta})\) pour \(s\in [0,1]\). On voit clairement qu’un polynôme de degré 1 sur un segment est défini de manière unique par ses valeurs aux extrémités [1].

Cas du triangle (2D). Revenons maintenant dans un triangle \(\tri\) non plat et notons \(\Pb^1\) l’espace des polynômes réels de degré 1 sur \(\Rb^2\), de dimension 3 :

\[\Pb^1(\Rb) = \enstq{p\colon \Rb^2\to\Rb}{\exists!a,b,c \in\Rb \text{ tels que } \forall (x,y)\in \Rb^2, p(x,y) = a + bx + cy}\]

L’espace \(\Pb^1(\tri)\) des fonctions linéaires (ou des polynômes de degré 1) sur \(\tri\) est lui aussi de dimension 3 (car \(\tri\) n’est pas plat) :

\[\Pb^1(\tri) = \enstq{p\colon K\to\Rb}{\exists!a,b,c \in\Rb \text{ tels que } \forall (x,y)\in \tri, p(x,y) = a + bx + cy}\]

Une fonction \(p\) de \(\Pb^1(\tri)\) est définie de manière unique par ses 3 coefficients \(a,b,c\). Inversement, ces trois coefficients sont calculables dès lors que l’on connait la valeur de \(p\) sur trois points non alignés, comme les 3 sommets du triangle (voir la proposition suivant). Une fonction \(p\in\Pb^1(\tri)\) est donc définie de manière unique soit par la connaissance de ses trois coefficients, soit par la connaissance de sa valeur sur les trois sommets du triangle.

Proposition 3.1

Soit \(\tri\) un triangle non dégénéré de \(\Rb^2\) de sommets \(\vertice_{1},\vertice_{2},\vertice_{3}\). Alors, pour tout jeu de données \(\alpha_1,\alpha_2,\alpha_3 \in \Rb\), il existe un unique polynôme de \(p\in\Pb^1(\tri)\) tels que \(p(\vertice_i)=\alpha_i\) pour \(i=1,2,3\).

Proof. En notant \(\vertice_i= (x_i,y_i)\) et \(p(x,y) = ax + by + c\) avec \(a,b,c\in\Rb\), alors le problème revient à résoudre le système linéaire

\[\begin{split}\left\{ \begin{array}{r c l} ax_1 + by_1 + c &=& \alpha_1\\ ax_2 + by_2 + c &=& \alpha_2\\ ax_3 + by_3 + c &=& \alpha_3\\ \end{array} \right. \iff \left( \begin{array}{c c c} x_1 & y_1 & 1\\ x_2 & y_2 & 1\\ x_3 & y_3 & 1\\ \end{array} \right) \left( \begin{array}{c} a\\ b\\ c \end{array} \right) = \left( \begin{array}{c} \alpha_1 \\ \alpha_2 \\ \alpha_3 \\ \end{array} \right)\end{split}\]

Le déterminant d’un tel système n’est autre que deux fois l’aire du triangle \(\tri\) qui n’est pas dégénéré :

\[\begin{split}\Delta = \left| \begin{array}{c c c} x_1 & y_1 & 1\\ x_2 & y_2 & 1\\ x_3 & y_3 & 1\\ \end{array} \right| = 2\mathrm{Aire}(\tri) \neq 0\end{split}\]

Le système est donc bien inversible et admet une unique solution \((a,b,c)\).

Remark 3.4

Soit une fonction \(v \in \Pb^1(\tri)\), linéaire sur le triangle \(\tri\). Sa restriction \(v|_{\sigma}\) à une arête \(\sigma\) de \(\tri\) est elle même une fonction linéaire sur \(\sigma\). Elle est donc complètement caractérisée par sa valeur aux sommets de l’arête, qui sont aussi des sommets de \(\tri\).

3.2.3. Fonctions linéaires par éléments (= par triangles)#

Nous pouvons maintenant introduire l’espace fonctionnel \(\Pb^1-\) Lagrange, souvent abrégé \(\Pb^1\) et noté dans ce cours \(\Vh\), contient les fonctions continues sur \(\overline{\Omega}\) (le fermé de \(\Omega\)) et linéaires sur chaque triangle :

\[\Vh := \enstq{\vh\in\Cscr^0(\overline{\Omega})}{\forall \tri\in\Th, \vh|_{\tri} \in\Pb^1(\tri)}.\]

Caractérisons maintenant les fonctions de cet espace. Le premier résultat montre que deux fonctions de \(\Vh\) sont égales si et seulement si elles coïncident sur tous les sommets de la triangulation \(\Th\).

Lemma 3.3

Si \(\uh,\vh \in \Vh\) vérifient \(\uh(\vertice) = \vh(\vertice)\) pour tout sommet \(\vertice\) de \(\Th\), alors \(\uh=\vh\) sur \(\Omega\).

Proof. En se plaçant sur le triangle \(\tri = (\vertice_{1},\vertice_{2},\vertice_{3})\) de \(\Th\), nous avons \(\uh(\vertice_i) = \vh(\vertice_i)\) pour \(i=1,2,3\). La proposition 3.1 implique que \(\uh|_{\tri}=\vh|_{\tri}\). Le triangle \(\tri\) étant arbitraire, cette relation vaut sur tous les éléments de la triangulation. Le même raisonnement peut être effectué sur chaque arête pour obtenir que \(\uh-\vh\) est nulle sur \(\Omega\) tout entier.

Proposition 3.2

Pour tout jeu de données réelles \((\alpha_i)_{i=1,\ldots,\Ns}\), il existe une unique fonction \(\vh\in\Vh\) vérifiant \(\vh(\vertice_I)=\alpha_i\) pour tout \(i=1,\ldots,\Ns\).

Proof. L’unicité est démontrée par le lemme 3.3, il manque donc l’existence. Prenons un triangle \(\tri_p=(\vertice_{1}^p,\vertice_{2}^p,\vertice_{3}^p)\) de \(\Th\) et le jeu de valeurs associé \((\alpha_1^p,\alpha_2^p,\alpha_3^p) \in \Rb\). La proposition 3.1 montre qu’il existe un unique polynôme \(p_{\tri_p}\) de \(\Pb^1(\tri_p)\) tel que \(p_{\tri_p}(\vertice_i^p)=\alpha_i^p\) pour \(i=1,2,3\). Nous pouvons répéter cette opération pour tous les triangles \(\tri_p\) et nous introduisons \(\uh\) tel que

\[\forall p=1,\ldots,\Nt,\quad \uh |_{\tri_p} = p_{\tri_p}.\]

La fonction \(\vh\) est affine sur chaque triangle, il nous faut montrer que \(\uh\in\Cscr^0(\overline{\Omega})\) pour conclure sur son appartenance à \(\Vh\). Comme \(\vh\) est continue en chaque sommet \(\vertice\), il reste à montrer la continuité sur les arêtes.

Prenons 2 triangles \(\tri_p\) et \(\tri_q\) de \(\Th\) ayant une arête \(\Sigma\) en commun. Quitte à renuméroter, notons \(\vertice_{1} = (x_1,y_1)\) et \(\vertice_{2} = (x_2, y_2)\) les deux sommets de l’arête \(\Sigma\) et notons

\[\sigma(t) = \vertice_{1} + t(\vertice_{2}-\vertice_{1}) = \left( x_1 + t(x_2-x_1), y_1 + t(y_2-y_1)\right)\]

une paramétrisation de \(\Sigma\). Si \(p_{\tri_p}(x,y) = ax+by+c\), nous avons alors, pour tout \(t\in[0,1]\) :

\[\begin{split}\begin{aligned} p_{\tri_p}(\sigma(t)) &= a (x_1 + t(x_2-x_1)) + b (y_1 + t(y_2-y_1)) + c\\ &= a (x_1 + t(x_2-x_1)) + b (y_1 + t(y_2-y_1)) + c + t(c-c)\\ &= [a x_1+by_1 +c] + t([a x_2+by_2 +c] +[ a x_0+by_0 +c])\\ &= p_{\tri_p}(\vertice_{1}) +t(p_{\tri_p}(\vertice_{2}) - p_{K_p}(\vertice_{1}))\\ &= p_{\tri_q}(\vertice_{1}) +t(p_{\tri_q}(\vertice_{2}) - p_{\tri_q}(\vertice_{1}))\\ &= p_{\tri_q}(\sigma(t)). \end{aligned}\end{split}\]

Autrement dit, les deux polynômes \(p_{\tri_p}\) et \(p_{\tri_q}\) sont égaux sur l’arête \(\Sigma\). La fonction \(\vh\) est donc continue sur toutes les arêtes de \(\Th\) en plus de l’être sur tous les triangles et tous les sommets : \(\vh\) est donc bien continue sur tout \(\overline{\Omega}\).

3.2.4. Base de \(\Vh\) : les fonctions de forme#

Au vue de ce qui précède, deux fonctions de \(\Vh\) sont identiques si et seulement si elles possèdent la même valeur sur chaque sommet de \(\Th\). En notant \(\Ns = \card(\Sh)\) le nombre de sommets du maillage, introduisons la famille des fonctions de forme \((\mphi_I)_{1\leq I \leq \Ns}\) de \(\Vh\), qui sont nulles sur chaque sommet sauf un :

\[\begin{split}\forall I,J =1,..., \Ns,\quad \mphi_I(\vertice_J) = \delta_{I,J}= \left\{ \begin{array}{l l} 1 & \text{ si } I=J\\ 0 & \text{ sinon.} \end{array} \right.\end{split}\]

Ces fonctions sont la généralisation en 2D des fonctions chapeau unidimensionnelles (elles ressemblent d’ailleurs encore plus à un « chapeau » !).

Une application pour visualiser les fonctions de forme est proposée plus bas.

Proposition 3.3

La famille \((\mphi_I)_{1\leq I \leq \Ns}\) est une base de \(\Vh\), qui est alors de dimension \(\Ns\), le nombre de sommets de la triangulation \(\Th\).

Proof. Montrons que la famille des fonctions de forme est une base de \(\Vh\). Commençon par le caractère libre de cette famille en prenant \(\Ns\) données \((\alpha_i)_{1\leq i\leq \Ns}\),

\[\begin{split}\begin{aligned} \sum_{I=1}^{\Ns} \alpha_I \mphi_I = 0 &\implies \forall j=1,\ldots, \Ns,\quad \sum_{I=1}^{\Ns} \alpha_I\mphi_I(\vertice_j) = 0\\ &\implies \forall J= 1,\ldots, \Ns,\quad \alpha_J \times 1 + \sum_{I=1, I\neq J}^{\Ns}(\alpha_J\times 0) = 0\\ & \implies \forall J= 1,\ldots, \Ns,\quad \alpha_J = 0 \end{aligned}\end{split}\]

La famille de fonctions \((\mphi_I)_{1\leq I \leq \Ns}\) est libre. Pour montrer qu’elle est génératrice, prenons une fonction \(\uh\in \Vh\) et plaçons nous sur le triangle \(\tri = (\vertice_{1}, \vertice_{2},\vertice_{3})\) (quitte à renuméroter). Le polynôme \(\left(\sum_{I=1}^3\uh(\vertice_I)\mphi_I\right)\Big|_{\tri}\) coïncide avec le polynôme \(\uh|_{\tri}\) sur les sommets du triangle \(\tri\). Les deux étant de degré 1, nous avons alors l’égalité de ces polynômes sur tout le triangle :

\[\uh|_{\tri}= \left(\sum_{I=1}^3\uh(\vertice_I)\mphi_I\right)\Bigg|_{\tri}.\]

Cette relation étant valable sur un triangle arbitraire, elle est vraie sur \(\Omega\). La famille de fonctions \((\mphi_I)_I\) est donc une base de \(\Vh\).

Proposition 3.4 (Admis pour le moment)

L’espace \(\Vh\) est inclus dans \(\Ho\).

Lemma 3.4

Le support d’une fonction de forme \(\mphi_I\) est l’union des triangles ayant pour sommet \(\vertice_I\) :

\[\supp(\mphi_I) = \enstq{\tri\in \Th}{\vertice_I \text{ est un sommet de } \tri}.\]

Autrement dit, en dehors de ces triangles, la fonction \(\mphi_I\) est nulle.

Proof. Prenons une fonction de forme \(\mphi_I\) associée au sommet \(\vertice_I\), et un triangle \(\tri\) tel que \(\vertice_I\) n’est pas un sommet de \(\tri\). Dans ce cas, \(\mphi_I\) est nulle sur les trois sommets de \(\tri\), et est donc nulle sur le triangle tout entier.

Une illustration du support des fonctions de forme est donnée sur la Figure 3.3.

Exemple de support de fonction de forme

Fig. 3.3 Support des fonctions de forme pour le maillage d’un carré.#

Application : Cliquez sur un sommet pour faire apparaitre la fonction de forme P1 associée. Les triangles où la fonction n’est pas nulle forment le support de la fonction de forme.

3.2.5. Conclusion#

Pour une fonction \(\uh\) de \(\Vh\), retenons que :

  • \(\uh\) est (par définition) continue et linéaire sur chaque triangle

  • La dimension de \(\Vh\) est égale au nombre de sommets \(\Ns\) du maillage. Plus le maillage est fin, plus la dimension est grande.

  • La famille \((\mphi_I)_I\) des fonctions de forme est une base de \(\Vh\). Autrement dit, il existe \(\Ns\) uniques coefficients \((u_I)_I\), tels que

    \[\uh = \sum_{I=1}^{\Ns} u_I\mphi_I\]
  • Une fonction \(\uh\) de \(\Vh\) est caractérisée par sa valeur aux \(\Ns\) sommets

  • Les coefficients sont en fait la valeur de \(\uh\) aux sommets : \(u_I = \uh(\vertice_I)\) :

    \[\sum_{I = 1}^{\Ns} \uh(\vertice_I)\mphi_I(\vertice_J) = \uh(\vertice_J)\mphi_J(\vertice_J) = \uh(\vertice_J).\]
  • Le support d’une fonction de forme \(\mphi_I\) est l’union des triangles ayant pour sommets \(\vertice_I\). Il est donc très petit par rapport à \(\Omega\).