treillis_MEF6.m 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. close all ; clc;
  2. % Treillis de l'exercice MEF6
  3. % H.Oudin
  4. global nddln nnod nddlt nelt nnode ndim ncld
  5. global Coord Connec Typel Nprop Prop Ncl Vcl F
  6. disp(' ');
  7. disp('Structure etudiee : Treillis de l''exercice MEF6 ');
  8. disp('=================');
  9. % definition du maillage
  10. h = 100*sqrt(2)/2; % definition des coordonnees des noeuds X , Y
  11. Coord=[ 0 0
  12. h -h
  13. 2*h 0
  14. 3*h -h
  15. 4*h 0 ];
  16. [nnod,ndim]=size(Coord);
  17. nddln=2; nddlt=nddln*nnod;
  18. % definition de la matrice de connectivite i , j
  19. Connec=[ 1 2 ; 1 3 ; 2 3 ; 2 4 ; 3 4 ; 3 5 ; 4 5 ];
  20. [nelt,nnode]=size(Connec);
  21. Typel = 'barre_ke'; % definition du type des elements
  22. for i=1:nelt
  23. Typel = char('barre_ke',Typel);
  24. end
  25. Nprop=ones(nelt);
  26. Prop=[ 100*sqrt(2) 0 0 ]; % tableau des differentes valeurs de ES fx fy
  27. % definition des CL en deplacement
  28. CL=[ 1 , 1 , 1 ; ...
  29. 5 , 0 , 1 ];
  30. Ncl=zeros(1,nddlt); ncld=0;
  31. Vcl=zeros(1,nddlt); % Valeurs des deplacements imposes
  32. for i=1:size(CL,1)
  33. for j=1:nddln
  34. if CL(i,1+j)==1
  35. Ncl(1,(CL(i,1)-1)*nddln+j)=1;
  36. ncld=ncld+1;
  37. end
  38. end
  39. end
  40. % definition des charges nodales numero du noeud , Fx , Fy
  41. Charg=[ 2 0 -1.
  42. 4 0 -1.];
  43. F=zeros(nddlt,1); %----- vecteur sollicitation
  44. for iclf=1:size(Charg,1)
  45. noeud=Charg(iclf,1);
  46. for i=1:nddln
  47. F((noeud-1)*nddln+i)=F((noeud-1)*nddln+i) + Charg(iclf,i+1);
  48. end
  49. end
  50. [Fx,Fy,Fz] = feval('resultante',F); %----- resultante des charges nodales
  51. % trace du maillage pour validation des donnees
  52. plotstr
  53. U = zeros(nddlt,1);
  54. R = zeros(nddlt,1);
  55. [U(:,1),R(:,1)] = statiqueUR; % ----- resolution du probleme
  56. %----- format d'impression des vecteurs
  57. form =' %8.3e %8.3e %8.3e '; format = [form(1:8*nddln),' \n'];
  58. disp(' ');disp('------- deplacements nodaux sur (x,y,z) ----------');
  59. fprintf(format,U)
  60. plotdef(U)
  61. %----- post-traitement
  62. disp(' ');disp('------- Efforts aux appuis ----------');
  63. fprintf(format,R(:,1));
  64. [Rx,Ry,Rz] = feval('resultante',R); %----- resultantes et reactions
  65. disp(' ');
  66. fprintf('La resultante des charges nodales en (x,y,z) est : %8.3e %8.3e %8.3e \n',Fx,Fy,Fz);
  67. fprintf('La resultante des charges reparties en (x,y,z) est : %8.3e %8.3e %8.3e \n',-Rx-Fx,-Ry-Fy,-Rz-Fz);
  68. fprintf('La resultante des efforts aux appuis en (x,y,z) est : %8.3e %8.3e %8.3e \n',Rx,Ry,Rz);
  69. disp(' ');disp('------- Contraintes sur les elements ----------');
  70. for iel=1:nelt %----- boucle sur les elements
  71. loce=[]; for i=1:nnode loce=[loce,(Connec(iel,i)-1)*nddln+[1:nddln]];end
  72. Ue=U(loce);
  73. Ne=feval('barre_stress',iel,Ue);
  74. fprintf('Dans l''element %3i l''effort normal est %8.3e\n',iel,Ne)
  75. end
  76. return