二维网格中的节点重新编号

计算科学 有限元 计算几何
2021-12-05 08:27:21

我有一个使用 Q4 元素离散化的二维域。我有节点位置和元素连接矩阵。我现在想以这样一种方式重新编号节点,即所有内部节点都先标记,然后再标记边界节点。

目前,刚度矩阵的带宽并不重要。因此,只要首先对所有内部节点进行编号,节点编号就可以是任意的。这种编号使得某些域分解方法的实现易于编写。

有人可以建议一种有效的算法来实现这一点吗?

1个回答

我想到的第一个想法:

  1. 创建一个multimap Edge2Quad,其中边编号作为键,四边形元素编号作为值。
  2. 遍历所有边缘并填充多张Edge2Quad地图。O(Nedges)
  3. 现在,所有内部边缘将恰好属于两个四边形,而边界边缘将恰好属于一个。
  4. 通过遍历您的多图,您将能够将节点标记为内部或边界。O(Nedges)
  5. 执行节点重新排序。O(Nnodes)

当然,您可以通过仅使用数组并向上计数来简化此操作。