Implémentation des éléments finis en Matlab

publicité
Exposé en EDP mixte
Titre : Implémentation des éléments
finis en Matlab
Présenter par :
Mounir GRARI
Najlae KORIKACHE
1
Implémentation des éléments finis en Matlab
Plan
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Introduction
Le problème exact
Discrétisation de Galerkin du problème
Représentation des données de la triangulation
La matrice de rigidité
Assembler le côté droit de l’équation
États d’incorporation de Dirichlet
Calcul de la solution numérique
L'équation de la chaleur
Un problème non-linéaire
Problèmes tridimensionnels
Par : GRARI et KORIKACHE
2
Implémentation des éléments finis en Matlab
1. Introduction:
Une courte exécution de Matlab pour les éléments
finis P1-Q1, sur des triangles et des parallélogrammes, est
donnée pour la résolution numérique des problèmes
elliptiques avec des conditions aux frontières mixtes sur
des grilles non structurées.
Les programmes de Matlab, que nous proposons, utilisent
la méthode des éléments finis pour calculer une solution
numérique U qui rapproche la solution du problème
bidimensionnel u de Laplace (P) avec des conditions aux
frontières mixtes
Par : GRARI et KORIKACHE
3
Implémentation des éléments finis en Matlab
2. Le problème exact
Soit    un domaine ouvert bornée Lipschitzien, avec une
frontière polygonale  .
Sur un certain sous-ensemble fermé de la frontière D , nous
considérons des conditions de Dirichlet, alors que nous avons les
conditions de Neumann sur la partie restante : N   \ D
2
2
f

L
() , uD  H 1 () et g  L2 (N ) .
Soient
1
Cherchons u  H () avec :
(P)
 u  f Dans 
u  uD Sur D
(1)
(2)
Sur N
(3)
u
g
n
Par : GRARI et KORIKACHE
4
Implémentation des éléments finis en Matlab
2. Le problème exact
 u  f Dans 
u  u D Sur D
(1)
(2)
Sur N
(3)
u
g
n
D’après le théorème de Lax-Milgram, il existe toujours une
solution faible de (1)-(3) ce qui donne la régularité intérieure
2
() ), et on a des frontières lisses et aussi un changement
(i.e., u  H loc
de conditions à la frontière.
Les conditions non homogènes de Dirichlet (2) sont associées à
la décomposition :
v  u  uD donc v  0 sur D , i.e.,
v  H D1 ()  {   H 1 () /   0surD }
Par : GRARI et KORIKACHE
5
Implémentation des éléments finis en Matlab
2. Le problème exact (Pb variationnel)
Alors, la formulation faible (ou variationnel) du
problème (P) est de :
Rechercher
v  H D1 () tel
que :
1

v
.

wdx

f
.
wdx

g
.
wds


u
.

wdx
,
w

H
D ()



 D


Par : GRARI et KORIKACHE
N

(4)
6
Implémentation des éléments finis en Matlab
3. Discrétisation de Galerkin du problème
Pour l’implémentation, le problème (4) est discrétisé en utilisant
la méthode standard de Galerkin où H 1 () et H D1 () sont remplacés
1
S

S

H
par des sous-espaces de dimensions finis S et D
D,
respectivement,
Soit U D  S une approximation de u D sur D (On définit
U D comme étant un interpolant (relatif au nœud) de u D sur D ).
Donc la discrétisation de problème ( PS ) est de chercher V  S D tel que ;
 V .Wdx   fWdx   gWds   U


Par : GRARI et KORIKACHE
N

D
.Wdx,
W  SD
(5)
7
Implémentation des éléments finis en Matlab
3. Discrétisation de Galerkin du problème
Soit (1,........, N ) une base de l’espace S de dimension fini, et soit
(i ,........,i ) une base de S D où I  {i1 ,........., i M }  {1,........, N} est un
ensemble d'index de cardinale M  N  2 .
L’équation (5) est équivalente à :
1
M
 V . dx   f dx   g ds   U
j
j


j
N
D
. j dx, j  I
(6)

N
En outre soit,
V   xkk et U D  U k k
k I
k 1
.
Donc, l’équation (6) donne le système linéaire des équations :
Ax  b
Par : GRARI et KORIKACHE
(7)
8
Implémentation des éléments finis en Matlab
3. Discrétisation de Galerkin du problème
Les coefficients de la matrice A  ( A jk ) j ,kI
b  (b j ) jI  M sont définit par :
2
  M M et
le coté droit
N
Ajk    j .k dx et b j   f j dx   g j ds  U k   j .k dx


k 1
N
(8)

La matrice A est creuse, symétrique, définie positif, donc, le
système (7) a exactement une solution x  M ce qui détermine la
solution de Galerkin
N
U  U D V   U j j   xk k
j 1
Par : GRARI et KORIKACHE
kI
9
Implémentation des éléments finis en Matlab
4. Représentation des données de la triangulation
Supposant que le domaine  a une frontière polygonale  , nous
pouvons recouvrir  par une triangulation régulière T formée de
triangles et de quadrilatères, i.e.,    tT t où chaque t est un triangle
fermé ou un quadrilatère fermé.
Figure 1. Exemple de maillage
Par : GRARI et KORIKACHE
10
Implémentation des éléments finis en Matlab
4. Représentation des données de la triangulation
coordinates.dat contient les coordonnées de chaque nœud de
maillage donné.Chaque ligne est de la forme :
node# x-coord y-coord
Notre subdivision  est formée de triangles et de
quadrilatères.
Dans les deux cas, les nœuds sont numérotés dans le sens
contraire des aiguilles d'une montre.
Par : GRARI et KORIKACHE
11
Implémentation des éléments finis en Matlab
4. Représentation des données de la triangulation
Pour les triangles ; elements3.dat contient pour chacun
triangle le nombre de nœuds (sommets). Chaque ligne est de la
forme :
element# node1 node2 node3.
De même, les données pour les quadrilatères sont
données dans elements4.dat. Ici, nous employons le format :
element# node1 node2 node3 node4.
elements3.dat
1 2 3 13
2 3 4 13
3 4 5 15
4 5 6 15
Par : GRARI et KORIKACHE
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
12
Implémentation des éléments finis en Matlab
4. Représentation des données de la triangulation
Les deux fichiers Neumann.dat et Dirichlet.dat contiennent dans
chaque ligne les deux nombres de nœuds attacher au bord de la
frontière :
Neumann edge# node1 node2 resp.,
Dirichlet edge # node1 node2.
dirichlet.dat
neumann.dat
1
5
6
1
3
4
2
6
7
2
4
5
3
1
2
3
7
8
4
2
3
4
8
9
5
9
10
6
10
11
7
11
12
8
12
1
Par : GRARI et KORIKACHE
13
Implémentation des éléments finis en Matlab
4. Représentation des données de la triangulation
Figue2 : Fonctions chapeaux
Dans la figure2, deux fonctions chapeaux typiques j définies pour
chaque nœud ( x j , y j ) du maillage par :
 j ( xk , yk )   jk
Par : GRARI et KORIKACHE
,
j, k  1,......., N .
14
Implémentation des éléments finis en Matlab
4. Représentation des données de la triangulation
Le sous espace S D  S est l’espace des splines engendré par tout les
 j pour tout ( x j , y j ) qui ne se sont pas sur D . D’autre part U D est
définit comme étant un interpolant nodal de u D , dans S .
Avec ces espaces S et S D et leurs bases correspondantes, les intégrales
dans la relation (8) peuvent être calculé comme somme de tous les
éléments et aussi somme de tous les bords de l’arc N ,
c-à-d.,
Ajk     j .k dx
(9)
tT t
b j    f j dx 
tT t
Par : GRARI et KORIKACHE
N
  g ds  U     dx
E  N E
j
k 1
k
tT t
j
k
(10)
15
Implémentation des éléments finis en Matlab
5. Assembler la matrice de rigidité
La matrice locale de rigidité est déterminée par les coordonnées
des sommets de l'élément correspondant, elle est calculé par les
fonctions stima3.m et stima4.m.
Pour un élément de la triangulation T, soient ( x1, y1 ) , ( x2 , y2 ) et ( x3 , y3 ) des
sommets et 1 , 2 et 3 les fonctions de base correspondantes dans S
,i.e.,
 j ( xk , yk )   jk
Par : GRARI et KORIKACHE
,
j, k  1,2,3.
16
Implémentation des éléments finis en Matlab
5. Assembler la matrice de rigidité
La réflexion d'un moment indique
1 x

 j ( x, y )  det 1 x j 1
1 x
j 2

1
 j ( x, y ) 
2T
D’où ;
Avec
T
1 x j
y 


y j 1  /det 1 x j 1
1 x
y j  2 
j 2

yj 

y j 1 
y j  2 
(11)
 y j 1  y j 2 


x  x 
j 1 
 j 2
est donné par :
 x2  x1 x3  x1 

2 T  det 
 y2  y1 y3  y1 
Par : GRARI et KORIKACHE
17
Implémentation des éléments finis en Matlab
Assembler la matrice de rigidité
L'entrée résultante de la matrice de rigidité est :
 yk 1  yk 2 
T




M jk    j ( k )t dx 
y

y
,
x

x
j 1
j 2
j 2
j 1
2


(
2
T
)
t
x

x
 k 2 k 1 
Avec l’index modulo 3. Ceci est écrit simultanément pour tous les
index :
t
M  .GGt
2
Avec,
1

G   x1
y
 1
Par : GRARI et KORIKACHE
1
x2
y2
1

x3 
y3 
1
0 0


1 0
0 1


18
Implémentation des éléments finis en Matlab
Assembler la matrice de rigidité
Puisque nous obtenons les formules semblables pour trois dimensions,
le programme en Matlab est simultanément 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 élément quadrilatéral T soient ( x1, y1 ),........, ( x4 , y4 ) les sommets
avec les fonctions chapeau correspondantes 1,.......,4 .puisque T est un
parallélogramme, il y a un quadrillage
 x2  x1 x4  x1     x1 
x
     ,
   T ( ,  )  
 y
 y2  y1 y4  y1     y1 
Par : GRARI et KORIKACHE
19
Implémentation des éléments finis en Matlab
Assembler la matrice de rigidité
Pour les éléments
de la forme :
[0,1]2 sur
T. puis  j ( x, y)   j (T1 ( x, y)) avec les fonctions
1 ( , ) : (1   )(1   ), 2 ( , ) :  (1   ),
3 ( ,  ) :  ,
4 ( , ) : (1   ) .
De la loi de substitution il suit pour les intégrales (9) :
M jk    j ( x, y). k ( x, y)d ( x, y)
T
M jk  
1
1
T

(



)(

(

,

))(

(



))(

(

,

))
det DT d ( ,  )
T
k
T
2
0,1
M jk  det DT 
T
1
T


(

,

)((
D

)
D

)
(


(

,

))
d ( ,  )
j
T
T
k
2
0,1
Par : GRARI et KORIKACHE
20
Implémentation des éléments finis en Matlab
Assembler la matrice de rigidité
On résout ces intégrales à partir de la matrice locale de courbatures,
pour un élément de quadrilatère on aura :
 2a  c
 3b  (a  c)
a  2c 
 3b  2(a  c)



2
a

c

3
b

2
(
a

c
)
a

2
c
3
b

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
Avec Matlab,
a
(( DT )T DT ) 1 
b
b

c
function M = 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) * [C1 C2; C2 C1] / 6;
Par : GRARI et KORIKACHE
21
Implémentation des éléments finis en Matlab
Assembler le côté droit de l’équation
Les forces de volume sont employées pour assembler le côté droit.
Utilisons la valeur de f au centre de gravité ( xS , yS ) de T l'intégrale
 f  j dx en (10) est approximée par :
T

T
 x2  x1 x3  x1 
1
 f ( xS , yS )
f  j dx  det 
kT
 y2  y1 y3  y1 
Tel que kT  6 si T est un triangle et
parallélogramme.
Par : GRARI et KORIKACHE
kT  4
si
T est un
22
Implémentation des éléments finis en Matlab
Assembler le côté droit de l’équation
% Volume Forces
for j = 1:size(elements3,1)
b(elements3(j,:)) = b(elements3(j,:)) + ...
det([1 1 1; coordinates(elements3(j,:),:)’]) * ...
f(sum(coordinates(elements3(j,:),:))/3)/6;
end
for j = 1:size(elements4,1)
b(elements4(j,:)) = b(elements4(j,:)) + ...
det([1 1 1; coordinates(elements4(j,1:3),:)’]) * ...
f(sum(coordinates(elements4(j,:),:))/4)/4;
end
Les valeurs de f sont données à partir de la fonction f.m qui
dépend du problème. La fonction est définit par les coordonnées des
points qui se trouve dans Ω et elle renvoie la force de volume a ces
endroits. Pour l’exemple numérique représenté sur le schéma 3 nous
avons employé :
function VolumeForce = f(x);
VolumeForce = ones(size(x,1),1);
Par : GRARI et KORIKACHE
23
Implémentation des éléments finis en Matlab
Assembler le côté droit de l’équation
De même, les conditions de Neumann contribuent au coté droit. En
utilisant la valeur de g au centre ( xM , yM ) de E avec la longueur E ,
l’intégrale  g j ds dans (10) est approché par :
E
 g ds 
j
E
E
2
g ( xM , y M ).
Sur Matlab ;
% Neumann conditions
for j = 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
Par : GRARI et KORIKACHE
24
Implémentation des éléments finis en Matlab
Assembler le côté droit de l’équation
Ici, nous employons le fait que dans Matlab la taille d’une
matrice vide est placée par zéro et qu'une boucle de 1 à 0 est
totalement omis. De cette façon, la question de l'existence des
données de frontière de Neumann doit être renoncée.
Les valeurs de g sont donnés par la fonction g.m qui dépend
encore du problème. La fonction est définit avec les
coordonnées des points sur  et retours les efforts
correspondants.
Pour l'exemple numérique g.m était
N
function Stress = g(x)
Stress = zeros(size(x,1),1);
Par : GRARI et KORIKACHE
25
Implémentation des éléments finis en Matlab
États d’incorporation de Dirichlet
Avec une numérotation appropriée des nœuds, le système des
équations linéaires résultant de la construction décrite dans la section
précédente sans incorporer des états de Dirichlet peut être écrit comme
suit :
 A11 A12  U   b 
 T
 A A .U    b  ,
 12 2é   D   D 
(12)
Avec, U  M , U D   N M .
Ici, U sont les valeurs aux nœuds libres qui sont à déterminer, U D sont
les valeurs aux nœuds qui sont sur la frontière de Dirichlet ainsi sont
connus a priori.
Par : GRARI et KORIKACHE
26
Implémentation des éléments finis en Matlab
États d’incorporation de Dirichlet
Par conséquent, le premier bloc d'équations peut être récrit :
A11.U  b  A12.U D
C'est la formulation de (6) avec U D  0 aux nœuds de non-Dirichlet.
Dans le deuxième bloc d'équations dans (12) l'inconnu est bD mais
puisqu'il n'a pas d’intérêt, il est omis dans le suivant.
% Dirichlet conditions
u = sparse(size(coordinates,1),1);
u(unique(dirichlet)) = u_d(coordinates(unique(dirichlet),:));
b = b - A * u;
Par : GRARI et KORIKACHE
27
Implémentation des éléments finis en Matlab
États d’incorporation de Dirichlet
Les valeurs u D aux nœuds sur D sont données par la fonction u.d.m
qui dépend du problème. La fonction est appelée par les coordonnées
aux points sur D et retourne les valeurs aux endroits correspondants.
Pour l'exemple numérique u.d.m était :
function DirichletBoundaryValue = u_d(x)
DirichletBoundaryValue = zeros(size(x,1),1);
Par : GRARI et KORIKACHE
28
Implémentation des éléments finis en Matlab
Calcul de la solution numérique
Les lignes de (7) correspondant à la première M ligne de la
forme (12) qui réduit le système des équations avec une matrice
définie symétrique et positive de coefficient A11 .
Il est obtenu du système original des équations en prenant les lignes et
les colonnes et on les fait correspondant les nœuds libres du
problème. La restriction peut être réalisée dans Matlab à travers
l’indexation appropriée.
Le système des équations est résolu par l'opérateur binaire (installé
dans Matlab) qui donne l'inverse gauche d'une matrice.
FreeNodes=setdiff(1:size(coordinates,1),unique(dirichlet));
u(FreeNodes)=A(FreeNodes,FreeNodes)\b(FreeNodes);
Matlab se sert des propriétés d'une matrice définie positive,
symétrique pour résoudre le système des équations efficacement.
Par : GRARI et KORIKACHE
29
Implémentation des éléments finis en Matlab
Calcul de la solution numérique
Une représentation graphique de la solution est donnée par la fonction
show.m.
function show(elements3,elements4,coordinates,u)
trisurf(elements3,coordinates(:,1),coordinates(:,2),u’,...
’facecolor’,’interp’)
hold on
trisurf(elements4,coordinates(:,1),coordinates(:,2),u’,...
’facecolor’,’interp’)
hold off
view(10,40);
title(’Solution of the Problem’)
Par : GRARI et KORIKACHE
30
Implémentation des éléments finis en Matlab
Calcul de la solution numérique
Dans Matlab trisurf(ELEMENTS,X,Y,U) est utilisée pour
dessiner des triangulations pour les éléments de types égaux. Chaque
ligne de la matrice ELEMENTS détermine un polygone où les x-, y-, et
z- coordonnées de chaque sommet de ce polygone est donnée par la
correspondance avec X, Y et U respectivement.
La couleur des polygones est donnée par des valeurs de U. Les
paramètres additionnels, 'facecolor', 'interp', mènent à une
coloration interpolée.
La figure 3 illustre la solution pour le maillage définie dans la section
4 et les fichiers de données f.m, g.m, et u_d.m donnés dans les
sections 6 et 7 .
Par : GRARI et KORIKACHE
31
Implémentation des éléments finis en Matlab
Calcul de la solution numérique
Figure 3. Solution du problème de Laplace
Par : GRARI et KORIKACHE
32
Implémentation des éléments finis en Matlab
Calcul de la solution numérique
La récapitulation sectionne 4-8, le programme principal, qui est
énuméré dans l'annexe A, est structuré comme suit (les lignes
références sont selon la numérotation dans l'annexe A) :







Lignes 3-10: Chargement de la géométrie et initialisation du maillage.
Lignes 11-19: Assemblée la matrice de rigidité dans deux boucles, d'abord aux
éléments des triangulaires, puis aux éléments des quadrilatères.
Lignes 20-30: Incorporation de la force de volume dans deux boucles, d'abord aux
éléments des triangulaires, puis aux éléments des quadrilatères.
Lignes 31-35: Incorporation de l'état de Neumann.
Lignes 36-39: Incorporation de l'état de Dirichlet.
Lignes 40-41: Solution du système linéaire réduit.
Lignes 42-43: Représentation graphique de la solution numérique.
Par : GRARI et KORIKACHE
33
Implémentation des éléments finis en Matlab
L'équation de la chaleur
Pour des méthodes numériques de l'équation de la chaleur,
u
t
 u  f
sur
  0, T 
Avec un procédé implicite à temps d'Euler, nous avons devisé
l'intervalle de temps [0, T] en N sous-intervalles de taille dt  T N qui
mène à l'équation :
(id  dt)un  dtf n  un1 ,
où
f n  f ( x, t n ) et u n est
Par : GRARI et KORIKACHE
l'approximation discrète de
(13)
u
au temps
tn  n
34
Implémentation des éléments finis en Matlab
L'équation de la chaleur
La forme faible de (13) est :
 u vdx  dt  u .vdx  dt ( f vdx   g vdx)   u
n

n

n

n

vdx
n1

Avec g n  g ( x, tn ) et les notations dans la section 2. Pour chaque étape,
cette équation est résolue en utilisant les éléments finis qui mène au
système linéaire suivant :
(dtA  B)U n  dtb  BU n1
La matrice de rigidité A et le côté droit b sont comme avant.
Par : GRARI et KORIKACHE
35
Implémentation des éléments finis en Matlab
L'équation de la chaleur
La matrice de masse B (voir 8) est le résultat des limites  un vdx , i.e.,

B jk    jk dx.
T T
Pour la triangulation, affinez par morceaux les éléments que nous
obtenons :
2 1 1

 x2  x1 x3  x1 
1
T  j k dx  24 det  y2  y1 y3  y1  1 2 1 
1 1 2


L'annexe B montre le programme modifié de l'équation de la chaleur.
Par : GRARI et KORIKACHE
36
Implémentation des éléments finis en Matlab
L'équation de la chaleur
L’exemple numérique a été basé sur le domaine dans la figure1, cette
fois avec f  0 et u D  1sur la frontière externe. La valeur sur le cercle
(intérieur) est toujours u D  0 . Sur les frontière de Neumann, nous
avons toujours f n  f ( x, tn ) , La figure 4 montre la solution pendant
quatre fois différentes (T = 0:1, 0:2, 0:5 et T = 1). (T est la variable
dans la ligne 10 du programme principal.)
Par : GRARI et KORIKACHE
37
Implémentation des éléments finis en Matlab
L'équation de la chaleur
Le programme principal, listé dans l'annexe B, est structuré comme
suit (les lignes référence ont la même numérotation dans l'annexe B) :
 Lignes 3-11 : Chargement de la géométrie et initialisation du maillage
 Lignes 12-16 : Assemblée la matrice de courbatures A dans une boucle en tous les éléments triangulaires.
 Lignes 17-20 : Assemblée la matrice de masse B dans une boucle en tous les éléments triangulaires. Lignes 21-22 :
Définir l'état initial du discret U.
 Lignes 23-48 : Boucle (aux au-dessus) étapes de temps.
 En particulier :
 Ligne 25 : (Dégager) le vecteur du côté 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 précédente de temps n -1.
 Lignes 40-43 : Incorporation de la condition de Dirichlet à l'étape de temps n.
 Lignes 44-47 : Solution du système linéaire réduit pour la solution à l'étape de temps n.
 Lignes 49-50 : Représentation graphique de la solution numérique à l’étape temps final
L'annexe B montre le programme modifié de l'équation de la chaleur.
L’exemple numérique a été basé sur le domaine dans la figure1, cette
fois avec et sur la frontière externe. La valeur sur le cercle (intérieur)
est toujours . Sur la frontière de Neumann, nous avons toujours .
Par : GRARI et KORIKACHE
38
Implémentation des éléments finis en Matlab
L'équation de la chaleur
Par : GRARI et KORIKACHE
39
Implémentation des éléments finis en Matlab
Un problème non-linéaire
Comme application simple du problème variationnel non convexe,
nous considérons l'équation de Ginzburg-Landau
u  u 3  u dans  , u  0 sur 
(14)
Pour   1100
C’est la formulation faible, i.e.,
J (u, v) :  u.vdx   (u  u 3 )vdx  0

Par : GRARI et KORIKACHE
v  H 01 ()
(15)

40
Implémentation des éléments finis en Matlab
Un problème non-linéaire
On peut considérer également la condition nécessaire pour minimiser
le problème variationnel
2
1
2

min   u  u 2  1 dx!
2
4




(16)
Nous visons à résoudre (15) avec la méthode de Newton-Raphson's.
Commençant par un certain u 0 , dans chacun étape d'itération, nous
calculons u n  u n1  H 01 () satisfaisant :
v  H 01 ()
(17)
DJ (u, v;  )   v.dx   (v  3vu2 )dx.
(18)
DJ (u n , v; u n  u n1 )  J (u n , v),
où

Par : GRARI et KORIKACHE

41
Implémentation des éléments finis en Matlab
Un problème non-linéaire
Les intégrales dans J (U , V ) et DJ (U , V ;W ) sont de nouveau calculés
comme somme de tous les éléments.
Les intégrales locales résultantes peuvent être calculées
analytiquement et sont implémentés en localj.m, localdj.m,
respectivement, comme donné dans l'annexe C.
Le programme en Matlab a besoin encore de petites modifications,
montrées dans l'annexe C. Essentiellement, on doit initialiser le
programme (avec un vecteur de début qui remplit la condition de
frontière 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 critère d’arrêt en cas de convergence
(lignes 42-44).
Par : GRARI et KORIKACHE
42
Implémentation des éléments finis en Matlab
Un problème non-linéaire
On sait que les solutions ne sont pas uniques. En effet, pour tout
minimum local u, -u est également un minimum et 0 résout aussi le
problème. La fonction constante u  1 mène à l'énergie nulle, mais
viole la continuité ou on a les conditions aux frontières.
Par conséquent, on observe la frontière ou les couches internes qui
séparent de grandes régions, où u est presque constant  1 .
Dans le problème en dimension finie, les différentes valeurs initiales
u 0 peut mener à différentes approximations numériques.
Par : GRARI et KORIKACHE
43
Implémentation des éléments finis en Matlab
Un problème non-linéaire
La figure 5 montre deux solutions possibles trouvées pour deux
différentes valeurs après environ 20-30 itérations.
La figure du côté gauche est réalisée 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 (coordonnées (:,
1)); montrer à la figure du côté droit.
Figure 5. Solution de l’équation non-linéaire
Par : GRARI et KORIKACHE
44
Implémentation des éléments finis en Matlab
Un problème non-linéaire
Le programme principal, donné dans l'annexe C, est structuré comme
suit (les lignes références sont selon la numérotation dans l'annexe C)
 Lignes 3-7 : Chargement de la géométrie et initialisation du maillage.
 Lignes 8-10 : Réglage du vecteur d’initialisation U pour le procédé de l'itération,
incorporant la condition de Dirichlet sur la solution.
 Lignes 11-45 : Boucle pour l'itération de Newton-Raphson. Il finit après un maximum de
50 itérations (dans la ligne 12) ou en cas de convergence (lignes 42-44).
 Lignes 13-18 : Assemblage de la matrice de la dérivé du fonctionnel J évalué à l'étape
courante d'itération U.
 Lignes 19-24 : Assemblage du vecteur du fonctionnel J évalué à la courante étape
d'itération 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 homogènes de Dirichlet du vecteur de mise à
jour W.
 Lignes 39-40 : Solution du système linéaire réduit 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 représentation graphique de la finale itération.
Par : GRARI et KORIKACHE
45
Implémentation des éléments finis en Matlab
Problèmes tridimensionnels
Avec quelques modifications, le programme de Matlab pour des
problèmes linéaires en deux dimensions étudié dans les sections 5-8
peut être prolongé aux problèmes à trois dimensions. Tétraèdres sont
utilisés en tant qu'éléments finis. Les fonctions de base sont
correspondantes à celles définie en deux dimensions, par exemple,
pour un élément de tétraèdre T soient ( x j , y j , z j )( j  1,......,4) les sommets
et  j les fonctions de base correspondantes,
C.-à-d.,
 j ( xk , yk , zk )   jk ,
Par : GRARI et KORIKACHE
j, k  1,.........,4.
46
Implémentation des éléments finis en Matlab
Problèmes tridimensionnels
Chacun des dossiers *.dat obtient une entrée additionnelle par ligne.
Dans coordinates.dat, c’est le z éme-composant de chaque
nœud Pj  ( x j , y j , z j )
Une entrée typique dans elements3.dat se relit maintenant :
j k l m n,
Tel que k, l, m, n, sont les nombres de sommets Pk ,......., Pn du jéme
élément.
elements4.dat n'est pas utilisé pour des problèmes à trois
dimensions.
Par : GRARI et KORIKACHE
47
Implémentation des éléments finis en Matlab
Problèmes tridimensionnels
L'ordre des nœuds est organisé tels que le côté droit de
1

 xk
6 T  det 
yk

z
 k
1
xl
yl
zl
1
xm
ym
zm
1

xn 
yn 

z n 
est positif, La numérotation des éléments définis dans neumann.dat
et dirichlet.dat est fait avec le visionnement positif
mathématique d'orientation de l'extérieur W sur la surface.
Par : GRARI et KORIKACHE
48
Implémentation des éléments finis en Matlab
Problèmes tridimensionnels
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 donne un outil court et flexible pour résoudre la grandeur
scalaire, problèmes à trois dimensions linéaires :
b(elements3(j,:)) = b(elements3(j,:)) + ...
det([1,1,1,1;coordinates(elements3(j,:),:)’]) * ...
f(sum(coordinates(elements3(j,:),:))/4) / 24;
b(neumann(j,:)) = b(neumann(j,:)) + ...
norm(cross(coordinates(neumann(j,3),:) - ...
coordinates(neumann(j,1),:),coordinates(neumann(j,2),:) - ...
coordinates(neumann(j,1),:))) ...
* g(sum(coordinates(neumann(j,:),:))/3)/6;
showsurface([dirichlet;neumann],coordinates,full(u));
Par : GRARI et KORIKACHE
49
Implémentation des éléments finis en Matlab
Problèmes tridimensionnels
La représentation graphique pour des problèmes à trois dimensions
peut être faite par raccourcis version de show.m de la section 8.
function showsurface(surface,coordinates,u)
trisurf(surface,coordinates(:,1),coordinates(:,2),...
coordinates(:,3),u’, ’facecolor’,’interp’)
axis off
view(160,-30)
Par : GRARI et KORIKACHE
50
Implémentation des éléments finis en Matlab
Problèmes tridimensionnels
La distribution de la température d'un piston simplifié est présentée
sur le schéma 6. Calcul de la distribution de la température avec 3728
nœuds et 15111 éléments (y compris le rendement graphique) prend
quelques minutes sur un poste de travail.
Figure 6. La distribution de la température d'un piston
Par : GRARI et KORIKACHE
51
Implémentation des éléments finis en Matlab
Problèmes tridimensionnels
Le programme principal, qui est énuméré dans l'annexe D, est
structuré comme suit (les lignes références sont selon la numérotation
dans l'annexe D) :







Lignes 3-9 : Chargement de la géométrie et de l'initialisation de maille.
Lignes 11-14 : Assemblée de la matrice de rigidité
-dessus de tous les
tétraèdres.
Lignes 16-20 : Incorporation de la force de volume dans une boucle au-dessus de tous les
tétraèdres.
Lignes 22-27 : Incorporation de l'état de Neumann.
Lignes 29-31 : Incorporation de l'état de Dirichlet.
Ligne 33 : Solution du système linéaire réduit.
Ligne 35 : Représentation graphique de la solution numérique.
Par : GRARI et KORIKACHE
52
Merci 
Téléchargement