Sous-sections

3.18 Application: vibration d'une poutre

On s'intéresse mode de vibrations en traction/compression de la pale d'éolienne précédente.

3.18.1 programme MATLAB


programme matlab 3.18.1: modepropre.m: calcul des modes propres

function [U,R,Omega]=modepropre(Ne,L,M,K,p)
% (C) M. BUFFAT, UFR de Mecanique
% [U,R,Omega]=modepropre(Ne,w,L,M,K,p) 
% calcul du mode de vibration propre p 
% d'une poutre en traction sous l'effet de la rotation
% calcul la deformee U du mode propre en fonction de R 
% parametres
% nbre d'elements Ne de discretisation
% masse M, longueur L, raideur totale K (ES/L)
% p numero du mode propre
N=Ne+1; % nbre de nds
l=L/(N-1); % longueur d'un element
m=M/(N-1); % masse elementaire
k=K*(N-1); % raideur elementaire
% variable  position
R=[0:l:L];
% matrice de masse et de rigidite
Ke=k*[1 -1; -1 1]; % matrice de rigidite
Me=m/2*[1 0; 0 1]; % et de masse elementaire
% assemblage
Ka=assemblage(Ke,N-1);
Ma=assemblage(Me,N-1);
% resolution mode propre
[V,D]=eig(inv(Ma)*Ka);
% trie des v.propres
VP=sort(diag(D));
% selection du mode p
% attention le 1er mode est un mode rigide
Omega=sqrt(VP(p+1));
% recherche du mode p
k=find(diag(D)==VP(p+1));
U=V(:,k);
return;


programme matlab 3.18.1: vibration.m: trace des modes de vibrations propres

% (C) M. BUFFAT, UFR de Mecanique
% calcul des modes de vibration
% d'une pale d'eolienne en traction 
% sous l'effet de la rotation

% caracteristique de la pale
L=14; % longueur
M=800; % masse
rho=8000; % densite
S=M/(rho*L); % section equivalente
E=200e09; % module d'Young
K=E*S/L; % raideur totale
% rotation en tours/minute
w=40;
Ne=20;
% etudes des premiers modes
[U1,R1,Omega1]=modepropre(Ne,L,M,K,1);
[U2,R2,Omega2]=modepropre(Ne,L,M,K,2);
[U3,R3,Omega3]=modepropre(Ne,L,M,K,3);
[U4,R4,Omega4]=modepropre(Ne,L,M,K,4);
figure(2);clf; 
subplot(2,1,1);
plot(R1,U1,R2,U2,R3,U3,R4,U4,'LineWidth',2);
title('mode propres'); xlabel('R'); ylabel('U'); legend('1','2','3','4');
subplot(2,1,2);
Omega0=sqrt(2*K/M);
plot([1,2,3,4],[Omega1,Omega2,Omega3,Omega4],'r-x',[1],[Omega0],'go','MarkerSize',14);
title('pulsations propres'); xlabel('mode'); ylabel('rd/s'); 
legend('calcul','ref');
%
disp(sprintf('premiere pulsation  propre   = %f\n',Omega1));
disp(sprintf('pulsation propre de reference= %f\n',Omega0));
disp(sprintf('vitesse de rotation          = %f\n',w*2*pi/60));


programme matlab 3.18.1: animation.m: animation de la vibration d'un mode propre

function animation(p)
% trace le mode de vibarion p
L=14; % longueur
M=800; % masse
rho=8000; % densite
S=M/(rho*L); % section equivalente
E=200e09; % module d'Young
K=E*S/L; % raideur totale
% rotation en tours/minute
w=40;
Ne=20;
% mode de vibraion p
[U,R,Omega]=modepropre(Ne,L,M,K,p);
% animation de la vibration d'une poutre
N=size(U,1);
L=R(N); H=2;
figure(3); clf; hold on; 
axis([-0.1*L 1.1*L 0 2*H]); axis equal;
title(sprintf('Mode de vibration m=%d',p));
% trace de la poutre initiale
for i=1:N
    p(i)=plot([R(i) R(i)],[0 H],'color','r','EraseMode','normal');
end;
plot([0 L L 0],[0 0 H H],'LineWidth',2);
drawnow;
% trace en temps
T=2*pi/Omega; % periode
ndt=20; dt=4*T/ndt; t=0;
for it=1:ndt
 t=t+dt;
 for i=1:N
  x=R(i); x0=R(i)+1.0*sin(Omega*t)*U(i);
  set(p(i),'XData',[x0 x0 ],'YData',[0 H]);
 end;
 drawnow;pause(0.1);
end;
hold off;

vibration d'une pale d'éolienne: execution avec Matlab




Pr. Marc BUFFAT
marc.buffat@univ-lyon1.fr
2008-01-29