Академический Документы
Профессиональный Документы
Культура Документы
Présenter par :
Mounir GRARI
Najlae KORIKACHE
1
Implémentation des éléments finis en Matlab
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
1. Introduction:
2. Le problème exact
Soit un domaine ouvert bornée Lipschitzien, avec une
2
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 f L2
() , uD H 1 () et g L2 (N ) .
Cherchons u H () avec :
1
u f Dans (1)
(P) u uD Sur D (2)
u
g Sur N (3)
n
2. Le problème exact
u f Dans (1)
u u D Sur D (2)
u
g Sur N (3)
n
D
D ()
1
v. wdx f .wdx g .wds u . wdx ,w H
(4)
N
V . dx f dx g ds U
j
j
N
j
D . j dx, j I (6)
N
En outre soit, V xkk et U D U k k .
k I k 1
elements3.dat elements4.dat
1 2 3 13 1 1 2 13 12
2 3 4 13 2 12 13 14 11
3 4 5 15 3 13 4 15 14
4 5 6 15 4 11 14 9 10
5 14 15 8 9
6 15 6 7 8
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
j ( xk , yk ) jk , j, k 1,......., N .
D’où ; 1 y j 1 y j 2
j ( x, y )
2T x x
j 2 j 1
T yk 1 yk 2
M jk j ( k )t dx 2
y j 1 y j 2 , x j 2 x j 1
( 2 T ) x x
t
k 2 k 1
Avec l’index modulo 3. Ceci est écrit simultanément pour tous les
index :
t
M .GGt
2
1
1 1 1 0 0
Avec, G x1 x2 x3 1 0
y y2 y3 0 1
1
3 ( , ) : , 4 ( , ) : (1 ) .
M jk j ( x, y). k ( x, y)d ( x, y)
T
M jk ( T
1
)(( , ))(( k T
1
))(( , ))T
det DT d ( , )
0,1
2
3b 2(a c) 2a c 3b (a c) a 2c
det D T 2 a c 3b 2 ( a c ) a 2c 3b 2( a c )
M 3b (a c)
6 a 2c 3b 2(a c) 2a c
a 2c 3b (a c) 2a c 3b 2(a c)
a b
Avec (( DT )T DT ) 1
Avec Matlab, 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
1 x2 x1 x3 x1
T
f j dx det
kT
f ( xS , yS )
y2 y1 y3 y1
Tel que kT 6 si T est un triangle et kT 4 si T est un
parallélogramme.
E
g ds
E
j
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
correspondants.
Pour l'exemple numérique g.m était
function Stress = g(x)
Stress = zeros(size(x,1),1);
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.
L'équation de la chaleur
Pour des méthodes numériques de l'équation de la chaleur,
u
t
u f sur 0, T
L'équation de la chaleur
La forme faible de (13) est :
L'équation de la chaleur
La matrice de masse B (voir 8) est le résultat des limites un vdx , i.e.,
B jk jk dx.
T T
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.)
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'équation de la chaleur
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.,
Un problème non-linéaire
On peut considérer également la condition nécessaire pour minimiser
le problème variationnel
1 2
min u u 2 1 dx!
2
2
4
(16)
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).
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.
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.
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 , j, k 1,.........,4.
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.
Problèmes tridimensionnels
L'ordre des nœuds est organisé tels que le côté droit de
1 1 1 1
xk xl xm xn
6 T det
yk yl ym yn
z zl zm z n
k
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.
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 :
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)
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.
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.