edge = totalEdge[i0] # 最终的边数组 print('edge:\n', edge) E = 3 # 每个三角形有 3 条边 NE = edge.shape[0] # 获得网格中边的个数, 即 `edge` 的行数 i1 = np.zeros(NE, dtype=np.int32) # 分配空间 i1[j] = range(3 * NC) # totalEdge0 的行数是 3*NC, j 的长度也是 3*NC print('i0:\n', i0) print('i1:\n', i1) edge2cell = np.zeros((NE, 4), dtype=np.int32) edge2cell[:, 0] = i0 // E # 得到每条边的左边单元 edge2cell[:, 1] = i1 // E # 得到每条边的右边单元 edge2cell[:, 2] = i0 % E # 得到每条边的在左边单元中的局部编号 edge2cell[:, 3] = i1 % E # 得到每条边在其右边单元中的局部编号 print('edge2cell:\n', edge2cell) mesh = TriangleMesh(node, cell) mesh.print() fig = plt.figure() axes = fig.gca() mesh.add_plot(axes) mesh.find_node(axes, showindex=True) mesh.find_cell(axes, showindex=True) mesh.find_edge(axes, showindex=True) plt.savefig('numpy-mesh-edge.png') plt.show()
# sedge[j] == stotalEdge arrayprint("stotalEdge:", stotalEdge) arrayprint("sedge[j]", sedge[j]) arrayprint("j", j) arrayprint("cell2edge", cell2edge) arrayprint("sedge:", sedge) # sedge == stotalEdge[i0] arrayprint("stotalEdge[i0]", stotalEdge[i0]) arrayprint("i0", i0) arrayprint("i1", i1) arrayprint("node", node) # (NN, 2) arrayprint("cell", cell) # (NC, 3) arrayprint("edge", edge) # (NC, 3) arrayprint("edge2cell", edge2cell) # (NE, 4) #edge = mesh.entity('edge') #arrayprint("edge", edge) # (NE, 2) #cell2edge = mesh.ds.cell_to_edge() #arrayprint("cell2edge", cell2edge) # (NC, 3) #edge2cell = mesh.ds.edge_to_cell() #arrayprint("edge2cell", edge2cell) # (NE, 4) fig = plt.figure() axes = fig.gca() mesh.add_plot(axes) mesh.find_node(axes, showindex=True, fontsize=28) mesh.find_edge(axes, showindex=True, fontsize=30) mesh.find_cell(axes, showindex=True, fontsize=32) plt.show()