EDP2
Modélisation par
Eléments Finis
d'une poutre en traction
compression
Nicolas Bonneel et Elise Durand
4ème année Génie mathématique et modélisation
Année 2004-2005
Introduction 2
1 Calcul de la solutionexacte 3
2 Programme de résolution par éléments nis 6
2.1 Cas général . . . 6
2.2 Application ànotre poutre . . . 7
3 Conclusion 14
On cherche à résoudre un problème de poutre en traction-compression,
dont ledéplacement peutêtrecalculépar :
−(EAu 0 ) 0 (x) + c(x).u(x) = F (x)
Le problème étudié est une poutre unidimensionnelle composée de deux
matériaux distincts ayant des propriétés constantes, que l'on décomposera
enN éléments etpour lesquelson appliquera laméthodedes élémentsnis.
On comparera ensuite le résultat obtenu avec la solution analytique et on
calculera l'erreuret letauxde convergence dela méthode employée.
1 Calcul de la solution exacte
Le problème général s'écrit :
−(EAu 0 ) 0 (x) + c(x).u(x) = F (x)
Ainsi,on déduit lesdeuxéquations de notre problème:
−a 0 u 00 = F 0 six≤ L
2
(1)a 1 u 00 − c 1 u = 0
si x≥ L
2
(2)L'équation (1)nouspermetd'écrire :
−a 0 u 00 = F 0 ⇒ u 0 (x) = − F a 0
0 .x + α
⇒ u(x) = − 2a F 0
0 .x 2 + α.x + β
où
α
etβ
sont desconstantes.Lesconditions auxlimitesen x=0 etx=
L
2
nousimposent :u(0) = 0 ⇒ β = 0 u( L 2 ) = − 8a F 0
0 .L 2 + α. L 2 ⇒ α = (Λ + 8a F 0
0 .L 2 ). L 2
avecΛ = u( L 2 )
Onobtient donc :
u(x) = − F 0
2a 0 .x(x − L 2 ) + 2Λ
L .x
(3)Pour
L
2 ≤ x ≤ L ona :
a 1 u 00 − c 1 u = 0 ⇒ u 00 − a c 1
1 .u = 0
⇒ u(x) = A.e q c
1
a 1 + B.e − q c
1 a 1
(4)
Détermination desconstantes
Pourdéterminerlesconstantesonutiliseleraccorddesforcesélastiques
enx=
L
2
etlaconditionà lalimitex = L
.Onobtient un systèmede 3équations à 3inconnues :
A.e q c
1 a 1
L
2 + B.e − q c
1 a 1
L
2 − Λ = 0 A.e
q c
a 1 1 L
.(k + r c 1
a 1
.a 1 ) + B.e − q c
a 1 1 L
(k − r c 1
a 1
.a 1 ) = 0
A.e q c
1 a 1
L 2 .
r c 1
a 1
.a 1 − B.e − q c
1 a 1
L 2 r c 1
a 1
.a 1 − Λ. 2a 0
L = − F 0 L 4
Cesystèmesera résolusousMatlab:
function [A B Lambda] = poutre_analytique(a0,a1,c0,c1,L,k,F0);
a=(c1/a1)^0.5;
M = [ exp(a*L/2) exp(-a*L/2) -1 ;
exp(a*L)*(k+a*a1) exp(-a*L)*(k-a*a1) 0 ;
a1*a*exp(a*L/2) -a1*a*exp(-a*L/2) -2*a0/L];
P = [ 0 ;
0 ;
-F0*L/4 ];
S = M\P;
A = S(1);
B = S(2);
Lambda = S(3);
On écrit ensuite un programme qui plotte la solution exacte de la
poutre:
L = 5;
k = 0.05;
a0 = 2;
a1 = 1;
c0 = 0;
c1 = 0.05;
F0 = -3;
n = 501;
x=linspace(0,L, n);
N0 = find(x<=L/2);
N1 = find(x>L/2);
v = zeros(size(x));
v(N0) = -F0*x(N0).*(x(N0)-L/2)./(2.*a0) + 2*Lambda.*x(N0)./L;
v(N1) = A*exp(a*x(N1)) + B*exp(-a*x(N1));
plot(x, v,'r');
Onobtient lerésultat suivant :
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
−4
−3.5
−3
−2.5
−2
−1.5
−1
−0.5 0
Fig. 1 Solution exacte
Onvoit qu'il existe un point d'inexion un peu avant le centre de la
poutre quiest le lieu de ladiscontinuité. Ceciseproduit parce quela
forceest transmise de la premiere poutre à la seconde poutre au lieu
deles déformerà leurinterface.
Demême,oncalculeladérivéeanalytiquement qu'onmultiplieparEA
pour avoirsigma, leseorts internes d'élasticité:
s = zeros(size(x));
s(N0) = (-F0*x(N0)./a0 + (Lambda + F0*L^2/(8*a0))*(2/L))*a0;
s(N1) = (A*a*exp(a*x(N1)) - B*a*exp(-a*x(N1)))*a1;
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
−7
−6
−5
−4
−3
−2
−1 0 1
Fig.2 Eorts d'élasticité
2 Programme de résolution par éléments nis
2.1 Cas général
Pour obtenir ledéplacement u delapoutreauxpointsde discrétisation,
onrésoud lesystèmetridiagonal suivant :
d 1 c 1
c 1 d 2 c 2
c 2 d 3
.
.
.
.
.
. .
.
.
c N − 1
c N − 1 d N
u 1
u 2
u 3
.
.
.
u N
=
b 1
b 2
b 3
.
.
.
b N
avec pour e=1,...,(N-1) :
d e = ( E [e − h 1] A [e − 1]
e − 1 + E [e] h A [e]
e ) + ( c e−1/2 4 h e−1 + c e+1/2 4 h e ) d N = E [N−1] h A [N−1]
N − 1 + c N − 1/2 4 h N−1 + k c e = − E [e] h A [e]
e + c e+1/2 4 h e b e = ( F e−1/2 2 h e−1 + F e+1/2 2 h e ) b N = F N−1/2 2 h N − 1
Pour cela,ona créélafonction Matlabsuivante:
de = zeros(1,N );
ce = zeros(1,N-1);
be = zeros(1,N );
de(1:N-1)=(EA(1:N-1)./h(1:N-1) + EA(2:N)./h(2:N)) + (c(1:N-1).* ...
h(1:N-1)/4 + c(2:N).*h(2:N)/4);
ce(1:N-1) = -EA(2:N)./h(2:N) + c(2:N).*h(2:N)/4;
de(N)=EA(N)./h(N) + c(N).*h(N)/4 + k;
be(1:N-1) = F(1:N-1).*h(1:N-1)/2 + F(2:N).*h(2: ...
N)/2;
be(N) = F(N)*h(N)/2;
A = sparse(N,N);
for i=1:N
A(i,i) = de(i);
end;
for i=1:N-1
A(i,i+1)=ce(i);
A(i+1,i)=ce(i);
end;
u = [0; A\(be')];
2.2 Application à notre poutre
On créé une fonction qui initialise la poutre en fonction du nombre
d'éléments souhaités etdescoecientsqui les caractérisent. Ondistinguera
le cas où N est pair pour lequel la discontinuité au milieu de la poutre est
exacte, ducas où N estimpair pour lequel lepoint central serala moyenne
deses voisins.
function [EA, c, h, F] = prepare(N,L,k,a0,a1,c0,c1,F0)
if (mod(N,2)==0)
c=[linspace(c0,c0,N/2) linspace(c1,c1,N/2)];
h=linspace(L/N,L/N,N);
EA=[linspace(a0,a0,N/2) linspace(a1,a1,N/2)];
else
F=[ linspace(F0,F0, (N-1)/2) F0/2 zeros(1,(N-1)/2)];
c=[linspace(c0,c0,(N-1)/2) (c0+c1)/2 linspace(c1,c1,(N-1)/2)];
h=linspace(L/N,L/N,N);
EA=[linspace(a0,a0,(N-1)/2) (a0+a1)/2 linspace(a1,a1,(N-1)/2)];
end
Cette fonction renvoie donc les coecients EA, c et F de chaque poutre,
ainsiqueleur tailleh (ici,on gardera hconstant).
On applique les fonctions "prepare" et "poutre" pour N=4 et les
coecientsfournis. Onobtient lerésultat suivant :
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
−4
−3.5
−3
−2.5
−2
−1.5
−1
−0.5 0
Fig. 3 Solutionapprochée pour 4poutres élémentairesetSolution exacte
Onfait demême avec N =5:
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
−4
−3.5
−3
−2.5
−2
−1.5
−1
−0.5 0
Fig. 4 Solutionapprochée pour 5poutres élémentairesetSolution exacte
On remarque que la solution approchée s'éloigne de la solution exacte
carlasolution exactea été calculéepour un discontinuitée parfaiteen
L 2
etnonpour une "discontinuité approchée".
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
−4
−3.5
−3
−2.5
−2
−1.5
−1
−0.5 0
Fig.5Solutionapprochéepour10poutresélémentairesetSolution exacte
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
−4
−3.5
−3
−2.5
−2
−1.5
−1
−0.5 0
Fig.6Solutionapprochéepour11poutresélémentairesetSolution exacte
exacte,etla solutionesttoujours meilleure pour N pair.
Oncalcule ensuitel'erreur relative par lanorme
L 2 :
Z b
a
f (x) 2 dx ≈ b − a N .
N − 1
X
i=0
f 2 (a + (i + 1
2 ) ∗ ( b − a N ))
avec ici f(x) = u(x)-v(x) où u est la solution approchée et v la solution
exacte (ici
b − a
N = h se simplie car h est constant et que l'on calcule une
erreur relative,donc unquotient desnormes):
numerateur = 0;
denominateur = 0;
for i=1:N-1
numerateur = numerateur + ((u(i)+u(i+1))/2 - v(i))^2;
denominateur = denominateur+v(i)^2;
end
erreur=sqrt(numerateur/denominateur)
avec u la solution obtenue par les éléments nis, et v la solution exacte
calculée sur les N points au centre de chaque poutre. On itère sur les N
poutres,etonprendlavaleurdelasolutionexacteetapprochéeaumilieude
chaque poutre. Onfera attention pour les Nimpair à évaluer EA au centre
de lapoutre commela moyenne desEA des deux éléments voisins (pour le
calculde lasolutionexactesur peu depointsau lieu des500 points).
En itérant sur les N pairs de 4 à 20, on obtient la courbe log-log suivante,
montrant une droite de pente 2.0715 évaluée par la commande polyval,
correspondant à l'ordre du schéma. L'erreur relative calculée s'étend de
0.26% pour N=20 à6.46% pourN=4.
10 −0.6 10 −0.5 10 −0.4 10 −0.3 10 −0.2 10 −0.1 10 0 10 −3
10 −2 10 −1
Fig.7 loglog(L/N, erreur)
Parailleurs,pourlesNimpairsde5à21,onobtientunepentede1.7938,
ce qui montre que le schéma est moinsbon pour les N impairs (il converge
pluslentement):
10 0 10 −3
10 −2 10 −1
Fig.8 loglog(L/N, erreur)
numerateur = 0;
denominateur = 0;
for i=1:N-1
numerateur = numerateur + ((EA(i)*(u(i+1)-u(i)))/h(i) - s(i))^2;
denominateur = denominateur+s(i)^2;
end
erreur=sqrt(numerateur/denominateur)
avec s la valeur de sigma calculée analytiquement au centre de chaque
poutre, et u la valeur du déplacement sur chaque poutre (donc
u i+1 − u i h
donnera ladérivée au centre de lapoutre à l'ordre 2 saufpour le cas de la
Nièmepoutreoùelle donnera ladérivée décentrée à gauche à l'ordre1).
Onobtient pour le casN pair (de4 à 20 par pasde 4) une droite de pente
1.9738(= ordrede convergence sursigma)
10 −0.6 10 −0.5 10 −0.4 10 −0.3 10 −0.2 10 −0.1 10 0 10 −5
10 −4 10 −3 10 −2
Fig.9 loglog(L/N, erreur)
10 0 10 −2
10 −1 10 0
Fig.10 loglog(L/N,erreur)
3 Conclusion
On a pu observer que la méthode des éléments nis nous donnait une
solutionexacteauxpointsdediscrétisationpourlecasNpair(puisquepour
lecasNimpair,ladiscontinuitéaumilieudelapoutren'apuqu'êtreappro-
chée par une moyenne). Deplus, on remarque que lasolutionen tout point
converge à l'ordre 2 pour le cas N pair et 1.8 pour le cas N impair, et que
leseortsd'élasticitéconvergent àl'ordre2 pourlecasNpairet1.5pour le
casN impair(enutilisant laméthodedes pointsmilieux).
Danslecasgénéral,ons'évertueraàprendreunnombrepairdepoutrespour
éviterd'approximer ladiscontinuité aucentre.