Contents
PLATEDEMO
ModalTools script to demonstrate modal parameter extraction on plate. This demo is based on an FE model with mass and stiffnes matrices stored in the file plate_12by12.mat. The script goes through synthesizing FRF's. From those, the impulse responses are computed, modal parameters extracted and a geometry definition for animation is set up. Finally, an animation display with a push button for each mode is created and animation of the first mode starts automatically (animation is not shown on the web).
% Copyright (c) 2003-2006, Axiom EduTech AB, Ljusterö, Sweden. All rights reserved. % URL: http://www.vibratools.com Email: info@vibratools.com % Initialize Variable FontSize=10;
Load FE Model
get mass and stiffnes matrices and some geometry
fprintf('Loading FE model...') load plate_12by12 fprintf('Done.\n') c = 0.000015*k; %
Loading FE model...Done.
Compute Synthesized FRFs for FE Model
make mobility matrix with DOF 1 as input, frequency 0-125 Hz in 801 points
f = 0:125/800:125; warning off fprintf('Computing synthesized FRF''s...') H = mck2frfv(f,m,c,k,1,[1:144]); fprintf('Done.\n') warning on % figure(1) semilogy(f,abs(H)) set(gca,'FontSize',FontSize) xlabel('Frequency [Hz]','FontSize',FontSize) ylabel('[m/Ns]]','FontSize',FontSize) title('All 144 FRFs','FontSize',FontSize) fprintf('Press <RETURN> to continue...\n') %
Computing synthesized FRF's...Done. Press <RETURN> to continue...
Compute Impulse Responses
fprintf('Computing Impulse responses...') [h,t,fs] = impresp(H,f); fprintf('Done.\n') % figure(2) plot(t,h) set(gca,'FontSize',FontSize) xlabel('Time [s]','FontSize',FontSize) ylabel('[(m/s)/Ns]]','FontSize',FontSize) title('All 144 impulse responses','FontSize',FontSize) fprintf('Press <RETURN> to continue...\n') %
Computing Impulse responses...Done. Press <RETURN> to continue...
Calculate Mode Indicator Function
mif = modeind3(H);
Compute Poles Using Complex Exponential Time Domain
poles = complexp(h,fs,300,30,mif/max(mif),f,5,120);
[fr,zr]=poles2fd(poles);
%
Compute Residues and Residuals
[residues,residuals] = pol2resf(H,f,poles,5,120,.1);
Plot MAC Matrix
MAC=macmtrx(residues,residues);
macplotc(MAC)
%
Define Geometry
make geodef
geodef(:,1:3) = node(:,5:7); geodef(:,4:5) = zeros(144,2); geodef(:,6) = [1:144]'; % % make plotseq % plotseq = [1:12 0]; for n = 2:12 plotseq = [plotseq ((n-1)*12+1):n*12 0]; end for n = 1:12 plotseq = [plotseq n:12:(n+11*12) 0]; end %
Calculate Animation Data
N = length(poles); for n = 1:N sn = int2str(n); eval(['[gpoint,G',sn,',ref] = animcalc(geodef,plotseq,residues(',sn,',:),.1,0);']) end x = 10*ones(1,N); y = linspace(10,90,N); y = fliplr(y); txt=sprintf('%4s%7.1f%3s','#1:',fr(1),' Hz'); for n = 2:N S=sprintf('%4s%7.1f%3s',['#' int2str(n) ':'],fr(n),' Hz'); txt = str2mat(txt,S); end % call = str2mat('animatebutt(1,gpoint,G1,ref,3,x,y,txt,call)'); for n = 2:N eval(['st = ''animatebutt(1,gpoint,G',int2str(n),',ref,3,x,y,txt,call)'';']); call = str2mat(call,st); end animatebutt(1,gpoint,G1,ref,3,x,y,txt,call);