matlab网格自动划分,有限元实现三维自动划分网格.m

% http://myangie.blog.sohu.com/6192144.html

% 在开发有限元程序的时候,

% 首先遇到的问题就是实现自动划分网格(meshgrid),

% matlab可以实现这一功能,它的基本原理就是

% 根据图论和邻接矩阵的原理利用gplot函数和sparse稀疏矩阵实现的,

% 但是它只能实现二维!本人重新编写了一个程序,

% 可以实现三维的网格自动划分

% (包括三角形单元、矩形单元和六面体单元),

% 程序如下:

a1=zeros(m1*n1);

b1=zeros(m1*n1);

XY1=zeros(m1*n1,2);

x1=zeros(1,m1*n1);

y1=zeros(1,m1*n1);

z1=zeros(1,m1*n1);

for k=1:n1

for i=1:m1

x1(i+(k-1)*m1)=xmin1+(k-1)*(xmax1-xmin1)/(n1-1);

z1(i+(k-1)*m1)=zmin1+(i-1)*(zmax1-zmin1)/(m1-1);

end

end

clear k i

a1(m1,m1)=2;

a1((n1-1)*m1+1,(n1-1)*m1+1)=2;

a1(1,1)=3;

a1(n1*m1,n1*m1)=3;

for i=1:(n1-2)

a1(i*m1+1,i*m1+1)=4;

a1((i+1)*m1,(i+1)*m1)=4;

end

clear i

for j=2:(m1-1)

a1(j,j)=4;

a1((n1-1)*m1+j,(n1-1)*m1+j)=4;

end

clear j

for i=1:(n1-2)

for j=2:(m1-1)

a1(i*m1+j,i*m1+j)=6;

end

end

clear i j

a1=sparse(a1);

for i=1:(n1-1)*m1-1

b1(i,i+1)=-1;

end

clear i

for i=1:(n1-1)*m1

b1(i,i+m1)=-1;

end

clear i

for i=1:(n1-1)*m1-1

b1(i,i+m1+1)=-1;

end

clear i

for k=1:(n1-1)

for h=1:(n1-1)

b1(m1*k,m1*h+1)=0;

end

end

clear k h

for i=(n1-1)*m1+1:n1*m1-1

b1(i,i+1)=-1;

end

clear i

b1=sparse(b1);

b1=a1+b1'+b1;

clear a1

a1=sparse(b1);

clear b1

XY1=[x1',y1',z1'];

a2=zeros(m2*n2);

b2=zeros(m2*n2);

XY2=zeros(m2*n2,2);

x2=0.5*ones(1,m2*n2);

y2=zeros(1,m2*n2);

z2=zeros(1,m2*n2);

for k=1:n2

for i=1:m2

z2(i+(k-1)*m2)=zmin2+(k-1)*(zmax2-zmin2)/(n2-1);

y2(i+(k-1)*m2)=ymin2+(i-1)*(ymax2-ymin2)/(m2-1);

end

end

clear k i

a2

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值