Titre : Implémentation des éléments finis en...

53
1 Exposé en EDP mixte Titre : Implémentation des éléments finis en Matlab Présenter par : Mounir GRARI Najlae KORIKACHE

Transcript of Titre : Implémentation des éléments finis en...

Page 1: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

1

Exposé en EDP mixte

Titre : Implémentation des éléments

finis en Matlab

Présenter par :

Mounir GRARI

Najlae KORIKACHE

Page 2: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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’équation

7. États d’incorporation de Dirichlet

8. Calcul de la solution numérique

9. L'équation de la chaleur

10. Un problème non-linéaire

11. Problèmes tridimensionnels

Par : GRARI et KORIKACHE

Implémentation des éléments finis en Matlab

Page 3: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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:

Page 4: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

4

2. Le problème exact

Implé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 )(2

NLg .

Cherchons )(1 Hu avec :

(P)

fu Dans (1)

Duu Sur D (2)

gn

u

Sur N (3)

Par : GRARI et KORIKACHE

Page 5: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 6: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 7: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

7

3. Discrétisation de Galerkin du problème

Implé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 1

DD 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

Page 8: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

8

3. Discrétisation de Galerkin du problème

Implé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 2 NM .

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

k

kkD UU1

.

bAx (7)

Par : GRARI et KORIKACHE

Page 9: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

9

Implémentation des éléments finis en Matlab

Les coefficients de la matrice MM

IkjjkAA

2,

)( et le coté droit M

Ijjbb )( 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

k

kjkjjj dxUdsgdxfb

N1

. (8)

Ik

kk

N

j

jjD xUVUU 1

Par : GRARI et KORIKACHE

3. Discrétisation de Galerkin du problème

Page 10: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 11: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 12: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 13: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 14: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 15: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

k

k

E E

j

Tt t

jj dxUdsgdxfbN

1

(10)

Par : GRARI et KORIKACHE

4. Représentation des données de la triangulation

Page 16: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 17: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

jxx

yy

Tyx

12

12det2

yy

xxT

13

13

yy

xx

Par : GRARI et KORIKACHE

5. Assembler la matrice de rigidité

Page 18: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

t

kjjk

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

Page 19: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 20: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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 T

T

TkTjk

),()),(()))((,(det2

1,0

1 dDDDM T

kT

T

TjTjk

Par : GRARI et KORIKACHE

Page 21: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

T

T

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

Page 22: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

12

SS

T

j

T

yxfyy

xx

yy

xx

kdxf

Par : GRARI et KORIKACHE

Page 23: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

23

Assembler le côté droit de l’équation

Implé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

Page 24: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

24

Assembler le côté droit de l’équation

Implé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

Page 25: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

25

Assembler le côté droit de l’équation

Implé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

Page 26: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

26

États d’incorporation de Dirichlet

Implé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

Page 27: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

27

États d’incorporation de Dirichlet

Implé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

Page 28: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

28

États d’incorporation de Dirichlet

Implé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

Page 29: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

29

Calcul de la solution numérique

Implé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

Page 30: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

30

Calcul de la solution numérique

Implé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

Page 31: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

31

Calcul de la solution numérique

Implé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

Page 32: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

32

Calcul de la solution numérique

Implémentation des éléments finis en Matlab

Figure 3. Solution du problème de Laplace

Par : GRARI et KORIKACHE

Page 33: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

33

Calcul de la solution numérique

Implé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

Page 34: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

34

L'équation de la chaleur

Implé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

fut

u

sur T,0

1)( nnn udtfudtid , (13)

Par : GRARI et KORIKACHE

Page 35: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

35

L'équation de la chaleur

Implé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

Page 36: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

36

L'équation de la chaleur

Implé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

Page 37: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

37

L'équation de la chaleur

Implé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

Page 38: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

38

L'équation de la chaleur

Implé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

Page 39: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

39

L'équation de la chaleur

Implémentation des éléments finis en Matlab

Par : GRARI et KORIKACHE

Page 40: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

)(1

0 Hv )15(

Par : GRARI et KORIKACHE

Page 41: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

0

1 Huu nn satisfaisant :

!14

1

2min

222dxuu

)16(

),,();,( 1 vuJuuvuDJ nnnn

)(1

0 Hv )17(

.)3(.);,( 2

dxvuvdxvvuDJ (18)

Par : GRARI et KORIKACHE

Page 42: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 43: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 44: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 45: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 46: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 47: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 48: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 49: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 50: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 51: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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

Page 52: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

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é -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

Page 53: Titre : Implémentation des éléments finis en Matlabfs2-fanar.com/PhysElect/Fr/download/courses/Info471/edp num.pdf · 15 Implémentation des éléments finis en Matlab Le sous

Merci