Académique Documents
Professionnel Documents
Culture Documents
MEF 1D
P1&P2
Matlab Mthode des
Elments Finis - 2016
NAFAE Soukaina
Sommaire
Introduction : ...................................................................................................................... 2
MEF P1 :............................................................................................................................... 3
Maillage :.......................................................................................................................... 3 Page | 1
Les fonctions de forme Phi1 et Phi2 : .............................................................................. 3
Calcule des Matrices lmentaires : ................................................................................ 4
Calcule des int_phi : ......................................................................................................... 6
Gnration des matrices lmentaires : ......................................................................... 6
Assemblage : .................................................................................................................... 7
Rsolution : ...................................................................................................................... 8
Main : ............................................................................................................................... 9
MEF P2............................................................................................................................... 10
Maillage P2 : .................................................................................................................. 10
Les fonctions de formes : ............................................................................................... 10
Calcule des matrices lmentaires : .............................................................................. 11
Calcule des int_Phi : ....................................................................................................... 13
Gnrations des matrices lmentaires :...................................................................... 14
Gnrations da la matrice du second membre : ........................................................... 14
Assemblage : .................................................................................................................. 15
Rsolution : .................................................................................................................... 16
Linterface graphique ........................................................................................................ 17
Variables dentrs : ........................................................................................................ 18
Conditions des boites de dialogues : ............................................................................. 19
Calcule : .......................................................................................................................... 20
Initialisation : ................................................................................................................. 22
Conclusion ......................................................................................................................... 22
Introduction :
La mthode des lments-finis (MEF) est une mthode dapproximation
numrique de solutions de problmes aux limites statiques ou dynamiques tels que :
diffusion thermique mcanique des milieux continus (solides et fluides) Page | 2
lectromagntisme mais en fait, absolument tous les problmes dquations aux
drives partielles (EDP) aux limites. Il sagit, comme dans toutes les mthodes
numriques, de trouver une approximation discrte. Pour faire bref, dun problme
diffrentiel aux limites linaire, on trouve une formulation variationnel associes
quivalente, dont on calcule une approximation de la solution en projetant sur un
espace de dimension finie, ce qui revient rsoudre au final un systme linaire.
Lappellation lments finis vient de la dcomposition du domaine dtude en
lments : ils sont souvent reprsents par un maillage.
Maillage :
%----------------------------
%Gnre un maillage de type P1
% X la table des coordonnes
% T la table de connectivit moyennant les indices
%----------------------------
n = floor((b - a)/h) + 1;
X = a + h*(0:n-1)';
[~, I] = sort(X);
T = [ I(1:n-1), I(2:n)];
Dans La MEF, on commence dabord avec le maillage, cette fonction nous gnre
le maillage de P1, elle prend comme entrer le pas et les bords et elle retourne X, la
table des coordonnes, et T la table de connectivit.
Ces codes retournent galement les drives des fonctions de forme moyennant la Page | 4
commande de Matlab Polyder.
Le code en dessus nous permet de calculer les trois matrices lmentaires qui
sont sous la formes suivantes :
1 1 2 1
= _1 = [ ]
2 1 2 2
1 1 1 2
= _1 = [ ]
1 2 2 2
1 1 2 1
_1 = [ ]
1 2 2 2
Ces codes nous permettent de calculer les trois matrices lmentaires, on fait
dabord appel aux fonctions de formes Phi, puis on construit des matrices ou on stock
les lments ncessaires pour le calcul des intgrales par la suite. On utilise la
quadrature de Simpson pour calculer les intgrales.
Quadrature de Simpson :
+
() = () = [() + 4 ( ) + ()]
6 2
Calcule des int_phi :
function y = int_phi2(f,x1,x2)
%calcule l'intgrale sur l'lment Ti de f*phi1
%moyennant la quadrature de Simpson
% Ti Page | 6
% |--------|--------|
% x1 xm x2
%
xm=(x2+x1)*0.5;
%
y=(x2-
x1)/6*(f(x1)*phi2_P1(x1,x1,x2)+4*f(xm)*phi2_P1(xm,x1,x2)+f(x2)*phi2_P1
(x2,x1,x2));
end
function y = int_phi1(f,x1,x2)
%calcule l'intgrale sur l'lment Ti de f*phi1
%moyennant la quadrature de Simpson
% Ti
% |--------|--------|
% x1 xm x2
%
xm=(x2+x1)*0.5;
%
y=(x2-
x1)/6*(f(x1)*phi1_P1(x1,x1,x2)+4*f(xm)*phi1_P1(xm,x1,x2)+f(x2)*phi1_P1
(x2,x1,x2));
end
Ces deux codes nous permettent de calculer les intgrales sur les lments Ti de f*Phi.
elemKi=alpha*A_P1(x1,x2)+beta*B_P1(x1,x2)-gama*G_P1(x1,x2);
end
1
= [ ]
2
Assemblage :
K = zeros(n);
F = zeros(n,1);
Rsolution :
clear
clc
Page | 9
a=-pi/2;
b=pi/2 ;
h=0.1;
alpha=1;
beta=0;
ue=@(x) cos(x);
f=@(x) cos(x);
[X, T] = MaillageP1(a, b, h);
[U] = EF_P1(alpha,beta,gama,f,a,b,h);
% Post-traitement
%%%%%% comparaison graphique
figure('name', 'Comparaision: solutions exacte et approche '); fplot(ue,
[min(X), max(X)], 'b'); hold on; plot(X,U, 'r.-');
%%%%%% Analyse d'erreur
erreur=zeros(size(X,1),1);
for i=1:size(X,1)
erreur(i)=U(i)-ue(a+(i-1)*h);
end
figure('name', 'analyse erreur'); plot(X,erreur, 'r-o');
ylabel('erreur');
xlabel('noeuds');
Maillage P2 :
[~, I] = sort(X);
T = [ I(1:2:(2*n-3)), I(2:2:2*(n-1)), I(3:2:(2*n-1))];
end
Ce maillage nous donne comme sortie la table de connectivite avec lajout dun
point intermdiaire dans chaque lment Ti, et deux tables de cordonnes X1 et X, X
contient tous les nuds tandis que X1 ne contient que les extrmits des Ti.
= _2 = 1 2 2 2 3 2
1 3 2 3 3 3
[ ]
Page | 13
1 1 1 2 1 3
= _2 = 1 2 2 2 3 2
1 3 2 3 3 3
[ ]
1 1 1 2 1 3
_2 = 1 2 2 2 3 2
1 3 2 3 3 3
[ ]
function y = int_phi1_P2(f,x1,x2,x3)
%calcule l'intgrale sur l'lment Ti de f*phi1
%moyennant la quadrature de Simpson
% Ti
% |--------|--------|
% x1 xm x2
%
xm=(x3+x1)*0.5;
%
y=(x3-
x1)/6*(f(x1)*phi1_P2(x1,x1,x2,x3)+4*f(xm)*phi1_P2(xm,x1,x2,x3)+f(x3)*p
hi1_P2(x3,x1,x2,x3))
end
function y = int_phi3_P2(f,x1,x2,x3)
%calcule l'intgrale sur l'lment Ti de f*phi1
%moyennant la quadrature de Simpson
% Ti
% |--------|--------|
% x1 xm x2
%
xm=(x3+x1)*0.5;
%
y=(x3-
x1)/6*(f(x1)*phi3_P2(x1,x1,x2,x3)+4*f(xm)*phi3_P2(xm,x1,x2,x3)+f(x3)*p
hi3_P2(x3,x1,x2,x3));
end
function y = int_phi2_P2(f,x1,x2,x3)
%calcule l'intgrale sur l'lment Ti de f*phi1
%moyennant la quadrature de Simpson
% Ti
% |--------|--------|
% x1 xm x2
%
xm=(x3+x1)*0.5;
%
y=(x3- Page | 14
x1)/6*(f(x1)*phi2_P2(x1,x1,x2,x3)+4*f(xm)*phi2_P2(xm,x1,x2,x3)+f(x3)*p
hi2_P2(x3,x1,x2,x3));
end
= 2
3
[ ]
Page | 15
Assemblage :
K = zeros(n);
F = zeros(n,1);
Page | 16
Rsolution :
Pour crer une interface sur Matlab on tape Guide sur la commande window, une
interface .fig saffiche ou on peut ajouter des boutons, des graphs, des choix etc. Pour Page | 17
chaque lment ajout on doit modifier son tag pour faciliter la manipulation du code et
viter lambigut lutiliser aprs. Une fois on enregistre le .fig un code est gnrer.
Variables dentrs :
On fait appel aux tag ajoutes travers la fonction suivante pour recevoir les
lments entres par lutilisateur de linterface :
On a essay de contrler les donnes entres par lutilisateur par des conditions pour ne
pas avoir des donnes errones, par exemple sur lintervalle [a, b], a doit tre plus petit que b
(a<b) : Page | 19
if(b<=a)
pos_size = get(handles.figure1,'Position');
Le script est pour appeler la boite de dialogue suivante aprs quon appuis sur le
bouton Valider :
Pour quun bouton effectue la fonction dsire, On fait appel aux codes dj
raliss sur Matlab.
[U2] = EF_P2(alpha,beta,gama,f,a,b,h);
S(:,2)=U2;
Page | 21
En appuient sur Comp Graph P1&P2 une comparaison graphique des deux
graphes saffiche, mais ce nest pas vident de voir les erreurs entre les 2
approximation.
Aprs quon appuie sur Erreur P1&P2 , il est plus claire la diffrence derreurs
entre les 2 approximations (avec un tableau affichant les valeurs des erreurs P1 sur la
1ere ligne et les valeurs des erreurs de P2 sur la 2eme ligne :
Initialisation :
Pour initialiser les donne et remettre le tous comme on a ouvri linterface pour la
1ere fois, un bouton de Reset est programm faire a :
Page | 22
clear; %Vider la memoir des variables
clc; %Vider la fentre des commande si elle est active
cla; %Vider les axes daffichage des graphes
set(findobj(0,'style','edit'),'string',' '); %Vider les valeur dentr
set(findobj(0,'style','text','tag','equation'),'string',' ');
%vider le panel daffichage de equation entre
set(findobj(0,'tag','val'),'data',0); % Vider le tableau des valeurs
set(findobj(0,'tag','erg'),'data',0); % Vider le tableau des erreurs
Le reste du code de linterface est dans les documents joints sous format
(.m)
Conclusion