implémentation des Éléments finis en matlab v5

37
EDP mixte : Implémentation des éléments finis en Matlab 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. Selon la brièveté du programme et de la documentation donnée, n'importe quelle adaptation des exemples modèles simples, à des problèmes plus complexes, peut facilement être exécuté. Les exemples numériques prouvent la flexibilité de l'outil de Matlab. Les programmes proposés de Matlab utilisent la méthode d'élément fini pour calculer une solution numérique qui rapproche la solution du problème bidimensionnel de Laplace avec des conditions aux frontières mélangés (mixtes): 2. Le problème exact : Soit un domaine de Lipschitz avec une frontière polygonale . Sur un certain sous-ensemble fermé de la frontière avec longueur positive, nous considérons des conditions de Dirichlet, alors que nous avons les conditions de Neumann sur la partie restante : \ Soient , et . Par : GRARI et KORIKACHE 1/37

Upload: lam-ch

Post on 14-Nov-2015

28 views

Category:

Documents


2 download

DESCRIPTION

Implémentation Des Éléments Finis

TRANSCRIPT

Petite implmentation des lments finis en Matlab

EDP mixte: Implmentation des lments finis en Matlab

Implmentation des lments finis en Matlab

1. Introduction:

Une courte excution de Matlab pour les lments finis P1-Q1 sur des triangles et des paralllogrammes est donne pour la rsolution numrique des problmes elliptiques avec des conditions aux frontires mixtes sur des grilles non structures. Selon la brivet du programme et de la documentation donne, n'importe quelle adaptation des exemples modles simples, des problmes plus complexes, peut facilement tre excut. Les exemples numriques prouvent la flexibilit de l'outil de Matlab.

Les programmes proposs de Matlab utilisent la mthode d'lment fini pour calculer une solution numrique

qui rapproche la solution du problme bidimensionnel de Laplace avec des conditions aux frontires mlangs (mixtes):

2. Le problme exact:

Soit un domaine de Lipschitz avec une frontire polygonale.

Sur un certain sous-ensemble ferm de la frontire avec longueur positive, nous considrons des conditions de Dirichlet, alors que nous avons les conditions de Neumann sur la partie restante: \

Soient, et.

Cherchons avec:

(P)Daprs le thorme de Lax-Milgram, il existe toujours une solution faible de (1)-(3) ce qui donne la rgularit intrieure (i.e.,), et on a des frontires lisses et aussi un changement de conditions la frontire.

Les conditions non homognes de Dirichlet (2) sont associes la dcomposition:

Alors, la formulation faible (ou vibrationnelle) du problme (P) est de:

Rechercher tel que:

3. Discrtisation de Galerkin du problme:

Pour limplmentation, le problme (4) est discrtis en utilisant la mthode standard de Galerkin ouet sont remplaces par des sous-espaces de dimensions finis et, respectivement,

Soit une approximation de sur (On dfinit comme tant un interpolant (relatif au nud) de sur).

Donc la discrtisation de problme est de chercher tel que;

Soit une base de lespace de dimension fini, et soit une base de ou est un ensemble d'index de cardinale.

Lquation (5) est quivalente :

En outre soit,

Donc, lquation (6) donne le systme linaire des quations:

Les coefficients de la matriceet le cot droit sont dfinit par:

La matrice A est symtrique, dfinie positive, donc, le systme (7) a exactement une solution ce qui dtermine la solution de Galerkin

4. Reprsentation des donnes de la triangulation :

Supposant que le domaine a une frontire polygonale, nous pouvons recouvrir par une triangulation rgulire forme de triangles et de quadrilatres, i.e., o chaque t est un triangle ferm ou un quadrilatre ferm.

coordinates.dat contient les coordonnes de chaque nud de maillage donn.

Chaque ligne est de la forme:

node# x-coord y-coordNotre subdivision est forme de triangles et de quadrilatres. Dans les deux cas, les nuds sont numrots dans le sens contraire des aiguilles d'une montre.

Pour les triangles; elements3.dat contient pour chacun triangle le nombre de nuds (sommets), Chaque ligne est de la forme:

element# node1 node2 node3.De mme, les donnes pour les quadrilatres sont donnes dans elements4.dat. Ici, nous employons le format:

element# node1 node2 node3 node4.

Les deux fichiers Neumann.dat et Dirichlet.dat contiennent dans chaque ligne les deux nombres de nuds attacher au le bord de la frontire :

Neumann edge# node1 node2 resp., Dirichlet edge # node1 node2.

Dans la figure2, deux fonctions chapeau typiquesdfinies pour chaque nud du maillage par:

Le sous espace est lespace des splines engendr par tout les pour tout qui ne se sont pas sur. Dautre part est dfinit comme tant un interpolant nodal de, dans.

Avec ces espaces et 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.,

5. la matrice de courbaturesLa 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,etdes sommets et ,et les fonctions de base correspondantes dans S ,i.e.,

La rflexion d'un moment indique

(11)

Avec est donn par:

L'entre rsultante de la matrice de courbatures est:

Avec lindex modulo 3. Ceci est crit simultanment pour tous les index:

avec

Puisque nous obtenons les formules semblables pour trois dimensions, le programme en Matlab est simultanment pour d=2 et d=3

Pour un lment quadrilatral T soient les sommets avec les fonctions chapeau correspondantes .puisque T est un paralllogramme, il y a un quadrillage

SHAPE \* MERGEFORMAT

Pour les lments sur T. puis avec les fonctions de la forme

SHAPE \* MERGEFORMAT

De la loi de substitution il suit pour les intgrales (9):

SHAPE \* MERGEFORMAT

On rsout ces intgrales partir de la matrice locale de courbatures, pour un lment de quadrilatre on aura:

SHAPE \* MERGEFORMAT

Avec

6. Assembler le ct droit de lquationLes forces de volume sont employes pour assembler le ct droit. Utilisons la valeur de au centre de gravit de T l'intgrale en (10) est approxime par:

Tel que si T est un triangle et si T est un paralllogramme.

Les valeurs de sont donnes partir de la fonction f.m qui dpend du problme.

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

De mme, les conditions de Neumann contribuent au cot droit. En utilisant la valeur de au centre de E avec la longueur , lintgrale dans (10) est approch par

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

7. tats dincorporation de DirichletAvec une numrotation approprie des nuds, le systme des quations linaires rsultant de la construction dcrite dans la section prcdente sans incorporer des tats de Dirichlet peut tre crit comme suit :

Avec , . Ici, U sont les valeurs aux nuds libres qui sont dterminer, sont les valeurs aux nuds qui sont sur la frontire de Dirichlet ainsi sont connus a priori.

Par consquent, le premier bloc d'quations peut tre rcrit:

C'est la formulation de (6) avec aux nuds de non-Dirichlet.

Dans le deuxime bloc d'quations dans (12) l'inconnu est mais puisqu'il n'a pas dintrt, il est omis dans le suivant.

Les valeurs aux nuds sur sont donnes par la fonction u.d.m qui dpend du problme. La fonction est appele par les coordonnes aux points sur et retourne les valeurs aux endroits correspondants. Pour l'exemple numrique u.d.m tait:

8. Calcul de la solution numriqueLes lignes de (7) correspondant la premire M ligne de la forme (12) qui rduit le systme des quations avec une matrice dfinie symtrique et positive de coefficient .

Il est obtenu du systme original des quations en prenant les lignes et les colonnes et on les fait correspondant les nuds libres du problme. La restriction peut tre ralise dans Matlab travers lindexation approprie.

Le systme des quations est rsolu par l'oprateur binaire (install dans Matlab) qui donne l'inverse gauche d'une matrice.

Matlab se sert des proprits d'une matrice dfinie positive, symtrique pour rsoudre le systme des quations efficacement.

Une reprsentation graphique de la solution est donne par la fonction show.m.

Dans Matlab trisurf(ELEMENTS,X,Y,U) est utilise pour dessiner des triangulations pour les lments de types gaux. Chaque ligne de la matrice ELEMENTS dtermine un polygone o les x-, y-, et z- coordonnes de chaque sommet de ce polygone est donne par la correspondance avec X, Y et U respectivement. La couleur des polygones est donne par des valeurs de U. Les paramtres additionnels, 'facecolor', 'interp', mnent une coloration interpole. La figure 3 illustre la solution pour le maillage dfinie dans la section 4 et les fichiers de donnes f.m, g.m, et u_d.m donns dans les sections 6 et 7.

La rcapitulation sectionne 4-8, le programme principal, qui est numr dans l'annexe A, est structur comme suit (les lignes rfrences sont selon la numrotation dans l'annexe A) :

9. L'quation de la chaleurPour des mthodes numriques de l'quation de la chaleur,

avec un procd implicite temps d'Euler, nous avons devis l'intervalle de temps [0, T] en N sous-intervalles de taille qui mne l'quation:

o et est l'approximation discrte de au temps

La forme faible de (13) est:

Avec et les notations dans la section 2. Pour chaque tape, cette quation est rsolue en utilisant les lments finis qui mne au systme linaire suivant:

La matrice de courbatures A et le ct droit b sont comme avant. La matrice de masse B (voir 8) est le rsultat des limites, i.e.,

Pour la triangulation, affinez par morceaux les lments que nous obtenons:

L'annexe B montre le programme modifi de l'quation de la chaleur. Lexemple numrique a t bas sur le domaine dans la figure1, cette fois avec et sur la frontire externe. La valeur sur le cercle (intrieur) est toujours . Sur les frontire de Neumann, nous avons toujours, La figure 4 montre la solution pendant quatre fois diffrentes (T = 0:1, 0:2, 0:5 et T = 1). (T est la variable dans la ligne 10 du programme principal.)

Le programme principal, list dans l'annexe B, est structur comme suit (les lignes rfrence ont la mme numrotation dans l'annexe B) :

L'annexe B montre le programme modifi de l'quation de la chaleur. Lexemple numrique a t bas sur le domaine dans la figure1, cette fois avec et sur la frontire externe. La valeur sur le cercle (intrieur) est toujours. Sur la frontire de Neumann, nous avons toujours.

10. Un problme non-linaire

Comme application simple du problme variationnel non convexe, nous considrons l'quation de Ginzburg-Landau

Pour , cest la formulation faible, i.e.,

On peut considrer galement la condition ncessaire pour minimiser le problme variationnel

Nous visons rsoudre (15) avec la mthode de Newton-Raphson's. Commenant par un certain , dans chacun tape d'itration, nous calculons satisfaisant:

Ou Les intgrales dans et sont de nouveau calculs comme somme de tous les lments. Les intgrales locales rsultantes peuvent tre calcules analytiquement et sont implments en localj.m, respectivement localdj.m, comme donn dans l'annexe C. Le programme en Matlab a besoin encore de petites modifications, montres dans l'annexe C. Essentiellement, on doit initialiser le programme (avec un vecteur de dbut qui remplit la condition de frontire 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 critre darrt en cas de convergence (lignes 42-44).

On sait que les solutions ne sont pas uniques. En effet, pour tout minimum local u, -u est galement un minimum et 0 rsout aussi le problme. La fonction constante mne l'nergie nulle, mais viole la continuit ou on a les conditions aux frontires. Par consquent, on observe la frontire ou les couches internes qui sparent de grandes rgions, o u est presque constant.Dans le problme en dimension finie, les diffrentes valeurs initiales peut mener diffrentes approximations numriques.

La figure 5 montre deux solutions possibles trouves pour deux diffrentes valeurs aprs environ 20-30 itrations. La figure du ct gauche est ralise 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 (coordonnes (:, 1)); montrer la figure du ct droit.

Le programme principal, donn dans l'annexe C, est structur comme suit (les lignes rfrences sont selon la numrotation dans l'annexe C) :

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 les sommets et les fonctions de base correspondantes, c.--d.,

Chacun des dossiers *.dat obtient une entre additionnelle par ligne. Dans coordinates.dat, cest le zme-composant de chaque nud

Une entre typique dans elements3.dat se relit maintenant:

j k l m n,Tel que k, l, m, n, sont les nombres de sommets du jme lment.

elements4.dat n'est pas utilis pour des problmes trois dimensions. L'ordre des nuds est organis tels que le ct droit de

est positif, La numrotation des lments dfinis dans neumann.dat et dirichlet.dat est fait avec le visionnement positif mathmatique d'orientation de l'extrieur W sur la surface.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 rsoudre la grandeur scalaire, problmes trois dimensions linaires :

La reprsentation graphique pour des problmes trois dimensions peut tre faite par raccourcis version de show.m de la section 8.

La distribution de la temprature d'un piston simplifi est prsente sur le schma 6. Calcul

de la distribution de la temprature avec 3728 nuds et 15111 lments (y compris le rendement graphique) prend quelques minutes sur un poste de travail.

Le programme principal, qui est numr dans l'annexe D, est structur comme suit (les lignes rfrences sont selon la numrotation dans l'annexe D) :

AnnexeA. 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.

B. Code de Matlab pour l'quation de la chaleur

Le programme suivant peut tre trouv dans le paquet, sous le chemin acf/fem2d la chaleur. Il s'appelle fem2d heat.m. Les autres dossiers sous ce chemin sont les fixes fonctions stima3.m et show.m aussi bien que les fichiers de fonctions et de donnes qui dcrivent la discrtisation et les donnes du problme, savoir coordinates.dat, elements3.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.

C. Code de Matlab pour le problme non-linaire

Le programme suivant peut tre trouv dans le paquet, sous le chemin acf/fem2d non-linaire. Il s'appelle fem2d nonlinear.m. Les autres dossiers sous ce chemin sont la fonction fixe show.m aussi bien que les fichiers de fonctions et de donnes qui dcrivent le fonctionnel J, son driv DJ, la discrtisation et les donnes du problme, savoir, localj.m, localdj.m, coordinates.dat, elements3.dat,dirichlet.dat, f.m, et u_d.m. Ces problmes-qui dcrivent des dossiers doivent tre adapts par l'utilisateur pour d'autres problmes, gomtries, discrtisations, et/ou donnes non-linaires (y compris ajouter probablement les dossiers appropris neumann.dat et g.m).

D. Code de Matlab pour le problme trois dimensions

Le programme suivant peut tre trouv dans le paquet, sous le chemin acf/fem3d. Il s'appelle fem3d.m. Les autres dossiers sous ce chemin sont les fonctions fixes stima3.m, et showsurface.m aussi bien que les fichiers de fonctions et de donnes qui dcrivent la discrtisation et les donnes du problme, savoir coordinates.dat, elements3.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.

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).

EMBED Equation.3

EMBED Equation.3

EMBED Equation.3 , (13)

EMBED Equation.3 sur EMBED Equation.3

Lignes 3-10: Chargement de la gomtrie et initialisation du maillage.

Lignes 11-19: Assemble la matrice de rigidit dans deux boucles, d'abord aux lments des triangulaires, puis aux lments des quadrilatres.

Lignes 20-30: Incorporation de la force de volume dans deux boucles, d'abord aux lments des triangulaires, puis aux lments des quadrilatres.

Lignes 31-35: Incorporation de l'tat de Neumann.

Lignes 36-39: Incorporation de l'tat de Dirichlet.

Lignes 40-41: Solution du systme linaire rduit.

Lignes 42-43: Reprsentation graphique de la solution numrique.

Figure 3.solution du problme de Laplace

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)

FreeNodes=setdiff(1:size(coordinates,1),unique(dirichlet));

u(FreeNodes)=A(FreeNodes,FreeNodes)\b(FreeNodes);

function DirichletBoundaryValue = u_d(x)

DirichletBoundaryValue = zeros(size(x,1),1);

% Dirichlet conditions

u = sparse(size(coordinates,1),1);

u(unique(dirichlet)) = u_d(coordinates(unique(dirichlet),:));

b = b - A * u;

EMBED Equation.3

EMBED Equation.3 , (12)

function Stress = g(x)

Stress = zeros(size(x,1),1);

% 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

EMBED Equation.3

function VolumeForce = f(x);

VolumeForce = ones(size(x,1),1);

% 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

EMBED Equation.3

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;

EMBED Equation.3

EMBED Equation.3

EMBED Equation.3

EMBED Equation.3

EMBED Equation.3

EMBED Equation.3 EMBED Equation.3

EMBED Equation.3 EMBED Equation.3

EMBED Equation.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);

EMBED Equation.3

EMBED Equation.3 EMBED Equation.3

Do EMBED Equation.3

EMBED Equation.3

EMBED Equation.3 , EMBED Equation.3

EMBED Equation.3 (9)

EMBED Equation.3 (10)

EMBED Equation.3 , EMBED Equation.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

neumann.dat

1 5 6

2 6 7

3 1 2

4 2 3

Figue2: fonction chapeau

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

elements3.dat

1 2 3 13

2 3 4 13

3 4 5 15

4 5 6 15

Figure 1. Exemple de maillage

EMBED Equation.3

EMBED Equation.3 et EMBED Equation.3 (8)

EMBED Equation.3 (7)

EMBED Equation.3 et EMBED Equation.3 .

EMBED Equation.3 EMBED Equation.3 (6)

EMBED Equation.3 EMBED Equation.3 (5)

EMBED Equation.3 EMBED Equation.3 (4)

EMBED Equation.3 donc EMBED Equation.3 sur EMBED Equation.3 , i.e.,

EMBED Equation.3 { EMBED Equation.3 }

EMBED Equation.3 Dans EMBED Equation.3 (1)

EMBED Equation.3 Sur EMBED Equation.3 (2)

EMBED Equation.3 Sur EMBED Equation.3 (3)

Lignes 3-11 : Chargement de la gomtrie et initialisation du maillage

Lignes 12-16 : Assemble la matrice de courbatures A dans une boucle en tous les lments triangulaires.

Lignes 17-20 : Assemble la matrice de masse B dans une boucle en tous les lments triangulaires. Lignes 21-22 : Dfinir l'tat initial du discret U.

Lignes 23-48 : Boucle (aux au-dessus) tapes de temps.

En particulier :

Ligne 25 : (Dgager) le vecteur du ct 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 prcdente de temps n -1.

Lignes 40-43 : Incorporation de la condition de Dirichlet l'tape de temps n.

Lignes 44-47 : Solution du systme linaire rduit pour la solution l'tape de temps n.

Lignes 49-50 : Reprsentation graphique de la solution numrique ltape temps final

EMBED Equation.3 dans EMBED Equation.3 , EMBED Equation.3 sur EMBED Equation.3 (14)

EMBED Equation.3 EMBED Equation.3 EMBED Equation.3

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));

function showsurface(surface,coordinates,u)

trisurf(surface,coordinates(:,1),coordinates(:,2),...

coordinates(:,3),u, facecolor,interp)

axis off

view(160,-30)

1 % de FEM2D de mthode d'lment fini bidimensionnelle pour Laplacian.

2 % d'initialisation

3 charge coordinates.dat ; coordonnes (: , 1) = [] ;

4 eval (' charge elements3.dat ; elements3 (: , 1) = [] ; ',' elements3= [] ; ') ;

5 eval (' charge elements4.dat ; elements4 (: , 1) = [] ; ',' elements4= [] ; ') ;

6 eval (' charge neumann.dat ; neumann (: , 1) = [] ; ',' neumann= [] ; ') ;

7 charge dirichlet.dat ; dirichlet (: , 1) = [] ;

8 FreeNodes=setdiff (1 : taille (coordonnes, 1), unique (dirichlet));

9 A = clairsem (taille (coordonnes, 1), taille (coordonnes, 1));

10 b = clairsem (taille (coordonnes, 1), 1) ;

11 % d'Assemble

12 pour j = 1 : taille (elements3,1)

13 A (elements3 (j :), elements3 (j :)) = A (elements3 (j :),

14 elements3 (j :)) + stima3 (coordonnes (elements3 (j :) :));

extrmit 15

16 pour j = 1 : taille (elements4,1)

17 A (elements4 (j :), elements4 (j :)) = A (elements4 (j :),

18 elements4 (j :)) + stima4 (coordonnes (elements4 (j :) :));

extrmit 19

20 % de forces de volume

21 pour j = 1 : taille (elements3,1)

22 b (elements3 (j :)) = b (elements3 (j :)) +

det 23 ([1.1.1 ; coordonnes (elements3 (j :) :)']) *

24 f (somme (coordonnes (elements3 (j :) :))/3) /6 ;

extrmit 25

26 pour j = 1 : taille (elements4,1)

27 b (elements4 (j :)) = b (elements4 (j :)) +

det 28 ([1.1.1 ; coordonnes (elements4 (j, 1 : 3) :)']) *

29 f (somme (coordonnes (elements4 (j :) :))/4) /4 ;

extrmit 30

31 % d'tats de Neumann

32 pour j = 1 : taille (neumann, 1)

33 b (neumann (j :))=b (neumann (j :)) +

norme 34 (coordonnes (neumann (j, 1) :)- coordonnes (neumann (j, 2) :))*

g (somme (coordonnes (neumann (j :) :))/2) /2 ;

extrmit 35

36 % d'tats de Dirichlet

37 u = clairsem (taille (coordonnes, 1), 1) ;

38 u (uniques (dirichlet)) = u_d (coordonnes (uniques (dirichlet) :));

39 b = b - A * u ;

40 % de calcul de la solution

41 u (FreeNodes) = A) (de FreeNodes, de FreeNodes \ b (FreeNodes) ;

42 % de reprsentation de graphique

exposition 43 (elements3, elements4, coordonnes, pleines (u));

EMBED Equation.3 EMBED Equation.3

EMBED Equation.3 EMBED Equation.3 EMBED Equation.3

EMBED Equation.3 (18)

Figure 5. Solution de lquation non-linaire

Lignes 3-7 : Chargement de la gomtrie et initialisation du maillage.

Lignes 8-10 : Rglage du vecteur dinitialisation U pour le procd de l'itration, incorporant la condition de Dirichlet sur la solution.

Lignes 11-45 : Boucle pour l'itration de Newton-Raphson. Il finit aprs un maximum de 50 itrations (dans la ligne 12) ou en cas de convergence (lignes 42-44).

Lignes 13-18 : Assemblage de la matrice de la driv du fonctionnel J valu l'tape courante d'itration U.

Lignes 19-24 : Assemblage du vecteur du fonctionnel J valu la courante tape d'itration 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 homognes de Dirichlet du vecteur de mise jour W.

Lignes 39-40 : Solution du systme linaire rduit 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 EMBED Equation.3 ).

Lignes 46-47 : La reprsentation graphique de la finale itration.

EMBED Equation.3 EMBED Equation.3

EMBED Equation.3

Figure 6. La distribution de la temprature d'un piston

Lignes 3-9 : Chargement de la gomtrie et de l'initialisation de maille.

Lignes 11-14 : Assemble de la matrice de rigidit dans une boucle au-dessus de tous les ttradres.

Lignes 16-20 : Incorporation de la force de volume dans une boucle au-dessus de tous les ttradres.

Lignes 22-27 : Incorporation de l'tat de Neumann.

Lignes 29-31 : Incorporation de l'tat de Dirichlet.

Ligne 33 : Solution du systme linaire rduit.

Ligne 35 : Reprsentation graphique de la solution numrique.

1 mthode d'lment fini de %FEM2D_HEAT pour l'quation bidimensionnelle de la chaleur.

2 %Initialisation

3 charge coordinates.dat ; coordonnes (: , 1) = [] ;

4 charge elements3.dat ; elements3 (: , 1) = [] ;

5 eval (' charge neumann.dat ; neumann (: , 1) = [] ; ',' neumann= [] ; ') ;

6 charge dirichlet.dat ; dirichlet (: , 1) = [] ;

7 FreeNodes=setdiff (1 : taille (coordonnes, 1), unique (dirichlet));

8 A = clairsem (taille (coordonnes, 1), taille (coordonnes, 1));

9 B = clairsem (taille (coordonnes, 1), taille (coordonnes, 1));

10 T = 1 ; dcollement = 0.01 ; N = T/dt ;

11 U = zros (taille (coordonnes, 1), N+1) ;

12 % d'Assemble

13 pour j = 1 : taille (elements3,1)

14 A (elements3 (j :), elements3 (j :)) = A (elements3 (j :),

15 elements3 (j :)) + stima3 (coordonnes (elements3 (j :) :));

extrmit 16

17 pour j = 1 : taille (elements3,1)

18 B (elements3 (j :), elements3 (j :)) = B (elements3 (j :),

19 elements3 (j :)) + det ([1.1.1 ; coordonnes (elements3 (j :) :)'])

* [2.1.1 ; 1.2.1 ; 1.1.2] /24 ;

extrmit 20

21 % d'tat initial

22 U (: , 1) = zros (taille (coordonnes, 1), 1) ;

23 % d'tapes de temps

24 pour n = 2 : N+1

25 b = clairsem (taille (coordonnes, 1), 1) ;

26 % de forces de volume

27 pour j = 1 : taille (elements3,1)

28 b (elements3 (j :)) = b (elements3 (j :)) +

det 29 ([1.1.1 ; coordonnes (elements3 (j :) :)']) *

dt*f 30 (somme (coordonnes (elements3 (j :) :))/3, n*dt) /6 ;

extrmit 31

32 % d'tats de Neumann

33 pour j = 1 : taille (neumann, 1)

34 b (neumann (j :)) = b (neumann (j :)) +

norme 35 (coordonnes (neumann (j, 1) :)- coordonnes (neumann (j, 2) :))*

dt*g 36 (somme (coordonnes (neumann (j :) :))/2, n*dt) /2 ;

extrmit 37

38 % de timestep prcdent

39 b = b + B * U (: , n-1) ;

40 % d'tats de Dirichlet

41 u = clairsem (taille (coordonnes, 1), 1) ;

42 u (uniques (dirichlet)) = u_d (coordonnes (uniques (dirichlet) :), n*dt) ;

43 b = b - (dcollement * A + B) * u ;

44 % de calcul de la solution

45 u (FreeNodes) = (dt*A (FreeNodes, FreeNodes) +

46 B (FreeNodes, FreeNodes))\ b (FreeNodes) ;

47 U (: , n) = u ;

extrmit 48

49 % de reprsentation de graphique

exposition 50 (elements3, [], coordonnes, compltement (U (: , N+1)));

1 % de FEM2D_NONLINEAR de mthode d'lment fini pour bidimensionnel

% d'quation non-linaire.

2 % d'initialisation

3 charge coordinates.dat ; coordonnes (: , 1) = [] ;

4 charge elements3.dat ; elements3 (: , 1) = [] ;

5 eval (' charge neumann.dat ; neumann (: , 1) = [] ; ',' neumann= [] ; ') ;

6 charge dirichlet.dat ; dirichlet (: , 1) = [] ;

7 FreeNodes=setdiff (1 : taille (coordonnes, 1), unique (dirichlet));

8 % de valeur initiale

9 U = - ceux (taille (coordonnes, 1), 1) ;

10 U (uniques (dirichlet)) = u_d (coordonnes (uniques (dirichlet) :));

11 % d'itration de Newton-Raphson

12 pour i=1 : 50

13 % d'Assemble de DJ (U)

14 A = clairsem (taille (coordonnes, 1), taille (coordonnes, 1));

15 pour j = 1 : taille (elements3,1)

16 A (elements3 (j :), elements3 (j :)) = A (elements3 (j :),

elements3 (j :))

17 + localdj (coordonnes (elements3 (j :) :), U (elements3 (j :)));

extrmit 18

19 % d'Assemble de J (U)

20 b = clairsem (taille (coordonnes, 1), 1) ;

21 pour j = 1 : taille (elements3,1) ;

22 b (elements3 (j :)) = b (elements3 (j :))

23 + localj (coordonnes (elements3 (j :) :), U (elements3 (j :)));

24 extrmits

25 % de forces de volume

26 pour j = 1 : taille (elements3,1)

27 b (elements3 (j :)) = b (elements3 (j :)) +

det 28 ([1 1 1 ; coordonnes (elements3 (j :) :)']) *

29 f (somme (coordonnes (elements3 (j :) :))/3) /6 ;

extrmit 30

31 % d'tats de Neumann

32 pour j = 1 : taille (neumann, 1)

33 b (neumann (j :))=b (neumann (j :))

- norme (coordonnes (neumann (j, 1) :)-

34 coordonnes (neumann (j, 2) :)) *

*g (somme (coordonnes (neumann (j :) :))/2) /2 ;

extrmit 35

36 % d'tats de Dirichlet

37 W = zros (taille (coordonnes, 1), 1) ;

38 W (uniques (dirichlet)) = 0 ;

39 % rsolvant une tape de newton

40 W (FreeNodes) = A) (de FreeNodes, de FreeNodes \ b (FreeNodes) ;

41 U = U - W ;

42 si norme (W) < 10(-10)

coupure 43

extrmit 44

extrmit 45

46 % de reprsentation de graphique

exposition 47 (elements3, [], coordonnes, pleines (U));

fonction b = localj (sommets, U)

Eps = 1/100 ;

G = [ceux (1.3) ; ] de sommets' \ [zros (1.2) ; oeil (2)];

Secteur = det ([ceux (1.3) ; ) de sommets']/2 ;

b=Area* ((Eps*G*G' - [2.1.1 ; 1.2.1 ; 1.1.2] /12) *U+

[4*U (1) 3+ U (2) 3+U (3) 3+3*U (1) 2* (U (2) +U (3))+2*U (1)

* (U (2) 2+U (3) 2) *U de +U (2) (3) * (U (2) +U (3))1) *U du *U de +2*U ((2) (3) ;

4*U (2) 3+ U (1) 3+U (3) 3+3*U (2) 2* (U (1) +U (3))+2*U (2)

* (U (1) 2+U (3) 2) 1) *U de +U ((3) * (U (1) +U (3))1) *U du *U de +2*U ((2) (3) ;

4*U (3) 3+ U (2) 3+U (1) 3+3*U (3) 2* (U (2) +U (1))+2*U (3)

* (U (2) 2+U (1) 2) *U de +U (2) (1) * (U (2) +U (1))1) *U du *U de +2*U ((2) (3)]/60) ;

fonction M = localdj (sommets, U)

Eps = 1/100 ;

G = [ceux (1.3) ; ] de sommets' \ [zros (1.2) ; oeil (2)];

Secteur = det ([ceux (1.3) ; ) de sommets']/2 ;

M = Area* (Eps*G*G' - [2.1.1 ; 1.2.1 ; 1.1.2] /12 +

[12*U (1) 2+2* *U (d'U (2) 2+U (3) 2+U (2) (3))+6*U (1) * (U (2) +U (3)),

*U de 3* (U (1) 2+U (2) 2) +U (3) 2+4*U (1) (2) +2*U (3) * (U (1) +U (2)),

*U de 3* (U (1) 2+U (3) 2) +U (2) 2+4*U (1) (3) +2*U (2) * (U (1) +U (3));

*U de 3* (U (1) 2+U (2) 2) +U (3) 2+4*U (1) (2) +2*U (3) * (U (1) +U (2)),

12*U (2) 2+2* *U (d'U (1) 2+U (3) 2+U (1) (3))+6*U (2) * (U (1) +U (3)),

*U de 3* (U (2) 2+U (3) 2) +U (1) 2+4*U (2) (3) +2*U (1) * (U (2) +U (3));

*U de 3* (U (1) 2+U (3) 2) +U (2) 2+4*U (1) (3) +2*U (2) * (U (1) +U (3)),

*U de 3* (U (1) 2+U (3) 2) +U (2) 2+4*U (1) (3) +2*U (2) * (U (1) +U (3)),

*U de 3* (U (2) 2+U (3) 2) +U (1) 2+4*U (2) (3) +2*U (1) * (U (2) +U (3)),

12*U (3) 2+2* *U (d'U (1) 2+U (2) 2+U (1) (2))+6*U (3) * (U (1) +U (2))]/60) ;

1 % de FEM3D de mthode d'lment fini tridimensionnelle pour Laplacian.

2 % d'initialisation

3 charge coordinates.dat ; coordonnes (: , 1) = [] ;

4 charge elements3.dat ; elements3 (: , 1) = [] ;

5 eval (' charge neumann.dat ; neumann (: , 1) = [] ; ',' neumann= [] ; ') ;

6 charge dirichlet.dat ; dirichlet (: , 1) = [] ;

7 FreeNodes=setdiff (1 : taille (coordonnes, 1), unique (dirichlet));

8 A = clairsem (taille (coordonnes, 1), taille (coordonnes, 1));

9 b = clairsem (taille (coordonnes, 1), 1) ;

10 % d'Assemble

11 pour j = 1 : taille (elements3,1)

12 A (elements3 (j :), elements3 (j :)) = A (elements3 (j :),

13 elements3 (j :)) + stima3 (coordonnes (elements3 (j :) :));

extrmit 14

15 % de forces de volume

16 pour j = 1 : taille (elements3,1)

17 b (elements3 (j :)) = b (elements3 (j :)) +

det 18 ([1.1.1.1 ; coordonne (elements3 (j :) :)'])

19 * f (somme (coordonnes (elements3 (j :) :))/4)/24 ;

extrmit 20

21 % d'tats de Neumann

22 pour j = 1 : taille (neumann, 1)

23 b (neumann (j :)) = b (neumann (j :)) +

24 normes (croix (coordonnes (neumann (j, 3) :)-

coordonnes (neumann (j, 1) :),

25 coordonnes (neumann (j, 2) :)- coordonnes (neumann (j, 1) :)))

26 * g (somme (coordonnes (neumann (j :) :))/3) /6 ;

extrmit 27

28 % d'tats de Dirichlet

29 u = clairsem (taille (coordonnes, 1), 1) ;

30 u (uniques (dirichlet)) = u_d (coordonnes (uniques (dirichlet) :));

31 b = b - A * u ;

32 % de calcul de la solution

33 u (FreeNodes) = A) (de FreeNodes, de FreeNodes \ b (FreeNodes) ;

34 % de reprsentation de graphique

showsurface 35 ([dirichlet ; neumann], coordonnes, pleines (u));

EMBED Equation.3

Par: GRARI et KORIKACHE7/28

_1238179781.unknown

_1238179834.unknown

_1238179863.unknown

_1238179872.unknown

_1238179887.unknown

_1238259025.unknown

_1238260171.unknown

_1238262344.unknown

_1238264218.unknown

_1238872298.unknown

_1238680641.unknown

_1238262540.unknown

_1238262903.unknown

_1238261993.unknown

_1238262231.unknown

_1238262232.unknown

_1238262076.unknown

_1238260192.unknown

_1238261916.unknown

_1238259261.unknown

_1238259781.unknown

_1238259832.unknown

_1238259471.unknown

_1238259260.unknown

_1238259259.unknown

_1238257605.unknown

_1238257609.unknown

_1238257613.unknown

_1238258012.unknown

_1238258443.unknown

_1238258647.unknown

_1238258442.unknown

_1238257615.unknown

_1238257614.unknown

_1238257611.unknown

_1238257612.unknown

_1238257610.unknown

_1238257607.unknown

_1238257608.unknown

_1238257606.unknown

_1238179889.unknown

_1238257604.unknown

_1238179888.unknown

_1238179879.unknown

_1238179882.unknown

_1238179885.unknown

_1238179886.unknown

_1238179883.unknown

_1238179880.unknown

_1238179881.unknown

_1238179877.unknown

_1238179878.unknown

_1238179875.unknown

_1238179876.unknown

_1238179873.unknown

_1238179874.unknown

_1238179868.unknown

_1238179870.unknown

_1238179871.unknown

_1238179869.unknown

_1238179865.unknown

_1238179867.unknown

_1238179866.unknown

_1238179864.unknown

_1238179853.unknown

_1238179857.unknown

_1238179860.unknown

_1238179861.unknown

_1238179862.unknown

_1238179858.unknown

_1238179859.unknown

_1238179855.unknown

_1238179856.unknown

_1238179854.unknown

_1238179848.unknown

_1238179850.unknown

_1238179852.unknown

_1238179851.unknown

_1238179849.unknown

_1238179843.unknown

_1238179846.unknown

_1238179847.unknown

_1238179844.unknown

_1238179845.unknown

_1238179837.unknown

_1238179839.unknown

_1238179841.unknown

_1238179842.unknown

_1238179840.unknown

_1238179838.unknown

_1238179835.unknown

_1238179836.unknown

_1238179808.unknown

_1238179821.unknown

_1238179825.unknown

_1238179832.unknown

_1238179833.unknown

_1238179830.unknown

_1238179831.unknown

_1238179828.unknown

_1238179829.unknown

_1238179826.unknown

_1238179823.unknown

_1238179824.unknown

_1238179822.unknown

_1238179814.unknown

_1238179817.unknown

_1238179819.unknown

_1238179820.unknown

_1238179818.unknown

_1238179815.unknown

_1238179810.unknown

_1238179812.unknown

_1238179813.unknown

_1238179811.unknown

_1238179809.unknown

_1238179798.unknown

_1238179804.unknown

_1238179806.unknown

_1238179807.unknown

_1238179805.unknown

_1238179800.unknown

_1238179802.unknown

_1238179803.unknown

_1238179801.unknown

_1238179799.unknown

_1238179794.unknown

_1238179796.unknown

_1238179797.unknown

_1238179795.unknown

_1238179788.unknown

_1238179791.unknown

_1238179792.unknown

_1238179793.unknown

_1238179789.unknown

_1238179785.unknown

_1238179787.unknown

_1238179786.unknown

_1238179783.unknown

_1238179784.unknown

_1238179782.unknown

_1238179763.unknown

_1238179771.unknown

_1238179777.unknown

_1238179779.unknown

_1238179780.unknown

_1238179778.unknown

_1238179773.unknown

_1238179775.unknown

_1238179776.unknown

_1238179774.unknown

_1238179772.unknown

_1238179767.unknown

_1238179769.unknown

_1238179770.unknown

_1238179768.unknown

_1238179765.unknown

_1238179766.unknown

_1238179764.unknown

_1238179740.unknown

_1238179751.unknown

_1238179755.unknown

_1238179758.unknown

_1238179761.unknown

_1238179762.unknown

_1238179760.unknown

_1238179756.unknown

_1238179757.unknown

_1238179753.unknown

_1238179754.unknown

_1238179752.unknown

_1238179745.unknown

_1238179748.unknown

_1238179749.unknown

_1238179750.unknown

_1238179746.unknown

_1238179743.unknown

_1238179744.unknown

_1238179741.unknown

_1238179736.unknown

_1238179738.unknown

_1238179739.unknown

_1238179737.unknown

_1238179734.unknown

_1238179735.unknown

_1238179733.unknown