Professional Documents
Culture Documents
v u uD
vH
1
D
1/30
2/30
.wdx, w H 1 ()
D
(4)
.Wdx,
W SD
(5)
(1 ,........, N ) une
Soit
V . dx f dx g ds U
j
. j dx, j I
(6)
Donc,
systme
et U D U k k .
k 1
Ax b
(7)
j I
jk
) j , kI 2 M M et
le cot droit
A jk
j . k dx et b j
f j dx
g j ds U k j .k dx
k 1
(8)
U U D V U j j xk k
j 1
3/30
kI
4/30
elements3.dat
1 2 3 13
2 3 4 13
3 4 5 15
4 5 6 15
1
2
3
4
5
6
elements4.dat
1
2 13
12 13 14
13
4 15
11 14
9
14 15
8
15
6
7
12
11
14
10
9
8
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
j ( xk , yk ) jk ,
5/30
j , k 1,......., N .
Le sous espace S D S est lespace des splines engendr par tout les
pour tout ( x , y ) qui ne se sont pas sur D . Dautre part U D est dfinit
comme tant un interpolant nodal de u D , dans S .
Avec ces espaces S et S D et leurs bases correspondantes, les intgrales
dans la relation (8) peuvent tre calcul comme somme de tous les
lments et aussi somme de tous les bords de larc ,
c--d.,
j
A jk
t T t
. k dx
b j f j dx
t T t
(9)
N
g j ds U k jk dx
E N E
k 1
(10)
tT t
5. la matrice de courbatures
La matrice locale de courbatures est dtermine par les
coordonnes des sommets de l'lment correspondant, elle est calcul
par les fonctions stima3.m et stima4.m.
Pour un lment de la triangulation T, soient ( x1 , y1 ) , ( x2 , y2 ) et ( x , y )
des sommets et 1 , 2 et les fonctions de base correspondantes dans
S ,i.e., ( x , y )
j , k 1,2,3.
3
jk
j ( x, y ) det 1 x j 1
1 x
(11)
j2
1 xj
y j 1 /det 1 x j 1
1 x
y j 2
j2
Do
yj
y j 1
y j 2
1 yj1 yj2
j(x, y)
2T xj2 xj1
6/30
Avec
yk1 yk2
Avec
3. Ceci
pour
M
t
2
.GG
avec
G x1
y
1
1
x2
y2
x3
y3
1
0
lindex modulo
est
crit
simultanment
tous les index :
0
1
7/30
x 2xx 1 4xx 1 x1
T(,)
y 2yy 1 4yy 1 y1
Pour les lments [0,1] sur T. puis
fonctions de la forme
2
( x, y ) j ( T1 ( x, y )) avec
1 ( , ) : (1 )(1 ),
2 ( , ) : (1 ),
3 ( , ) : ,
4 ( , ) : (1 ) .
les
jk
M jk
j ( x, y ). k ( x, y ) d ( x, y )
0 ,1 2
M jk det D T
0 ,1 2
j ( , )(( D T ) T D T ) 1 ( k ( , ))T d ( , )
8/30
2a c
3b (a c)
a 2c
3b 2(a c)
2a c
3b 2(a c)
a 2c
3b 2(a c)
det D T
M
3b (a c)
a 2c
3b 2(a c)
2a c
6
a 2c
3b (a c)
2a c
3b 2(a c)
Avec
a b
((DT )T DT )1
b c
functionM=stima4(vertices)
D_Phi=[vertices(2,:)vertices(1,:);vertices(4,:)...
vertices(1,:)];
B=inv(D_Phi*D_Phi);
C1=[2,2;2,2]*B(1,1)+[3,0;0,3]*B(1,2)+[2,1;1,2]*B(2,2);
C2=[1,1;1,1]*B(1,1)+[3,0;0,3]*B(1,2)+[1,2;2,1]*B(2,2);
M=det(D_Phi)*[C1C2;C2C1]/6;
1 x2 x1 x3 x1
T f jdx kT det y2 y1 y3 y1 f (xS , yS )
Tel que kT 6 si T est un triangle et
paralllogramme.
kT 4
si
T est un
%VolumeForces
forj=1:size(elements3,1)
b(elements3(j,:))=b(elements3(j,:))+...
det([111;coordinates(elements3(j,:),:)])*...
f(sum(coordinates(elements3(j,:),:))/3)/6;
end
forj=1:size(elements4,1)
b(elements4(j,:))=b(elements4(j,:))+...
det([111;coordinates(elements4(j,1:3),:)])*...
f(sum(coordinates(elements4(j,:),:))/4)/4;
end
Les valeurs de
du problme.
9/30
La fonction est dfinit par les coordonnes des points qui se trouve
dans et elle renvoie la force de volume a ces endroits. Pour
lexemple numrique reprsent sur le schma 3 nous avons employ
functionVolumeForce=f(x);
VolumeForce=ones(size(x,1),1);
ds
E
g ( x M , y M ).
2
%Neumannconditions
forj=1:size(neumann,1)
b(neumann(j,:))=b(neumann(j,:))+...
norm(coordinates(neumann(j,1),:)...
coordinates(neumann(j,2),:))*...
g(sum(coordinates(neumann(j,:),:))/2)/2;
end
Ici, nous employons le fait que dans Matlab le taille dune matrice
vide est plac par zro et qu'une boucle de 1 0 est totalement omis.
De cette faon, la question de l'existence des donnes de frontire de
Neumann doit tre renonce.
Les valeurs de g sont donns par la fonction g.m qui dpend encore
du problme. La fonction est dfinit avec les coordonnes des points
sur et retours les efforts correspondants. Pour l'exemple
numrique g.m tait
N
functionStress=g(x)
Stress=zeros(size(x,1),1);
A1 A12 U b
10/30
11/30
12/30
u f sur
0, T
f n f ( x, t n ) et u n
13/30
(13)
tn n
vdx )
n 1
vdx
( dtA B )U n dtb BU n 1
T T
dx.
2 1 1
1 x2 x1 x3 x1
dx
det
1
2
1
T j k 24 y2 y1 y3 y1
1 1 2
15/30
10.
Un problme non-linaire
Comme application simple du problme variationnel non convexe,
nous considrons l'quation de Ginzburg-Landau
u u 3 u dans , u 0 sur
Pour
1
100
J (u , v ) :
u.vdx (u u
,
(15)
cest
la
formulation faible, i.e.,
(14)
)vdx 0
v H 01 ()
min
(16)
Ou
DJ (u , v; )
v H 01 ()
v.dx (v 3vu
(17)
) dx.
(18)
16/30
17/30
C) :
18/30
11.
Problmes tridimensionnels :
Avec quelques modifications, le programme de Matlab pour des
problmes linaires en deux dimensions tudi dans les sections 5-8
peut tre prolong aux problmes trois dimensions. Ttradres sont
utiliss en tant qu'lments finis. Les fonctions de base sont
correspondantes celles dfinie en deux dimensions, par exemple,
pour un lment de ttradre T soient ( x , y , z )( j 1,......,4) les
sommets et les fonctions de base correspondantes, c.--d.,
j
j ( xk , y k , z k ) jk ,
j , k 1,.........,4.
Chacun des dossiers *.dat obtient une entre additionnelle par ligne.
Dans coordinates.dat, cest le zme-composant de chaque
nud P ( x , y , z )
Une entre typique dans elements3.dat se relit maintenant :
j k l m n,
j
x
6 T det k
y
k
z
k
1
xl
yl
1
xm
ym
zl
zm
xn
yn
z n
19/30
20/30
21/30
Annexe
A. Le code complet de Matlab pour le problme deux
dimensions de Laplace
Le programme suivant peut tre trouv dans le paquet, sous le chemin
acf/fem2d.
Il s'appelle fem2d.m. Les autres dossiers sous ce chemin sont les
fonctions fixes stima3.m, stima4.m, et show.m aussi bien que
les fichiers de fonctions et de donnes cela dcrivez la discrtisation et
les donnes du problme, savoir coordinates.dat,
elements3.dat,
elements4.dat,
dirichlet.dat,
neumann.dat, f.m, g.m, et u_d.m. Ces problmes-qui
dcrivent des dossiers doivent tre adapts par l'utilisateur pour
d'autres gomtries, discrtisations, et/ou donnes.
22/30
1%deFEM2Ddemthoded'lmentfinibidimensionnellepourLaplacian.
2%d'initialisation
3chargecoordinates.dat;coordonnes(:,1)=[];
4eval('chargeelements3.dat;elements3(:,1)=[];','elements3=[];');
5eval('chargeelements4.dat;elements4(:,1)=[];','elements4=[];');
6eval('chargeneumann.dat;neumann(:,1)=[];','neumann=[];');
7chargedirichlet.dat;dirichlet(:,1)=[];
8FreeNodes=setdiff(1:taille(coordonnes,1),unique(dirichlet));
9A=clairsem(taille(coordonnes,1),taille(coordonnes,1));
10b=clairsem(taille(coordonnes,1),1);
11%d'Assemble
12pourj=1:taille(elements3,1)
13A(elements3(j:),elements3(j:))=A(elements3(j:),
14elements3(j:))+stima3(coordonnes(elements3(j:):));
extrmit15
16pourj=1:taille(elements4,1)
17A(elements4(j:),elements4(j:))=A(elements4(j:),
18elements4(j:))+stima4(coordonnes(elements4(j:):));
extrmit19
20%deforcesdevolume
21pourj=1:taille(elements3,1)
22b(elements3(j:))=b(elements3(j:))+
det23([1.1.1;coordonnes(elements3(j:):)'])*
24f(somme(coordonnes(elements3(j:):))/3)/6;
extrmit25
26pourj=1:taille(elements4,1)
27b(elements4(j:))=b(elements4(j:))+
det28([1.1.1;coordonnes(elements4(j,1:3):)'])*
29f(somme(coordonnes(elements4(j:):))/4)/4;
extrmit30
31%d'tatsdeNeumann
32pourj=1:taille(neumann,1)
33b(neumann(j:))=b(neumann(j:))+
norme34(coordonnes(neumann(j,1):)coordonnes(neumann(j,2):))*
g(somme(coordonnes(neumann(j:):))/2)/2;
extrmit35
36%d'tatsdeDirichlet
37u=clairsem(taille(coordonnes,1),1);
38u(uniques(dirichlet))=u_d(coordonnes(uniques(dirichlet):));
39b=bA*u;
40%decalculdelasolution
41u(FreeNodes)=A)(deFreeNodes,deFreeNodes\b(FreeNodes);
42%dereprsentationdegraphique
exposition43(elements3,elements4,coordonnes,pleines(u));
23/30
24/30
1mthoded'lmentfinide%FEM2D_HEATpourl'quationbidimensionnelledela
chaleur.
2%Initialisation
3chargecoordinates.dat;coordonnes(:,1)=[];
4chargeelements3.dat;elements3(:,1)=[];
5eval('chargeneumann.dat;neumann(:,1)=[];','neumann=[];');
6chargedirichlet.dat;dirichlet(:,1)=[];
7FreeNodes=setdiff(1:taille(coordonnes,1),unique(dirichlet));
8A=clairsem(taille(coordonnes,1),taille(coordonnes,1));
9B=clairsem(taille(coordonnes,1),taille(coordonnes,1));
10T=1;dcollement=0.01;N=T/dt;
11U=zros(taille(coordonnes,1),N+1);
12%d'Assemble
13pourj=1:taille(elements3,1)
14A(elements3(j:),elements3(j:))=A(elements3(j:),
15elements3(j:))+stima3(coordonnes(elements3(j:):));
extrmit16
17pourj=1:taille(elements3,1)
18B(elements3(j:),elements3(j:))=B(elements3(j:),
19elements3(j:))+det([1.1.1;coordonnes(elements3(j:):)'])
*[2.1.1;1.2.1;1.1.2]/24;
extrmit20
21%d'tatinitial
22U(:,1)=zros(taille(coordonnes,1),1);
23%d'tapesdetemps
24pourn=2:N+1
25b=clairsem(taille(coordonnes,1),1);
26%deforcesdevolume
27pourj=1:taille(elements3,1)
28b(elements3(j:))=b(elements3(j:))+
det29([1.1.1;coordonnes(elements3(j:):)'])*
dt*f30(somme(coordonnes(elements3(j:):))/3,n*dt)/6;
extrmit31
32%d'tatsdeNeumann
33pourj=1:taille(neumann,1)
34b(neumann(j:))=b(neumann(j:))+
norme35(coordonnes(neumann(j,1):)coordonnes(neumann(j,2):))*
dt*g36(somme(coordonnes(neumann(j:):))/2,n*dt)/2;
extrmit37
38%detimestepprcdent
39b=b+B*U(:,n1);
40%d'tatsdeDirichlet
41u=clairsem(taille(coordonnes,1),1);
42u(uniques(dirichlet))=u_d(coordonnes(uniques(dirichlet):),n*dt);
43b=b(dcollement*A+B)*u;
44%decalculdelasolution
45u(FreeNodes)=(dt*A(FreeNodes,FreeNodes)+
46B(FreeNodes,FreeNodes))\b(FreeNodes);
47U(:,n)=u;
extrmit48
49%dereprsentationdegraphique
exposition50(elements3,[],coordonnes,compltement(U(:,N+1)));
25/30
26/30
1%deFEM2D_NONLINEARdemthoded'lmentfinipourbidimensionnel
%d'quationnonlinaire.
2%d'initialisation
3chargecoordinates.dat;coordonnes(:,1)=[];
4chargeelements3.dat;elements3(:,1)=[];
5eval('chargeneumann.dat;neumann(:,1)=[];','neumann=[];');
6chargedirichlet.dat;dirichlet(:,1)=[];
7FreeNodes=setdiff(1:taille(coordonnes,1),unique(dirichlet));
8%devaleurinitiale
9U=ceux(taille(coordonnes,1),1);
10U(uniques(dirichlet))=u_d(coordonnes(uniques(dirichlet):));
11%d'itrationdeNewtonRaphson
12pouri=1:50
13%d'AssembledeDJ(U)
14A=clairsem(taille(coordonnes,1),taille(coordonnes,1));
15pourj=1:taille(elements3,1)
16A(elements3(j:),elements3(j:))=A(elements3(j:),
elements3(j:))
17+localdj(coordonnes(elements3(j:):),U(elements3(j:)));
extrmit18
19%d'AssembledeJ(U)
20b=clairsem(taille(coordonnes,1),1);
21pourj=1:taille(elements3,1);
22b(elements3(j:))=b(elements3(j:))
23+localj(coordonnes(elements3(j:):),U(elements3(j:)));
24extrmits
25%deforcesdevolume
26pourj=1:taille(elements3,1)
27b(elements3(j:))=b(elements3(j:))+
det28([111;coordonnes(elements3(j:):)'])*
29f(somme(coordonnes(elements3(j:):))/3)/6;
extrmit30
31%d'tatsdeNeumann
32pourj=1:taille(neumann,1)
33b(neumann(j:))=b(neumann(j:))
norme(coordonnes(neumann(j,1):)
34coordonnes(neumann(j,2):))*
*g(somme(coordonnes(neumann(j:):))/2)/2;
extrmit35
36%d'tatsdeDirichlet
37W=zros(taille(coordonnes,1),1);
38W(uniques(dirichlet))=0;
39%rsolvantunetapedenewton
40W(FreeNodes)=A)(deFreeNodes,deFreeNodes\b(FreeNodes);
41U=UW;
42sinorme(W)<10(10)
coupure43
extrmit44
extrmit45
46%dereprsentationdegraphique
exposition47(elements3,[],coordonnes,pleines(U));
fonctionb=localj(sommets,U)
Eps=1/100;
27/30
28/30
29/30
Rfrences :
[1] S.C. Brenner et L.R. Scott, La thorie mathmatique de mthodes
d'lment fini, Textes dans Mathmatiques appliques, vol. 15
(Springer, New York, 1994).
[2] P.G. Ciarlet, La mthode d'lment fini pour des problmes
elliptiques (la Nord-Hollande, Amsterdam, 1978).
[3] L. Langemyr et autres., Le guide d'quation de l'utilisateur partiel
de bote outils ( Math Works, Inc. 1995).
[4] H.R. Schwarz, Der Finiten Elemente de Methode (Teubner,
Stuttgart, 1991).
30/30