3.4  Structural dynamic modification

3.4  Structural dynamic modification#

While test results are typically used for test/analysis correlation and update, experimental data have direct uses. In particular,

  • experimental damping ratios are often used for finite element model predictions;
  • identified models can be used to predict the response after a modification (if this modification is mechanical, one talks about structural modification, if it is a controller one does closed loop response prediction);
  • identified models can be used to generate control laws in active control applications;
  • if some input locations of interest for structural modification have only been tested as output locations, the reciprocity assumption (see section 2.9.2) can be used to predict unmeasured transfers. But these predictions lack residual terms (see section 6.2.3) which are often important in coupled predictions.

Structural modification and closed loop predictions are important application areas of SDT. For closed loop predictions, users typically build state-space models with res2ss and then use control related tools (Control Toolbox, Simulink). If mechanical modifications can be modeled with a mass/damping/stiffness model directly connected to measured inputs/outputs, predicting the effect of a modification takes the same route as illustrated below. Mass effects correspond to acceleration feedback, damping to velocity feedback, and stiffness to displacement feedback.

The following illustrates on a real experimental dataset the prediction of a 300 g mass loading effect at a locations 1012−z and 1112−z (when only 1012−z is excited in the gartid dataset used below).

 ci=demosdt('demo gartid est');
 ci.Stack{'Test'}.xf=-ci.Stack{'Test'}.xf;% driving 1012-z to 1012z
 ci.Stack{'Test'}.dof(:,2)=12.03;
 ci.IDopt.reci='1 FRF'; idcom(ci,'est');

ind=fe_c(ci.Stack{'IdMain'}.dof(:,1),[1012;1112],'ind'); po_ol=ci.Stack{'IdMain'}.po;

% Using normal modes NOR = res2nor(ci.Stack{'IdMain'}); NOR.pb=NOR.cp'; S=nor2ss(NOR,'hz'); % since NOR.idopt tells acc. SS is force to Acc mass=.3; a_cl = S.a - S.b(:,ind)S.c(ind,:)mass; po_cln=ii_pof(eig(a_cl)/2/pi,3,2) if sdtdef('UseControlToolbox-safe',1) && any(exist('ss','file')==[2 6]); SS=S;set(SS,'b',S.b(:,4),'d',S.d(:,4),'InputName',S.InputName(4)) else % Without CTbox SS=S;SS.b=SS.b(:,4);SS.d=SS.d(:,4);SS.dof_in=SS.dof_in(4,:); end qbode(SS,ci.Stack{'Test'}.w2pi,'iiplot "Normal"');

% Using complex modes SA = res2ss(ci.Stack{'IdMain'},'AllIO');SA.dof_out=S.dof_out; a_cl = S.a - S.b(:,ind)*S.c(ind,:)*mass; po_clx=ii_pof(eig(a_cl)/2/pi,3,2) if sdtdef('UseControlToolbox-safe',1) && any(exist('ss','file')==[2 6]); SS=SA;set(SS,'b',S.b(:,4),'d',S.d(:,4)0,'InputName',S.InputName(4)) else % Without CTbox SS=SA;SS.b=SS.b(:,4);SS.d=SS.d(:,4)0;SS.dof_in=S.dof_in(4,:); end qbode(SS,ci.Stack{'Test'}.w2pi,'iiplot "Cpx"'); iicom('ch4');

% Frequencies figure(1);in1=1:8;subplot(211); bar([ po_clx(in1,1) po_cln(in1,1)]./po_ol(in1,[1 1])) ylabel('\Delta F / F');legend('Complex modes','Normal modes') set(gca,'ylim',[.5 1])

% Damping subplot(212);bar([ po_clx(in1,2) po_cln(in1,2)]./po_ol(in1,[2 2])) ylabel('\Delta \zeta / \zeta');legend('Complex modes','Normal modes') set(gca,'ylim',[.5 1.5])

Notice that the change in the sign of ci.Stack{'Test'}.xf needed to have a positive driving point FRFs (this is assumed by id_rm). Reciprocity was either applied using complex (the 'AllIO' command in res2ss returns all input/output pairs assuming reciprocity) or normal modes with NOR.pb=NOR.cp'.

Closed loop frequency predictions agree very well using complex or normal modes (as well as with FEM predictions) but damping variation estimates are not very good with the complex mode state-space model.

There is much more to structural dynamic modification than a generalization of this example to arbitrary point mass, stiffness and damping connections. And you can read [32] or get in touch with SDTools for our latest advances on the subject.