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