4.2. Condition de Dirichlet#

4.2.1. Homogène#

4.2.1.1. Formulation Faible#

Soit le problème suivant (notez l’absence du terme en \(u\))

(4.3)#\[\begin{split}\left\{ \begin{array}{r c l l} -\Delta u &=& f & (\Omega),\\ u & = & 0 & (\Gamma := \partial\Omega). \end{array} \right.\end{split}\]

Multiplions l’EDP (4.3) par des fonctions tests \(v\), intégrons sur \(\Omega\) et appliquons le Théorème de Green :

\[\begin{split}\begin{aligned} -\Delta u = f &\implies \forall v,\quad (-\Delta u) v = fv \\ &\implies \forall v,\quad -\int_{\Omega}(\Delta u) v = \int_{\Omega} fv \\ &\implies \forall v,\quad \int_{\Omega}\nabla u \cdot\nabla v - \int_{\Gamma} (\dn u) v= \int_{\Omega} fv \end{aligned}\end{split}\]

Nous sommes théoriquement bloqué. Nous sommes tentés de dire que \(\dn u = 0\) mais non seulement nous ne le savons pas, mais en plus c’est très probablement faux ! Utiliser les conditions aux bords est en revanche la bonne idée. Nous savons que \(u\) est nul sur le bord \(\Gamma\). Autrement dit, nous ne cherchons pas la valeur de la solution sur ce bord, nous la connaissons déjà. Afin de conserver la symétrie entre \(u\) et \(v\), imposons à \(v\) d’être aussi nul sur le bord et regardons ce que l’on obtient :

\[-\Delta u = f \implies \forall v, v|_\Gamma = 0 \quad \int_{\Omega}\nabla u \cdot\nabla v = \int_{\Omega} fv\]

En terme de dérivabilité, l’espace \(\Ho\) est suffisant pour la solution \(u\) et les fonctions tests \(v\). Il manque toutefois la condition de Dirichlet, dite essentielle, qui doit être incluse dans l’espace fonctionnel. Pour cela, en rappelant que \(\gamma\) est l’application trace de \(\Ho\) sur \(L^2(\Gamma)\), nous introduisons un espace de Sobolev qui prend en compte cette condition de Dirichlet.

\[\Hoz = \enstq{u\in\Ho}{\gamma u = 0},\]

La formulation faible s’écrit alors

\[\begin{split}\left\{\begin{aligned} &\text{Trouver } u\in\Hoz\text{ tel que}\\ &\forall v\in\Hoz, \quad a(u,v)=\ell(v), \end{aligned}\right.\end{split}\]

avec

\[\begin{split}\begin{array}{ r c c l} a \colon & \Hoz \times \Hoz &\longrightarrow & \Rb\\ & (u,v) & \longmapsto & \displaystyle \int_{\Omega}\nabla u\cdot\nabla v\\ \ell \colon & \Hoz &\longrightarrow & \Rb\\ & v & \longmapsto & \displaystyle \int_{\Omega} f v \end{array}\end{split}\]

Remark 4.1

Attention, c’est parce que \(v\) est nul sur \(\Gamma\) que l’intégrale sur \(\Gamma\) s’annule. Ce n’est pas parce que \(\dn u=0\) ! D’ailleurs, sauf si \(u=0\) partout, il y a fort à parier que \(\dn u\neq 0\) !

Démontrons maintenant que cette formulation faible admet une unique solution. Commençons tout d’abord par montrer que \(\Hoz\) est un espace de Hilbert.

Lemma 4.1

L’espace \(\Ho\) est de Hilbert

Ensuite, la continuité de \(\ell\) a déjà été démontrée dans \(\Ho\) et donc dans \(\Hoz\). Occupons nous de \(a(\cdot,\cdot)\).

  • Continuité de \(a(\cdot,\cdot)\).

    \[\begin{split}\begin{aligned} \forall u,v\in\Hoz, \abs{a(u,v)} & = \abs{\int_\Omega \nabla u\cdot\nabla v}\\ & \leq \normL{\nabla u}\normL{\nabla v} & \text{Cauchy Schwarz}\\ & \leq \normH{u}\normH{v} & \text{Inégalité des normes} \end{aligned}\end{split}\]
  • Coercivité de \(a(\cdot,\cdot)\) :

    \[\forall u\in\Hoz, a(u,u) = \int_{\Omega} \nabla u\cdot\nabla u = \normL{\nabla u}^2 \geq \ldots\]

    La coercivité est en réalité compliquée à obtenir puisque nous aimerions avoir :

    \[\normL{\nabla u}^2 \geq C \normH{u}^2 = C\left(\normL{u}^2 + \normL{\nabla u}^2\right)\]

L’inégalité de Poincaré vient alors à notre rescousse !

Proposition 4.1 (Inégalité de Poincaré (admise))

Il existe une constante \(C\) ne dépendant que de \(\Omega\) telle que

\[\forall u\in\Hoz, \qquad \normL{\nabla u} \geq C \normH{u}\]

Remark 4.2

L’inégalité de Poincaré est également valable si la condition de Dirichlet n’est posée que sur une partie \(\GammaD\) du bord \(\Gamma\). Dans ce cas, l’espace considéré est \(\HoD := \enstq{v\in\Ho}{\gamma_{\GammaD}v = 0}\)\(\gamma_{\GammaD} \colon \Ho\to L^2(\GammaD)\) est l’application trace sur \(\GammaD\). À noter que \(\HoD\) est un Hilbert pour les mêmes raisons \(\Hoz\) l’est.

Remark 4.3

L’inégalité de Poincaré montre que la semi-norme \(v\mapsto \normL{\nabla v}\) est une norme sur \(\Ho\) et est équivalente à la norme usuelle \(\normH{\cdot}\), puisque l’on a \(\normL{\nabla v} \geq C \normH{v}\geq C\normL{\nabla v}\).

L’inégalité de Poincaré implique la coercivité de \(a(\cdot,\cdot)\). Toutes les hypothèses du théorème de Lax-Milgram sont vérifiées et la formulation faible du problème de Dirichlet homogène admet bien une unique solution.

4.2.1.2. Implémentation#

Si \(V_h\) est l’espace des éléments finis \(\Pb^1\) sur \(\Omega\), alors une discrétisation naturelle de \(\Hoz\) est l’espace \(\Vhz\) défini par

\[\Vhz = \enstq{u\in V_h}{ u|_{\Gamma} = 0}\]

Nous pouvons aussi raisonner sur le système linéaire directement. Nous séparons les degrés de liberté en deux sous-ensembles :

  1. Ceux qui appartiennent à \(\Omega\) ou à \(\Gamma_N\) : nous les noterons avec un indice \(I\) (pour Intérieur) : \(u_I\)

  2. Ceux qui appartiennent à \(\Gamma_D\), ils seront notés avec un indice \(D\) : \(u_D\)

Quitte à renuméroter, le vecteur \(U\) de degrés de liberté se réécrit

\[\begin{split}U =\left( \begin{array}{c} u_I\\ u_D \end{array} \right),\end{split}\]

et le système linéaire \(AU = B\) devient :

\[\begin{split}AU = B \iff \left( \begin{array}{c c} A_{I,I} & A_{I, D}\\ A_{D, I} & A_{D,D} \end{array} \right) \left( \begin{array}{c} u_I\\ u_D \end{array} \right) = \left( \begin{array}{c} B_I\\ B_D \end{array} \right)\end{split}\]

Les degrés de liberté \(u_D\) sont en réalité fixés à 0 du fait de la condition de Dirichlet, autrement dit, le système à résoudre se résume à (\(I_{D,D}\) étant la matrice identité) :

(4.4)#\[\begin{split}AU = B \iff \left( \begin{array}{c c} A_{I,I} &A_{I,D}\\ 0 & I_{D,D} \end{array} \right) \left( \begin{array}{c} u_I\\ u_D \end{array} \right) = \left( \begin{array}{c} B_I\\ 0 \end{array} \right)\end{split}\]

Informatiquement, nous devons donc rendre les lignes et colonnes associées aux degrés de liberté de Dirichlet, nulles, sauf sur la diagonale avec la valeur 1. Cette opération peut être effectuée après l’assemblage de la matrice ou lors de l’algorithme directement.

Remark 4.4

La valeur de 1 sur la diagonale est finalement arbitraire : nous pouvons choisir n’importe quelle valeur. Pour des raisons de précision numérique, il peut être plus pertinent de choisir comme valeur la moyenne de la somme de la diagonale de \(A_{I,I}\) (sa trace). Cette technique peu coûteuse permet d’éviter de polluer le conditionnement de la matrice par des valeurs potentiellement trop grande ou trop petite par rapport à la « moyenne ».

Remark 4.5

Dans le cas de condition de Dirichlet homogène, ce système ce simplifie :

\[\begin{split}AU = B \iff \left( \begin{array}{c c} A_{I,I} & 0\\ 0 & I_{D,D} \end{array} \right) \left( \begin{array}{c} u_I\\ u_D \end{array} \right) = \left( \begin{array}{c} B_I\\ 0 \end{array} \right),\end{split}\]

ou encore, plus simplement : \(A_{I,I} U_I = B_I\). Le système obtenu est de plus petite taille : c’est logique, l’espace \(\Vhz\) est de dimension le nombre de sommets du maillage moins le nombre de sommets sur le bord \(\Gamma\).

4.2.2. Condition hétérogène#

4.2.2.1. Notion de relèvement#

Nous considérons maintenant le cas d’une condition de Dirichlet non homogène, autrement dit, si \(g\neq 0\) :

(4.5)#\[\begin{split}\left\{ \begin{array}{r c l l} -\Delta u & = & f & (\Omega)\\ u & = & g & (\Gamma)\\ \end{array} \right.\end{split}\]

Nous pouvons introduire l’ensemble suivant

\[\Hog = \enstq{u\in \Ho}{ \gamma u = g},\]

mais ce n’est pas un espace vectoriel ! Pour remédier à ce problème, nous nous ramenons au cas d’une condition de Dirichlet homogène en introduisant un relèvement (= une « extension », l’inverse d’une « restriction ») \(u_g\) de \(g\) : une fonction de \(\Ho\) telle que \(\gamma u_g = g\). Nous ne nous préoccuperons pas de savoir si une telle fonction existe et supposons que tel est le cas. Le problème devient alors de chercher \(\ut = u-u_g\) satisfaisant :

(4.6)#\[\begin{split} \left\{ \begin{array}{r c l l} -\Delta \ut & = & f +\Delta u_g & (\Omega)\\ \ut & = & 0 & (\Gamma)\\ \end{array} \right.\end{split}\]

Nous avons vu plus haut que ce problème admet une unique solution, ce qui implique que (4.5) admet également une unique solution.

Remark 4.6

Le relèvement n’est pas unique, puisque si \(u_0\in\Hoz\) alors \(u_g + u_0\) est aussi un relèvement acceptable.

Remark 4.7

Pour que le relèvement existe, il suffit que \(g\in H^{1/2}(\Gamma)\). Cet espace est composé des traces sur \(\Gamma\) des fonctions de \(\Ho\) :

\[H^{1/2}(\Gamma) = \enstq{\gamma v}{v\in\Ho}\]

Il contient naturellement \(L^2(\Gamma)\) puisque \(\gamma v\in L^2(\Gamma)\).

4.2.2.2. Relèvement en \(\Pb^1\)#

En éléments finis \(\Pb^1\), un relèvement naturel est la fonction \(u_{h, g}\) de \(\Vh\) telle que

\[\begin{split}u_{h,g}(\vertice_j) = \left\{ \begin{array}{l l} g(\vertice_j) & \text{ si }\vertice_j\in\Gamma_D,\\ 0 & \text{ sinon.} \end{array} \right.\end{split}\]

Cette fonction n’est pas un relèvement de \(g\) puisqu’elle ne coïncide avec \(g\) que sur les sommets, mais pas nécessairement entre ceux-ci. Toutefois, au niveau discret, elle remplit ce rôle : c’est un relèvement de l’interpolée de \(g\) dans \(\Vh\) (voir la section suivante). Nous notons \(g_h\) le vecteur de même taille que \(B_D\) et de coefficient \(g(\vertice_I)\) avec \(\vertice_I\in\Gamma\). En pratique, appliquer la condition de Dirichlet hétérogène se traduit par la décomposition de la matrice ainsi :

\[\begin{split}\left( \begin{array}{c c} A_{I,I} & A_{I, D}\\ 0 & I_{D,D} \end{array} \right) \left( \begin{array}{c} u_I\\ u_D \end{array} \right) = \left( \begin{array}{c} B_I\\ g_h \end{array} \right).\end{split}\]

La quantité \(g_h\) est ici à voir comme un vecteur de coefficient \(g(\vertice)\). La matrice obtenue est non symétrique, ce qui peut poser des problèmes (par ex. augmentation du coût de stockage mémoire). Une astuce simple consiste à réécrire sous la forme suivante :

\[\begin{split}\left( \begin{array}{c c} A_{I,I} & 0\\ 0 & I_{D,D} \end{array} \right) \left( \begin{array}{c} u_I\\ u_D \end{array} \right) = \left( \begin{array}{c} B_I - A_{I,D} g_h\\ g_h \end{array} \right).\end{split}\]

Remark 4.8

Comme pour Dirichlet homogène, nous pouvons aussi nous contenter de résoudre un système plus petit : \(A_{I,I} u_I = B_I-A_{I,D}g_h\).

Remark 4.9

Le terme \(A_{I,D} g_h\) est la version discrète du terme \(\Delta u_g\) qui apparait dans (4.6). En effet, la matrice \(A\) discrétise l’opérateur \(a(\cdot,\cdot)\) qui, ici, représente le laplacien sous sa forme faible \(\int_{\Omega}\nabla u \cdot\nabla v\). Gardez à l’esprit que \(A_{I,D}\) n’est pas carré et prend en argument un vecteur de la taille le nombre de sommets de \(\Gamma\) pour retourner un vecteur de taille le nombre de sommets du maillage.