Vous êtes sur la page 1sur 12

1

Universit A. Mira, Bjaa


Facult des Sciences & Sciences de lIngnieur
Dpartement de GnieCivil,5me Anne.
Module : Mthode des Elments Finis (MEF)
A. SEGHIR
CHAPITRE 2
ELEMENT BARRE
2.1 Equation gouvernante
Llment barre est utilis dans les assemblages de barres ou de tiges travaillant en traction ou compression. On
les trouves surtout en charpente mtallique et dans les systmes treillis.
Pour formuler cette lment, on considre une barre de section A de
longueur L soumise une traction P(x) variant de P
0
P
L
.
Une portion infinitsimale de longueur dx situe la coordonne x le
long de la barre est en quilibre dynamique sous le systme de forces
suivant :
=

m F
2
2
) (
t
u
dx A P dx
x
P
P

=
(

+ (2.1)
Dans cette expression u dsigne le dplacement longitudinal, x est la cordonne et t le temps.
Si on dsigne par E le module dlasticit du matriau avec lequel est faite la barre, la loi de Hooke donne la
contrainte axiale en fonction de la dformation longitudinale :
x x
E
A
P
= = (2.2)
La dformation est lie au dplacement par la drive par rapport x :
x
u
x

= (2.3)
En substituant (2.3) dans (2.2) on obtient lexpression de la traction P en fonction du dplacement u :
x
u
EA P

= (2.4)
Do lquation diffrentielle de lquilibre de llment dx qui sobtient en remplaant (2.4) dans (2.1) :
2
2
) (
t
u
A
x
u
EA
x

(2.5)
Les conditions aux limites de cette quation dpendent de lencastrement ou des dplacements imposs pour u,
et du chargement aux nuds pour les drives de u (Equation 2.4).
2.2 Formulation de llment
En prenant u comme fonction de pondration, la formulation variationnelle forte de lquation (2.5) scrit :
0 )] ( [
0
2
2
=

dx
t
u
A u
x
u
EA
x
u
L
(2.6)
La formulation faible scrit en prenant lintgration par parties du premier terme :
0
0
0
2
2
0
=
(


L
L L
x
u
AE u dx
t
u
A u dx
x
u
EA
x
u
(2.7)
Le dernier terme nest que la diffrence des forces appliques aux extrmits de la barre : u|
x=L
P
L
u|
x=0
P
0
.
P+ dx
x
P

dx
P

P
0
P
L
x

Fig. 2.1 : Equilibre lmentaire


2
Pour la discrtisation de lquation (2.7) en prends des fonctions de forme linaires avec x
1
= 0 et x
2
= L. Les
expressions de ces fonctions et leurs drives sont :
> < = >

=< x x L
L L
x
L
L x
x N
1
0
0
0
) ( ; > < = 1 1
1
) (
L
x dN (2.8)
Ainsi en remplaant pour les diffrent oprateurs on obtient :
)
`


> =<
L x
L x L
u u u
L
/
/ ) (
0

)
`

> =<

L
L
u u u
x
u
L
/ 1
/ 1
0
(2.9a)
)
`

> =<
=
0
1
0
0
L
x
u u u
)
`

> =<
=
1
0
0 L
L x
u u u (2.9b)
)
`

> =<

L
u
u
L L
x
u
0
/ 1 / 1
)
`

> < =

L
u
u
x x L
L t
u
& &
& &
0
2
2
1
(2.9c)
o : u& & reprsente la seconde drive par rapport au temps des dplacements ; c'est--dire lacclration.
Avec ces expressions lquation intgrale faible (2.7) devient aprs simplification de > <
L
u u
0
:

)
`

=
)
`

)
`

)
`


+
)
`

> <
)
`


L L
L L
L
P
P
u
u
dx
x
x L
L
A
x
x L
L u
u
dx L L EA
L
L
0 0
0 0
0
1 1
/ 1 / 1
/ 1
/ 1
& &
& &
(2.10)
soit sous forme matricielle :
e e e e e
F U M U K = +
& &
, avec :
(


=
(


= > <
)
`

=

1 1
1 1
1 1
1 1
1
/ 1 / 1
/ 1
/ 1
0
2
0
L
EA
dx EA
L
dx L L EA
L
L
K
L L
e
(2.12)
(


=
(


= > <
)
`


=

2 1
1 2
6 ) (
) ( ) ( 1 1
0
2
2
2
0
AL
dx
x x L x
x L x x L
L
A
dx x x L
L
A
x
x L
L
M
L L
e
(2.13)
)
`

=
)
`

)
`

=
L
L e
P
P
P P F
0
0
0
1
1
0
(2.14)
Les matrices lmentaires K
e
et M
e
sont appeles respectivement matrice de rigidit et matrice masse. F
e
est le
vecteur chargement de llment. Ces expressions sont valables si la section A, la densit et le module de
Young E ne varient pas le long de toute la barre. Dans le cas o ces quantits varient, il est possible de
subdiviser la barre en plusieurs lments et de prendre des valeurs moyenne pour chaque llment.
Lexpression de la matrice masse telle quelle est obtenue en (2.13) est appele masse cohrente ou rpartie. Il
est possible de concentrer la masse de llment en ses extrmit. On attribue chacun des deux nuds la
moiti de la masse totale de llment soit :
(


=
1 0
0 1
2
AL
M
c
e
(2.15)
2.3 Exemple dune tige encastre
Une tige de longueur L = 3m et de section A = 25cm
2
est encastre une de ses extrmit et soumise une
tension P = 250KN lautre extrmit.
La densit et le module de Young du matriau de la tige sont :
=7800 Kg/m
3
, E = 210 000 MPa.
Les matrices masse et rigidit ainsi que le vecteur chargement sont :
(


=
1 1
1 1
10 175
6
K N /m ;
(

=
1 0
0 1
25 . 29 M Kg ;
)
`

=
4
10 25
0
e
F N
Compte tenue de la condition u(0) = 0. La rsolution donne u(L) = 1.4mm et une priode T =0.0026 sec.
250 KN
Fig. 2.2 : Barre encastre


3
2.4 Structures planes treillis
Les structures treillis sont constitues par des assemblage de barres lies par des joints de telle sorte que le
chargement extrieur soit repris uniquement par des forces axiales dans les barres. La figures 2.3 montre un
exemple de systme treillis compos dun assemblage de 13 barres et soumis un chargement de deux forces.









Les barres composant ce systme subissent deux dplacements leurs extrmits ; une composante horizontale
et une autre verticale. Cependant, seule le dplacement axiale la barre donne naissance la force axiale. Ainsi,
les matrices lmentaires dune barres bidimensionnelle (fig.2.4) deviennent des matrices 44 puisque le
vecteur des dplacements lmentaires devient :
U
e
= < u
1
v
1
u
2
v
2
>
T
(2.16)
Toutes les composantes de la matrice de rigidit associes la composante v du dplacement sont nulles. Celles
de la matrice masse, par contre, ne le sont pas toutes. Les effets de linertie existes aussi lorsque les extrmits
de la barre se dplacent dans la direction orthogonale, seulement, il ny aucun couplage entre les deux
composantes u et v du dplacement. Les deux matrices scrivent ainsi :
(
(
(
(

=
0 0 0 0
0 1 0 1
0 0 0 0
0 1 0 1
L
AE
K
e
;
(
(
(
(

=
2 0 1 0
0 2 0 1
1 0 2 0
0 1 0 2
6
AL
M
e
(2.17)
La matrice masse concentre scrit de la mme manire quen (2.15) en attribuant la moiti de la masse de
llment pour toutes les composantes du dplacement :
(
(
(
(

=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
2
AL
M
e
(2.18)
Les expressions des matrices lmentaires telles quelles sont crites par les quations (2.17) et (2.18) sont
valables dans un systme daxes confondu avec laxe longitudinal de llment barre. Dans les cas pratiques, la
barre peut tre inclin par rapport aux axes de rfrence. Il convient alors de faire une rotation daxes pour
revenir aux axes de la barres.
La figure 2.5 montre une barre incline dun angle par
rapport laxe horizontal du repre (oxy). On note (u,v) les
composantes du dplacement dans ce systme et (u,v) celles
du dplacement dans le repre (oxy) li la barre. On note
aussi R la matrice de rotation de repre qui permet de faire le
passage du systme (oxy) au nouveau systme (oxy). On peut
ainsi crire les relations suivantes :
)
`

=
)
`

1
1
1
1
v
u
c s
s c
v
u
;
)
`

=
)
`

2
2
2
2
v
u
c s
s c
v
u

avec c = cos() et s = sin().
Fig. 2.3 : Systme treillis

F
1
F
2
u
1
v
1
u
2
v
2
L

EA

Fig. 2.4 : Elment barre bidimensionnel

o
u
1
v
1
u
2
v
2

u
1
v
1

u
2
v
2

x

y

y
x
o

Fig. 2.5 : Elment barre inclin


4
Soit avec la totalit des vecteurs des dplacements lmentaires U
e
et U
e
:

(
(
(
(

2
2
1
1
2
2
1
1
0 0
0 0
0 0
0 0
v
u
v
u
c s
s c
c s
s c
v
u
v
u
;
e e
U R U = (2.19)
Il reste maintenant de lier le chargement aux dplacements dans le repre(oxy), on a la relation dans le repre li
la barre
e e e
U K F = . Le relation entre les deux vecteurs forces dans les deux repres est :
e e
F R F = , ou bien :
e
T
e
F R F = ; avec : Fe = < F
x1
F
y1
F
x2
F
y2
>
T
(2.20)
do il en rsulte :
e e
T
e
U K R F =
e e
T
U R K R =
e e
U K = (2.21)
On obtient ainsi la relation entre les expressions de la matrice de rigidit dans les deux repres :
R K R K
e
T
e
= (2.22)
Soit :
(
(
(
(
(





=
(
(
(
(

(
(
(
(

(
(
(
(

=
2 2
2 2
2 2
2 2
0 0
0 0
0 0
0 0
0 0 0 0
0 1 0 1
0 0 0 0
0 1 0 1
0 0
0 0
0 0
0 0
s cs s cs
cs c cs c
s cs s cs
cs c cs c
L
AE
c s
s c
c s
s c
L
AE
c s
s c
c s
s c
K
e
(2.23)

Contrairement la matrice de rigidit, la matrice masse cohrente ou concentre reste inchange la rotation de
repre. En effet du point de vue de la physique, la masse est indpendante de lorientation du repre.

Le script MATLAB qui permet de faire les vrifications par calcul des matrice lmentaires est :

%------------------------------------------
% Matrices lmentaires de l'lment barre
%
% A. Seghir, 10/08/04
%------------------------------------------
clear % efface toutes les variables dans la mmoire globale
clc % efface la fentre des commandes
syms s c real % dclare les variables symboliques

R = [ c s 0 0 % matrice de rotation
-s c 0 0
0 0 c s
0 0 -s c
]

K = [ 1 0 -1 0 % matrice de rigidit dans le repre de la barre
0 0 0 0 % le facteur A*E/L est intentionnellement omis
-1 0 1 0
0 0 0 0
]

M = [ 2 0 1 0 % matrice masse dans le repre li la barre
0 2 0 1 % ale facteur rho*A*L/6 est aussi omis
1 0 2 0
0 1 0 2
]

Ke = R' * K * R % matrice de rigidit dans le repre global (oxy)
Me = R' * M * R % matrice masse dans le repre global (oxy)

5
2.5 Exemple de deux barres
La figure 2.6 montre une structure compose de deux barres encastres leurs extrmits suprieures et
assembles leurs extrmits infrieures avec un joint rotule auquel est suspendu un poids P = 3400 KN.
Les barres ont les mmes caractristiques :
Longueur : L = 1 m; section : A = 25 cm
2


et module de Young E = 210 000 MPa.
Langle lencastrement est : = 36.87.
Ce qui donne pour la barre N 1 : c = 0.8 et s = 0.6
Et le premier systme lmentaire : Ke
1
Ue
1
= Fe
1

(
(
(
(

1
2
1
2
1
1
1
1
1
2
1
2
1
1
1
1
6
36 . 0 48 . 0 36 . 0 48 . 0
48 . 0 64 . 0 48 . 0 64 . 0
36 . 0 48 . 0 36 . 0 48 . 0
48 . 0 64 . 0 48 . 0 64 . 0
10 525
e
y
e
x
e
y
e
x
e
e
e
e
F
F
F
F
v
u
v
u

En faisant intervenir le vecteur dplacent de tout les nuds (de 1 3) le systme devient :

(
(
(
(
(
(
(

1
2
1
2
1
1
1
1
3
3
2
2
1
1
6
0
0
36 . 0 48 . 0 0 0 36 . 0 48 . 0
48 . 0 64 . 0 0 0 48 . 0 64 . 0
0 0 0 0 0 0
0 0 0 0 0 0
36 . 0 48 . 0 0 0 36 . 0 48 . 0
48 . 0 64 . 0 0 0 48 . 0 64 . 0
10 525
e
y
e
x
e
y
e
x
F
F
F
F
v
u
v
u
v
u

Pour la barre N2 : c = 0.8 et s = 0.6, le systme avec toutes les composantes du vecteur dplacements est :

(
(
(
(
(
(
(

2
2
2
2
2
1
2
1
3
3
2
2
1
1
6
0
0
36 . 0 48 . 0 36 . 0 48 . 0 0 0
48 . 0 64 . 0 48 . 0 64 . 0 0 0
36 . 0 48 . 0 36 . 0 48 . 0 0 0
48 . 0 64 . 0 48 . 0 64 . 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
10 525
e
y
e
x
e
y
e
x
F
F
F
F
v
u
v
u
v
u

Lassemblage des deux systmes lmentaires donne le systme global :

(
(
(
(
(
(
(

+ +
+ +



6
3
3
2
2
1
1
6
10 4 . 3
0
0
0
0
0
36 . 0 36 . 0 48 . 0 48 . 0 36 . 0 48 . 0 36 . 0 48 . 0
48 . 0 48 . 0 64 . 0 64 . 0 48 . 0 64 . 0 48 . 0 64 . 0
36 . 0 48 . 0 36 . 0 48 . 0 0 0
48 . 0 64 . 0 48 . 0 64 . 0 0 0
36 . 0 48 . 0 0 0 36 . 0 48 . 0
48 . 0 64 . 0 0 0 48 . 0 64 . 0
10 525
v
u
v
u
v
u

Lapplication des conditions aux limites (encastrement : u
1
= v
1
= u
2
= v
2
= 0) rduit ce systme deux inconnus :
)
`


=
)
`

6
3
3 6
10 4 . 3
0
72 . 0 0
0 28 . 1
10 525
v
u

La solution donne : u
3
= 0 ; v
3
= 8.99 mm qui est un dplacement vers le bas.
Pour calculer les ractions, il suffit deffectuer les produits matriciels des systmes lmentaires avec les
dplacements maintenant connus et les forces internes inconnues ; on obtient pour la barre N1 :
Fig. 2.5 : Treillis deux barres

2
P
1

1
2
3 x
y

6

=
=
=
=
(
(
(
(

11 . 1699
48 . 2265
11 . 1699
48 . 2265
10 99 . 8
0
0
0
36 . 0 48 . 0 36 . 0 48 . 0
48 . 0 64 . 0 48 . 0 64 . 0
36 . 0 48 . 0 36 . 0 48 . 0
48 . 0 64 . 0 48 . 0 64 . 0
10 525
3 1
2
1
2
1
1
1
1
6
e
e
e
e
v
u
v
u
KN
Les ractions correspondent aux deux premires composantes du vecteur Fe et elles sont gales loppos des
forces appliques sur lautre extrmit et qui correspondent la troisime et quatrime composantes. La force
axiale dans la barre sobtient avec une rotation : Fx = c Fe
1
+ s Fe
2
= 2831.85 KN .
Les calculs sont les mmes pour la deuxime barre.
2.6 Techniques dassemblage pour les lments barres
Il y a lieu de remarquer lors de lassemblage des deux systmes lmentaires que les composantes 5 et 6 de la
matrice globale K sont la somme des composantes 3 et 4 des matrices lmentaires. On voit donc que les
composantes qui correspondes aux nud 3 occupent les positions 23 = 6 et 231 = 5 dans la matrice globale.
En gnralise ainsi cet assemblage en calculant une table de localisation partir de la table des connectivits
comme suit : L([2*i-1 2*i]) =[2*t(i)-1 2*t(i)]. La fichier fonction MATLAB suivant retouren une
table de localisation dans le cas de deux degrs de libert par nud :
function L = Localise(t)
% L = Localise(t)
% t : table de connectivits de l'lment
% L : table de localisation
nne = length(t);
for i= 1:nne
L([2*i-1 2*i]) = [2*t(i)-1 2*t(i)];
end
return
Dans le cas dun nombre de degrs de libert quelconque, on propose la fonction suivante qui est plus gnrale :
function L = Loc(t,n)
%-------------------------------------------------
% L = Loc(t,n)
% t : table de connectivits de l'lment
% L : table de localisation
% n : nombre de degrs de libert par noeud
%
% A. Seghir, 24/08/04 modifi 23/10/04
%--------------------------------------------------
e = eye(n);
L = kron(n*t,e(n,:));
for i=1:n-1
L = L + kron(n*t-i,e(n-i,:));
end
return
2.7 Programme dlments finis pour llment barre
La mise en uvre dun programme dlments finis pour les structures dassemblage de barres ncessite en
premier lieu une bonne organisation du fichier de donnes. Le programme doit avoir une structure qui permet
deffectuer trois grandes tches : lecture de donnes, calcul de la solution et affichage des rsultas.
2.7.1 Saisie des donnes
La partie du programme destine lecture des donnes doit pouvoir construire des variables pour la gomtrie
des lments, les caractristiques du matriau et le chargement extrieur.
- La gomtrie concerne les coordonnes des nuds p, les connectivits des lments t et leurs sections
droites A ainsi que les conditions dencastrement quon regroupe dans un vecteur e.
- Les caractristiques du matriau sont le module dlasticit E et la masse volumique rho.
- Le chargement extrieur est mis sous forme dun vecteur colonne F.
Ces donnes peuvent tre saisie dans un fichier texte mais pour des raisons de simplicits offertes par les
fonctions MATLAB, ou utilise un fichier fonction.
Dans le cas de lexemple de deux barres prcdent (2.5), ce fichier est le suivant :

7
function [t,p,e,A,E,rho,F] = expl2barres;
t = [1 3 % connectivit de l'lment 1
2 3 % connectivit de l'lment 2
];
p = [ 0.0 0.6 % coordonnes du noeud 1
1.6 0.6 % coordonnes du noeud 2
0.8 0.0 % coordonnes du noeud 3
];
e = [ 1; 2 % noeud d'encastrement 1
3; 4 % noeud d'encastrement 2
] ;
A = [1 1] * 25e-4; % sections des lments barres
E = [1 1] * 210e9; % module d'lasticit des lments
rho=[1 1] * 2800 ; % masse volumique 2800 kg/m3

F = [ 0; 0 % noeud 1 non charg (encastrement)
0; 0 % noeud 2 non charg (encastrement)
0; -3.4e6 % noeud 3 charg dans la direction verticale vers le bas
];

Si on veut afficher la structure pour une vrification visuelle, on utilise les commandes suivantes :

>> [t,p,b,A,E,rho,F] = expl2barres;
>> plotmesh(t,p,1,1,'b');

La fonction plotmesh affiche une figure du maillage, elle permet donc, avec le tracer la structure saisie, une
vrification visuelle des lments et des nuds. Son script est :

function plotmesh(T,P, NodeLabels, EltLabels,color)
% plotmesh(T, P, NodeLabels, EltLabels, color)
%
% T = Table des connectivits (fem.mesh.t)
% P = Table des coordonnes (fem.mesh.p)
% NodeLabels : vaut true pour afficher les lments
% EltLabels : vaut true pour afficher les nuds
% color : couleur des lignes
%
% A. Seghir, 02/08/04 modifi 07/08/04

Net = size(T,1);
for ie = 1:Net
XY = P(T(ie,:),:);
X = [[XY(:,1)]; XY(1,1)];
Y = [[XY(:,2)]; XY(1,2)];
line(X,Y,'color',color)
if(EltLabels)
x = mean(XY(:,1));
y = mean(XY(:,2));
text(x,y,num2str(ie),'color','b')
end
end
if(NodeLabels)
Np = size(P,1);
for i=1:Np
text(P(i,1),P(i,2),num2str(i),'color','m')
end
end
2.7.2 Calcul des matrices de rigidit et de masse
Une fois la gomtrie est saisie, on peut calculer les matrices de rigidit et de masse assembles. On cre une
fonction truss2dKM pour les deux matrices K et M la fois.
Les variables dentre communes aux deux matrices sont : la table des connectivits des lments t, la table des
coordonnes des nuds t et les sections des lments A. On ajoute les modules dlasticit E pour la matrice de
rigidit K et les masses volumiques rho pour la matrice masse M. On prends des caractristiques diffrentes
pour chaque lment (A, E et rho des vecteurs) pour pouvoir calculer des structures dassemblage de barres de
plusieurs types de matriau et de diffrentes sections.

8
Le script de la fonction truss2dKM est :
function [K,M] = truss2dM(t,p,A,E,rho)
%
% [K,M] = truss2dKM(t,p,A, rho)
% K : matrice de rigidit assemble
% M : matrice masse assemble
% t : table de connectivits des lments
% p : table des coordonnes des noeuds
% A : sections des lments (des barres)
% E : modules d'lasticit en vecteur des lments
% rho: masse volumique
%
% A. Seghir, le 07/08/04, modifi : 26/10/04

net = size(t,1); % nombre dlments total
nnt = 2*size(p,1); % nombre de noeuds total

K = sparse(nnt,nnt); % initialisation des matrices K et M
M = sparse(nnt,nnt); % par des matrices creuses nulles

for i = 1:net % dbut de boucle sur les lments
ti = t(i,:); % tables de connectivit et de
Li = localise(ti); % localisation de llment courant
Ke = truss2dKe(p(ti,:),A(i),E(i)); % matrice de rigidit lmentaire
Me = truss2dMe(p(ti,:),A(i),rho(i)); % matrice masse lmentaire
K(Li,Li) = K(Li,Li) + Ke; % assemblage de la matrice K
M(Li,Li) = M(Li,Li) + Me; % assemblage de la matrice M
end % fin de boucle
return % fin de fonction

Il est remarquer quon a initialis les matrices K et M avec des matrices creuses (sparse). Lavantage quoffre
les matrices creuses est que seul les lments non nuls sont sauvegarder en mmoire. MATLAB est quip
dune structure de donnes et de plusieurs fonctions pour prendre en charge toutes les oprations matricielles sur
ce type de matrices et dune faon pratiquement imperceptible pour lutilisateur.
La construction des deux matrices K et M nest pas trs diffrente de ce qui a t prsent pour les quations
diffrentielles. On a introduit ici une table de localisation Li quon calcul avec la fonction localise (2.6) et
quon utilise la place de la table des connectivits t pour lassemblage de K et M.
Pour le calcul des matrices lmentaires Ke et Me on a besoin pratiquement que saisir les composantes. La
longueur et les cosinus directeurs de llment sont calculs partir des coordonnes de ses nuds :
2
1 2
2
1 2
) ( ) ( y y x x L + = ; L x x / ) ( ) cos(
1 2
= ; L y y / ) ( ) sin(
1 2
= (2.24)
Les fichiers fonctions des deux matrices lmentaires sont :

function ke = truss2DKe(XY,A,E)
% ke = truss2dKe(XY,A,E)
% Calcul de la matrice elementaire pour un
% lment barre deux noeuds (x1,y1) (x2,y2)
% A : section de la barre
% E : module d'lasticit du matriau
% XY: cordonnes des noeuds XY = [x1,y1; x2,y2]
%
% A. Seghir, 06/08/04

[c,s,L] = EltLen(XY); % longueur et orientation de llment

cc = c*c; % cos(angle)^2
cs = c*s; % cos(angle)*sin(angle)
ss = s*s; % sin(angle)^2

ke = (A*E/L) * [ cc cs -cc -cs % matrice lmentaire Ke
cs ss -cs -ss
-cc -cs cc cs
-cs -ss cs ss
];
return

9
function Me = truss2dMe(XY,A,rho)
% Me = truss2dMe(XY,A,rho)
% Calcul de la matrice masse elementaire Me pour un
% lment barre deux noeuds (x1,y1) (x2,y2)
% A : section de l'lment
% rho : masse volumique de l'lment
% XY : cordonnes des noeuds XY = [x1,y1; x2,y2]
%
% A. Seghir, 07/08/04

L = EltLen(XY);
Me = 0.5*rho*A*L*eye(4);

% pour la masse repartie remplacer par :
%Me =(rho*A*L/6) * [ 2 0 1 0
% 0 2 0 1
% 1 0 2 0
% 0 1 0 2
% ];

return

La matrice masse peut tre calcule en considrant une masse rpartie ou une masse concentre. Pour changer il
faut mettre la premire expression en ligne commentaire et enlever les % de la seconde expression. Au besoin, il
est prfrable dintroduire une variable option op dans lentte de la fonction : truss2dMe(XY,A,rho,op) et de
choisir ensuite avec un test if ce quil faut retourner comme rsultat. Il faut tout de mme noter que dans la plus
part des cas le rsultat est sensiblement le mme et cest pour sa configuration de matrice diagonale quon
prfre la masse concentre.
Enfin, on donne le code source de la fonction EltLen :

function [ds,c,s] = EltLen(XY)
% [ds,c,s] = Getcosine(XY)
% Calcul la longueur de llment, cos et sin pour la matrice
% de rotation dun lment barre deux noeuds (x1,y1) (x2,y2)
% ds: longueur de llment
% c : cosinus de l'angle entre laxe de llment et laxe x
% s : sinus de l'angle
% XY: cordonnes des noeuds XY = [x1,y1; x2,y2]
%
% A. Seghir, 06/08/04

dx = XY(2,1) - XY(1,1);
dy = XY(2,2) - XY(1,2);
ds = sqrt(dx^2 + dy^2);
c = dx/ds;
s = dy/ds;

return

2.7.3 Application des conditions dappuis
Les conditions dappuis sont lensemble des dplacements nuls aux niveaux des appuis. Le vecteur e dans le
fichier de donnes est utilis pour spcifier les degrs de libert bloquer. Pour appliquer cette condition on
limine les lignes et les colonnes des matrices K et M ainsi que du vecteur F puisque le chargement est saisi
pour tous les nuds y compris ceux dappuis.
Il faut faire attention lapplication des commandes MATLAB A(i,:)=[] et A(:,i)=[] qui permettent de
supprimer des lignes et des colonnes dune matrice. A chaque colonne ou ligne supprime la taille de la matrice
est rduite et les indices sont dcals vers la gauche dans la cas dune colonne et vers le haut dans le cas dune
ligne.
Ainsi, avant de procder la suppression dune liste de degrs de libert, il faut dabord la trier selon un ordre
croissant ou dcroissant pour ensuite supprimer les lignes et les colonnes en la parcourant du plus grand au plus
petit indice. De cette faon on a pas se soucier des dcalages dans les valeurs de la liste.
La commande MATLAB qui permet dordonner une liste ou un vecteur L est : sort(L).

10
La fonction qui permet dappliquer les conditions dappuis est appele DelDOFs et attend en arguments dentr
une variable A qui peut tre une matrice carre ou un vecteur colonne, et une liste L des degrs de libert
supprimer. Son script est le suivant :
function A = DelDOFs(A,L)
% A = DelDOFs(A,L)
%
% A : matrice globale aprs assemblage
% L : liste des degrs de libert liminer
%
% A. Seghir, le 01/08/04 modifi le 08/08/04

L = sort(L); % tri de la liste des DDL
n = length(L); % longueur de L

if (size(A,2) == 1) % cas dun vecteur
for i = n:-1:1 % parcourir L partir du plus grand indice
A(L(i)) =[] ; % suppression de la composante associe au DDL courant
end
else % cas dun matrice
for i = n:-1:1
A(L(i),:) =[] ; % suppression de la ligne L(i)
A(:,L(i)) =[] ; % suppression de la colonne L(i)
end
end
return
2.7.4 Rsolution du systme discret
Une fois les conditions aux limites sont appliques, il ne reste qu rsoudre le systme discret. Nous avons
deux types danalyse :
1) Analyse statique qui consiste dterminer les dplacements et les efforts internes dans les barres sous
leffet du chargement statique
2) Analyse dynamique qui consiste dterminer le comportement dynamique de la structure et sa rponse
un spectre de rponse ou un acclrogramme.
Dans le cas prsent nous nous limiterons lanalyse statique et au simple calcul des modes propres. La rponse
dynamique fera lobjet dun chapitre part. La solution en dplacement sobtient avec la commande U = K\F et
les forces axiales dans les barres (forces internes) sont obtenues avec les systmes lmentaires Fe = Ke U. Pour
chaque lment il faut recalculer la matrice de rigidit K, extraire les dplacements lmentaires partir de la
solution U et effectuer le produit Ke Ue et enfin appliquer une rotation de repre pour revenir au repre local de
la barre. Le vecteur Ue doit comprendre aussi les valeurs nulles des dplacements bloqus au niveaux des
appuis (voir lexemple). Enfin, les ractions et le chargement sont la somme des forces lmentaires de tous les
lments lies lappuis. La fonction MATLAB qui permet deffectuer ces oprations est :
function [F,R] = TrussForces(t,p,A,E,U)
% [F,R] = TrussForces(t,p,A,E,U)
% F : forces axiales dans les barres
% R : forces aux niveaux des nuds = ractions dans le cas dappuis
% t : table de connectivits des lments
% p : table des coordonnes des noeuds
% A : sections des lments
% E : modules d'lasticit
% U : solution en dplacement
% A. Seghir, le 07/08/04 modifi : 27/08/04

net = size(t,1); % nombre dlments total
nnt = 2*size(p,1); % nombre de noeuds total
R = zeros(2*nnt,1); % Forces aux noeuds
for ie = 1:net % boucle sur les lments
L = localise(t(ie,:)); % table de localisation
ke = truss2dKe(p(t(ie,:),:),A(ie),E(ie)); % matrice lmentaire
ue = U(L); % dplacements des noeuds
fe = ke*ue; % forces lmentaires dans (oxy)
[Len,c,s] = EltLen(p(t(ie,:),:)); % les cosinus directeurs
F(ie,:) = -(c*fe(1)+s*fe(2)); % rotation au repre local
R(L) = R(L) + fe; % tous les lments lis au noeud
end % fin de boucle
return

11
On peut calculer les modes propres de la structure avec la fonction eigs qui rsout le systme |K
2
M | = 0.
Elle prend en argument dentre les deux matrice K et M et retourne comme rsultat deux matrices : lune
orthogonale pour les vecteurs propres et lautre diagonale pour les valeurs propres. Les modes propres sont donc
les colonnes de la matrice des vecteurs propres et les priodes propres sont donnes par : T = 2/.
2.7.5 Programme principal
A prsent toutes les fonctions ncessaires la mise en uvre dun programme de calcul des structures treillis
ont t prsentes. Il reste les assembles de prfrence dans un fichier fonction comme celui-ci :
function [U,P,R, T,phi]= trussfem(ffd)
% [U,P,T,phi] = trussfem(ffd)
% rsolution des systmes d'assemblage de barres bidimensionnels
% U : solution en dplacements nodaux
% P : forces axiales dans les barres
% R : ractions aux appuis
% T : priodes propres de la structure
% phi : modes propres de la structure
% ffd : fichier fonction de donnes du problme
% A. Seghir, le 06/08/04 modifi le 27/10/04

[t,p,e,A,E,rho,F] = feval(str2func(ffd)); % fait appel au fichier fonction
% contenant les donnes
plotmesh(t,p,1,1,'b'); % affiche la structure charge

[K,M] = truss2dKM(t,p,A,E,rho); % calcul des matrices K et M
K = DelDOFs(K,e); % Application des conditions
M = DelDOFs(M,e); % aux limites
F = DelDOFs(F,e);
U = K \ F; % solution statique
U = AddDOFs(U,e); % ajout des DDL des noeuds encastr
[P,R] = TrussForces(t,p,A,E,U); % forces dans les barres et les noeuds
[phi, omega2] = eigs(K,M); % modes propres
omega = sqrt(diag(omega2)); % pulsations
T = 2*pi./sort(omega); % priodes propres par ordre croissant

% affichage des rsultats
net = size(t,1); nnt = size(p,1);
disp(' Rsultats de calcul de la structure d''assemblage de barres')
disp([' fichier de donnes : ',ffd])
disp([' Nombre de barres : ',num2str(net)])
disp([' Nombre de noeuds : ',num2str(nnt)])

disp(sprintf('\n Dplacements aux noeuds :'))
disp(sprintf(' Noeud\t\t Ux\t\t\t\t Uy '))
for i=1:nnt
disp(sprintf(' %d\t\t\t%+5.4f\t\t\t%+5.4f',i,U(localise(i))))
end

disp(sprintf('\n Efforts dans les barres :'))
disp(sprintf(' Barre \t\t P'))
for i=1:net
disp(sprintf(' %d\t\t\t%+1.4E',i,P(i)))
end

disp(sprintf('\n Ractions aux appuis :'))
disp(sprintf(' Appuis\t\t Rx\t\t\t\t\t Ry '))
for i=1:nnt
L = localise(i);
if find(e==L(1))
disp(sprintf(' %d\t\t\t%+1.4E\t\t%+1.4E',i,R(L)))
end
end

disp(sprintf('\n Priodes propres de la structure :'))
disp(sprintf(' mode\t\tT'))
for i=1:size(T)
disp(sprintf(' %d\t\t\t%5.4f',i,T(i)))
end
plotdeforme(U,p,t,10) % dessine la structure dforme

12
Remarquer comment le fichier de donnes est appel par cette fonction. La variable ffd doit tre de type
caractre (string), str2func permet de construire une adresse de fonction partir dun nom et feval la fait
valuer. Pour utiliser trussfem, il faut donc prparer un fichier de donnes semblable expl2barres.m et
utiliser la commande :
>> [U,P,T] = trussfem('expl2barres') ;

Rsultats de calcul de la structure d'assemblage de barres
fichier de donnes : expl2barres
Nombre de barres : 2
Nombre de noeuds : 3

Dplacements aux noeuds :
Noeud Ux Uy
1 +0.0000 +0.0000
2 +0.0000 +0.0000
3 +0.0000 -0.0090

Efforts dans les barres :
Barre P
1 +2.8333E+006
2 +2.8333E+006

Ractions aux appuis :
Appuis Rx Ry
1 -2.2667E+006 +1.7000E+006
2 +2.2667E+006 +1.7000E+006

Priodes propres de la strucutre :
Mode T
1 0.0011
2 0.0014

2.8 TP N3
Modliser et calculer la structure ci-dessous en utilisant le programme trussfem et le logiciel SAP2000.
Toutes les barres de la structure ont une section droite A = 6cm6cm et sont constitues dun matriau de masse
volumique = 7800 Kg/m
3
et de module dlasticit E = 210000 MPa.
Les distances sont donnes en mtre et les chargements en KN .
Donner les dplacements des nuds, les ractions aux appuis et les forces internes dans les barres.
















1
2
3
4
7
8
1
2
3
4
5
6
7
12
0
.
5

1.0 1.0
0
.
5

0
.
5

15 KN
15 KN
Fig. 2.6 : Structure calculer en TP N3

1.0
5
6
9
10
11
8
15 KN
10 KN

Vous aimerez peut-être aussi