treillis_exo10.m 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. close all ; clc;
  2. % treillis : donnees de l'exercice de cours 10
  3. % avec h=1+sqrt(2) , ES = 100*sqrt(2) , F = 10.
  4. %
  5. % Fonctions utilisees
  6. % statiqueUR : calcul de la reponse statique [U,R]
  7. % plotstr : trace du maillage avec ne noeuds et elements
  8. % plotdef : trace de la deformee
  9. % resultante : calcul de la resultante en x, y, z d'un vecteur nodal
  10. % barre_stress : calcul de la contrainte dans un element barre
  11. %
  12. % Initialisation des variables globales
  13. % nddln : nb de ddl par noeud
  14. % nnod : nb de noeuds
  15. % nddlt : nb de ddl total(=ndln*nnod)
  16. % nelt : nb d'elements
  17. % nnode : nb de noeuds par element (2)
  18. % ndim : dimension du probleme (1D,2D ou 3D)
  19. % ncld : nb de conditions de champ impose (dirichlet)
  20. %
  21. % Coord(nnod,ndim): coordonnees des noeuds
  22. % Connec(nelt,2) : connectivites des elements
  23. % Typel(nelt) : Type des elements (barre_ke)
  24. % Nprop(nelt) : Ne de caracteristique pour chaque element
  25. % Prop(nprop,ncar): Tableau des caracteristiques mecaniques (ES, f)
  26. % Ncl(1,nddlt) : vaut 1 si le ddl est impose (deplacements imposes)
  27. % Vcl(1,nddlt) : valeur du deplacement impose
  28. % F (nddlt,1) : vecteur des charges nodales donnees
  29. % H.Oudin
  30. global nddln nnod nddlt nelt nnode ndim ncld
  31. global Coord Connec Typel Nprop Prop Ncl Vcl F
  32. % definition du maillage
  33. h = 1+sqrt(2);
  34. Coord=[ h , -h ; ... % definition des coordonnees des noeuds X , Y
  35. 0 , 0 ; ...
  36. h , 0 ; ...
  37. 2*h , 0 ];
  38. [nnod,ndim]=size(Coord);
  39. nddln=2; nddlt=nddln*nnod;
  40. Connec=[ 1 , 2 ; ... % definition de la matrice de connectivite i , j
  41. 1 , 3 ; ...
  42. 1 , 4 ];
  43. [nelt,nnode]=size(Connec);
  44. % definition des caracteristiques mecaniques elementaires (ES fx fy)
  45. Nprop=[1;1;1]; % pour chaque element Ne de la propriete
  46. Prop=[ 100*sqrt(2) 0 0 % tableau des differentes valeurs de ES fx fy
  47. ];
  48. % definition du modele EF : type des elements
  49. Typel = 'barre_ke'; % definition du type des elements
  50. for i=1:nelt
  51. Typel = char('barre_ke',Typel);
  52. end
  53. % definition des CL en deplacement
  54. CL=[ 2 , 1 , 1 ; ... % Ne du noeud, type sur u et v (1 ddl impose ,0 ddl libre)
  55. 3 , 1 , 1 ; ...
  56. 4 , 1 , 1 ];
  57. Ncl=zeros(1,nddlt); ncld=0;
  58. Vcl=zeros(1,nddlt); % Valeurs des deplacements imposes
  59. %Vcl(2)=1; % e utiliser pour imposer une valeur non nulle sur un ddl i
  60. for i=1:size(CL,1)
  61. for j=1:nddln
  62. if CL(i,1+j)==1 Ncl(1,(CL(i,1)-1)*nddln+j)=1;ncld=ncld+1; end
  63. end
  64. end
  65. % definition des charges nodales
  66. Charg=[ 1 0 -10 % Ne du noeud , Fx , Fy
  67. ];
  68. F=zeros(nddlt,1); %----- vecteur sollicitation
  69. for iclf=1:size(Charg,1)
  70. noeud=Charg(iclf,1);
  71. for i=1:nddln
  72. F((noeud-1)*nddln+i)=F((noeud-1)*nddln+i) + Charg(iclf,i+1);
  73. end
  74. end
  75. [Fx,Fy,Fz] = feval('resultante',F); %----- resultante des charges nodales
  76. clc;disp(' ');
  77. disp('structure etudiee : treillis de l''exercice de cours N 10');
  78. disp('==================');
  79. disp('Les variables globales sont initialisees');
  80. disp('Fin de lecture des donnees');
  81. % trace du maillage pour validation des donnees
  82. plotstr
  83. reponse = input('Voulez-vous continuer? O/N [O]: ','s');
  84. if isempty(reponse) | reponse =='O'
  85. disp(' ');
  86. U = zeros(nddlt,1);
  87. R = zeros(nddlt,1);
  88. [U(:,1),R(:,1)] = statiqueUR; % ----- resolution du probleme
  89. %----- format d'impression des vecteurs
  90. form =' %8.3e %8.3e %8.3e '; format = [form(1:8*nddln),' \n'];
  91. disp(' ');disp('------- deplacements nodaux sur (x,y,z) ----------');
  92. fprintf(format,U)
  93. plotdef(U)
  94. %----- post-traitement
  95. disp(' ');disp('------- Efforts aux appuis ----------');
  96. fprintf(format,R(:,1));
  97. [Rx,Ry,Rz] = feval('resultante',R); %----- resultantes et reactions
  98. disp(' ');
  99. fprintf('La resultante des charges nodales en (x,y,z) est : %8.3e %8.3e %8.3e \n',Fx,Fy,Fz);
  100. fprintf('La resultante des charges reparties en (x,y,z) est : %8.3e %8.3e %8.3e \n',-Rx-Fx,-Ry-Fy,-Rz-Fz);
  101. fprintf('La resultante des efforts aux appuis en (x,y,z) est : %8.3e %8.3e %8.3e \n',Rx,Ry,Rz);
  102. disp(' ');disp('------- Contraintes sur les elements ----------');
  103. for iel=1:nelt %----- boucle sur les elements
  104. loce=[]; for i=1:nnode loce=[loce,(Connec(iel,i)-1)*nddln+[1:nddln]];end
  105. Ue=U(loce);
  106. Ne=feval('barre_stress',iel,Ue);
  107. fprintf('Dans l''element %3i l''effort normal est %8.3e\n',iel,Ne)
  108. end
  109. clear all
  110. return
  111. else
  112. disp(' ');disp('---------------- arret du calcul----------------');
  113. clear all
  114. end