MECA0029-1 Théorie des vibrations Année académique 2009

Transcription

MECA0029-1 Théorie des vibrations Année académique 2009
MECA0029-1 Théorie des vibrations
Année académique 2009-2010
Séances pratiques 2, 3 et 4
1
Éviter des problèmes numériques
Pour éviter le calcul de valeurs propres nulles dans un problème au valeurs
propres, on peut effectuer une translation dans l’espace fréquentiel. Pour ce faire
on définit une matrice K′ = K + αM et on résoud un problème aux valeurs
propres semblable.
(K′ − ω ′2 M)x = 0
⇔
(K − (ω ′2 − α)M)x = 0
⇔
(K − ω 2 M)x = 0
on a donc ω ′2 = ω 2 + α ce qui correspond à une translation des fréquences
propres d’une quantité α.
Un problème courant est le mauvais conditionnement du problème au valeurs
propres. Une manière simple d’améliorer ce conditionnement est d’effectuer un
préconditionnement des matrice de masse et de raideur.
P = diag(1./diag(K));
M = P*K;
K = P*K;
Cette manipulation revient à prémultiplier le système (K − ω 2 M)x = 0 par
la matrice de préconditionnement. Chacune des équations du système est divisée par le terme diagonal correspondant dans la matrice de raideur, ce qui a
pour effet de ramener les termes principaux de ces équations au même ordre de
grandeur.
2
Poutre encastrée à deux dimensions
Soit une poutre d’aluminium (densité ρ = 2700 kg/m3 et module de Young
E = 72000 MPa) de longueur L = 750 mm de largeur w = 100 mm, de hauteur
h = 10 mm et encastrée à sa base. Calculer les pulsations propres et les modes
propres dans le plan.
% Vecteur de localisation des éléments
locel = [
0 0 0 1 2 3
1 2 3 4 5 6
4 5 6 7 8 9
];
1
% Caractéristiques des éléments
l = 150E-3;
% longueur [m]
w = 100E-3;
% largeur [m]
h = 10E-3;
% hauteur [m]
E = 72000E6;
% module de Young [Pa]
rho = 2700;
% densité [kg/m^3]
A = w*h;
% section droite [m^2]
m = rho*A;
% masse par unité de longueur [kg/m]
Iy = h*h*A/12; % moment d’inertie relatif à Oy [m^4]
% Coordonnées généralisées
% Extension selon Ox: u1 u2
% Flexion selon Oy: w1 w2 psiy1 psiy2
order = [ 1 3 5 2 4 6 ]; % vecteur de réarrangement
% Oxyz: u1 w1 psiy1 u2 w2 psiy2
% Création des matrices élémentaires de masse et de raideur
% Extension selon Ox
Melx = m*l/6*[ 2 1 ; 1 2 ];
Kelx = E*A/l*[ 1 -1 ; -1 1 ];
% Flexion selon Oy
Melw = m*l/70*[ 26 9 ; 9 26 ];
Melwpsiy = m*l*l/420*[ -22 -13 ; 13 22 ];
Melpsiy = m*l*l*l/420*[ 4 -3 ; -3 4 ];
Mely = [ Melw Melwpsiy’ ; Melwpsiy Melpsiy ];
Kelw = 12*E*Iy/(l*l*l)*[ 1 -1 ; -1 1 ];
Kelwpsiy = 6*E*Iy/(l*l)*[ -1 1 ; -1 1 ];
Kelpsiy = 2*E*Iy/l*[ 2 1 ; 1 2 ];
Kely = [ Kelw Kelwpsiy’ ; Kelwpsiy Kelpsiy ];
% Assemblage des matrices
Mel = blkdiag(Melx,Mely);
Kel = blkdiag(Kelx,Kely);
% Réarrangement des coordonnées généralisées
Mel = Mel(order,order);
Kel = Kel(order,order);
% Création des matrices de masse et de raideur
nddl = max(locel(:));
M = zeros(nddl,nddl);
K = zeros(nddl,nddl);
for el = 1:size(locel,1)
for i = 1:size(Mel,1)
k = locel(el,i);
for j = 1:size(Mel,2)
l = locel(el,j);
if (k && l)
M(k,l) = M(k,l)+Mel(i,j);
K(k,l) = K(k,l)+Kel(i,j);
end
2
end
end
end
% Calcul des modes et pulsations propres
[V Lambda] = eig(K,M);
Lambda = sqrt(diag(Lambda));
3
Algorithme de Newmark linéaire
À l’aide de l’algorithme du Newmark linéaire, soliciter la poutre définie
précédemment en son extrémité avec une force de 1 newton pendant 1 seconde.
Une matrice d’amortissement proportionnelle à la matrice de raideur est déterminée pour avoir un facteur d’amortissement du premier mode de 1%. Le pas
de temps est choisi pour que les trois premiers modes propres soient correctemment résolus. Comparer les résultats à ceux obtenus avec la fonction ’ode45’ de
MATLAB.
On écrit d’abord la fonction du Newmark linéaire.
function newmark(M,C,K,x,v,f,t,tend,h)
gamma = 0.5;
beta = 0.25;
Sinv = inv(M+gamma*h*C+beta*h*h*K);
% calcul de l’accélération
a = M\(f(t,x)-C*v-K*x);
fd = fopen(’newmark.txt’,’w’);
fprintf(fd,’%g’,t);
fprintf(fd,’ %g’,[x;v;a]);
fprintf(fd,’\n’);
while (t < tend)
% incrémentation temporelle
t = t+h;
x0 = x;
v0 = v;
a0 = a;
% prédiction de la vitesse et du déplacement
v = v0+(1-gamma)*h*a0;
x = x0+h*v0+(0.5-beta)*h*h*a0;
% calcul de l’accélération
a = Sinv*(f(t,x)-C*v-K*x);
% correction de la vitesse et du déplacement
v = v+gamma*h*a;
x = x+beta*h*h*a;
fprintf(fd,’%g’,t);
fprintf(fd,’ %g’,[x;v;a]);
fprintf(fd,’\n’);
end
fclose(fd);
À la suite du script du point précédent, on effectue.
3
% Intégration temporelle par l’algorithme de Newmark
n = length(Lambda);
epsilon = 0.01;
% Facteur d’amortissement
C = 2*epsilon/Lambda(1)*K;
% Matrice d’amortissement
x0 = zeros(n,1);
% Etat initial de position
v0 = zeros(n,1);
% Etat initial de vitesse
f0 = zeros(n,1);
f0(n-1) = 1;
% Intensité de la force appliquée
f = @(t,x) f0*(0 <= t && t < 1);
% Fonction de la force appliquée
t0 = 0;
% Temps initial
tend = 5;
% Temps final
h = 1/(1.2*Lambda(3)/pi);
% Pas de temps
newmark(M,C,K,x0,v0,f,t0,tend,h)
txva = load(’newmark.txt’);
t = txva(:,1);
x = txva(:,1+n-1);
txva = [];
figure,hold on
plot(t,x,’b’);
xlabel(’t [s]’);
ylabel(’deplacement [m]’);
title(’Deplacement vertical de l’’extremite de la poutre’)
% Intégration temporelle avec la fonction ode45, espace d’état
A = [C M;M zeros(size(M))];
% Matrice A
B = blkdiag(K,-M);
% Matrice B
P = diag(1./diag(B));
% Matrice de préconditionnement
invA = inv(P*A)*P;
g = @(t,y) invA*([f(t,y(1:n));zeros(n,1)]-B*y);
y0 = zeros(2*n,1);
[t y] = ode45(g,[t0 tend],y0);
y = y(:,n-1);
plot(t,y,’r’);
legend(’Newmark’,’ode45’);
4
−5
10
x 10
Deplacement vertical de l’extremite de la poutre
deplacement [m]
Newmark
ode45
5
0
−5
4
0
1
2
3
t [s]
4
5
6
Superposition modale
Le calcul de la réponse d’un système à une sollicitation harmonique s’obtient
par superposition modale. Les différentes méthodes (méthode des déplacements
modaux, méthode des accélérations modales) s’appuient sur la matrice des coefficients d’influence dynamique. Connaissant les pulsations propres et les modes
propres du système, cette matrice s’obtient facilement.
function A = influence(omega,V,Lambda)
A = zeros(size(V));
for k = 1:length(Lambda)
A = A+V(:,k)*V(:,k)’/(Lambda(k)-omega*omega);
end
end
5