comgui('close all clear'); % Demonstration of the test/analysis correlation capabilities of the SDT % for the case of the GARTEUR SM-AG-19 Testbed. % % The test results used in this demo were kindly provided by one of the 11 % participants of the GARTEUR SM-AG-19 action group. % % The documentation associated to this demo is accessible using doc('sdt/pre') % initialize by loading results of the GARTFE and GARTTE demos femesh('reset'); load sdt_gart FEnode FEelt mdof md0 f0 sdof IIpo IIres pl il fecom(';guione;view3;sub 1 1');femesh plotelt; cf=feplot; model=struct('Node',FEnode,'Elt',FEelt,'DOF',mdof,'pl',pl,'il',il); %----------------------------------------------------------------- % % This restarts correlation as detailed in GARTTE sens=fe_sens('model',model); sens.tdof=sdof; sens=fe_sens('arigid',sens); % Comparisons of frequency and MAC, start by finding analysis modes that % best match each test result and compare figure(1);clf; subplot(211); ii_mac(IIres.',md0,'sens',sens,'labela','Test','labelb','FEM','mac pair plot') subplot(212);ii_mac(1,'fa',IIpo,'fb',f0,'mac error'); demosdt('pause');%------------------------------------------------ % In many cases, one wants to predict the response at non measured nodes % using expansion methods % For example, a modal expansion on the basis of the first 14 modes mdex1 = fe_exp(IIres.',sens,md0(:,1:14)); out=ii_mac(1,'macpair'); ind=out.indb; cf.def(1)={mdex1,mdof,IIpo}; cf.def(2)={md0(:,ind),mdof,f0(ind)}; fecom(';sub1 1;sel1egid>0;show2def;ScaleMatch;ch+3'); % You might want to take the time to see the influence of changing the number % of modes selected for the expansion (its an interesting problem). demosdt('pause');%------------------------------------------------ % For more robustness you will prefer a static expansion [m,k,mdof] = fe_mk(model,'options',[0 1]); mdex2 = fe_exp(IIres.',0,sens,m,k,mdof); cf.def(1)={mdex2,mdof,IIpo(:,1)}; demosdt('pause');%------------------------------------------------ % but the best results will be obtained using a dynamic expansion combining % static and modal expansion. This dynamic expansion can be performed on a % reduced basis as shown below (this makes its numerical cost acceptable even % for very large models). % % Assuming that your DOFs are already renumbered (automatic above 1000 DOF, see % fe_mk) a typical call for Reduced Basis Dynamic Expansion (RBDE) would be [md0,f0,kd] = fe_eig(m,k,[6 30 1e2]); f0=f0/2/pi; T = fe_norm([kd \ ((sens.cta)') md0],m,k); mdex3 = fe_exp(IIres.',IIpo(:,1)*2*pi,sens,m,k,mdof,T); cf.def(1)={mdex3,mdof,IIpo(:,1)}; fecom(';sel1egid>0;show2def'); % You could also compute Minimum Dynamic Residual Expansion (MDRE) with % % T = fe_norm(T,m,k); % needed to prevent numerical conditionning problems % mdex3 = fe_exp(IIres.',IIpo(:,1)*2*pi,sens,m,k,mdof,T,'mdre'); % % and MDRE with measurement error (MDRE-WE) using % % opt=struct('type','mdrewe','gamma',1,'MeasErr',.1); % [mdex3,opt,mdexT,err] = fe_exp(IIres.',IIpo(:,1)*2*pi,sens,m,k,mdof,T,opt); demosdt('pause');%------------------------------------------------ % To illustrate the influence of the expansion method on the quality of the % correlation you can take a look at the mass wheighted MAC % (normalized mass cross-orthogonality criterion) for the 3 expansion methods aa = ii_mac(1,'mac pair'); i1=aa.indb; a1=ii_mac(md0(:,i1),mdex1,m);a2=ii_mac(md0(:,i1),mdex2,m); a3=ii_mac(md0(:,i1),mdex3,m); aa = [[1:size(IIpo,1)]' IIpo(:,1) f0(i1) (IIpo(:,1)./f0(i1)-1)*100 ... diag(aa.data) diag(a1.data) diag(a2.data) diag(a3.data)]; fprintf(1,' # : Test FE (Delta F , MAC, M-MAC for MOD, STA, RBD)\n');fprintf(1,'%2i : %6.2f %6.2f (%6.1f %%, %4.2f, %11.2f, %4.2f, %4.2f)\n',aa') %----------------------------------------------------------------- eval(demosdt('echooff')) % Etienne Balmes 28/07/95, 22/03/01 % Copyright (c) 1990-2003 by SDTools, All Rights Reserved % $Revision: 1.5 $ $Date: 2006/02/23 07:47:08 $