123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- function [Ke,Fe] = poutre_ke(iel)
- % Calcul de la matrice raideur Ke et de la force generalisee Fe
- % pour un element (iel) d'une structure portique
- %
- % appel [Ke,Fe] = poutre_ke(iel)
- % ou [Ke,Fe] = feval('poutre_ke',iel)
- % en entree iel : numero de l'element
- % en sortie Ke : matrice raideur elementaire
- % Fe : force generalisee elementaire
- %
- % H.Oudin & D.Motte (EF 3D)
- global ndim
- global Coord Connec Nprop Prop
- X = Coord(Connec(iel,:),:);
- dX = X(2,:) - X(1,:);
- if ndim == 1
- EI=Prop(Nprop(iel),1);
- L = abs(dX); %----- matrice raideur elementaire sur (v,teta)
- Ke = (EI/L^3)*[ 12 6*L -12 6*L
- 6*L 4*L^2 -6*L 2*L^2
- -12 -6*L 12 -6*L
- 6*L 2*L^2 -6*L 4*L^2
- ];
-
- f=Prop(Nprop(iel),2);
- Fe = (f*L/2)*[1; L/6; 1; -L/6];
- elseif ndim == 2
- ES=Prop(Nprop(iel),1); EI=Prop(Nprop(iel),2);
- L = sqrt(dX(1)^2 + dX(2)^2);
- c = dX(1)/L; s = dX(2)/L;
- K = (ES/L)*[ 1 0 0 -1 0 0
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- -1 0 0 1 0 0
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- ];
- K = K + (EI/L^3)*[ 0 0 0 0 0 0
- 0 12 6*L 0 -12 6*L
- 0 6*L 4*L^2 0 -6*L 2*L^2
- 0 0 0 0 0 0
- 0 -12 -6*L 0 12 -6*L
- 0 6*L 2*L^2 0 -6*L 4*L^2
- ];
- P = [ c s 0 0 0 0
- -s c 0 0 0 0
- 0 0 1 0 0 0
- 0 0 0 c s 0
- 0 0 0 -s c 0
- 0 0 0 0 0 1
- ];
- Ke =P' * K * P; %----- matrice raideur elementaire sur (u,v,teta)
- f = [ c*Prop(Nprop(iel),3)+s*Prop(Nprop(iel),4)
- -s*Prop(Nprop(iel),3)+c*Prop(Nprop(iel),4)];
- fe = (f(1)*L/2)*[1; 0; 0; 1; 0; 0];
- fe = fe + (f(2)*L/2)*[0; 1; L/6; 0; 1; -L/6];
- Fe = P' * fe; %----- force generalisee elementaire sur (u,v,teta)
-
- elseif ndim == 3
- %-------------------------------------------------------------------------------------------------
- ES = Prop(Nprop(iel),1); % Matrice de raideur locale
- GJ = Prop(Nprop(iel),2);
- EIy = Prop(Nprop(iel),3);
- EIz = Prop(Nprop(iel),4);
- L = sqrt(dX(1)^2+dX(2)^2+dX(3)^2);
- K = [ ES/L 0 0 0 0 0 -ES/L 0 0 0 0 0
- 0 12*EIz/L^3 0 0 0 6*EIz/L^2 0 -12*EIz/L^3 0 0 0 6*EIz/L^2
- 0 0 12*EIy/L^3 0 -6*EIy/L^2 0 0 0 -12*EIy/L^3 0 -6*EIy/L^2 0
- 0 0 0 GJ/L 0 0 0 0 0 -GJ/L 0 0
- 0 0 -6*EIy/L^2 0 4*EIy/L 0 0 0 6*EIy/L^2 0 2*EIy/L 0
- 0 6*EIz/L^2 0 0 0 4*EIz/L 0 -6*EIz/L^2 0 0 0 2*EIz/L
- -ES/L 0 0 0 0 0 ES/L 0 0 0 0 0
- 0 -12*EIz/L^3 0 0 0 -6*EIz/L^2 0 12*EIz/L^3 0 0 0 -6*EIz/L^2
- 0 0 -12*EIy/L^3 0 6*EIy/L^2 0 0 0 12*EIy/L^3 0 6*EIy/L^2 0
- 0 0 0 -GJ/L 0 0 0 0 0 GJ/L 0 0
- 0 0 -6*EIy/L^2 0 2*EIy/L 0 0 0 6*EIy/L^2 0 4*EIy/L 0
- 0 6*EIz/L^2 0 0 0 2*EIz/L 0 -6*EIz/L^2 0 0 0 4*EIz/L
- ];
- tx=dX(1)/L; % parametres du repere local / repere global
- ty=dX(2)/L;
- tz=dX(3)/L;
- t=[tx ; ty ; tz];
- prodzt=cross([0,0,1],t);
- tn=prodzt/sqrt(prodzt(1)^2+prodzt(2)^2+prodzt(3)^2);
- tm=cross(t,tn);
- Q=[ t(1) , t(2) , t(3) % Matrice de passage 3x3
- tn(1) , tn(2) , tn(3)
- tm(1) , tm(2) , tm(3)
- ];
- nul=zeros(3);
- P=[ Q , nul , nul , nul % Matrice de passage 12x12
- nul , Q , nul , nul
- nul , nul , Q , nul
- nul , nul , nul , Q
- ];
- Ke = P' * K * P; %----- matrice raideur elementaire sur (u,v,w,teta1,teta2,teta3)
- Fe = zeros(12,1); %----- pas de force generalisee elementaire
- %-------------------------------------------------------------------------------------------------
- end
- return
|