Académique Documents
Professionnel Documents
Culture Documents
MEFLAB est un ensemble de scripts1 MATLAB permettant dillustrer les diffrents chapitres
du cours lments finis, cet ensemble est ouvert et volutif.
Vous pouvez lutiliser tel quel comme un applicatif du cours et ne traiter que les exemples
proposs dans les diffrents chapitres, il est alors inutile de lire ce document.
Vous pouvez, partir de ltude des scripts proposs, dvelopper vos propres scripts pour
dautres problmes, que ceux abords dans le cadre de ce cours.
Ce document vous prsente : Analyse des scripts lments finis
Description des scripts de donnes
Le programme principal MEFLAB
Dfini les chemins daccs aux rpertoires
Lorganisation des rpertoires est la suivante :
[Dessin]
Fonctions d'affichage graphique
[Elements] Fonctions lmentaires (matrices Ke Me Fe)
[Generaux] Scripts lments finis de rsolution du problme.
[Sol_analytique] Solutions analytiques connues (comparaison)
[Data]
Jeux de donnes relatifs au cours et exercices proposs
[Work]
Pour vos jeux de donnes personnels
[Mailleur] Interface avec GMSH (maillage et post-traitement)
Script de donnes
Fonctions Mise en donnes
Rsolution
Post-traitement
Assemblage et CL
Rsolution
Fichier M-file nom.m , contenant une squence dinstructions MATLAB qui sera excute en tapant
nom dans la fentre de commande de MATLAB
nddln
nnod
nddlt
nelt
nnode
ndim
ncld
:
:
:
:
:
:
:
Coord(nnod,ndim) :
Connec(nelt,nnode):
Typel(nelt)
:
Nprop(nelt)
:
Prop(nprop,ncar) :
Ncl(nddlt)
:
Vcl(nddlt)
:
F(nddlt)
:
Ces variables globales sont communes tous nos scripts lments finis. Ces variables
globales sont dfinies par un pr-processeur . Cest le premier rle du script de mise en
donnes du problme (lanalyse de ce script est propose dans le paragraphe suivant).
Le type Typel caractrise le type d'lment utilis pour rsoudre le problme physique
EF-treillis, EF-portique, EF-lasticit plane, EF-thermique, ext
Le tableau de proprits Prop dpendra bien entendu du type des lments utiliss
Pour les problmes de physique Vcl reprsente les valeurs du champ impos et F :
les valeurs des flux imposs.
1
Les solutions analytiques de ces problmes de flexion sont proposes sur le site :
https://pedagogie.ec-nantes.fr/meefi/Vibra/vibra.htm
2
ddl : degrs de libert ce sont les variables nodales du modle lments finis
Analyse:
Lassemblage des matrices lmentaires ncessite de localiser la position des ddl de llment
dans le vecteur global. La boucle interne consiste placer dans le vecteur loce la position
des ddl de chaque nud de llment.
Exemple
Soit llment 7-9 dun treillis 2D
Les variables lmentaires (ddl) sont :
Qui occupent respectivement les positions
u7
[13
v7
u9
v9
14 17 18] = loce
poutre_keme
Q4_ep
TR_ep
Q4_th
On commence par sommer les charges nodales donnes (variable globale F) avec le vecteur
des charges rparties sur les lments (variable Fg).
L'algorithme propos ici est bas sur une rsolution par bloc du systme dquations global,
c'est la mthode vue en cours et utilise en TD.
[ K11 ]
[ K 21 ]
[ K12 ] {U i } = {Fd }
[ K 22 ] {U d } {Fi }
Le premier bloc d'quations nous donne le vecteur des dplacements nodaux inconnus:
En reportant dans le second nous obtenons le vecteurs des efforts de liaison inconnus:
{Fi } =
Nous modifions dans un premier temps le vecteur du chargement en tenant compte des
dplacements imposs. Notez que cette opration est inutile si tous les dplacements imposs
sont nuls.
Variables globales
Nddlt : nombre de degr de libert total
Ncl
: vecteur de dimension nddlt qui vaut 1 si le ddl est impos
Vcl
: vecteur de dimension nddlt des valeurs des dplacements imposs
La boucle suivante remonte le systme dquations pour supprimer les lignes et les colonnes
de K et les lignes de F permettant ainsi dobtenir le systme rduit (ou premier bloc du
systme global). Avant cette opration nous stockons dans une matrice Kr les lments de K
qui seront utiles pour calculer les ractions aux appuis (second bloc du systme global).
Comme vous pouvez le voir lintrt de MATLAB est de pouvoir manipuler globalement les
matrices, ce qui nous donne une programmation simple et efficace.
Remarque :
Pour le script vibrations il suffit dliminer les lignes et colonnes de K et M.
Il existe dautres mthodes pour prendre en compte les conditions aux limites en dplacement
sans avoir rduire le systme dquations ce qui vite ensuite davoir rintroduire les
dplacements imposs dans le vecteur solution. La plus efficace est celle du terme unit sur la
diagonale voir (G. Dhatt - G. Touzot & E Lefrancois : mthode des lments finis. Hermes
Lavoisier, 2005).
Exercice :
tudier l'algorithme de la mthode du terme unit sur la diagonale propos par Dhatt
& Touzot, puis programmer le script correspondant.
Correction : regardez le script statique.
La rsolution Sol =K\ F en statique
Ayant une matrice symtrique dfinie positive la mthode utilise est celle de Choleski.
Attention si vous laissez des modes rigides le programme affichera un message derreur
indiquant que la matrice est singulire, cest donc vous de modifier le jeu de donnes pour
liminer les modes rigides de la structure.
Pour calculer les n premires frquences et modes propres de vibrations dune structure
nous aurions les commandes MATLAB suivantes :
[modes,omega] = eigs(K,M,n,'sm');
f = sqrt(diag(omega))/(2*pi);
Le script se termine en replaant les valeurs imposes dans le vecteur U et en calculant les
ractions (flux) inconnus correspondants.
Sauf dvelopper la bibliothque des programmes ou lments finis proposs vous n'aurez
pas modifier ces scripts pour utiliser MEFlab. L'tude de ces scripts vous permettra
d'approfondir vos connaissances en EF et de vous perfectionner dans l'utilisation de MATLAB.
Post traitement
Le post traitement effectue une mise en forme des rsultats (formats d'impression) et liste les
variables afficher.
Pour les problmes de mcanique
En statique : trac de la dforme fonction plotdef et listing des dplacements et
des efforts nodaux.
En dynamique : trac des modes de vibrations fonction plotmodes
En statique le calcul des contraintes sur les lments est systmatiquement effectu car
comme vous l'avez vu en cours l'analyse de ces rsultats nous donne une information
sur la qualit de notre modle numrique. Exemple, la fonction barre_stress
affiche leffort normal calcul dans llment barre.
Comparaison avec une solution analytique
Lorsqu'elle existe il peut tre intressant de programmer la solution analytique du problme
pour la comparer au modle lments finis, c'est ce qui est fait entre autre pour:
barre_compar : colonne du chapitre II.
poutre_compar : poutre tudie dans l'exercice III-1.
poutre_modes : modes de vibrations d'une poutre.
Vous pouvez donc complter les lignes du script de donnes pour programmer, partir des
rsultats du modle lments finis, les calculs que vous devez effectuer pour rpondre aux
objectifs de votre tude.
Ci-dessous les lignes de post-traitement d'un script treillis
%----- format d'impression des vecteurs
form =' %8.3e
%8.3e
%8.3e '; format = [form(1:8*nddln),' \n'];
disp(' ');disp('------- dplacements nodaux sur (x,y,z) ----------');
fprintf(format,U)
plotdef(U)
%----- post-traitement
disp(' ');disp('------- Efforts aux appuis ----------');
fprintf(format,R(:,1));
[Rx,Ry,Rz] = feval('resultante',R);
%----- rsultantes et ractions
disp(' ');
fprintf('La rsultante des charges nodales
en (x,y,z) est : %8.3e
\n',Fx,Fy,Fz);
fprintf('La rsultante des charges rparties en (x,y,z) est : %8.3e
\n',-Rx-Fx,-Ry-Fy,-Rz-Fz);
fprintf('La rsultante des efforts aux appuis en (x,y,z) est : %8.3e
\n',Rx,Ry,Rz);
%8.3e
%8.3e
%8.3e
%8.3e
%8.3e
%8.3e
Question :
Que pensez-vous du calcul des charges rparties ?
Rponse
Donnes du problme
Cette premire partie du script sert dfinir les valeurs des variables globales, donnes du
modle lments finis, qui sont utilises dans les scripts EF. Ce sont ces lignes qu'il faut
modifier pour les adapter la structure que vous souhaitez tudier. Regardons l'exemple 1
propos dans le chapitre sur les treillis.
EFbarre_chapII_1
Coord=[ 0 , 0 ; ...
2*h , 0 ; ...
h , h ];
[nnod,ndim]=size(Coord);
nddln=2; nddlt=nddln*nnod;
Connec=[ 1 , 2 ; ...
1 , 3 ; ...
2 , 3 ];
[nelt,nnode]=size(Connec);
% dimension du tableau
% Nombre de ddl par nuds et total
% dimension du tableau
Ce calcul est bas sur l'quilibre global de la structure, il faudra donc vrifier que le rsultat affich
correspond effectivement au chargement appliqu.
Typel = 'barre_ke';
% dfinition du type des lments
for i=1:nelt
Typel = str2mat('barre_ke',Typel);
end
% dfinition des caractristiques mcaniques
Nprop=[1;1;1];
% pour chaque lment N de la proprit
Prop=[ 100*sqrt(2) 0 0];
% tableau des diffrentes valeurs de ES fx fy
% dfinition des CL en dplacement
% N du nud, type sur u et v (1 ddl impos ,
0 ddl libre)
CL=[ 1 , 1 , 1 ; ...
2 , 0 , 1 ];
Ncl=zeros(1,nddlt);
Vcl=zeros(1,nddlt);
%Vcl(2)=1;
for i=1:size(CL,1)
% Variables globales associes
for j=1:nddln
if CL(i,1+j)==1 Ncl(1,(CL(i,1)-1)*nddln+j)=1; end
end
end
% dfinition des charges nodales
Charg=[ 3 40. 0 ];
% N du noeud , Fx , Fy
F=zeros(nddlt,1);
% vecteur sollicitation
for iclf=1:size(Charg,1)
noeud=Charg(iclf,1);
for i=1:nddln
F((noeud-1)*nddln+i)=F((noeud-1)*nddln+i) + Charg(iclf,i+1);
end
end
Il est simple de modifier cette partie du script pour crer un nouveau jeu de donnes. On peut
ventuellement programmer le calcul de la position des nuds et du tableau de connectivit
des lments si le maillage est important.
Exercice :
Effectuez la mise en donnes de la structure suivante (en acier E=210000 Mpa)
2m
3m
G
yo
S1 = 49cm
G
xo
S1 = 49cm
F=950KN
1.5 m
S 2 = 25cm 2
Chargement 1 :
F uniquement
Chargement 2 : Poids propre
g = 9.81 m/s2 3
= 7800 Kg / m
Pour allez plus loin crivez le script permettant d'afficher les rsultats du chargement 2
(conditions vide) puis d'y ajouter le chargement 1 (conditions normales) et les conditions
extrmes : poids propres plus F= 1425KN de chargement.
Correction : envoyez-moi, par mail, votre script de donnes pour correction.
En gnral un programme lments finis utilisera des outils de gnration de maillage pour
raliser ce type de jeu de donnes. Dans le document interface GMSH nous prsentons
comment utiliser les scripts du dossier [Mailleur] pour raliser le maillage et le post
traitement sous GMSH.
Bilan
Si vous avez lu en dtail cette prsentation et trait les diffrents exercices proposs vous avez
compris le fonctionnement de lapplication MEFlab, et le principe dutilisation des diffrents
scripts proposs.
A vous de jouer.
Si vous effectuez de nouveau dveloppement sous MEFlab n'hsitez pas m'en faire part pour
les mettre en ligne et les partager.