fealpy网格编号问题,

用 fealpy 对求解域进行剖分, 我写下魏华祎老师已经实现的基本的网格信息点的函数,以四边形网格为例

from fealpy.mesh.quadrangle_mesh import QuadrangleMesh

xBox = [0, 1]  # x in [0,1]
yBox = [0, 1]  # y in [0,1]
MFBox = xBox + yBox
mesh = QuadrangleMesh.from_box(MFBox, nx=2, ny=2)

这样建立了如下的四边形网格

NE = mesh.number_of_edges()  # 剖分的边数量
NC = mesh.number_of_cell()  # 剖分数量

edge2cell = mesh.ds.edge_to_cell()  # 某条边所在剖分编号
cell2edge = mesh.ds.cell_to_edge()  # 剖分边的全局编号
cell2cell = mesh.ds.cell_to_cell()  # 剖分的相邻剖分编号

我们来详细说下后三个, 并以详细介绍每个例子的第一行含义

mesh.ds.cell_to_edge()

array([[ 1,  5,  3,  0],
       [ 3,  7,  4,  2],
       [ 6, 10,  8,  5],
       [ 8, 11,  9,  7]])

↑ 这就是第0个剖分的边所在的全局编号(边的信息是按逆时针排布给的)

mesh.ds.cell_to_cell()

array([[0, 2, 1, 0],
       [0, 3, 1, 1],
       [2, 2, 3, 0],
       [2, 3, 3, 1]])

这就是编号为0的剖分, 紧邻着的剖分编号, 对于第0个剖分, 挨着它的就是 2 1 0 以逆时针排列 

mesh.ds.edge_to_cell()

array([[0, 0, 3, 3],
       [0, 0, 0, 0],
       [1, 1, 3, 3],
       [0, 1, 2, 0],
       [1, 1, 2, 2],
       [0, 2, 1, 3],
       [2, 2, 0, 0],
       [1, 3, 1, 3],
       [2, 3, 2, 0],
       [3, 3, 2, 2],
       [2, 2, 1, 1],
       [3, 3, 1, 1]])

这就是编号为 0 的边, 所在的第一个剖分和第二个剖分的编号, 这条边在第一个剖分边的编号, 这条边在第二个剖分边的编号

还有两个常用的数据结构

isOutEdge = mesh.ds.boundary_edge_flag()
isInEdge = (edge2cell[:, 0] != edge2cell[:, 1])

这两组数据结构用来判断剖分的编辑是内部边界还是外部边界, 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值