采用matlab实现有限元求解

题:用MATLAB编制有限元程序

  钢轨长度60米,扣件间距0.6米,钢轨参数:密度7800Kg/m3,弹性模量2.1×1011N/m2,惯性矩3.09×10-5m4,截面积为77.45cm2。轨下胶垫刚度为20KN/mm,胶垫阻尼损耗因子为0.25,计算(1)跨中受到200KN竖直向下的力时,钢轨的内力分布;(2)跨中受到200KN竖直向下的力时,钢轨的内力分布。

%材料参数&几何参数

E=2.1*10^8;A=77.45*10^-4;I=3.09*10^-5;L=0.6;q=0.592;rub=20000

%平面梁单元刚度矩阵ke

ke=[E*A/L 0 0 -E*A/L 0 0;

0 12*E*I/L^3 6*E*I/L^2 0 -12*E*I/L^36*E*I/L^2;

0 6*E*I/L^2 4*E*I/L 0 -6*E*I/L^22*E*I/L;

-E*A/L 0 0 E*A/L 0 0;

0 -12*E*I/L^3 -6*E*I/L^2 0 12*E*I/L^3-6*E*I/L^2;

0 6*E*I/L^2 2*E*I/L 0 -6*E*I/L^24*E*I/L]

%将单元刚度矩阵集结为总体刚度矩阵

K=zeros(303);

  for i=1:100

         for j=1:6

                for k=1:6

                   K(3*(i-1)+j,3*(i-1)+k)=K(3*(i-1)+j,3*(i-1)+k)+ke(j,k);

                 end

           end

   end

%再计入胶垫刚度系数

for  i=2:3:302

        K(i,i)=K(i,i)+rub;

end

return

%构建节点荷载向量(等效节点荷载)

F=zeros(303,1);

for i=2:3:302

         F(i,1)=-q*L;

end

return

F(2,1)=-q*L/2;F(302,1)=-q*L/2;

F(152,1)=-q*L-200;

F(3,1)=-q*L^2/12;

F(303,1)=q*L^2/12;

%求解节点位移向量U,U为一个303×1的列阵

U=pinv(K)*F;

fjd=-rub*[U(2:3:302,1)];%计算各胶垫(jd)的支反力

%绘制剪力图

for i=1:100

      if i<51

       ffl=sum(fjd(1:i)); holdon

       plot([(i-1)*L,i*L],[0,0],'k-');hold on

       plot([(i-1)*L,(i-1)*L],[0,ffl-(i-1)*q*L]);hold on

        plot([i*L,i*L],[0,ffl-i*q*L]);hold on

        plot([(i-1)*L,i*L],[ffl-(i-1)*q*L,ffl-i*q*L]);holdon;

else

       ffl=sum(fjd(1:i))-200;holdon

       plot([(i-1)*L,i*L],[0,0],'k-');holdon

       plot([(i-1)*L,(i-1)*L],[0,ffl-(i-1)*q*L]);holdon

       plot([i*L,i*L],[0,ffl-i*q*L]);holdon

        plot([(i-1)*L,i*L],[ffl-(i-1)*q*L,ffl-i*q*L]);holdon;

   end

end

title('剪力图');xlabel('长度/m');ylabel('剪力/KN');

%绘制弯矩图

syms x;

for i=1:100

      if i<51

        M=-q/2*x^2;

 for  j=1:i

       M=M+fjd(j)*(x-(j-1)*L);

end

fplot(-M,[(i-1)*L, i*L]); hold on;

else

    M=-q/2*x^2-200*(x-30);

for  j=1:i

      M=M+fjd(j)*(x-(j-1)*L);

end

fplot(-M,[(i-1)*L, i*L]); hold on;

   end

end

plot([0,60],[0,0],'k-');

axis([0 60 -4510]);

title('弯矩图');xlabel('长度/m');ylabel('弯矩/KN*m');

你可能感兴趣的:(采用matlab实现有限元求解)