plotdef.m 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. function plotdef(Sol)
  2. % dessin de la deformee d'une structure / a la position initiale
  3. %
  4. % appel plotdef(Sol)
  5. % en entree Sol : vecteur des deplacements nodaux dimension (nddlt)
  6. %
  7. % H.Oudin
  8. %==========================================================================
  9. global nddln nnod nddlt nelt nnode ndim
  10. global Coord Connec
  11. taille = get(0,'ScreenSize');
  12. figure('Name','deformee de la structure',...
  13. 'Position',[taille(3)/2.02 taille(4)/2.6 taille(3)/2 taille(4)/2])
  14. axis equal
  15. grid on
  16. xlabel('X');
  17. ylabel('Y');
  18. zlabel('Z');
  19. XY = Coord;
  20. if ndim == 1
  21. XY(:,2) = zeros(nnod,1);XY(:,3) = zeros(nnod,1);
  22. if nddln == 2
  23. u(:,1) = zeros(nnod,1);u(:,2) = Sol(1:nddln:nddlt);u(:,3) = zeros(nnod,1);
  24. else
  25. u(:,1) = Sol(1:nddln:nddlt) ;u(:,2) = zeros(nnod,1); u(:,3) = zeros(nnod,1);
  26. end
  27. end
  28. if ndim == 2
  29. XY(:,3) = zeros(nnod,1);
  30. u(:,1) = Sol(1:nddln:nddlt);u(:,2) = Sol(2:nddln:nddlt);u(:,3) = zeros(nnod,1);
  31. end
  32. if ndim == 3
  33. u(:,1) = Sol(1:nddln:nddlt);u(:,2) = Sol(2:nddln:nddlt);u(:,3) = Sol(3:nddln:nddlt);
  34. end
  35. %---- calcul du facteur d'echelle et de la position deformee
  36. dX = max(XY(:,1)) - min(XY(:,1)); dY = max(XY(:,2)) - min(XY(:,2));dZ = max(XY(:,3)) - min(XY(:,3));
  37. %---- s : facteur d'echelle
  38. s = max([dX dY dZ])/(20.*max(abs([u(:,1) ; u(:,2) ; u(:,3)])));
  39. Def = XY + s * [u(:,1),u(:,2),u(:,3)]; %----- position deformee
  40. title(['deformee de la structure avec un facteur d''echelle de ',...
  41. num2str(s,'%8.4f')],'Color','b')
  42. for iel = 1:nelt
  43. loce=[]; %----- table de localisation pour l'element
  44. for i=1:nnode
  45. if Connec(iel,i) > 0 loce=[loce,Connec(iel,i)]; end
  46. end;
  47. Pos = XY(loce,:);
  48. X = [[Pos(:,1)]; Pos(1,1)]; Y = [[Pos(:,2)]; Pos(1,2)];Z = [[Pos(:,3)]; Pos(1,3)];
  49. line(X,Y,Z,'color','g','LineStyle','--')
  50. Pos = Def(loce,:);
  51. X = [[Pos(:,1)]; Pos(1,1)]; Y = [[Pos(:,2)]; Pos(1,2)];Z = [[Pos(:,3)]; Pos(1,3)];
  52. line(X,Y,Z,'color','b')
  53. end
  54. return