poutre_compar.m 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. function poutre_compar(U)
  2. % comparaison de la solution numerique et analytique pour
  3. % une poutre uniformement chargee sur deux appuis
  4. % H.Oudin
  5. global nddln nelt nnode
  6. global Coord Connec Nprop Prop
  7. fa1=@(x) Prop(1,2)*x.*(x-1)/2 ; % solution analytique
  8. fa2=@(x) -Prop(1,2)*(2*x-1)/2;
  9. taille = get(0,'ScreenSize');
  10. figure('Name','comparaison avec la solution analytique',...
  11. 'Position',[taille(3)/2.02 taille(4)/2.6 taille(3)/2 taille(4)/2])
  12. subplot(2,1,1),title('moment de flexion Mf'), hold on,
  13. fplot(fa1,[0 1],'r') %----- solution analytique
  14. for iel=1:nelt %----- boucle sur les elements solution numerique
  15. loce=[]; for i=1:nnode loce=[loce,(Connec(iel,i)-1)*nddln+[1:nddln]]; end
  16. Ue=U(loce);
  17. EI=Prop(Nprop(iel),1);
  18. X = Coord(Connec(iel,:)); x2 = X(2); x1=X(1); L = abs(x2-x1);
  19. Mfe= (EI/L^2)*[-6*Ue(1)-4*L*Ue(2)+6*Ue(3)-2*L*Ue(4),...
  20. 6*Ue(1)+2*L*Ue(2)-6*Ue(3)+4*L*Ue(4)];
  21. x=x1:(x2-x1)/5:x2; y=Mfe(1)+(Mfe(2)-Mfe(1))*(x-x1)/L;
  22. plot(x,y,'b')
  23. end
  24. grid
  25. subplot(2,1,2)
  26. hold on,
  27. fplot(fa2,[0 1],'r')
  28. title('effort tranchant'),
  29. for iel=1:nelt %----- boucle sur les elements solution numerique
  30. loce=[]; for i=1:nnode loce=[loce,(Connec(iel,i)-1)*nddln+[1:nddln]];end
  31. Ue=U(loce);
  32. EI=Prop(Nprop(iel),1);
  33. X = Coord(Connec(iel,:)); x2 = X(2); x1=X(1); L = abs(x2-x1);
  34. Te = -(EI/L^3)*(12*Ue(1)+6*L*Ue(2)-12*Ue(3)+6*L*Ue(4));
  35. x=[x1:(x2-x1)/5:x2];
  36. y=Te*ones(1,length(x));
  37. plot(x,y,'b'),
  38. end
  39. grid
  40. return