treillis_cours_V2.m 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. close all ; clc;
  2. % jeu de donnees du treillis traite en exemple dans le cours
  3. % avec a=100 , ES = 100*sqrt(2) , F = 40.
  4. % avec la methode du terme unite sur la diagonale
  5. %
  6. % Fonctions utilisees
  7. % statique : calcul de la reponse statique [U,R]
  8. % plotstr : trace du maillage avec ne noeuds et elements
  9. % plotdef : trace de la deformee
  10. % resultante : calcul de la resultante en x, y, z d'un vecteur nodal
  11. % barre_stress : calcul de la contrainte dans un element barre
  12. global nddln nnod nddlt nelt nnode ndim ncld
  13. global Coord Connec Typel Nprop Prop Ncl Vcl F
  14. disp(' ');
  15. disp('structure etudiee : treillis traite en exemple dans le cours');
  16. disp('==================');
  17. % definition du maillage
  18. h = 100*sqrt(2)/2;
  19. Coord=[ 0 , 0 ; ... % definition des coordonnees des noeuds X , Y
  20. 2*h , 0 ; ...
  21. h , h ];
  22. [nnod,ndim]=size(Coord);
  23. nddln=2; nddlt=nddln*nnod;
  24. Connec=[ 1 , 2 ; ... % definition de la matrice de connectivite i , j
  25. 1 , 3 ; ...
  26. 2 , 3 ];
  27. [nelt,nnode]=size(Connec);
  28. %definition du modele EF : type des elements
  29. Typel = 'barre_ke'; % definition du type des elements
  30. for i=1:nelt
  31. Typel = char('barre_ke',Typel);
  32. end
  33. % definition des caracteristiques mecaniques elementaires (ES fx fy)
  34. Nprop=[1;1;1]; % pour chaque element numero de la propriete
  35. Prop=[ 100*sqrt(2) 0 0 % tableau des differentes valeurs de ES fx fy
  36. ];
  37. % definition des CL en deplacement
  38. CL=[ 1 , 1 , 1 ; ... % numero du noeud, type sur u et v (1 ddl impose ,0 ddl libre)
  39. 2 , 0 , 1 ];
  40. Ncl=zeros(1,nddlt); ncld=0;
  41. Vcl=zeros(1,nddlt); % Valeurs des deplacements imposes
  42. for i=1:size(CL,1)
  43. for j=1:nddln
  44. if CL(i,1+j)==1
  45. Ncl(1,(CL(i,1)-1)*nddln+j)=1;
  46. ncld=ncld+1;
  47. end
  48. end
  49. end
  50. % definition des charges nodales
  51. Charg=[ 3 40. 0 % numero du noeud , Fx , Fy
  52. ];
  53. F=zeros(nddlt,1); %----- vecteur sollicitation
  54. for iclf=1:size(Charg,1)
  55. noeud=Charg(iclf,1);
  56. for i=1:nddln
  57. F((noeud-1)*nddln+i)=F((noeud-1)*nddln+i) + Charg(iclf,i+1);
  58. end
  59. end
  60. [Fx,Fy,Fz] = feval('resultante',F); %----- resultante des charges nodales
  61. % trace du maillage pour validation des donnees
  62. close all
  63. plotstr
  64. U = zeros(nddlt,1);
  65. R = zeros(nddlt,1);
  66. [U(:,1),R(:,1)] = statique; % ----- resolution du probleme
  67. % methode du terme unite sur la diagonale
  68. %----- format d'impression des vecteurs
  69. form =' %8.3e %8.3e %8.3e '; format = [form(1:8*nddln),' \n'];
  70. disp(' ');disp('------- deplacements nodaux sur (x,y,z) ----------');
  71. fprintf(format,U)
  72. plotdef(U)
  73. %----- post-traitement
  74. disp(' ');disp('------- Efforts aux appuis ----------');
  75. fprintf(format,R(:,1));
  76. [Rx,Ry,Rz] = feval('resultante',R); %----- resultantes et reactions
  77. disp(' ');
  78. fprintf('La resultante des charges nodales en (x,y,z) est : %8.3e %8.3e %8.3e \n',Fx,Fy,Fz);
  79. fprintf('La resultante des charges reparties en (x,y,z) est : %8.3e %8.3e %8.3e \n',-Rx-Fx,-Ry-Fy,-Rz-Fz);
  80. fprintf('La resultante des efforts aux appuis en (x,y,z) est : %8.3e %8.3e %8.3e \n',Rx,Ry,Rz);
  81. disp(' ');disp('------- Contraintes sur les elements ----------');
  82. for iel=1:nelt %----- boucle sur les elements
  83. loce=[]; for i=1:nnode loce=[loce,(Connec(iel,i)-1)*nddln+[1:nddln]];end
  84. Ue=U(loce);
  85. Ne=feval('barre_stress',iel,Ue);
  86. fprintf('Dans l''element %3i l''effort normal est %8.3e\n',iel,Ne)
  87. end
  88. clear all