Académique Documents
Professionnel Documents
Culture Documents
Introduction
Cet article est rédigé dans le cadre du cours "Introduction à la méthode
des éléments nis" dispensé par le professeur A.Quarteroni. Son but est
d'introduire l'utilisation de méthodes de calcul numérique pour certains pro-
blèmes particuliers de diusion-transport-réaction mono-dimensionnel. Pour
ce faire, nous nous aiderons du logiciel MATLAB. Nous allons ensuite, pour
les diérents problèmes, comparer les solutions obtenues par approximation
aux solutions exactes. Nous verrons quelle méthode utiliser en fonction du
problème donné.
1 Problème à résoudre
Considérons le problème de diusion-transport-réaction mono-dimensionnel
suivant : (
−αu00 + βu0 + γu = f dans (0, 1),
(1)
u(0) = 0, u(1) = 1,
2
2 FORMULATION FAIBLE DU PROBLÈME
Z 1 Z 1 Z 1 Z 1
00 0
− αũ v + β ũ v + γ ũv = (f − γx − β)v
0 0 0 0
Z 1 Z 1 Z 1 Z 1
0 1 0 0 0
⇐⇒ − αũ v 0 + αũ v + β ũ v + γ ũv = (f − γx − β)v
0 0 0 0
Z 1 Z 1 Z 1 Z 1
0 0 0
⇐⇒ αũ v + β ũ v + γ ũv = (f − γx − β)v.
0 0 0 0
Il s'agit alors de
(
Chercher ũ ∈ V, tel que
(4)
a(ũ, v) = F (v), ∀v ∈ V,
3
3 PROBLÈME DISCRET
a:V ×V −→ R
Z 1 Z 1 Z 1
0 0 0
(ũ, v) 7−→ a(ũ, v) = αũ v + β ũ v + γ ũv,
0 0 0
et la fonctionnelle linéaire
F :V −→ R Z 1
v 7−→ F (v) = (f − γx − β)v.
0
3 Problème discret
Soit n un entier positif, h = 1/n, xj = jh et {[xj , xj+1 ]}n−1
j=0 une partition
de l'intervalle [0, 1].
Par la partie précédente nous savons que nous pouvons écrire le problème
sous forme
a(ũ, v) = F (v),
où ũ, v ∈ H01 (0, 1), et u(x) = ũ(x) + x.
L'espace H01 (0, 1) est de dimension innie, ce qui nous pose problème pour
l'implémentation de méthodes numériques. C'est pourquoi, nous allons utili-
ser les éléments nis de Lagrange pour discrétiser le problème, de manière à
se trouver en dimension nie. Nous pouvons donc poser le problème discret
comme suit :
(
Chercher ũh ∈ Vh , tel que
(5)
a(ũh , vh ) = F (vh ), ∀vh ∈ Vh ,
où
Vh = {vh ∈ Xh1 |vh (0) = vh (1) = 0},
avec
Xh1 = {vh ∈ C 0 ([0, 1])|vh|[xi ,xi+1 ] ∈ P1 , i = 1, . . . , M }.
4
3 PROBLÈME DISCRET
De plus, Z 1 Z 1 Z 1
a(ũh , vh ) = αũ0h vh0 + β ũ0h vh + γ ũh vh
0 0 0
et Z 1
F (vh ) = (f − γx − β)vh .
0
Le problème (5) cherche alors des approximations des fonctions de départ.
Etant donné que ce dernier doit être vérié pour tout vh nous pouvons, par
conséquent, prendre en particulier les fonctions de la base de Vh , c'est-à-dire
Pn−1
vh = ϕi où i = 1, . . . , n − 1 et écrire, dans cette base, ũh = j=1 ũj ϕj , où les
fonctions de base ϕi ∈ Vh pour i = 1, . . . , n − 1 sont dénies comme suit :
x−x
h
i−1
si xi−1 ≤ x ≤ xi ,
−(x−xi+1 )
ϕi = h
si xi ≤ x ≤ xi+1 ,
sinon.
0
Par linéarité du problème (2) nous pouvons écrire le problème discret sous
forme
n−1
X
ũj a(ϕj , ϕi ) = F (ϕi ), ∀i = 1, . . . , n.
| {z } | {z }
j=1
aij Fi
−1
2 0 0 1 0 4 1 0
. . . . . .
−1 . . . .
α −1 . . . . γh 1 . . . .
β
A= + + .
h .. .. .. .. 6 . . . . . . 1
. . −1 2 . . 1
0 −1 2 0 −1 0 0 1 4
Le membre de droite de l'équation (6) est égal à
Z 1
Fi = (f − γx − β)ϕi , pour i = 1, . . . , n − 1.
0
5
4 IMPLÉMENTATION DANS MATLAB
R xi+1 R xi+1
Nous savons que xi−1 ϕi = h et par la série 7, que xi−1 xϕi = ih2 . Nous
trouvons alors la valeur suivante pour l'intégrale :
Fi = ih2 (m − γ) + h(q − β).
Nous connaissons donc les valeurs de A et de F . Nous pouvons désormais
résoudre le système :
Ax = F,
où x = (ũ1 , . . . , ũn ).
Du fait de la forme particulière de la matrice A ce système est équivalent
à résoudre :
2α 2γh
ih2 (m − γ) + h(q − β) = ( + )ũi
h 3
α β γh
+ (− − + )ũi−1
h 2 6
α β γh
+ (− + + )ũi+1 .
h 2 6
Or, nous voulons résoudre le système pour u et non pour ũ. Pour ce faire,
nous rappelons que ũi (x) = ui (x) − xi avec xi = ih, ainsi nous obtenons :
2α 2γh
ih2 (m − γ) + h(q − β) = ( + )(ui − ih)
h 3
α β γh
+ (− − + )(ui−1 − (i − 1)h)
h 2 6
α β γh
+ (− + + )(ui+1 − (i + 1)h)
h 2 6
6
4 IMPLÉMENTATION DANS MATLAB
2α 2γh α β γh
⇐⇒ ih2 (m − γ) + h(q − β) = ( + )ui + (− − + )ui−1
h 3 h 2 6
α β γh 2α α
+ (− + + )ui+1 − ih + (i − 1)h
h 2 6 h h
α 2γh γh
+ (i + 1)h − ih − (i − 1)h
h 3 6
γh β β
− (i + 1)h + (i − 1)h − (i + 1)h.
6 2 2
Après simplication de la partie droite de l'égalité nous arrivons à
2α 2γh
ih2 (m − γ) + h(q − β) = (+ )ui
h 3
α β γh
+ (− − + )ui−1
h 2 6
α β γh
+ (− + + )ui+1 − ih2 γ − hβ.
h 2 6
Ce qui se réduit à
2α 2γh
ih2 m + hq = (+ )ui
h 3
α β γh
+ (− − + )ui−1
h 2 6
α β γh
+ (− + + )ui+1 .
h 2 6
Nous avons désormais toutes les cartes en main pour entreprendre l'im-
plémentation MATLAB, dont voici le code :
function [ A, x ] = exo3(a,b,c,r,m,q,x_0,x_1)
% a = alpha ; b = beta ; c = gamma ; r = dim(A)+1;
%f = mx+q car f \in P_1
h = 1/r;
n = r-1;
A = (a*2/h+c*2*h/3)*diag(ones(n,1)) ...
+ (-a/h+b/2+c*h/6)*diag(ones(n-1,1),1)...
+(-a/h-b/2+c*h/6)*diag(ones(n-1,1),-1);
v= [];
7
5 TEST DE CAS PARTICULIERS
for i=1:n-1
v=[v i*h^2*(m)+h*(q)]; % rempli le vecteur F
end;
%dernière composante de l'interpolation car u(1)=1
v = [v h^2*(n)*m+h*q+a/h-b/2-c*h/6];
w = v';
% w = f dans l'équ Ax = f
x = A\w;
x = [x_0;x ;x_1]; %ajout des conditions aux bords
plot([0 :h: 1],x,'r'); hold on;
8
6 CAS DE TRANSPORT DOMINANT
9
6.1 Méthode des éléments nis
On voit (Figure 4) que la solution oscille encore, malgré une légère amé-
lioration. Ceci se justie par le fait que Pe = 2·0.01·40
1
= 1.25.
10
6.2 Méthode de Galerkin
Nous voyons que cette approximation nous ore une solution approchée
qui n'oscille pas (Figure 5). Encore une fois ceci se justie en calculant :
Pe = 2·0.01·60
1
= 0.8. Or, dans le cas où cette valeur est strictement inférieure
à 1 nous savons que cela indique que l'approximation n'oscille pas.
Pour la justication sur le rapport entre le nombre de Péclet et les oscilla-
tions, nous renvoyons au polycopié du cours d'éléments nis 2007 (page 35).
lorsque h → 0 ⇒ φh → 0.
De part cette similarité il nous sut de reprendre le code (voir section 4),
en remplaçant la valeur de α par α + φh . Nous allons prendre φh = β h2 .
Formellement nous aurions pu simplier le code, vu que, comme nous
allons le voir, dans le cas de cet exercice nous avons f = 0. Toutefois nous
avons préféré donner une méthode qui se généralise pour f ∈ P1 . Voici donc
le code pour cette méthode :
11
6.2 Méthode de Galerkin
function [ A, x ] = galerkin(a,b,c,r,m,q,x_0,x_1)
% a = alpha ; b = beta ; c = gamma ; r = dim(A)+1;
%f = mx+q car f \in P_1
h = 1/r;
n = r-1;
%Seul changement, (a) remplacé par (a+b*h/2)
A = ((a+b*h/2)*2/h+c*2*h/3)*diag(ones(n,1))...
+ (-(a+b*h/2)/h+b/2+c*h/6)*diag(ones(n-1,1),1)...
+(-(a+b*h/2)/h-b/2+c*h/6)*diag(ones(n-1,1),-1);
v= [];
for i=1:n-1
v=[v i*h^2*(m)+h*(q)]; % rempli le vecteur F
end;
%dernière composante de l'interpolation car u(1)=1
v = [v h^2*(n)*m+h*q+(a+b*h/2)/h-b/2-c*h/6]
w = v';
% w = f dans l'équ Ax = f
x = A\w;
x = [x_0;x ;x_1];
plot([0 :h: 1],x,'r'); hold on;
Nous allons maintenant tester cette nouvelle fonction dans les mêmes cas que
précédemment et voir si, par hasard, nous remarquons une diérence.
12
6.2 Méthode de Galerkin
13
6.3 Méthode GALS
X hK
avec Lh (uh , vh ) = δ Luh , Lvh ,
K∈Th
β K
X hK
Ψh (vh ) = δ f, Lvh .
K∈Th
β K
le produit scalaire dans L2 (K). Le paramètre δ > 0 est une variable à choisir
suivant le problème donné. De plus, nous pouvons, comme β est positif,
omettre la valeur absolue qui pourrait apparaître dans certains ouvrages pour
ce terme.
Il faut remarquer que dans le problème donné Th correspond à la partition
j=0 de l'intervalle [0, 1]. Dans notre cas, vu que f = 0 nous avons
{[xj , xj+1 ]}n−1
Ψh (vh ) = 0 et alors Fh (vh ) = F (vh ). De plus, τj = 2βh
correspond à δhβk .
C'est pourquoi nous avons :
14
7 CAS DE RÉACTION DOMINANTE
X h
Lh (uh , vh ) = (Luh , Lvh )K
K∈Th
2β
h X
= (−αu00h + βu0h , −αvh00 + βvh0 )K
2β K∈T
h
n−1 Z xj+1
h X
= β 2 u0h vh0
2β j=0 xj
Z 1
h
= β 2 u0h vh0
2β 0
hβ 1 0 0
Z
= u v ,
2 0 h h
vu que uh et vh sont des polynômes du premier degré et que γ = 0.
Tout ceci nous mène à écrire la méthode de GALS dans ce cas comme
suit : (
Chercher uh ∈ Vh , tel que
(7)
ah (uh , vh ) = F (vh ), ∀vh ∈ Vh ,
R1 0 0
avec ah (uh , vh ) = ah (uh , vh )+ hβ u v . Mais ceci correspond exactement
2 0 h h
à la méthode upwind (voir polycopié du cours d'éléments nis 2007, page 37).
Ainsi avec ce paramètre de stabilisation, ces deux méthodes correspondent.
15
7.1 Méthode des éléments nis
Dans ces graphes (Figure 9) nous voyons que les solutions approchées sont
oscillantes pour n = 10, 20, 30. Seul pour n = 40 la solution est monotone.
Nous allons justier ceci à l'aide du calcul du nombre de Péclet local. En eet,
ce nombre peut être calculé dans ce problème grâce à la formule suivante :
γh2
Pe = .
6α
16
7.2 Méthode de Galerkin par masslumping
Or, par la série 7, exercice 2 nous savons que la solution n'est pas monotone
si Pe ≥ 1, et monotone sinon.
Si n = 10, nous avons Pe = 6·1/6000
0.12
= 10. Il est alors cohérent que la
solution oscille. Pour n = 20 nous trouvons que Pe = 6·1/6000
2
0.05
= 2.5. La
solution oscille toujours, mais déjà moins que dans le cas n = 10. Dans le
cas n=30, l'oscillation observée dans le graphe est très faible, ce qui devrait
correspondre à un nombre de Péclet local proche de un, mais toujours su-
(1/30)2
périeur. En eectuant le calcul, nous obtenons que Pe = 6·1/6000 = 1.1̄, ce
qui est cohérent avec le graphe obtenu. Si par contre nous regardons n = 40,
le graphe n'indique pas d'oscillations. En calculant le nombre de Péclet lo-
(1/40)2
cal, nous trouvons Pe = 6·1/6000 = 0.625. Par conséquent, dans l'ensemble la
"théorie du nombre de Péclet" a bel et bien été en accord avec nos résultats
graphiques.
−1
2 0 0 1 0 1 0 0
. . . . ... ...
−1 . . . .
α −1 . . . .
β
0
A= + + γh . .
h . .
. . . . −1 2 . .
. . . . 1 .
. . . . 0
0 −1 2 0 −1 0 0 0 1
17
7.2 Méthode de Galerkin par masslumping
function [ A, x ] = lumping(a,b,c,r,m,q,x_0,x_1)
% a = alpha ; b = beta ; c = gamma ; r = dim(A)+1;
%f = mx+q car f \in P_1
h = 1/r;
n = r-1;
A = (a*2/h+c*h)*diag(ones(n,1)) + (-a/h+b/2)*diag(ones(n-1,1),1)...
+(-a/h-b/2)*diag(ones(n-1,1),-1);
v= [];
for i=1:n-1
v=[v i*h^2*(m)+h*(q)]; % rempli le vecteur F
end;
% dernière composante de l'interpolation
v = [v h^2*n*m+h*q+a/h-b/2];
w = v';
% w = f dans l'équ Ax = f
x = A\w;
x = [x_0;x ;x_1];
plot([0 :h: 1],x,'r'); hold on;
Nous allons faire appel à cette nouvelle commande pour traiter le pro-
blème avec successivement n = 10, 20, 30, et 40. Nous représentons la solution
exacte ainsi que la solution approximée dans chacun de ces cas.
Nous constatons que dans ce cas nous n'avons plus aucune oscillation
(voir Figure 10), ce qui nous amène à penser que dans le cas de problèmes de
réaction dominante il est préférable de privilégier cette méthode à la méthode
des éléments nis standards. La disparition des oscillations est due au fait
que cette nouvelle méthode coïncide avec celle des diérences nies qui est
une méthode stable pour les problèmes de diusion-réaction.
18
7.2 Méthode de Galerkin par masslumping
19