1 exposé en edp mixte titre : implémentation des éléments finis en matlab présenter par :...
TRANSCRIPT
1
Exposé en EDP mixte
Titre : Implémentation des éléments finis en Matlab
Présenter par :Mounir GRARINajlae KORIKACHE
2
Plan
1. Introduction 2. Le problème exact 3. Discrétisation de Galerkin du problème 4. Représentation des données de la triangulation 5. La matrice de rigidité6. Assembler le côté droit de l’équation7. États d’incorporation de Dirichlet8. Calcul de la solution numérique9. L'équation de la chaleur10. Un problème non-linéaire11. Problèmes tridimensionnels
Par : GRARI et KORIKACHE
Implémentation des éléments finis en Matlab
3
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
Implémentation des éléments finis en Matlab
Par : GRARI et KORIKACHE
1. Introduction:
4
2. Le problème exactImplémentation des éléments finis en Matlab
Soit 2 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
Soient )(2 Lf , )(1 HuD et )(2NLg .
Cherchons )(1 Hu avec : (P)
fu Dans (1)
Duu Sur D (2)
gn
u
Sur N (3)
Par : GRARI et KORIKACHE
5
2. Le problème exact Implémentation des éléments finis en Matlab
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 (i.e., )(2 locHu ), et on a des frontières lisses et aussi un changement de conditions à la frontière.
Les conditions non homogènes de Dirichlet (2) sont associées à la décomposition :
Duuv donc 0v sur D , i.e., )(1
DHv DsurH 0/)(1
fu Dans (1)
Duu Sur D (2)
gn
u
Sur N (3)
Par : GRARI et KORIKACHE
6
2. Le problème exact (Pb variationnel)Implémentation des éléments finis en Matlab
Alors, la formulation faible (ou variationnel) du problème (P) est de : Rechercher )(1 DHv tel que :
)(,.... 1
DD Hwwdxuwdsgwdxfwdxv
N
(4)
Par : GRARI et KORIKACHE
7
3. Discrétisation de Galerkin du problèmeImplémentation des éléments finis en Matlab
Pour l’implémentation, le problème (4) est discrétisé en utilisant
la méthode standard de Galerkin où )(1 H et )(1 DH sont remplacés
par des sous-espaces de dimensions finis S et 1DD HSS ,
respectivement, Soit SUD une approximation de Du sur D (On définit
DU comme étant un interpolant (relatif au nœud) de Du sur D ). Donc la discrétisation de problème )( SP est de chercher DSV tel que ;
,.. WdxUgWdsfWdxWdxV D
N
DSW (5)
Par : GRARI et KORIKACHE
8
3. Discrétisation de Galerkin du problèmeImplémentation des éléments finis en Matlab
Soit ),........,( 1 N une base de l’espace S de dimension fini, et soit
),........,(1 Mii une base de DS où N.,1,.......i,,.........iI M1 est un
ensemble d'index de cardinale 2NM . L’équation (5) est équivalente à :
En outre soit, Donc, l’équation (6) donne le système linéaire des équations :
,..
dxUdsgdxfdxV jDjjj
N
Ij (6)
Ik
kkxV et
N
kkkD UU
1
.
bAx (7)
Par : GRARI et KORIKACHE
9
Implémentation des éléments finis en Matlab
Les coefficients de la matrice MM
IkjjkAA
2,)( et le coté droit
MIjjbb )( sont définit par :
La matrice A est creuse, symétrique, définie positif, donc, le système (7) a exactement une solution Mx ce qui détermine la solution de Galerkin
dxA kjjk . et
N
kkjkjjj dxUdsgdxfb
N1
. (8)
Ik
kk
N
jjjD xUVUU
1
Par : GRARI et KORIKACHE
3. Discrétisation de Galerkin du problème
10
4. Représentation des données de la triangulation
Implémentation des éléments finis en Matlab
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., tTt où chaque t est un triangle fermé ou un quadrilatère fermé.
Figure 1. Exemple de maillage
Par : GRARI et KORIKACHE
11
Implémentation des éléments finis en Matlab
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
4. Représentation des données de la triangulation
12
Implémentation des éléments finis en Matlab
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
elements4.dat 1 1 2 13 12 2 12 13 14 11 3 13 4 15 14 4 11 14 9 10 5 14 15 8 9 6 15 6 7 8
Par : GRARI et KORIKACHE
4. Représentation des données de la triangulation
13
Implémentation des éléments finis en Matlab
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.
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
Par : GRARI et KORIKACHE
4. Représentation des données de la triangulation
14
Implémentation des éléments finis en Matlab
Dans la figure2, deux fonctions chapeaux typiques j définies pour chaque nœud ),( jj yx du maillage par :
jkkkj yx ),( , .,.......,1, Nkj
Par : GRARI et KORIKACHE
Figue2 : Fonctions chapeaux
4. Représentation des données de la triangulation
15
Implémentation des éléments finis en Matlab
Le sous espace SSD est l’espace des splines engendré par tout les
j pour tout ),( jj yx qui ne se sont pas sur D . D’autre part DU est
définit comme étant un interpolant nodal de Du , dans S . Avec ces espaces S et DS 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.,
Tt t
kjjk dxA . (9)
Tt t
kj
N
kk
E E
jTt t
jj dxUdsgdxfbN
1
(10)
Par : GRARI et KORIKACHE
4. Représentation des données de la triangulation
16
5. Assembler la matrice de rigidité
Implémentation des éléments finis en Matlab
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 ),( 11 yx , ),( 22 yx et ),( 33 yx des sommets et 1 , 2 et 3 les fonctions de base correspondantes dans S ,i.e.,
jkkkj yx ),( , .3,2,1, kj
Par : GRARI et KORIKACHE
17
Implémentation des éléments finis en Matlab
La réflexion d'un moment indique
D’où ; Avec T est donné par :
22
11
22
11
1
1
1
det/
1
1
1
det),(
jj
jj
jj
jj
jjj
yx
yx
yx
yx
yx
yx
yx
(11)
12
21
2
1),(
jj
jj
j xx
yy
Tyx
12
12det2yy
xxT
13
13
yy
xx
Par : GRARI et KORIKACHE
5. Assembler la matrice de rigidité
18
Implémentation des éléments finis en Matlab
L'entrée résultante de la matrice de rigidité est :
Avec l’index modulo 3. Ceci est écrit simultanément pour tous les index :
Avec,
12
21
12212,
)2()(
kk
kk
jjjj
t
tkjjk
xx
yyxxyy
T
TdxM
tGGt
M .2
1
0
0
0
1
01111
321
321
yyy
xxxG
Assembler la matrice de rigidité
Par : GRARI et KORIKACHE
19
Assembler la matrice de rigiditéImplémentation des éléments finis en Matlab
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);
1
1
14
14
12
12),(y
x
yy
xx
yy
xx
y
xT
,
Pour un élément quadrilatéral T soient ),(,),........,( 4411 yxyx les sommets avec les fonctions chapeau correspondantes 41,......., .puisque T est un parallélogramme, il y a un quadrillage
Par : GRARI et KORIKACHE
20
Assembler la matrice de rigiditéImplémentation des éléments finis en Matlab
),1)(1(:),(1 ),1(:),(2
,:),(3 .)1(:),(4
Pour les éléments 2]1,0[ sur T. puis )),((),( 1 yxyx Tjj avec les fonctions
de la forme :
De la loi de substitution il suit pour les intégrales (9) :
T kjjk yxdyxyxM ),(),().,(
21,0
11 ),(det)),())(())(,()(( dDM TT
TkTjk
),()),(()))((,(det21,0
1 dDDDM TkT
TTjTjk
Par : GRARI et KORIKACHE
21
Assembler la matrice de rigiditéImplémentation des éléments finis en Matlab
On résout ces intégrales à partir de la matrice locale de courbatures, pour un élément de quadrilatère on aura :
Avec Avec Matlab,
)(232)(32
2)(232)(3
)(232)(232
2)(32)(23
6
det
cabcacabca
cacabcacab
cabcacabca
cacabcacab
DM T
c
b
b
aDD T
TT
1))((
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
22
Assembler le côté droit de l’équation
Implémentation des éléments finis en Matlab
Les forces de volume sont employées pour assembler le côté droit. Utilisons la valeur de f au centre de gravité ),( SS yx de T l'intégrale
dxf j
T
en (10) est approximée par :
Tel que 6Tk si T est un triangle et 4Tk si T est un parallélogramme.
),(det1
13
13
12
12SS
Tj
T
yxfyy
xx
yy
xx
kdxf
Par : GRARI et KORIKACHE
23
Assembler le côté droit de l’équationImplémentation des éléments finis en Matlab
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é :
% 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
function VolumeForce = f(x); VolumeForce = ones(size(x,1),1);
Par : GRARI et KORIKACHE
24
Assembler le côté droit de l’équationImplémentation des éléments finis en Matlab
De même, les conditions de Neumann contribuent au coté droit. En utilisant la valeur de g au centre ),( MM yx de E avec la longueur E ,
l’intégrale dsgE
j dans (10) est approché par :
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
).,(2 MM
E
j yxgE
dsg
Par : GRARI et KORIKACHE
25
Assembler le côté droit de l’équationImplémentation des éléments finis en Matlab
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 N et retours les efforts correspondants. Pour l'exemple numérique g.m était
function Stress = g(x) Stress = zeros(size(x,1),1);
Par : GRARI et KORIKACHE
26
États d’incorporation de DirichletImplémentation des éléments finis en Matlab
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 :
Avec, MU , MN
DU . Ici, U sont les valeurs aux nœuds libres qui sont à déterminer, DU sont les valeurs aux nœuds qui sont sur la frontière de Dirichlet ainsi sont connus a priori.
DDéT b
b
U
U
A
A
A
A.
2
12
12
11, (12)
Par : GRARI et KORIKACHE
27
États d’incorporation de DirichletImplémentation des éléments finis en Matlab
% Dirichlet conditions u = sparse(size(coordinates,1),1); u(unique(dirichlet)) = u_d(coordinates(unique(dirichlet),:)); b = b - A * u;
Par conséquent, le premier bloc d'équations peut être récrit : C'est la formulation de (6) avec 0DU aux nœuds de non-Dirichlet. Dans le deuxième bloc d'équations dans (12) l'inconnu est Db mais puisqu'il n'a pas d’intérêt, il est omis dans le suivant.
DUAbUA .. 1211
Par : GRARI et KORIKACHE
28
États d’incorporation de DirichletImplémentation des éléments finis en Matlab
Les valeurs Du 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
29
Calcul de la solution numériqueImplémentation des éléments finis en Matlab
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 11A . 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.
Matlab se sert des propriétés d'une matrice définie positive, symétrique pour résoudre le système des équations efficacement.
FreeNodes=setdiff(1:size(coordinates,1),unique(dirichlet)); u(FreeNodes)=A(FreeNodes,FreeNodes)\b(FreeNodes);
Par : GRARI et KORIKACHE
30
Calcul de la solution numériqueImplémentation des éléments finis en Matlab
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
31
Calcul de la solution numériqueImplémentation des éléments finis en Matlab
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
32
Calcul de la solution numériqueImplémentation des éléments finis en Matlab
Figure 3. Solution du problème de Laplace
Par : GRARI et KORIKACHE
33
Calcul de la solution numériqueImplémentation des éléments finis en Matlab
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
34
L'équation de la chaleurImplémentation des éléments finis en Matlab
Pour des méthodes numériques de l'équation de la chaleur,
Avec un procédé implicite à temps d'Euler, nous avons devisé l'intervalle de temps [0, T] en N sous-intervalles de taille N
Tdt qui
mène à l'équation : où ),( nn txff et nu est l'approximation discrète de u au temps ntn
futu sur T,0
1)( nnn udtfudtid , (13)
Par : GRARI et KORIKACHE
35
L'équation de la chaleurImplémentation des éléments finis en Matlab
La forme faible de (13) est : Avec ),( nn txgg 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 : La matrice de rigidité A et le côté droit b sont comme avant.
dxvuvdxgvdxfdtvdxudtdxvu nnnnn
1)(.
1)( nn BUdtbUBdtA
Par : GRARI et KORIKACHE
36
L'équation de la chaleurImplémentation des éléments finis en Matlab
.
T T
kjjk dxB
La matrice de masse B (voir 8) est le résultat des limites
vdxun , i.e.,
Pour la triangulation, affinez par morceaux les éléments que nous obtenons : L'annexe B montre le programme modifié de l'équation de la chaleur.
211
121
112
det24
1
13
13
12
12
yy
xx
yy
xxdx
T
kj
Par : GRARI et KORIKACHE
37
L'équation de la chaleurImplémentation des éléments finis en Matlab
L’exemple numérique a été basé sur le domaine dans la figure1, cette fois avec 0f et 1Du sur la frontière externe. La valeur sur le cercle (intérieur) est toujours 0Du . Sur les frontière de Neumann, nous avons toujours ),( nn txff , 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
38
L'équation de la chaleurImplémentation des éléments finis en Matlab
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) :
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 .
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
Par : GRARI et KORIKACHE
39
L'équation de la chaleurImplémentation des éléments finis en Matlab
Par : GRARI et KORIKACHE
40
Un problème non-linéaire
Implémentation des éléments finis en Matlab
Comme application simple du problème variationnel non convexe, nous considérons l'équation de Ginzburg-Landau
Pour 1001
C’est la formulation faible, i.e.,
uuu 3 dans , 0u sur (14)
0)(.:),( 3
dxvuudxvuvuJ
)(10 Hv
)15(
Par : GRARI et KORIKACHE
41
Un problème non-linéaire
Implémentation des éléments finis en Matlab
On peut considérer également la condition nécessaire pour minimiser le problème variationnel
Nous visons à résoudre (15) avec la méthode de Newton-Raphson's. Commençant par un certain 0u , dans chacun étape d'itération, nous calculons )(1
01 Huu nn satisfaisant :
où
!14
1
2min
222dxuu
)16(
),,();,( 1 vuJuuvuDJ nnnn
)(10 Hv
)17(
.)3(.);,( 2
dxvuvdxvvuDJ (18)
Par : GRARI et KORIKACHE
42
Un problème non-linéaire
Implémentation des éléments finis en Matlab
Les intégrales dans ),( VUJ et );,( WVUDJ 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
43
Un problème non-linéaire
Implémentation des éléments finis en Matlab
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 1u 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
0u peut mener à différentes approximations numériques.
Par : GRARI et KORIKACHE
44
Un problème non-linéaire
Implémentation des éléments finis en Matlab
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
45
Un problème non-linéaire
Implémentation des éléments finis en Matlab
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 1010 ). Lignes 46-47 : La représentation graphique de la finale itération.
Par : GRARI et KORIKACHE
46
Problèmes tridimensionnels
Implémentation des éléments finis en Matlab
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 )4,......,1)(,,( jzyx jjj les sommets et j les fonctions de base correspondantes, C.-à-d.,
,),,( jkkkkj zyx
.4,,.........1, kj
Par : GRARI et KORIKACHE
47
Problèmes tridimensionnels
Implémentation des éléments finis en Matlab
Chacun des dossiers *.dat obtient une entrée additionnelle par ligne. Dans coordinates.dat, c’est le z éme-composant de chaque nœud ),,( jjjj zyxP 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 nk PP ,......., du jéme élément. elements4.dat n'est pas utilisé pour des problèmes à trois dimensions.
Par : GRARI et KORIKACHE
48
Problèmes tridimensionnels
Implémentation des éléments finis en Matlab
L'ordre des nœuds est organisé tels que le côté droit de 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.
nmlk
nmlk
nmlk
zzzz
yyyy
xxxxT
1111
det6
Par : GRARI et KORIKACHE
49
Problèmes tridimensionnels
Implémentation des éléments 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 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
50
Problèmes tridimensionnels
Implémentation des éléments finis en Matlab
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
51
Problèmes tridimensionnels
Implémentation des éléments finis en Matlab
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
52
Problèmes tridimensionnels
Implémentation des éléments finis en Matlab
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é dans une boucle au-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.
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) :
Par : GRARI et KORIKACHE
Merci