多边形网格生成(一) Polymesher

本文介绍了使用Polymesher工具在MATLAB中生成两种不同几何形状(圆形区域和Cook梁)的多边形网格,展示了具体代码实现和边界条件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进行有限元计算等操作有时需要用到多边形网格。本文计划介绍四种多边形网格的生成方法,包括

  • Polymesher直接生成平面多边形网格
  • 平面N边形节点网格生成
  • 曲面四节点网格重构为曲面多边形网格
  • 曲面四节点网格重构为曲面N边形网格

本文是以上四点的第一部分, Polymesher直接生成平面多边形网格

案例一 圆形区域多边形网格生成

%%在半径为1.0047的圆上生成多边形网格
[Nodes_Coord,Element_Connect] = PolyMesher(@Circle,100,200);Nodes_Coord(:,3)=0;
showmesh(Nodes_Coord,Element_Connect)

%----------------------------------------------- Domain
function [x] = Circle(Demand,Arg)
  BdBox = [-2 2 -2 2];
  switch(Demand)
    case('Dist');  x = DistFnc(Arg,BdBox);
    case('BC');    x = BndryCnds(Arg{:},BdBox);
    case('BdBox'); x = BdBox;
    case('PFix');  x = FixedPoints(BdBox);
  end
end
%----------------------------------------------- COMPUTE DISTANCE FUNCTIONS
function Dist = DistFnc(P,BdBox)
  Dist = dCircle(P,0,0,1.0047);
end
%---------------------------------------------- SPECIFY BOUNDARY CONDITIONS
function [x] = BndryCnds(Node,Element,BdBox)
  x = cell(2,1); %No boundary conditions specified for this problem
end
%----------------------------------------------------- SPECIFY FIXED POINTS
function [PFix] = FixedPoints(BdBox)
  PFix = [0,0];
end
%-------------------------------------------------------------------------%

案例二 Cook梁多边形网格生成

[Nodes_Coord,Element_Connect] = PolyMesher(@Cook,16,100);Nodes_Coord(:,3)=0;
showmesh(Nodes_Coord,Element_Connect)
%----------------------------------------------- Domain
function [x] = Cook(Demand,Arg)
  BdBox = [0 48 0 60];
  switch(Demand)
    case('Dist');  x = DistFnc(Arg,BdBox);
    case('BC');    x = BndryCnds(Arg{:},BdBox);
    case('BdBox'); x = BdBox;
    case('PFix');  x = FixedPoints(BdBox);
  end
end
%----------------------------------------------- COMPUTE DISTANCE FUNCTIONS
function Dist = DistFnc(P,BdBox)
  d1 = dRectangle(P,0,48,0,60);
  d2 = dLine(P,0,44,48,60);
  D=dDiff(d1,d2);
  d3 = dLine(P,0,0,48,44);
  Dist = dIntersect(d3,D);
end
%---------------------------------------------- SPECIFY BOUNDARY CONDITIONS
function [x] = BndryCnds(Node,Element,BdBox)
  x = cell(2,1); %No boundary conditions specified for this problem
end
%----------------------------------------------------- SPECIFY FIXED POINTS
function [PFix] = FixedPoints(BdBox)
  PFix = [];
end
%-------------------------------------------------------------------------%

附件 Polymesher MATLAB包

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值