Vous êtes sur la page 1sur 30

EDP mixte : Implmentation des lments finis en Matlab

Implmentation des lments finis en Matlab


1. Introduction :
Une courte excution de Matlab pour les lments finis P1-Q1
sur des triangles et des paralllogrammes est donne pour la rsolution
numrique des problmes elliptiques avec des conditions aux
frontires mixtes sur des grilles non structures. Selon la brivet du
programme et de la documentation donne, n'importe quelle
adaptation des exemples modles simples, des problmes plus
complexes, peut facilement tre excut. Les exemples numriques
prouvent la flexibilit de l'outil de Matlab.
Les programmes proposs de Matlab utilisent la mthode d'lment
fini pour calculer une solution numrique U qui rapproche la solution
u du problme bidimensionnel de Laplace (P ) avec des conditions
aux frontires mlangs (mixtes):
2. Le problme exact :
Soit 2 un domaine de Lipschitz avec une frontire
polygonale .
Sur un certain sous-ensemble ferm de la frontire D avec longueur
positive, nous considrons des conditions de Dirichlet, alors que nous
avons les conditions de Neumann sur la partie restante : \ D
Soient f L () , uD H 1 () et g L2 (N ) .
u H ( )
Cherchons
avec :
u f Dans
(1)
u u D Sur D
(2)
u
g Sur
(3)
(P)
n
N

Daprs le thorme de Lax-Milgram, il existe toujours une


solution faible de (1)-(3) ce qui donne la rgularit intrieure (i.e.,
2
u H loc
() ), et on a des frontires lisses et aussi un changement de
conditions la frontire.
Les conditions non homognes de Dirichlet (2) sont associes
la dcomposition :
donc v 0 sur D , i.e.,
() { H 1 () / 0 surD }

v u uD

vH

1
D

Par : GRARI et KORIKACHE

1/30

EDP mixte : Implmentation des lments finis en Matlab

Alors, la formulation faible (ou vibrationnelle) du problme (P) est


de :
Rechercher v H 1D () tel que :

v.wdx f .wdx g.wds u

Par : GRARI et KORIKACHE

2/30

.wdx, w H 1 ()
D

(4)

EDP mixte : Implmentation des lments finis en Matlab

3. Discrtisation de Galerkin du problme :


Pour limplmentation, le problme (4) est discrtis en utilisant
la mthode standard de Galerkin ou H () et H D1 () sont remplaces
par des sous-espaces de dimensions finis S et S D S H D1 ,
respectivement,
Soit U D S une approximation de uD sur D (On dfinit U D comme
tant un interpolant (relatif au nud) de uD sur D ).
Donc la discrtisation de problme ( P ) est de chercher V S D tel que ;
1

V .Wdx fWdx gWds U

.Wdx,

W SD

(5)
(1 ,........, N ) une

Soit

base de lespace S de dimension fini, et soit


(i ,........,i ) une base de S D ou
I {i1 ,........., i M } {1,........, N} est un
ensemble d'index de cardinale M N 2 .
1

V . dx f dx g ds U
j

. j dx, j I

(6)

Lquation (5) est quivalente :


En outre soit,
V xk k
k I

Donc,
systme

et U D U k k .
k 1

lquation (6) donne le


linaire des quations :

Ax b

(7)

Les coefficients de la matrice A ( A


b (b ) sont dfinit par :
j

j I

jk

) j , kI 2 M M et

le cot droit

A jk

j . k dx et b j

f j dx

g j ds U k j .k dx

k 1

(8)

La matrice A est symtrique, dfinie positive, donc, le systme (7) a


exactement une solution x M ce qui dtermine la solution de
Galerkin
N

U U D V U j j xk k
j 1

Par : GRARI et KORIKACHE

3/30

kI

EDP mixte : Implmentation des lments finis en Matlab

4. Reprsentation des donnes de la triangulation :


Supposant que le domaine a une frontire polygonale , nous
pouvons recouvrir par une triangulation rgulire T forme de
triangles et de quadrilatres, i.e., t o chaque t est un triangle
ferm ou un quadrilatre ferm.
tT

Figure 1. Exemple de maillage

coordinates.dat contient les coordonnes de chaque nud de maillage


donn.
Chaque ligne est de la forme :
node# x-coord y-coord
Notre subdivision est forme de triangles et de quadrilatres. Dans
les deux cas, les nuds sont numrots dans le sens contraire des
aiguilles d'une montre.
Pour les triangles ; elements3.dat contient pour chacun triangle
le nombre de nuds (sommets), Chaque ligne est de la forme :
element# node1 node2 node3.
De mme, les donnes pour les quadrilatres sont donnes dans
elements4.dat. Ici, nous employons le format :
element# node1 node2 node3 node4.

Par : GRARI et KORIKACHE

4/30

EDP mixte : Implmentation des lments finis en Matlab

elements3.dat
1 2 3 13
2 3 4 13
3 4 5 15
4 5 6 15

1
2
3
4
5
6

elements4.dat
1
2 13
12 13 14
13
4 15
11 14
9
14 15
8
15
6
7

12
11
14
10
9
8

Les deux fichiers Neumann.dat et Dirichlet.dat contiennent dans


chaque ligne les deux nombres de nuds attacher au le bord de la
frontire :
Neumann edge# node1 node2 resp., Dirichlet edge # node1
node2.

Figue2 : fonction chapeau

neumann.dat
1
5
6
2
6
7
3
1
2
4
2
3

dirichlet.dat
1
3
4
2
4
5
3
7
8
4
8
9
5
9
10
6 10
11
7 11
12
8 12
1

Dans la figure2, deux fonctions chapeau typiques dfinies pour


chaque nud ( x , y ) du maillage par :
j

j ( xk , yk ) jk ,

Par : GRARI et KORIKACHE

5/30

j , k 1,......., N .

EDP mixte : Implmentation des lments finis en Matlab

Le sous espace S D S est lespace des splines engendr par tout les
pour tout ( x , y ) qui ne se sont pas sur D . Dautre part U D est dfinit
comme tant un interpolant nodal de u D , dans S .
Avec ces espaces S et S D et leurs bases correspondantes, les intgrales
dans la relation (8) peuvent tre calcul comme somme de tous les
lments et aussi somme de tous les bords de larc ,
c--d.,
j

A jk


t T t

. k dx

b j f j dx
t T t

(9)
N

g j ds U k jk dx

E N E

k 1

(10)

tT t

5. la matrice de courbatures
La matrice locale de courbatures est dtermine par les
coordonnes des sommets de l'lment correspondant, elle est calcul
par les fonctions stima3.m et stima4.m.
Pour un lment de la triangulation T, soient ( x1 , y1 ) , ( x2 , y2 ) et ( x , y )
des sommets et 1 , 2 et les fonctions de base correspondantes dans
S ,i.e., ( x , y )
j , k 1,2,3.
3

jk

La rflexion d'un moment indique


1
x

j ( x, y ) det 1 x j 1
1 x
(11)
j2

1 xj

y j 1 /det 1 x j 1
1 x
y j 2
j2

Do

Par : GRARI et KORIKACHE

yj

y j 1
y j 2

1 yj1 yj2
j(x, y)
2T xj2 xj1
6/30

EDP mixte : Implmentation des lments finis en Matlab

Avec

est donn par :


x x x x
2 T det 2 1 3 1
y2 y1 y3 y1

L'entre rsultante de la matrice de courbatures est :

yk1 yk2

M jk j (k ) dx 2 yj1 yj2, xj2 xj1



(
2
T
)
t
x k2 xk1
t

Avec
3. Ceci
pour
M

t
2

.GG

avec

G x1
y
1

1
x2
y2

x3
y3

1
0

lindex modulo
est
crit
simultanment
tous les index :

0
1

Puisque nous obtenons les formules semblables pour trois dimensions,


le programme en Matlab est simultanment pour d=2 et d=3
function M = stima3(vertices)
d = size(vertices,2);
G = [ones(1,d+1);vertices] \ [zeros(1,d);eye(d)];
M = det([ones(1,d+1);vertices]) * G * G / prod(1:d);

Pour un lment quadrilatral T soient ( x1 , y1 ),........, ( x4 , y4 ) les


sommets avec les fonctions chapeau correspondantes 1 ,......., 4
.puisque T est un paralllogramme, il y a un quadrillage

Par : GRARI et KORIKACHE

7/30

EDP mixte : Implmentation des lments finis en Matlab

x 2xx 1 4xx 1 x1
T(,)
y 2yy 1 4yy 1 y1
Pour les lments [0,1] sur T. puis
fonctions de la forme
2

( x, y ) j ( T1 ( x, y )) avec

1 ( , ) : (1 )(1 ),

2 ( , ) : (1 ),

3 ( , ) : ,

4 ( , ) : (1 ) .

les

De la loi de substitution il suit pour les intgrales (9) :


M

jk

M jk

j ( x, y ). k ( x, y ) d ( x, y )

0 ,1 2

( T1 )( ( , ))(( k T1 ))( ( , ))T det D T d ( , )

M jk det D T

0 ,1 2

j ( , )(( D T ) T D T ) 1 ( k ( , ))T d ( , )

On rsout ces intgrales partir de la matrice locale de courbatures,


pour un lment de quadrilatre on aura :

Par : GRARI et KORIKACHE

8/30

EDP mixte : Implmentation des lments finis en Matlab

2a c
3b (a c)
a 2c
3b 2(a c)

2a c
3b 2(a c)
a 2c
3b 2(a c)
det D T
M
3b (a c)
a 2c
3b 2(a c)
2a c
6

a 2c
3b (a c)
2a c
3b 2(a c)

Avec

a b
((DT )T DT )1
b c

functionM=stima4(vertices)
D_Phi=[vertices(2,:)vertices(1,:);vertices(4,:)...
vertices(1,:)];
B=inv(D_Phi*D_Phi);
C1=[2,2;2,2]*B(1,1)+[3,0;0,3]*B(1,2)+[2,1;1,2]*B(2,2);
C2=[1,1;1,1]*B(1,1)+[3,0;0,3]*B(1,2)+[1,2;2,1]*B(2,2);
M=det(D_Phi)*[C1C2;C2C1]/6;

6. Assembler le ct droit de lquation


Les forces de volume sont employes pour assembler le ct droit.
Utilisons la valeur de f au centre de gravit ( x , y ) de T l'intgrale
T f j dx en (10) est approxime par :
S

1 x2 x1 x3 x1
T f jdx kT det y2 y1 y3 y1 f (xS , yS )
Tel que kT 6 si T est un triangle et
paralllogramme.

kT 4

si

T est un

%VolumeForces
forj=1:size(elements3,1)
b(elements3(j,:))=b(elements3(j,:))+...
det([111;coordinates(elements3(j,:),:)])*...
f(sum(coordinates(elements3(j,:),:))/3)/6;
end
forj=1:size(elements4,1)
b(elements4(j,:))=b(elements4(j,:))+...
det([111;coordinates(elements4(j,1:3),:)])*...
f(sum(coordinates(elements4(j,:),:))/4)/4;
end

Les valeurs de
du problme.

sont donnes partir de la fonction f.m qui dpend

Par : GRARI et KORIKACHE

9/30

EDP mixte : Implmentation des lments finis en Matlab

La fonction est dfinit par les coordonnes des points qui se trouve
dans et elle renvoie la force de volume a ces endroits. Pour
lexemple numrique reprsent sur le schma 3 nous avons employ
functionVolumeForce=f(x);
VolumeForce=ones(size(x,1),1);

De mme, les conditions de Neumann contribuent au cot droit. En


utilisant la valeur de g au centre ( xM , yM ) de E avec la longueur E ,
lintgrale E g j ds dans (10) est approch par
g

ds

E
g ( x M , y M ).
2

%Neumannconditions
forj=1:size(neumann,1)
b(neumann(j,:))=b(neumann(j,:))+...
norm(coordinates(neumann(j,1),:)...
coordinates(neumann(j,2),:))*...
g(sum(coordinates(neumann(j,:),:))/2)/2;
end

Ici, nous employons le fait que dans Matlab le taille dune matrice
vide est plac par zro et qu'une boucle de 1 0 est totalement omis.
De cette faon, la question de l'existence des donnes de frontire de
Neumann doit tre renonce.
Les valeurs de g sont donns par la fonction g.m qui dpend encore
du problme. La fonction est dfinit avec les coordonnes des points
sur et retours les efforts correspondants. Pour l'exemple
numrique g.m tait
N

functionStress=g(x)
Stress=zeros(size(x,1),1);

7. tats dincorporation de Dirichlet


Avec une numrotation approprie des nuds, le systme des
quations linaires rsultant de la construction dcrite dans la section
prcdente sans incorporer des tats de Dirichlet peut tre crit comme
suit :

Par : GRARI et KORIKACHE

A1 A12 U b

10/30

EDP mixte : Implmentation des lments finis en Matlab

Avec U M , U D N M . Ici, U sont les valeurs aux nuds libres qui


sont dterminer, U D sont les valeurs aux nuds qui sont sur la
frontire de Dirichlet ainsi sont connus a priori.
Par consquent, le premier bloc d'quations peut tre rcrit :
A11 .U b A12 .U D

C'est la formulation de (6) avec U D 0 aux nuds de non-Dirichlet.


Dans le deuxime bloc d'quations dans (12) l'inconnu est bD mais
puisqu'il n'a
%Dirichletconditions
pas
u=sparse(size(coordinates,1),1);
u(unique(dirichlet))=u_d(coordinates(unique(dirichlet),:)); dintrt, il
b=bA*u;
est
omis
dans le suivant.

Les valeurs u D aux nuds sur D sont donnes par la fonction


u.d.m qui dpend du problme. La fonction est appele par les
coordonnes aux points sur D et retourne les valeurs aux endroits
correspondants. Pour l'exemple numrique u.d.m tait :
functionDirichletBoundaryValue=u_d(x)
DirichletBoundaryValue=zeros(size(x,1),1);

8. Calcul de la solution numrique


Les lignes de (7) correspondant la premire M ligne de la
forme (12) qui rduit le systme des quations avec une matrice
dfinie symtrique et positive de coefficient A11 .
Il est obtenu du systme original des quations en prenant les lignes et
les colonnes et on les fait correspondant les nuds libres du
problme. La restriction peut tre ralise dans Matlab travers
lindexation approprie.

Par : GRARI et KORIKACHE

11/30

EDP mixte : Implmentation des lments finis en Matlab

Le systme des quations est rsolu par l'oprateur binaire (install


dans Matlab)
FreeNodes=setdiff(1:size(coordinates,1),unique(dirichlet));
qui
donne
u(FreeNodes)=A(FreeNodes,FreeNodes)\b(FreeNodes);
l'inverse
gauche d'une matrice.

Matlab se sert des proprits d'une matrice dfinie positive,


symtrique pour rsoudre le systme des quations efficacement.
Une reprsentation graphique de la solution est donne par la fonction
show.m.
functionshow(elements3,elements4,coordinates,u)
trisurf(elements3,coordinates(:,1),coordinates(:,2),u,...
facecolor,interp)
holdon
trisurf(elements4,coordinates(:,1),coordinates(:,2),u,...
facecolor,interp)
holdoff
view(10,40);
title(SolutionoftheProblem)

Figure 3.solution du problme de Laplace

Par : GRARI et KORIKACHE

12/30

EDP mixte : Implmentation des lments finis en Matlab

Dans Matlab trisurf(ELEMENTS,X,Y,U) est utilise pour


dessiner des triangulations pour les lments de types gaux. Chaque
ligne de la matrice ELEMENTS dtermine un polygone o les x-, y-, et
z- coordonnes de chaque sommet de ce polygone est donne par la
correspondance avec X, Y et U respectivement. La couleur des
polygones est donne par des valeurs de U. Les paramtres
additionnels, 'facecolor', 'interp', mnent une coloration
interpole. La figure 3 illustre la solution pour le maillage dfinie dans
la section 4 et les fichiers de donnes f.m, g.m, et u_d.m donns
dans les sections 6 et 7 .
La rcapitulation sectionne 4-8, le programme principal, qui est

Lignes 3-10: Chargement de la gomtrie et initialisation du maillage.


Lignes 11-19: Assemble la matrice de rigidit dans deux boucles, d'abord aux
lments des triangulaires, puis aux lments des quadrilatres.
Lignes 20-30: Incorporation de la force de volume dans deux boucles, d'abord
aux lments des triangulaires, puis aux lments des quadrilatres.
Lignes 31-35: Incorporation de l'tat de Neumann.
Lignes 36-39: Incorporation de l'tat de Dirichlet.
Lignes 40-41: Solution du systme linaire rduit.
Lignes 42-43: Reprsentation graphique de la solution numrique.

numr dans l'annexe A, est structur comme suit (les lignes


rfrences sont selon la numrotation dans l'annexe A) :
9. L'quation de la chaleur
Pour des mthodes numriques de l'quation de la chaleur,
u

u f sur

0, T

avec un procd implicite temps d'Euler, nous avons devis


l'intervalle de temps [0, T] en N sous-intervalles de taille dt T N qui
mne l'quation :
(id dt )u n dtf n u n1 ,

f n f ( x, t n ) et u n

est l'approximation discrte de u au temps

Par : GRARI et KORIKACHE

13/30

(13)

tn n

EDP mixte : Implmentation des lments finis en Matlab

La forme faible de (13) est :


u

vdx dt u n .vdx dt ( f n vdx

vdx )

n 1

vdx

Avec g g ( x, t ) et les notations dans la section 2. Pour chaque tape,


cette quation est rsolue en utilisant les lments finis qui mne au
systme linaire suivant :
n

( dtA B )U n dtb BU n 1

La matrice de courbatures A et le ct droit b sont comme avant. La


matrice de masse B (voir 8) est le rsultat des limites u n vdx , i.e.,
B jk

T T

dx.

Pour la triangulation, affinez par morceaux les lments que nous


obtenons :

2 1 1

1 x2 x1 x3 x1

dx

det
1
2
1
T j k 24 y2 y1 y3 y1
1 1 2

L'annexe B montre le programme modifi de l'quation de la chaleur.


Lexemple numrique a t bas sur le domaine dans la figure1, cette
fois avec f 0 et u D 1 sur la frontire externe. La valeur sur le cercle
(intrieur) est toujours u D 0 . Sur les frontire de Neumann, nous
avons toujours f f ( x, t ) , La figure 4 montre la solution pendant
quatre fois diffrentes (T = 0:1, 0:2, 0:5 et T = 1). (T est la variable
dans la ligne 10 du programme principal.)
Le programme principal, list dans l'annexe B, est structur comme
suit (les lignes rfrence ont la mme numrotation dans l'annexe B) :
n

Lignes 3-11 : Chargement de la gomtrie et initialisation du maillage


Lignes 12-16 : Assemble la matrice de courbatures A dans une boucle en tous les
lments triangulaires.
Lignes 17-20 : Assemble la matrice de masse B dans une boucle en tous les lments
triangulaires. Lignes 21-22 : Dfinir l'tat initial du discret U.
Lignes 23-48 : Boucle (aux au-dessus) tapes de temps.
En particulier :
Ligne 25 : (Dgager) le vecteur du ct droit.
Lignes 26-31 : Incorporation de la force de volume l'tape de temps n.
Lignes 32-37 : Incorporation de la condition de Neumann l'tape de temps n.
Lignes 38-39 : Incorporation de la solution l'tape prcdente de temps n -1.
Lignes 40-43 : Incorporation de la condition de Dirichlet l'tape de temps n.
Lignes
44-47
: Solution du systme
Par
: GRARI
et KORIKACHE
14/30linaire rduit pour la solution l'tape de temps
n.
Lignes 49-50 : Reprsentation graphique de la solution numrique ltape temps final

EDP mixte : Implmentation des lments finis en Matlab

L'annexe B montre le programme modifi de l'quation de la chaleur.


Lexemple numrique a t bas sur le domaine dans la figure1, cette
fois avec f 0 et u D 1 sur la frontire externe. La valeur sur le cercle
(intrieur) est toujours u D 0 . Sur la frontire de Neumann, nous avons
toujours g 0 .

Par : GRARI et KORIKACHE

15/30

EDP mixte : Implmentation des lments finis en Matlab

10.
Un problme non-linaire
Comme application simple du problme variationnel non convexe,
nous considrons l'quation de Ginzburg-Landau
u u 3 u dans , u 0 sur

Pour
1
100

J (u , v ) :

u.vdx (u u

,
(15)
cest
la
formulation faible, i.e.,

(14)

)vdx 0

v H 01 ()

On peut considrer galement la condition ncessaire pour minimiser


le problme variationnel
2
1
2

u u 2 1 dx!
2
4

min

(16)

Nous visons rsoudre (15) avec la mthode de Newton-Raphson's.


Commenant par un certain u 0 , dans chacun tape d'itration, nous
calculons u n u n1 H 01 () satisfaisant :
DJ (u n , v; u n u n 1 ) J (u n , v ),

Ou

DJ (u , v; )

v H 01 ()

v.dx (v 3vu

(17)

) dx.

(18)

Les intgrales dans J (U , V ) et DJ (U , V ; W ) sont de nouveau calculs


comme somme de tous les lments. Les intgrales locales rsultantes
peuvent tre calcules analytiquement et sont implments en
localj.m, respectivement localdj.m, comme donn dans
l'annexe C.
Le programme en Matlab a besoin encore de petites modifications,
montres dans l'annexe C. Essentiellement, on doit initialiser le
programme (avec un vecteur de dbut qui remplit la condition de
Par : GRARI et KORIKACHE

16/30

EDP mixte : Implmentation des lments finis en Matlab

frontire de Dirichlet (lignes 9 et 10)), pour ajouter une boucle (lignes


12 et 45), pour mettre jour la nouvelle approximation de newton
(ligne 41), et pour fournir un critre darrt en cas de convergence
(lignes 42-44).
On sait que les solutions ne sont pas uniques. En effet, pour tout
minimum local u, -u est galement un minimum et 0 rsout aussi le
problme. La fonction constante u 1 mne l'nergie nulle, mais
viole la continuit ou on a les conditions aux frontires.
Par consquent, on observe la frontire ou les couches internes qui
sparent de grandes rgions, o u est presque constant 1 .
Dans le problme en dimension finie, les diffrentes valeurs initiales
u 0 peut mener diffrentes approximations numriques.

Figure 5. Solution de lquation non-linaire

La figure 5 montre deux solutions possibles trouves pour deux


diffrentes valeurs aprs environ 20-30 itrations. La figure du ct
gauche est ralise en des valeurs comme tant choisies dans le
programme dans l'annexe C. Changer le rapport dans la ligne 9 dans
l'annexe C U = signe (coordonnes (:, 1)); montrer
la figure du ct droit.

Par : GRARI et KORIKACHE

17/30

EDP mixte : Implmentation des lments finis en Matlab

Le programme principal, donn dans l'annexe C, est structur comme


suit (les lignes rfrences sont selon la numrotation dans l'annexe
Lignes 3-7 : Chargement de la gomtrie et initialisation du maillage.
Lignes 8-10 : Rglage du vecteur dinitialisation U pour le procd de
l'itration, incorporant la condition de Dirichlet sur la solution.
Lignes 11-45 : Boucle pour l'itration de Newton-Raphson. Il finit aprs un
maximum de 50 itrations (dans la ligne 12) ou en cas de convergence (lignes 4244).
Lignes 13-18 : Assemblage de la matrice de la driv du fonctionnel J valu
l'tape courante d'itration U.
Lignes 19-24 : Assemblage du vecteur du fonctionnel J valu la courante tape
d'itration U.
Lignes 25-30 : Incorporation de la force de volume.
Lignes 31-35 : Incorporation de l'tat de Neumann.
Lignes 36-38 : Incorporation des conditions homognes de Dirichlet du vecteur de
mise jour W.
Lignes 39-40 : Solution du systme linaire rduit pour le vecteur de mise
jour W.
Ligne 41 : Mise jour U.
Lignes 42-44 : clatement de la boucle si le vecteur de mise jour W est
suffisamment petit (sa norme tant plus petite que 10 10 ).
Lignes 46-47 : La reprsentation graphique de la finale itration.

C) :

Par : GRARI et KORIKACHE

18/30

EDP mixte : Implmentation des lments finis en Matlab

11.
Problmes tridimensionnels :
Avec quelques modifications, le programme de Matlab pour des
problmes linaires en deux dimensions tudi dans les sections 5-8
peut tre prolong aux problmes trois dimensions. Ttradres sont
utiliss en tant qu'lments finis. Les fonctions de base sont
correspondantes celles dfinie en deux dimensions, par exemple,
pour un lment de ttradre T soient ( x , y , z )( j 1,......,4) les
sommets et les fonctions de base correspondantes, c.--d.,
j

j ( xk , y k , z k ) jk ,
j , k 1,.........,4.

Chacun des dossiers *.dat obtient une entre additionnelle par ligne.
Dans coordinates.dat, cest le zme-composant de chaque
nud P ( x , y , z )
Une entre typique dans elements3.dat se relit maintenant :
j k l m n,
j

Tel que k, l, m, n, sont les nombres de sommets P ,......., P du jme


lment.
elements4.dat n'est pas utilis pour des problmes trois
dimensions.
k

L'ordre des nuds est organis tels que le ct droit de


1

x
6 T det k
y
k
z
k

1
xl
yl

1
xm
ym

zl

zm

xn
yn

z n

est positif, La numrotation des lments dfinis dans neumann.dat


et dirichlet.dat est fait avec le visionnement positif
mathmatique d'orientation de l'extrieur W sur la surface.

Par : GRARI et KORIKACHE

19/30

EDP mixte : Implmentation des lments finis en Matlab

En utilisant le code de Matlab dans l'annexe A, l'annulation des lignes


5, 16-19 et 26-30 et substitution de 22-24, 33-34, 43 par les lignes
suivantes
b(elements3(j,:))=b(elements3(j,:))+...
donne un
det([1,1,1,1;coordinates(elements3(j,:),:)])*...
outil
f(sum(coordinates(elements3(j,:),:))/4)/24;
b(neumann(j,:))=b(neumann(j,:))+...
court et
norm(cross(coordinates(neumann(j,3),:)...
flexible
coordinates(neumann(j,1),:),coordinates(neumann(j,2),:)...
coordinates(neumann(j,1),:)))...
pour
*g(sum(coordinates(neumann(j,:),:))/3)/6;
showsurface([dirichlet;neumann],coordinates,full(u));
rsoudre
la
grandeur scalaire, problmes trois dimensions linaires :
La reprsentation graphique pour des problmes trois dimensions
peut tre faite par raccourcis version de show.mde la section 8.
functionshowsurface(surface,coordinates,u)
trisurf(surface,coordinates(:,1),coordinates(:,2),...
coordinates(:,3),u,facecolor,interp)
axisoff
view(160,30)

La distribution de la temprature d'un piston simplifi est prsente


sur le schma 6. Calcul
de la distribution de la temprature avec 3728 nuds et 15111
lments (y compris le rendement graphique) prend quelques minutes
sur un poste de travail.

Figure 6. La distribution de la temprature d'un piston

Par : GRARI et KORIKACHE

20/30

EDP mixte : Implmentation des lments finis en Matlab

Le programme principal, qui est numr dans l'annexe D, est

Lignes 3-9 : Chargement de la gomtrie et de l'initialisation de maille.


Lignes 11-14 : Assemble de la matrice de rigidit dans une boucle au-dessus
de tous les ttradres.
Lignes 16-20 : Incorporation de la force de volume dans une boucle au-dessus de
tous les ttradres.
Lignes 22-27 : Incorporation de l'tat de Neumann.
Lignes 29-31 : Incorporation de l'tat de Dirichlet.
Ligne 33 : Solution du systme linaire rduit.
Ligne 35 : Reprsentation graphique de la solution numrique.

structur comme suit (les lignes rfrences sont selon la numrotation


dans l'annexe D) :

Par : GRARI et KORIKACHE

21/30

EDP mixte : Implmentation des lments finis en Matlab

Annexe
A. Le code complet de Matlab pour le problme deux
dimensions de Laplace
Le programme suivant peut tre trouv dans le paquet, sous le chemin
acf/fem2d.
Il s'appelle fem2d.m. Les autres dossiers sous ce chemin sont les
fonctions fixes stima3.m, stima4.m, et show.m aussi bien que
les fichiers de fonctions et de donnes cela dcrivez la discrtisation et
les donnes du problme, savoir coordinates.dat,
elements3.dat,
elements4.dat,
dirichlet.dat,
neumann.dat, f.m, g.m, et u_d.m. Ces problmes-qui
dcrivent des dossiers doivent tre adapts par l'utilisateur pour
d'autres gomtries, discrtisations, et/ou donnes.

Par : GRARI et KORIKACHE

22/30

EDP mixte : Implmentation des lments finis en Matlab

1%deFEM2Ddemthoded'lmentfinibidimensionnellepourLaplacian.
2%d'initialisation
3chargecoordinates.dat;coordonnes(:,1)=[];
4eval('chargeelements3.dat;elements3(:,1)=[];','elements3=[];');
5eval('chargeelements4.dat;elements4(:,1)=[];','elements4=[];');
6eval('chargeneumann.dat;neumann(:,1)=[];','neumann=[];');
7chargedirichlet.dat;dirichlet(:,1)=[];
8FreeNodes=setdiff(1:taille(coordonnes,1),unique(dirichlet));
9A=clairsem(taille(coordonnes,1),taille(coordonnes,1));
10b=clairsem(taille(coordonnes,1),1);
11%d'Assemble
12pourj=1:taille(elements3,1)
13A(elements3(j:),elements3(j:))=A(elements3(j:),
14elements3(j:))+stima3(coordonnes(elements3(j:):));
extrmit15
16pourj=1:taille(elements4,1)
17A(elements4(j:),elements4(j:))=A(elements4(j:),
18elements4(j:))+stima4(coordonnes(elements4(j:):));
extrmit19
20%deforcesdevolume
21pourj=1:taille(elements3,1)
22b(elements3(j:))=b(elements3(j:))+
det23([1.1.1;coordonnes(elements3(j:):)'])*
24f(somme(coordonnes(elements3(j:):))/3)/6;
extrmit25
26pourj=1:taille(elements4,1)
27b(elements4(j:))=b(elements4(j:))+
det28([1.1.1;coordonnes(elements4(j,1:3):)'])*
29f(somme(coordonnes(elements4(j:):))/4)/4;
extrmit30
31%d'tatsdeNeumann
32pourj=1:taille(neumann,1)
33b(neumann(j:))=b(neumann(j:))+
norme34(coordonnes(neumann(j,1):)coordonnes(neumann(j,2):))*
g(somme(coordonnes(neumann(j:):))/2)/2;
extrmit35
36%d'tatsdeDirichlet
37u=clairsem(taille(coordonnes,1),1);
38u(uniques(dirichlet))=u_d(coordonnes(uniques(dirichlet):));
39b=bA*u;
40%decalculdelasolution
41u(FreeNodes)=A)(deFreeNodes,deFreeNodes\b(FreeNodes);
42%dereprsentationdegraphique
exposition43(elements3,elements4,coordonnes,pleines(u));

Par : GRARI et KORIKACHE

23/30

EDP mixte : Implmentation des lments finis en Matlab

B. Code de Matlab pour l'quation de la chaleur


Le programme suivant peut tre trouv dans le paquet, sous le chemin
acf/fem2d la chaleur. Il s'appelle fem2d heat.m. Les
autres dossiers sous ce chemin sont les fixes fonctions stima3.m et
show.m aussi bien que les fichiers de fonctions et de donnes qui
dcrivent la discrtisation et les donnes du problme, savoir
coordinates.dat,
elements3.dat,
dirichlet.dat,neumann.dat,f.m,g.m,et
u_d.m.Ces
problmes-qui dcrivent des dossiers doivent tre adapts par
l'utilisateur pour d'autres gomtries, discrtisations, et/ou donnes.

Par : GRARI et KORIKACHE

24/30

EDP mixte : Implmentation des lments finis en Matlab

1mthoded'lmentfinide%FEM2D_HEATpourl'quationbidimensionnelledela
chaleur.
2%Initialisation
3chargecoordinates.dat;coordonnes(:,1)=[];
4chargeelements3.dat;elements3(:,1)=[];
5eval('chargeneumann.dat;neumann(:,1)=[];','neumann=[];');
6chargedirichlet.dat;dirichlet(:,1)=[];
7FreeNodes=setdiff(1:taille(coordonnes,1),unique(dirichlet));
8A=clairsem(taille(coordonnes,1),taille(coordonnes,1));
9B=clairsem(taille(coordonnes,1),taille(coordonnes,1));
10T=1;dcollement=0.01;N=T/dt;
11U=zros(taille(coordonnes,1),N+1);
12%d'Assemble
13pourj=1:taille(elements3,1)
14A(elements3(j:),elements3(j:))=A(elements3(j:),
15elements3(j:))+stima3(coordonnes(elements3(j:):));
extrmit16
17pourj=1:taille(elements3,1)
18B(elements3(j:),elements3(j:))=B(elements3(j:),
19elements3(j:))+det([1.1.1;coordonnes(elements3(j:):)'])
*[2.1.1;1.2.1;1.1.2]/24;
extrmit20
21%d'tatinitial
22U(:,1)=zros(taille(coordonnes,1),1);
23%d'tapesdetemps
24pourn=2:N+1
25b=clairsem(taille(coordonnes,1),1);
26%deforcesdevolume
27pourj=1:taille(elements3,1)
28b(elements3(j:))=b(elements3(j:))+
det29([1.1.1;coordonnes(elements3(j:):)'])*
dt*f30(somme(coordonnes(elements3(j:):))/3,n*dt)/6;
extrmit31
32%d'tatsdeNeumann
33pourj=1:taille(neumann,1)
34b(neumann(j:))=b(neumann(j:))+
norme35(coordonnes(neumann(j,1):)coordonnes(neumann(j,2):))*
dt*g36(somme(coordonnes(neumann(j:):))/2,n*dt)/2;
extrmit37
38%detimestepprcdent
39b=b+B*U(:,n1);
40%d'tatsdeDirichlet
41u=clairsem(taille(coordonnes,1),1);
42u(uniques(dirichlet))=u_d(coordonnes(uniques(dirichlet):),n*dt);
43b=b(dcollement*A+B)*u;
44%decalculdelasolution
45u(FreeNodes)=(dt*A(FreeNodes,FreeNodes)+
46B(FreeNodes,FreeNodes))\b(FreeNodes);
47U(:,n)=u;
extrmit48
49%dereprsentationdegraphique
exposition50(elements3,[],coordonnes,compltement(U(:,N+1)));

Par : GRARI et KORIKACHE

25/30

EDP mixte : Implmentation des lments finis en Matlab

C. Code de Matlab pour le problme non-linaire


Le programme suivant peut tre trouv dans le paquet, sous le chemin
acf/fem2d
non-linaire.
Il
s'appelle
fem2d
nonlinear.m. Les autres dossiers sous ce chemin sont la fonction
fixe show.m aussi bien que les fichiers de fonctions et de donnes qui
dcrivent le fonctionnel J, son driv DJ, la discrtisation et les
donnes du problme, savoir, localj.m, localdj.m,
coordinates.dat,
elements3.dat,dirichlet.dat,
f.m, et u_d.m. Ces problmes-qui dcrivent des dossiers
doivent tre adapts par l'utilisateur pour d'autres problmes,
gomtries, discrtisations, et/ou donnes non-linaires (y compris
ajouter probablement les dossiers appropris neumann.dat et
g.m).

Par : GRARI et KORIKACHE

26/30

EDP mixte : Implmentation des lments finis en Matlab

1%deFEM2D_NONLINEARdemthoded'lmentfinipourbidimensionnel
%d'quationnonlinaire.
2%d'initialisation
3chargecoordinates.dat;coordonnes(:,1)=[];
4chargeelements3.dat;elements3(:,1)=[];
5eval('chargeneumann.dat;neumann(:,1)=[];','neumann=[];');
6chargedirichlet.dat;dirichlet(:,1)=[];
7FreeNodes=setdiff(1:taille(coordonnes,1),unique(dirichlet));
8%devaleurinitiale
9U=ceux(taille(coordonnes,1),1);
10U(uniques(dirichlet))=u_d(coordonnes(uniques(dirichlet):));
11%d'itrationdeNewtonRaphson
12pouri=1:50
13%d'AssembledeDJ(U)
14A=clairsem(taille(coordonnes,1),taille(coordonnes,1));
15pourj=1:taille(elements3,1)
16A(elements3(j:),elements3(j:))=A(elements3(j:),
elements3(j:))
17+localdj(coordonnes(elements3(j:):),U(elements3(j:)));
extrmit18
19%d'AssembledeJ(U)
20b=clairsem(taille(coordonnes,1),1);
21pourj=1:taille(elements3,1);
22b(elements3(j:))=b(elements3(j:))
23+localj(coordonnes(elements3(j:):),U(elements3(j:)));
24extrmits
25%deforcesdevolume
26pourj=1:taille(elements3,1)
27b(elements3(j:))=b(elements3(j:))+
det28([111;coordonnes(elements3(j:):)'])*
29f(somme(coordonnes(elements3(j:):))/3)/6;
extrmit30
31%d'tatsdeNeumann
32pourj=1:taille(neumann,1)
33b(neumann(j:))=b(neumann(j:))
norme(coordonnes(neumann(j,1):)
34coordonnes(neumann(j,2):))*
*g(somme(coordonnes(neumann(j:):))/2)/2;
extrmit35
36%d'tatsdeDirichlet
37W=zros(taille(coordonnes,1),1);
38W(uniques(dirichlet))=0;
39%rsolvantunetapedenewton
40W(FreeNodes)=A)(deFreeNodes,deFreeNodes\b(FreeNodes);
41U=UW;
42sinorme(W)<10(10)
coupure43
extrmit44
extrmit45
46%dereprsentationdegraphique
exposition47(elements3,[],coordonnes,pleines(U));
fonctionb=localj(sommets,U)
Eps=1/100;

Par : GRARI et KORIKACHE

27/30

EDP mixte : Implmentation des lments finis en Matlab


G=[ceux(1.3);]desommets'\[zros(1.2);oeil(2)];
Secteur=det([ceux(1.3);)desommets']/2;
b=Area*((Eps*G*G'[2.1.1;1.2.1;1.1.2]/12)*U+
[4*U(1)3+U(2)3+U(3)3+3*U(1)2*(U(2)+U(3))+2*U(1)
*(U(2)2+U(3)2)*Ude+U(2)(3)*(U(2)+U(3))1)*Udu*Ude+2*U((2)(3);
4*U(2)3+U(1)3+U(3)3+3*U(2)2*(U(1)+U(3))+2*U(2)
*(U(1)2+U(3)2)1)*Ude+U((3)*(U(1)+U(3))1)*Udu*Ude+2*U((2)(3);
4*U(3)3+U(2)3+U(1)3+3*U(3)2*(U(2)+U(1))+2*U(3)
*(U(2)2+U(1)2)*Ude+U(2)(1)*(U(2)+U(1))1)*Udu*Ude+2*U((2)(3)]/60);
fonctionM=localdj(sommets,U)
Eps=1/100;
G=[ceux(1.3);]desommets'\[zros(1.2);oeil(2)];
Secteur=det([ceux(1.3);)desommets']/2;
M=Area*(Eps*G*G'[2.1.1;1.2.1;1.1.2]/12+
[12*U(1)2+2**U(d'U(2)2+U(3)2+U(2)(3))+6*U(1)*(U(2)+U(3)),
*Ude3*(U(1)2+U(2)2)+U(3)2+4*U(1)(2)+2*U(3)*(U(1)+U(2)),
*Ude3*(U(1)2+U(3)2)+U(2)2+4*U(1)(3)+2*U(2)*(U(1)+U(3));
*Ude3*(U(1)2+U(2)2)+U(3)2+4*U(1)(2)+2*U(3)*(U(1)+U(2)),
12*U(2)2+2**U(d'U(1)2+U(3)2+U(1)(3))+6*U(2)*(U(1)+U(3)),
*Ude3*(U(2)2+U(3)2)+U(1)2+4*U(2)(3)+2*U(1)*(U(2)+U(3));
*Ude3*(U(1)2+U(3)2)+U(2)2+4*U(1)(3)+2*U(2)*(U(1)+U(3)),
*Ude3*(U(1)2+U(3)2)+U(2)2+4*U(1)(3)+2*U(2)*(U(1)+U(3)),
*Ude3*(U(2)2+U(3)2)+U(1)2+4*U(2)(3)+2*U(1)*(U(2)+U(3)),
12*U(3)2+2**U(d'U(1)2+U(2)2+U(1)(2))+6*U(3)*(U(1)+U(2))]/60);

Par : GRARI et KORIKACHE

28/30

EDP mixte : Implmentation des lments finis en Matlab

D. Code de Matlab pour le problme trois dimensions


Le programme suivant peut tre trouv dans le paquet, sous le chemin
acf/fem3d. Il s'appelle fem3d.m. Les autres dossiers sous ce
chemin sont les fonctions fixes stima3.m, et showsurface.m
aussi bien que les fichiers de fonctions et de donnes qui dcrivent la
discrtisation et les donnes du problme, savoir
coordinates.dat, elements3.dat, dirichlet.dat,
neumann.dat, f.m, g.m, et u_d.m. Ces problmes-qui
dcrivent des dossiers doivent tre adapts par l'utilisateur pour
d'autres gomtries, discrtisations, et/ou donnes.
1%deFEM3Ddemthoded'lmentfinitridimensionnellepourLaplacian.
2%d'initialisation
3chargecoordinates.dat;coordonnes(:,1)=[];
4chargeelements3.dat;elements3(:,1)=[];
5eval('chargeneumann.dat;neumann(:,1)=[];','neumann=[];');
6chargedirichlet.dat;dirichlet(:,1)=[];
7FreeNodes=setdiff(1:taille(coordonnes,1),unique(dirichlet));
8A=clairsem(taille(coordonnes,1),taille(coordonnes,1));
9b=clairsem(taille(coordonnes,1),1);
10%d'Assemble
11pourj=1:taille(elements3,1)
12A(elements3(j:),elements3(j:))=A(elements3(j:),
13elements3(j:))+stima3(coordonnes(elements3(j:):));
extrmit14
15%deforcesdevolume
16pourj=1:taille(elements3,1)
17b(elements3(j:))=b(elements3(j:))+
det18([1.1.1.1;coordonne(elements3(j:):)'])
19*f(somme(coordonnes(elements3(j:):))/4)/24;
extrmit20
21%d'tatsdeNeumann
22pourj=1:taille(neumann,1)
23b(neumann(j:))=b(neumann(j:))+
24normes(croix(coordonnes(neumann(j,3):)
coordonnes(neumann(j,1):),
25coordonnes(neumann(j,2):)coordonnes(neumann(j,1):)))
26*g(somme(coordonnes(neumann(j:):))/3)/6;
extrmit27
28%d'tatsdeDirichlet
29u=clairsem(taille(coordonnes,1),1);
30u(uniques(dirichlet))=u_d(coordonnes(uniques(dirichlet):));
31b=bA*u;
32%decalculdelasolution
33u(FreeNodes)=A)(deFreeNodes,deFreeNodes\b(FreeNodes);
34%dereprsentationdegraphique
showsurface35([dirichlet;neumann],coordonnes,pleines(u));

Par : GRARI et KORIKACHE

29/30

EDP mixte : Implmentation des lments finis en Matlab

Rfrences :
[1] S.C. Brenner et L.R. Scott, La thorie mathmatique de mthodes
d'lment fini, Textes dans Mathmatiques appliques, vol. 15
(Springer, New York, 1994).
[2] P.G. Ciarlet, La mthode d'lment fini pour des problmes
elliptiques (la Nord-Hollande, Amsterdam, 1978).
[3] L. Langemyr et autres., Le guide d'quation de l'utilisateur partiel
de bote outils ( Math Works, Inc. 1995).
[4] H.R. Schwarz, Der Finiten Elemente de Methode (Teubner,
Stuttgart, 1991).

Par : GRARI et KORIKACHE

30/30