Vous êtes sur la page 1sur 18

Mini Projet : Résolution

Numérique d’EDP sous


FEniCS

1
Chapitre 1

Solution du problème
1.1 Problème :

Soit Ω un domaine borné de R2 , α un réel strictement positif et f ∈ L2 (Ω). On


s’intéresse à l’approximation numérique de la solution du problème :

−∆u + αu = f dans Ω
∂u
= 0 sur ∂Ω
∂n

1. Ecrire la formulation variationnelle de ce problème.

Solution :

La formulation variationnelle de ce problème consiste à chercher u ∈ H1 (Ω)


∂v
tel que pour tout v ∈ H1 (Ω) satisfaisant ∂n = 0 sur ∂Ω, on a :

1ère étape : on suppose que u ∈ H 2 (Ω), on multiplie par une fonction de


test v ∈ H 1 (Ω), on intègre membre à membre et on applique la formule de
Green 2 : Z Z
⇒ (−∆u + αu)v dΩ = fv
Ω Ω
Z Z
⇒ (∇u · ∇v + αuv)dx = f vdx
Ω Ω
∂v
En utilisant l’intégration par parties et le fait que ∂n = 0 sur ∂Ω, on ob-
tient : Z Z Z
⇒ (∇u · ∇v)dx + (αu)v dx = f vdx
Ω Ω Ω
Z Z Z Z
∂u
⇒ ∇u · ∇v − v+α uv = fv
Ω ∂Ω ∂n Ω Ω

On arrive donc à la résultat suivante :

3
Z Z Z
a(u, v) = ∇u · ∇vdΩ + α uvl(v) = f vdΩ
Ω Ω Ω

donc :
⇔ a(u, v) = L(v)

2ème étape : a(u, v) est le produit scalaire de H 1 .

| a(u, v) | ≤ ∥ u ∥H 1 ∥ v ∥H 1

a(u, u) = ∥ u2 ∥H 1 ≥∥ u2 ∥H 1

| l(v) |≤∥ f ∥L2 ∥ v ∥H 1 : d’où la continuité de l’application trace

On va appliquée maintenant le théorème de Lax-Milgram :

3ème étape :
a(u, v) = l(v) ∀v ∈ H 1 (Ω)
R R R R
Ω ∇u · ∇v + α Ω uv = Ω f v et on pose que Ω ∇u · ∇v = E1

En applique la formule de Green pour E1 , on obtient :


Z Z Z Z
∂u
(−∆u)v − v+α uv = f v ∀v ∈ H 1 (Ω)
Ω ∂Ω ∂n Ω Ω

On va prendre les fonctions test sous la forme v = φ ∈ D(Ω) :

− < ∆u, φ >D′ ,D +α < u, φ >D′ ,D =< f, φ >D′ ,D

et on trouve dans D′ :

∂u
−∆u + αu = f ⇒ =0
∂n

4
d’où le résultat :
Z Z
(∇u · ∇v + αuv)dx = f vdx
Ω Ω

2. Soient Th une triangulation du domaine Ω et Vh l’approximation de H 1 (Ω)


par des éléments finis P1 associée à la triangulation Th . On note par mi , i =
1, . . . , n les sommets des triangles et {ϕi }ni=1 la base canonique de Vh .

(a) Nous rappelons que la solution approchée s’écrit sous la forme

n
X
uh (x) = uh (mi ) ϕi (x)
i=1

Montrer que le vecteur Uh ∈ Rn , dont la i-ème composante vaut uh (mi ), est


solution d’un système linéaire de la forme

(αMh + Kh ) Uh = Fh

et donner les expressions de Mh , Kh et Fh .

Solution :

La formulation variationnelle du problème précèdent donne :

n
X n
X n
X
∇uh (mi ) · ∇ϕi + α uh (mi ) ϕi = f (mi ) ϕi
i=1 i=1 i=1

Pn
Ensuite en utilisant la formule de la solution approchée uh (x) = i=1 uh (mi ) ϕi (x)

5
En insérant cette expression dans la formulation variationnelle, on obtient : :

n n
! n n
! n
X X X X X
∇ uh (mj ) ϕj (mi ) ·∇ϕi +α uh (mj ) ϕj (mi ) ϕi = f (mi ) ϕi
i=1 j=1 i=1 j=1 i=1

Et appliquons la linéarité de l’intégrale on a :

n n n
! n
X X X X
uh (mj ) ∇ϕj (mi ) · ∇ϕi + α uh (mj ) ϕj (mi ) ϕi = f (mi ) ϕi
i=1 j=1 j=1 i=1

comme en définissant Mh et Kh alors :


Z  Z 
Mh = ϕi ϕj dx , Kh = ∇ϕi · ∇ϕj + αϕi ϕj dx
Ω i,j Ω i,j

et on trouve que Fh est égale a :


Z 
Fh = f ϕi dx
Ω i

Alors l’équation est la suivante :

(Mh + αKh ) Uh = Fh => αMh + α α−1 Kh Uh = Fh => α Mh + α−1 Kh Uh = Fh


 

Et en peut s’écrire cela sous forme matricielle :

(αMh + Kh ) Uh = Fh

(b) En approchant f par son P1 -interpolant fh , c-à-d f (x) ≃ fh(x)≃Pni=1 f (mi )ϕi (x) ,
montrer que

Fh ≃ Mh F̃h ,

6
où F̃h est le vecteur de Rn dont la i-ème composante vaut f (mi ).

Solution :

On a comme donnée :
n
X
f (x) ≈ fh (x) := f (mi ) ϕi (x)
i=1

Cela implique que chaque valeur f (mi ) est évaluée aux nœuds mi ensuite pondérée
par la fonction de base ϕi .

En exprimons Fh et maintenant, en utilisant cette approximation pour obtenir


que : Z  Z 
Fh = f ϕi dx = fh ϕi dx
Ω i Ω i

En remplaçant f par fh :

Z  Z n
! ! n Z !
X X
Fh = fh ϕi dx = f (mj ) ϕj ϕi dx Fh = f (mj ) ϕj ϕi dx
Ω i Ω j=1 j=1 Ω
i i

n
!
X
Fh = f (mj ) Mij
j=1 i

donc on trouve que Mij est l’élément (i, j)-ième de la matrice Mh .

3. Réaliser le maillage du domaine décrit dans la figure 1 . Indication : Utilisez


le package mshr pour générer ce maillage :

7
Solution :

Figure 1.1 – le maillage du domaine décrit dans la figure 1

8
Figure 1.2 – figure de Mesh

4. Écrire un programme FEniCS en langage Python pour la résolution numé-


rique de ce problème, en expliquant les différentes lignes de code.

Solution :

Dans cette figure, nous avons défini l’espace fonctionnel comme suit :
— Le premier argument est le maillage utilisé.
— Le deuxième argument est une famille de fonctions que nous utilisons,
où "P" représente un polynôme de Lagrange.
— Le troisième argument est le degré du polynôme.

9
Figure 1.3 – Programme FEniCS pour la résolution numérique de ce problème

Figure 1.4 – Visualisation de résultat

10

5. On prendra f (x, y) = α π 2 + 1 cos(πx) cos(πy) et α = 2 dans la fonction
Expression.

Solution :

Figure 1.5 – Pour la nouvelle valeur de f

11
Figure 1.6 – Solution approchée associée au maillage

6. Assembler et afficher les matrices Mh et Kh .

Solution :

Figure 1.7 – assemblage et affichage de matrice

12
Figure 1.8 – La matrice de Mh

Figure 1.9 – La matrice de Uh

7. Refaire le calcul de la question 5. en utilisant des éléments finis de Lagrange


d’ordre 2 sur le même maillage. Sachant que la solution exacte est ue (x, y) =
cos(πx) cos(πy), comparer les erreurs pour les éléments finis de Lagrange
d’ordre 1 et 2.

13
Solution :

Figure 1.10 – les éléments finis de Lagrange d’ordre 2

14
Figure 1.11 – comparaison des erreurs

Figure 1.12 – visualisation du solution

8. On suppose maintenant que la condition de Neumann homogène sur le bord


du domaine Ω est remplacée par une condition mixte de type

15
∂u
u = 0 sur Γ1 , = 0 sur Γ2
∂n

où Γ1 et Γ2 forment un découpage en deux parties disjointes de Γ = ∂Ω, i.e.,


Γ = Γ̄1 ∪ Γ̄2 et Γ1 ∩ Γ2 = ∅. Ecrire la formulation variationnelle du nouveau
∂u
problème : −∆u + αu = f dans Ω, u = 0 sur Γ1 , ∂n = 0 sur Γ2

Solution :

Tout comme dans la question 1, mais en choisissant V = H01 (Ω) pour satisfaire
la condition de Dirichlet, les conditions aux limites seront également modifiées
comme suit :

Pour Γ1 , la condition u = 0 implique v = 0 car v est une fonction test. Ainsi, le


terme de bord sur Γ1 est nul.
∂u
Pour Γ2 , la condition ∂n = 0 signifie que ∇v · n = 0 sur Γ2 , où n est le vecteur
normal sortant.

Cela signifie que le terme de bord sur Γ2 est également nul.

En répétant le même processus que dans la question 1, nous obtenons la formu-


lation variationnelle de ce problème de Dirichlet :

Trouver u tel que :


Z Z
⇒ (∇u · ∇v + αuv)dx = f vdx
Ω Ω

∀ v ∈ V = H01 (Ω)

9. Modifier le programme FEniCS pour la prise en compte des nouvelles condi-


tions aux limites pour Γ1 = {(x, y) ∈ ∂Ω, x = −1}∪{(x, y) ∈ ∂Ω, y = −1}
et résoudre le problème.

16
Solution :

Figure 1.13 – Le programme FEniCS pour la prise en compte des nouvelles


conditions aux limites

17
Figure 1.14 – Le programme FEniCS pour la prise en compte des nouvelles
conditions aux limites

Figure 1.15 – visualisation du solution

18

Vous aimerez peut-être aussi