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);