Contents     Functions         Previous Next     PDF Index

4  Parametric reduced model. Identification. Test/analysis correlation.

The project is continued using separate questions about parametric model reduction and links between test and analysis. The test case is now an drum brake plate, one which a cable guide (small relatively flat piece) is riveted. The vibrations of this cable guide lead to impacts between the cable and the guide which are audible and thus problematic.

4.1  Parametric reduced model

One seeks to analyze the level of damping that can be introduced by introducing a viscoelastic glue at the cable-guide/plate junction. To analyze the potential of such a change, one generates a parametric model combining M the mass of the plate and the junction, Ke the elastic stiffness (glue not included), Kv the glue stiffness and Mg the mass of the cable guide. One then considers that the glue is viscoelastic with a loss factor η=1 and chooses a design parameter α corresponding the the adjustment of the glue modulus (technically α can be adjusted using a choice of material, thickness or surface). Computation of the complex modes is given by the parametric eigenvalue problem

[(M+β Mgj2 + Ke + α (1+iη) Kv] {ψj} = {0}     (4)

The script below runs a design study

[ci,cf]=cc_simul('loadDBFE');
Up=cf.mdl.GetData;CE=fe_case(Up,'getcase');Up.Klab % the matrix labels

m0=feutilb('sumkcoef',Up.K,[1 0 0 1]);
k0= feutilb('sumkcoef',Up.K,[0 1 1 0]);
d1=fe_eig({m0,k0,CE.T,Up.DOF},[5 25 1e3]);
d2=fe_eig({feutilb('sumkcoef',Up.K,[1 0 0 1]), ... % what is done here ?
    feutilb('sumkcoef',Up.K,[0 1 .01 0]), ...
    CE.T,Up.DOF},[5 25 1e3]);
d3=fe_eig({feutilb('sumkcoef',Up.K,[1 0 0 .01]), ... % what is done here ?
    feutilb('sumkcoef',Up.K,[0 1 1 0]), ...
    CE.T,Up.DOF},[5 25 1e3]);

 
 % Build reduced basis and model
 [T,fr]=fe_norm([d1.def d2.def d3.def],m0,k0); % why is fe_norm called ?
 SE=Up;
 SE.TR=struct('def',T,'DOF',SE.DOF,'data',fr/2/pi); 
 SE.K=feutilb('tkt',SE.TR.def,Up.K);

%% Compute poles as a function of alpha
 Range=logspace(-4,0,50)';def=[];
 ceigopt=[1000 0 0 0 0 1e-8]; mcoef=1;
 for jpar=1:length(Range)
   mr=feutilb('sumkcoef',SE.K,[1 0 0 mcoef]);
   kr= feutilb('sumkcoef',SE.K,[0 1 Range(jpar)*(1+1i) 0]);
   dr=fe_ceig({mr,[],kr,(1:size(SE.K{1},1))'+.99},ceigopt);
   % merge for each design point
   i1=find(dr.data(:,1)>1); dr.data(:,3)=Range(jpar);
   def=fe_def('AppendDef',def,fe_def('subdef',dr,i1(1:15)));
 end
 hpo=reshape(def.data(:,1),15,[]); % Frequency history
 hpo(hpo>2500)=NaN; % don't display above 2500 Hz
 hda=reshape(def.data(:,2),15,[]); % Damping history

 figure(1);clf;subplot(121);semilogx(Range,hpo');axis('tight');
 xlabel('Glue Coef');ylabel('Frequency [Hz]')
 subplot(122);plot(hpo',hda'*100,'+');axis tight
 xlabel('Frequency [Hz]'); ylabel('Damping ratio[%]');

 % Display modes at a particular design point with interactive cursor
 def.LabFcn='sprintf(''%.0f Hz %.2f %%, alpha=%.2f'',def.data(ch,1:3).*[1 100 1])';
 def.TR=SE.TR; cf.def=def; fecom('colordataevala -edgealpha.05 -alpha.2');
 cc_simul('rangedatacursor'); % open cursors
fecom('view4'); % relevant view
d1=fe_def('subdef',def,1:15);d1.name='Soft';
d2=fe_def('subdef',def,size(def.def,2)+[-14:0]);d2.name='Stiff';
d1f=d1;d1f.def=SE.TR.def*d1.def;d1f.DOF=SE.TR.DOF;
d2f=d2;d2f.def=SE.TR.def*d2.def;d2f.DOF=SE.TR.DOF;
% Pseudo mass associated with DOFs on brake plate 
ct=fe_c(d1f.DOF,feutil('getdof',feutil('findnode matid 1',SE),(1:3)'/100));
mp=ct'*ct;
figure(11);ii_mac(d1f,d2f,'m',mp,'mac mplot');

ADDITIONAL QUESTIONS (but consider the next part fist).

4.2  Identification

A laser vibrometer test was performed with the objective of characterizing the plate. By following the procedure detailed in annex section 4.4 use the idcom interface to complete the partial identification given (your objective is to obtain a parametric model of the transfers). To start

% You can do close('all') here but not later
%web(fullfile(fileparts(which('cc_simul'))),'html/tpCorrelDB.html');cd(tempdir);
[ci,cg]=cc_simul('loadDBTest'); 
cg.def=ci.Stack('IdMain');cg.sel='-Test';fecom('showFiTestDef');

ci is an object pointing to iiplot figure and cf to the feplot figure. For more details, see the SDT documentation with sdtweb('diiplot').

 fecom('imwrite',struct('ch',1:3,'Movie','Test.gif')) % Movies for modes (1:3) 

To save your identification results, you only save your poles in a MATLAB script. A clean display in the command line is achieved with

 idcom('TableIdMain')
idcom('wmin 0 2500')
idcom('estFullBand'); Id1=ci.Stack{'IdMain'};Id1.name='Est???';
idcom('wmin 400 2500')
idcom('estFullBand'); Id2=ci.Stack{'IdMain'};Id2.name='EstW???';
idcom('EstLocalPole'); Id3=ci.Stack{'IdMain'};Id3.name='EstLocalPole';
figure(1);subplot(121);ii_mac(Id1,Id2,'macplot');subplot(122);ii_mac(Id2,Id3,'macplot');

ADDITIONAL QUESTIONS (to be treated at the end or after lab work)

%% Basic implementation of identification
XF1=ci.Stack{'Test'};XF1=fe_def('subdef',XF1,XF1.w>503&XF1.w<512);

figure(1);semilogy(XF1.w,sum(abs(XF1.xf),2)); 
po=[];
for j1=1:size(XF1.xf,2)
 s=XF1.w*1i;  H=XF1.xf(:,j1); 
 A=[-s.*H -s.^2.*H ones(size(s)) s s.^2 ]; B=H;
 r1=[real(A);imag(A)]\[real(B);imag(B)];
 ld=roots( ??? ); 
 ld=ld(1); po(j1,:)=[-real(ld)./abs(ld) abs(ld)];
end
figure(1);plot(po(:,1),po(:,2),'+')
%% Shape and SVD of frequency response
XF1=ci.Stack{'Test'};XF1=fe_def('subdef',XF1,XF1.w>503&XF1.w<512);
[u,s,v]=svd(XF1.xf.',0);s=diag(s);
figure(12);plot(XF1.w,abs(v*diag(s)));
du=struct('def',u,'DOF',XF1.dof(:,1),'data',s/s(1));
du.LabFcn='sprintf(''%i si/s1= %.4g'',ch,def.data(ch))';
cg.def=du; % Display shape
figure(12);ii_mac(12,ci.Stack{'IdMain'},du,'MacTable')

4.3  Correlation

Le script above loads data, builds the observation matrix, defines parameters and computes modes for two distinct values of these parameters. The MAC and the MAC/frequency-error table are then shown.

[ci,cf]=cc_simul('loadDBCorrel'); 
% d1=cf.def;ii_mac(1,'SetMac',struct('db',d1))

ii_mac(1,'SetMac',struct('da',ci.Stack{'IdMain'},'Pair','A','MacPlot','Do'))
ii_mac(1,'macErrorTable');

4.4  Annex : Identification procedure

La procedure uses a figure containing buttons (Ident tab) and a figure to display data (iiplot).

  1. To identify a mode
    1. Click on the Peak picking (e) button (highlighted in yellow).
    2. in the iiplot figure where the responses are shown, click on a resonance peak (Pick pole frequency)
    3. To validate the result, click on the arrow to the right (highlighted in red). The value is accessible in ci.Stack{'IdMain'}.po . To remove a pole, use the left arrow (highlighted in green).
    4. Restart identification as many times as necessary to identify all visible poles. You can alternate with pole refinement described below.
  2. After having identified all modes, construct the wide band estimate by clicking on est (blue)
  3. Select a band where identification is not very good (use Set Band (wmo) buttons to select and Reset band (w0) to go back to the full band), and then use one of the optimization algorithms eopt or eup (give a number of iterations till convergence (quadratic cost close to a constant)).
  4. Use idcom('tableIdMain') in the Matlab command window and copy the result in your report.

More details on this process are given in the SDT manual (sdtweb('dockid#idprocess')).


©1991-2020 by SDTools
Previous Up Next