poutre_ke.m 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. function [Ke,Fe] = poutre_ke(iel)
  2. % Calcul de la matrice raideur Ke et de la force generalisee Fe
  3. % pour un element (iel) d'une structure portique
  4. %
  5. % appel [Ke,Fe] = poutre_ke(iel)
  6. % ou [Ke,Fe] = feval('poutre_ke',iel)
  7. % en entree iel : numero de l'element
  8. % en sortie Ke : matrice raideur elementaire
  9. % Fe : force generalisee elementaire
  10. %
  11. % H.Oudin & D.Motte (EF 3D)
  12. global ndim
  13. global Coord Connec Nprop Prop
  14. X = Coord(Connec(iel,:),:);
  15. dX = X(2,:) - X(1,:);
  16. if ndim == 1
  17. EI=Prop(Nprop(iel),1);
  18. L = abs(dX); %----- matrice raideur elementaire sur (v,teta)
  19. Ke = (EI/L^3)*[ 12 6*L -12 6*L
  20. 6*L 4*L^2 -6*L 2*L^2
  21. -12 -6*L 12 -6*L
  22. 6*L 2*L^2 -6*L 4*L^2
  23. ];
  24. f=Prop(Nprop(iel),2);
  25. Fe = (f*L/2)*[1; L/6; 1; -L/6];
  26. elseif ndim == 2
  27. ES=Prop(Nprop(iel),1); EI=Prop(Nprop(iel),2);
  28. L = sqrt(dX(1)^2 + dX(2)^2);
  29. c = dX(1)/L; s = dX(2)/L;
  30. K = (ES/L)*[ 1 0 0 -1 0 0
  31. 0 0 0 0 0 0
  32. 0 0 0 0 0 0
  33. -1 0 0 1 0 0
  34. 0 0 0 0 0 0
  35. 0 0 0 0 0 0
  36. ];
  37. K = K + (EI/L^3)*[ 0 0 0 0 0 0
  38. 0 12 6*L 0 -12 6*L
  39. 0 6*L 4*L^2 0 -6*L 2*L^2
  40. 0 0 0 0 0 0
  41. 0 -12 -6*L 0 12 -6*L
  42. 0 6*L 2*L^2 0 -6*L 4*L^2
  43. ];
  44. P = [ c s 0 0 0 0
  45. -s c 0 0 0 0
  46. 0 0 1 0 0 0
  47. 0 0 0 c s 0
  48. 0 0 0 -s c 0
  49. 0 0 0 0 0 1
  50. ];
  51. Ke =P' * K * P; %----- matrice raideur elementaire sur (u,v,teta)
  52. f = [ c*Prop(Nprop(iel),3)+s*Prop(Nprop(iel),4)
  53. -s*Prop(Nprop(iel),3)+c*Prop(Nprop(iel),4)];
  54. fe = (f(1)*L/2)*[1; 0; 0; 1; 0; 0];
  55. fe = fe + (f(2)*L/2)*[0; 1; L/6; 0; 1; -L/6];
  56. Fe = P' * fe; %----- force generalisee elementaire sur (u,v,teta)
  57. elseif ndim == 3
  58. %-------------------------------------------------------------------------------------------------
  59. ES = Prop(Nprop(iel),1); % Matrice de raideur locale
  60. GJ = Prop(Nprop(iel),2);
  61. EIy = Prop(Nprop(iel),3);
  62. EIz = Prop(Nprop(iel),4);
  63. L = sqrt(dX(1)^2+dX(2)^2+dX(3)^2);
  64. K = [ ES/L 0 0 0 0 0 -ES/L 0 0 0 0 0
  65. 0 12*EIz/L^3 0 0 0 6*EIz/L^2 0 -12*EIz/L^3 0 0 0 6*EIz/L^2
  66. 0 0 12*EIy/L^3 0 -6*EIy/L^2 0 0 0 -12*EIy/L^3 0 -6*EIy/L^2 0
  67. 0 0 0 GJ/L 0 0 0 0 0 -GJ/L 0 0
  68. 0 0 -6*EIy/L^2 0 4*EIy/L 0 0 0 6*EIy/L^2 0 2*EIy/L 0
  69. 0 6*EIz/L^2 0 0 0 4*EIz/L 0 -6*EIz/L^2 0 0 0 2*EIz/L
  70. -ES/L 0 0 0 0 0 ES/L 0 0 0 0 0
  71. 0 -12*EIz/L^3 0 0 0 -6*EIz/L^2 0 12*EIz/L^3 0 0 0 -6*EIz/L^2
  72. 0 0 -12*EIy/L^3 0 6*EIy/L^2 0 0 0 12*EIy/L^3 0 6*EIy/L^2 0
  73. 0 0 0 -GJ/L 0 0 0 0 0 GJ/L 0 0
  74. 0 0 -6*EIy/L^2 0 2*EIy/L 0 0 0 6*EIy/L^2 0 4*EIy/L 0
  75. 0 6*EIz/L^2 0 0 0 2*EIz/L 0 -6*EIz/L^2 0 0 0 4*EIz/L
  76. ];
  77. tx=dX(1)/L; % parametres du repere local / repere global
  78. ty=dX(2)/L;
  79. tz=dX(3)/L;
  80. t=[tx ; ty ; tz];
  81. prodzt=cross([0,0,1],t);
  82. tn=prodzt/sqrt(prodzt(1)^2+prodzt(2)^2+prodzt(3)^2);
  83. tm=cross(t,tn);
  84. Q=[ t(1) , t(2) , t(3) % Matrice de passage 3x3
  85. tn(1) , tn(2) , tn(3)
  86. tm(1) , tm(2) , tm(3)
  87. ];
  88. nul=zeros(3);
  89. P=[ Q , nul , nul , nul % Matrice de passage 12x12
  90. nul , Q , nul , nul
  91. nul , nul , Q , nul
  92. nul , nul , nul , Q
  93. ];
  94. Ke = P' * K * P; %----- matrice raideur elementaire sur (u,v,w,teta1,teta2,teta3)
  95. Fe = zeros(12,1); %----- pas de force generalisee elementaire
  96. %-------------------------------------------------------------------------------------------------
  97. end
  98. return