poutre_keme.m 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. function [Ke,Me] = poutre_keme(iel)
  2. % Calcul des matrices elementaire Ke et Me de l'element (iel) d'un portique
  3. %
  4. % appel [Ke,Me] = poutre_keme(iel)
  5. % ou [Ke,Me] = feval('poutre_keme',iel)
  6. % en entree iel : numero de l'element
  7. % en sortie Ke : matrice raideur elementaire (4,4)en 1D; (6,6) en 2D
  8. % Me : matrice masse elementaire
  9. %
  10. % H.Oudin
  11. global ndim
  12. global Coord Connec Nprop Prop
  13. X = Coord(Connec(iel,:),:);
  14. dX = X(2,:) - X(1,:);
  15. if ndim == 1
  16. EI=Prop(Nprop(iel),2);RS=Prop(Nprop(iel),3);
  17. L = abs(dX); %----- matrice raideur elementaire sur (v,teta)
  18. Ke = (EI/L^3)*[ 12 6*L -12 6*L
  19. 6*L 4*L^2 -6*L 2*L^2
  20. -12 -6*L 12 -6*L
  21. 6*L 2*L^2 -6*L 4*L^2
  22. ];
  23. Me = (RS*L)*[ 13/35 11*L/210 9/70 -13*L/420
  24. 11*L/210 L*L/105 13*L/420 -L*L/140
  25. 9/70 13*L/420 13/35 -11*L/210
  26. -13*L/420 -L*L/140 -11*L/210 L*L/105
  27. ];
  28. elseif ndim == 2
  29. ES=Prop(Nprop(iel),1); EI=Prop(Nprop(iel),2);RS=Prop(Nprop(iel),3);
  30. L = sqrt(dX(1)^2 + dX(2)^2);
  31. c = dX(1)/L; s = dX(2)/L;
  32. K = (ES/L)*[ 1 0 0 -1 0 0
  33. 0 0 0 0 0 0
  34. 0 0 0 0 0 0
  35. -1 0 0 1 0 0
  36. 0 0 0 0 0 0
  37. 0 0 0 0 0 0
  38. ];
  39. K = K + (EI/L^3)*[ 0 0 0 0 0 0
  40. 0 12 6*L 0 -12 6*L
  41. 0 6*L 4*L^2 0 -6*L 2*L^2
  42. 0 0 0 0 0 0
  43. 0 -12 -6*L 0 12 -6*L
  44. 0 6*L 2*L^2 0 -6*L 4*L^2
  45. ];
  46. P = [ c s 0 0 0 0
  47. -s c 0 0 0 0
  48. 0 0 1 0 0 0
  49. 0 0 0 c s 0
  50. 0 0 0 -s c 0
  51. 0 0 0 0 0 1
  52. ];
  53. Ke =P' * K * P; %----- matrice raideur elementaire sur (u,v,teta)
  54. M = (RS*L)*[ 1/3 0 0 1/6 0 0
  55. 0 13/35 11*L/210 0 9/70 -13*L/420
  56. 0 11*L/210 L*L/105 0 13*L/420 -L*L/140
  57. 1/6 0 0 1/3 0 0
  58. 0 9/70 13*L/420 0 13/35 -11*L/210
  59. 0 -13*L/420 -L*L/140 0 -11*L/210 L*L/105
  60. ];
  61. Me =P' * M * P; %----- matrice massse elementaire sur (u,v,teta)
  62. elseif ndim == 3
  63. disp('================================================ ');
  64. disp(' element non programme ');
  65. disp('================================================ ');
  66. end
  67. return