[Matlab科学绘图] 绘制平面位移云图

在用MATLAB做有限元分析的时候,难免需要绘制云图,网上的资料又很少,且不通用。自己实现之后在此记录一下,希望也能帮助到其他人。

平台:Win7+Matlab 2020a

问题描述:假设一个悬臂梁受到均布力作用,如下图所示,通过有限元法计算得到单元节点位移。

单元划分和节点编号如下:

单元类型:双线性四边形单元,节点编号顺序如下

 假设有限元计算结果如下:

节点编号 1,7,13 2,8,14 3,9,15 4,10,16 5,11,17 6,12,18
X方向节点位移Ux 0 1 2 3 4 5

使用patch函数绘制位移云图

clc;clear
set(0,'defaultfigurecolor','w')%设置背景色为白色
nodex = [0, 0.2, 0.4, 0.6, 0.8, 1.0,...
         0, 0.2, 0.4, 0.6, 0.8, 1.0,...
         0, 0.2, 0.4, 0.6, 0.8, 1.0];  %节点X坐标
nodey = [0,   0,   0,   0,   0,   0,...
         0.2, 0.2, 0.2, 0.2, 0.2, 0.2,...
         0.4, 0.4, 0.4, 0.4, 0.4, 0.4];%节点Y坐标
nodeUx = [0, 1, 2, 3, 4, 5,...
          0, 1, 2, 3, 4, 5,...
          0, 1, 2, 3, 4, 5];%节点X方向位移
nel = 10;%单元数
nelx = 5;%X方向单元数
nely = 2;%Y方向单元数
X = [];
Y = [];
Ux = [];
for j = 1:nely
    for i = 1:nelx
        X0 = [nodex((j-1)*(nelx+1)+i), nodex((j-1)*(nelx+1)+i+1),...
              nodex(j*(nelx+1)+i+1), nodex(j*(nelx+1)+i)]';
        X = [X X0];
        Y0 = [nodey((j-1)*(nelx+1)+i), nodey((j-1)*(nelx+1)+i+1),...
              nodey(j*(nelx+1)+i+1), nodey(j*(nelx+1)+i)]';
        Y = [Y Y0];
        Ux0 = [nodeUx((j-1)*(nelx+1)+i), nodeUx((j-1)*(nelx+1)+i+1),...
              nodeUx(j*(nelx+1)+i+1), nodeUx(j*(nelx+1)+i)]';
        Ux = [Ux Ux0];
    end   
end
patch(X,Y,Ux); %填充
shading interp;   %色彩平滑
colorbar; 
% axis equal;

结果下图所示

扫描二维码关注公众号,回复: 12720611 查看本文章
节点位移云图

猜你喜欢

转载自blog.csdn.net/zhwzhaowei/article/details/108684645
今日推荐