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)
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.
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
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 .
=
l k ,
Mkl
K
=
l k ,
Dkl
CK =
( )l k ,
kl
(matrice de convection).
x32
(0.4)
X = x13 et Y =
x21
y23
y31 ,
avec xij = xi xj , yij = yi yj , i, j = 1, 2, 3.
y12
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
= DK + C K + MK .
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.
A = b.
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 .