plotmodes.m 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. function plotmodes(Sol,k,f)
  2. % Trace des modes de vibrations d'un portique 2D
  3. %
  4. % appel plotmodes(Sol,k,f)
  5. % en entree Sol : vecteur des deplacements nodaux dimension (nddlt)
  6. % k : numero du mode
  7. % f : valeur de la frequence
  8. %
  9. % H.Oudin
  10. %==========================================================================
  11. global nddln nddlt nelt nnode
  12. global Coord Connec
  13. axis equal
  14. %---- calcul du facteur d'echelle et de la position deformee
  15. dX = max(Coord(:,1)) - min(Coord(:,1)); dY = max(Coord(:,2)) - min(Coord(:,2));
  16. %s = max([dX dY])/(10.*max(abs(Sol))) ; %---- facteur d'echelle
  17. s = max([dX dY])/(20.*max(abs([Sol(1:nddln:nddlt) ; Sol(2:nddln:nddlt)])));
  18. Def = Coord + s * [Sol(1:nddln:nddlt),Sol(2:nddln:nddlt)]; %----- postion deformee
  19. title([int2str(k),' mode de vibration a la frequence ',...
  20. num2str(f,'%7.2f')],'Color','b')
  21. for iel = 1:nelt
  22. loce=[]; %----- table de localisation pour l'element
  23. for i=1:nnode
  24. if Connec(iel,i) > 0 loce=[loce,Connec(iel,i)]; end
  25. end;
  26. Pos = Coord(loce,:);
  27. X = [[Pos(:,1)]; Pos(1,1)]; Y = [[Pos(:,2)]; Pos(1,2)];
  28. line(X,Y,'color','g','LineStyle','--')
  29. Pos = Def(loce,:);
  30. X = [[Pos(:,1)]; Pos(1,1)]; Y = [[Pos(:,2)]; Pos(1,2)];
  31. line(X,Y,'color','b')
  32. end
  33. return