Contents     Functions         Previous Next     PDF Index

12  Modèle réduit paramétré. Identification. Correlation calcul/essai.

On poursuit le projet avec des questions séparées de réduction de modèle paramétré et de lien entre calculs et essais. Le cas test est maintenant un plateau de frein à disque sur lequel est riveté un guide câble (petite pièce plate), dont les vibrations s’entendent et sont donc problématiques.

12.1  Modèle réduit paramétré

On cherche à analyser le niveau d’amortissement pouvant être introduit par une colle structurelle au niveau de la jonction guide câble/plateau. Pour ceci, on génère un modèle paramétrique comprenant les matrices de masse M du plateau et pièce de liaison, raideur élastique Ke (colle non comprise), raideur de colle Kv et masse de guide câble Mg. On considère alors que la colle est un matériau viscoélastique avec un facteur de perte de η=1 et se donne un paramètre de conception α correspondant à l’ajustement du module de cette colle (technologiquement, α peut être ajusté par un choix de matériau, surface ou d’épaisseur). Le calcul des modes complexes est donné par le problème paramétré

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

Le script ci-dessous réalise une étude de conception

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

QUESTIONS COMPLEMENTAIRES A TRAITER A LA FIN OU APRES LE TP

12.2  Identification

Un essai au vibromètre laser a été réalisé avec pour objectif de caractériser le plateau seul. En suivant la procédure détaillée en annexe section 12.4 utilisez l’interface idcom pour compléter l’identification (modèle paramétrique des fonctions de transfert). Pour initialiser

% 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');fecom(';colordataEvalA;undefline')

ci pointe vers la figure iiplot et cf vers la figure feplot. Pour plus de détails, voir la documentation SDT.

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

Pour sauver vos résultats d’identification, il suffit de sauver les pôles dans un script. Un affichage propre est généré par

 idcom('TableIdMain')
idcom('wmin 0 2500')
idcom('est'); Id1=ci.Stack{'IdMain'};Id1.name='Est???';
idcom('wmin 400 2500')
idcom('est'); 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');

QUESTIONS COMPLEMENTAIRES A TRAITER A LA FIN OU APRES LE TP

%% 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(ci.Stack{'IdMain'},du,'MacTable')

12.3  Correlation

On illustre maintenant un processus de recalage. La première étape est la réalisation de la corrélation topologique qui permet de comparer calculs et essais. On a ensuite deux paramètres de recalage. La raideur du joint, entre le couvre culasse et le bloc support, et la raideur des vis. Ces paramètres ont été choisis car ils étaient clairement mal maitrisés dans le modèle initial.

Le script ci-dessous charge les données, construit la matrice d’observation, défini les paramètres et calcule les modes pour deux valeurs distinctes de ces paramètres, puis affiche le MAC et le tableau MAC/erreur en fréquence.

[ci,cf]=cc_simul('loadDBCorrel'); 
sens=fe_case(cf.mdl,'sens');d1=cf.def;
figure(1);clf;ii_mac(ci.Stack{'IdMain'},d1,'sens',sens,'macplot')
ii_mac(1,'macErrorTable');

% Possibly docked version of results
R1=ii_mac(1,'showdock3',cf);
cg=get(R1.cfa,'userdata');fecom(cg,'colordataEvalA-edgealpha.1');fecom(cf,'ColorDataEvalA-edgealpha.1');

12.4  Annexe : Procédure d’identification

La procédure utilise une figure de boutons (onglet Ident) et une figure d’affichage des courbes (iiplot).

  1. Pour identifier un mode :
    1. Cliquer sur le bouton e (entouré en jaune).
    2. dans la figure iiplot contenant les réponses, cliquer sur le maximum du pic en fréquence (Pick pole frequency)
    3. Pour valider le mode identifié, cliquer sur la flèche droite (entourée en rouge). La valeur est accessible par ci.Stack{’IdMain’}.po . Pour enlever un pole utiliser la flèche gauche (entourée de vert).
    4. Recommencer l’identification de modes autant de fois que nécessaire, en alternant avec le raffinement (voir point suivant)
  2. Après avoir identifié tous les modes, estimer la fonction de transfert large bande en cliquant sur est (entouré de bleu)
  3. Sélectionner une bande de fréquence où l’identification n’est pas très bonne (utiliser les boutons wmo pour sélectionner et w0 pour revenir à l’ensemble de la bande), puis utiliser une des optimisations eopt ou eup (Donner un nombre d’itération jusqu’à convergence du calcul (quadratic cost constant)).
  4. Exécuter la commande idcom(’tableIdMain’) dans la fenêtre de commande Matlab (command window) et copier le résultat dans votre compte rendu.

Le processus fonctionnel de cette procédure est décrit dans le schéma ci-dessous et plus de détails peuvent être trouvés dans le manuel SDT (sdtweb(’idrc’))


©1991-2015 by SDTools
Previous Up Next