portique_MEF2.m 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. close all ; clc;
  2. % script du portique de l'exercice MEF2
  3. %
  4. % Fonctions utilisees
  5. % statiqueUR : calcul de la reponse statique [U,R]
  6. % plotstr : trace du maillage avec numero noeuds et elements
  7. % plotdef : trace de la deformee
  8. % resultante : calcul de la resultante en x, y, z d'un vecteur nodal
  9. % poutre_stress : calcul de la contrainte dans un element barre
  10. %
  11. global nddln nnod nddlt nelt nnode ndim ncld
  12. global Coord Connec Typel Nprop Prop Ncl Vcl F
  13. disp(' ');
  14. disp('structure etudiee : portique de l''exercice MEF2');
  15. disp('==================');
  16. % definition du maillage
  17. h = 1; L = 1;
  18. Coord=[ 0 , 0 ; ... % definition des coordonnees des noeuds X , Y
  19. 0 , h ; ...
  20. L , h ; ...
  21. L , 0];
  22. [nnod,ndim]=size(Coord);
  23. nddln=3; nddlt=nddln*nnod;
  24. Connec=[ 1 , 2 ; ... % definition de la matrice de connectivite i , j
  25. 2 , 3 ; ...
  26. 3 , 4];
  27. [nelt,nnode]=size(Connec);
  28. % definition du modele EF : type des elements
  29. Typel = 'poutre_ke';
  30. for i=1:nelt Typel = char('poutre_ke',Typel); end
  31. % definition des caracteristiques mecaniques elementaires (ES EI fx fy)
  32. Nprop=[1;2;1];
  33. Prop=[ 1000 1 0 0 ; 1000 1 0 0 ];
  34. % definition des CL en deplacement
  35. CL=[ 1 , 1 , 1 , 1; ... % 1 ddl impose ,0 ddl libre
  36. 4 , 1 , 1 , 1];
  37. Ncl=zeros(1,nddlt);ncld=0;
  38. Vcl=zeros(1,nddlt); % Valeurs imposees nulles
  39. for i=1:size(CL,1)
  40. for j=1:nddln
  41. if CL(i,1+j)==1 Ncl(1,(CL(i,1)-1)*nddln+j)=1;ncld=ncld+1; end
  42. end
  43. end
  44. % definition des charges nodales
  45. Charg=[ 2 84 0 0 ]; % numero du noeud , Fx,Fy,Mz
  46. F=zeros(nddlt,1); % vecteur sollicitation
  47. for iclf=1:size(Charg,1)
  48. noeud=Charg(iclf,1);
  49. for i=1:nddln
  50. F((noeud-1)*nddln+i)=F((noeud-1)*nddln+i) + Charg(iclf,i+1);
  51. end
  52. end
  53. [Fx,Fy,Fz] = feval('resultante',F); %----- resultante des charges nodales
  54. plotstr % trace du maillage pour validation des donnees
  55. U = zeros(nddlt,1);
  56. R = zeros(nddlt,1);
  57. [U(:,1),R(:,1)] = statiqueUR; % ----- resolution du probleme
  58. %----- post-traitement
  59. plotdef(U)
  60. %----- format d'impression des vecteurs
  61. form =' %8.3e %8.3e %8.3e '; format = [form(1:8*nddln),' \n'];
  62. disp(' ');disp('------- deplacements nodaux sur (x,y,z) ----------');
  63. fprintf(format,U)
  64. disp(' ');disp('------- Efforts aux appuis ----------');
  65. fprintf(format,R(:,1));
  66. [Rx,Ry,Rz] = feval('resultante',R); %----- resultantes et reactions
  67. disp(' ');
  68. fprintf('La resultante des charges nodales en (x,y,z) est : %8.3e %8.3e %8.3e \n',Fx,Fy,Fz);
  69. fprintf('La resultante des charges reparties en (x,y,z) est : %8.3e %8.3e %8.3e \n',-Rx-Fx,-Ry-Fy,-Rz-Fz);
  70. fprintf('La resultante des efforts aux appuis en (x,y,z) est : %8.3e %8.3e %8.3e \n',Rx,Ry,Rz);
  71. disp(' ');disp('------- Contraintes sur les elements ----------');
  72. for iel=1:nelt
  73. loce=[]; for i=1:nnode loce=[loce,(Connec(iel,i)-1)*nddln+[1:nddln]];end
  74. Ue=U(loce);
  75. feval('poutre_stress',iel,Ue);
  76. end
  77. return