Vous êtes sur la page 1sur 7

BE 2

thode des e
le
ments finis P 1 pour le proble
`me de
Me
action en 2D.
convectiondiffusionre
A Rappel du probl`
eme fort et de sa formulation variationnelle : On consid`ere le probl`eme
de convectiondiffusionreaction, etudie en TD :

div(u) + u + u = f dans ,
(P )
u = 0 sur ,
Contrairement au cas monodimensionnel, pour un second membre f donnee, bien que nous puissions
montrer lexistence et lunicite de la solution du probl`eme (P ), nous ne connaissons pas son expression
analytique. Mais pour une fonction reguli`ere ue donnee, on peut calculer le second membre correspondant fe .
Exemple : On suppose que ]0, 1[]0, 1[. Soit ue la fonction definie sur par
(0.1)

ue (x, y) = sin(x) sin(y).

Verifier que le second membre fe est donne par



(0.2)
fe (x, y) = 2 2 + sin(x) sin(y) + 1 cos(x) sin(y) + 2 sin(x) cos(y).
La formulation variationnelle du probl`eme (P ) est donnee par :

u V,
(P v )

a(u, v) = L(v), v V,
Z
Z
Z
Z
avec V = H01 (), a(u, v) =
u v + ( )uv +
uv et L(v) =
f v, v V.

On suppose que L (), 0 > 0, 0 et que div = 0. Le probl`eme variationnel (P v ) admet


donc une solution et une seule.

B Triangulation du domaine : On consid`ere le On suppose que est un domaine polygonal et


on consid`ere une triangulation reguli`ere Th , h > 0, formee de triangles :
[
=
K.
KTh

Dans tout ce qui suit, on suppose que est le rectangle ]x0 , x1 []y0 , y1 [.
Pour diverses valeurs de x0 , x1 , y0 , y1 , N x et N y, executer la fonction MATLAB
afficher la triangulation Th . Consulter les tableaux node, elem et codnofr.

meshP1.m

et

Les noeuds sont numerotes dans le sens lexicographique. Afin de prendre en compte les noeuds
internes du maillage, on proc`ede `
a une renumerotation des noeuds. Ceci est obtenu grace la fonction
MATLAB numddl.m . Executer cette procedure et commenter les resultats.
Integrer ces deux fonctions dans un un programme principal
dentree sont x0 , y0 , x1 , y1 , Nx et Ny .

main.m

dont les param`etres

C Discr
etisation en
el
ements finis P1 : Soit Wh , le sousespace element finis P1 (approximation
de lespace H 1 ()) et
Vh = Wh H01 ().
Le probl`eme variationnel discret, associe au probl`eme (P ), secrit :

uh V h
(Phv )

a(uh , vh ) = L(vh ), vh Vh .
 N0

h
Soit Nh le nombre de noeuds du maillage. Soit i }N
i=1 une base de Wh et i }i=1 une base de Vh . Le
probl`eme variationnel (Phv ) est equivalent au syst`eme algebrique

RN0 ,
(S)

A = b.
O`
u la matrice A et le second membre b sont definis par :
Z
Z

i
X hZ

Aij =
j i +
( )j i +
j i ,

K
K
K

KTh
(0.3)

X Z

f i .

bi =
K
KTh

Pour K Th quelconque et i = 1, 2, 3, on a vu plus haut que le tableau elem fournit le numero global
du i`eme noeud de lelement K :
18

17
1

Exemple :

3
2

19

19
20

20

elem(1,K)

17
13

elem(2,K)
12
18

elem(3,K)
18
12

2
3
12

1
13

Comme nous lavons signale en cours, pour ces deux elements, la correspondance entre les fonctions
de base et les coordonnees barycentriques est donnee par :

17 = 1 ,
= 2 ,
Pour lelement 19 :
12
18 = 3 .

13 = 1 ,
= 2 ,
Pour lelement 20 :
18
12 = 3 .

les coefficients de la matrice globale A et du second membre global b, donnes par (0.3), sont
donc obtenus par assemblage de matrices
el
ementaires AK et de vecteurs elementaires bK .

D Calcul des matrices et du vecteur


el
ementaires :
Soit K un element de Th . Soit 1 , 2 et 3 les coordonnees barycentriques associees aux sommets S1 , S2
et S3 de K.
Soit MK , DK et C K les matrices elementaires
Z

=
l k ,
Mkl

K
=
l k ,
Dkl

CK =

( )l k ,
kl

de M3 (R) definies, k, l = 1, 2, 3, par :


(matrice de masse)

(matrice de rigidite ou de raideur)

(matrice de convection).

Pour simplifier la mise en oeuvre, on

x32
(0.4)
X = x13 et Y =
x21

adopte les notations suivantes

y23
y31 ,
avec xij = xi xj , yij = yi yj , i, j = 1, 2, 3.
y12

Pour K un element de la triangulation Th ,


ecrire une fonction MATLAB qui permet de recuperer en arguments de sortie les numeros des
sommets N (1) = elem(1, K), N (2) = elem(2, K) et N (3) = elem(3, K), les coordonnees des
sommets ainsi que les vecteurs X et Y .
infoelem.m , les param`etres dentree sont : elem et node.
En effectuant une boucle sur les elements du maillage, integrer cette fonction au programme
principal main.m .

Les vecteurs X et Y dependent de K et ils jouent un role important dans limplementation des codes
elements finis sous MATLAB. On peut, par exemple, facilement montrer (voir TD) que :
(0.5)

i
1
=
Yi ,
x
2 |K|

i
1
=
Xi ,
y
2 |K|

i = 1, 2, 3

et

|K| =


1
X3 Y2 X2 Y3
2

Nous avons vu en TD que Les matrices et le vecteur elementaires sont donnes par :

2 1 1

|K|

1 2 1 ,

MK =

12

1 1 2

1 

t
t
K

,
Y
Y
+
X
X
=
D

4 |K|

Y1 Y1

K
Y2 Y2

(K)
C

Y3 Y3

|K|

K
1 .

f
(K)
b
=

3
1

Y1
X1
Y2 + 2 (K) X2
Y3
X3

X1
X2
X3

X1
X2
X3

Pour une fonction h definie sur K, on note h(K) la valeur de h au barycentre le lelement K et est
donnee par :
f (S1 ) + f (S2 ) + f (S3 )
.
h(K) =
3

Pour K un triangle de sommets elem(1, K), elem(1, K) et elem(1, K),


ecrire une fonction MATLAB pour calculer chacune des matrices elementaires donnes plus haut :
matmass.m pour MK , les param`etres dentree sont : |K|.
matdiff.m pour DK , les param`etres dentree sont : |K| , X et Y .
matconv.m pour C K , les param`etres dentree sont : , X et Y .
ecrire une fonction MATLAB pour calculer le vecteur elementaire donne plus haut :
secmem.m pour bK , les param`etres dentree sont : |K| , , , , X, Y et la fonction f .

On suppose que et sont constantes, ecrire alors


K

= DK + C K + MK .

Integrer ces fonctions au programme principal main.m .

C Assemblage et r
esolution du syst`
eme alg
ebrique :
Lalgorithme dassemblage est decrit dans la procedure suivante :
pour K = 1 N elem
Calculer les matrices DK , C K et MK et former
la matrice
el
ementaire AK (= DK + C K + MK )
Calculer le second membre
el
ementaire bK
pour k = 1 3
i elem(k, K)
si i > 0
b(i) b(i) + bK (i)
pour l = 1 3
j elem(l, K)
si j > 0
A(i, j) A(i, j) + AK (k, l)
fin de si
fin pour l
fin de si
fin pour k
fin pour K

Ecrire la procedure MATLAB qui permet deffectuer lassemblage des tableaux elementaires
comme cest decrit dans lalgorithme precedent.
Integrer directement cette procedure dans le programme principal main.m `a linterieur de la
boucle sur les elements.

En sortie de la boucle sur les elements, on recup`ere alors la matrice globale A et le vecteur global b.

Ecrire la procedure MATLAB qui permet dobtenir la solution du syst`eme algebrique


(0.6)

A = b.

solve.m , les param`etres dentree sont : A et b.


Integrer cette procedure dans le programme principal main.m .

C Repr
esentation graphique et
etude de lerreur :

On suppose maintenant que f (x, y) = 2 2 + sin(x) sin(y)+1 cos(x) sin(y)+2 sin(x) cos(y).
La solution du probl`eme (P ) etant unique, elle donc egale `a
ue (x, y) = sin(x) sin(y).

Ecrire la procedure MATLAB qui permet dobtenir le vecteur solution Ue aux noeuds de la
triangulation.
solexa.m , les param`etres dentree sont : node.
Integrer cette procedure dans le programme principal main.m .

Les composantes du vecteur obtenu par la resolution du syst`eme (0.6) doivent etre renumerotees
et completees par les conditions aux limites pour obtenir Uh la solution discr`ete aux noeuds de la
triangulation.

En utilisant le vecteur N ddl donne par la fonction numddl.m , ecrire la procedure MATLAB
qui permet dobtenir la solution discr`ete Uh .
soldiscr.m , les param`etres dentree sont : node, et N ddl.
Ecrire la procedure MATLAB qui permet de calculer lerreur aux noeuds
Erreur(N o) = Ue (N o) Uh (N o).
Ainsi que la norme infinie de lerreur kErreurk .
erreur.m , les param`etres dentree sont : node, Ue et Uh .
Integrer ces procedures dans le programme principal main.m .

Utiliser la procedure MATLAB postproc.m pour representer sur une meme figure les solutions
exacte Ue et calculee Uh ainsi que lerreur Erreur.
Integrer cette procedure dans le programme principal main.m .

C Etude des cas test (Diffusion, DiffusionReaction, DiffusionConvectionR


eaction et
DiffusionConvection) :
Etudier les trois probl`emes suivants :
I Probl`
eme de diffusion :
= 0, = 1, 0.1, 0.01, 0.001, = (0, 0)
et f donnee par (0.2).
II Probl`
eme de diffusionr
eaction :
= 1, = 1, 0.1, 0.01, 0.001, = (0, 0)
et f donnee par (0.2).
III Probl`
eme de diffusionconvectionr
eaction :
= 1, = 1, 0.1, 0.01, 0.001, = (1, 0)
et f donnee par (0.2).
IV Probl`
eme de diffusionconvection :
= 0, = 1, 0.1, 0.01, 0.001, = (1, 0)
et f = 1.
Pour chacun de ces probl`emes test interpreter les resultats et conclure.