我在有限元方法中使用了一个二维三角形网格来离散域。我想计算所有边的中点,因为我想使用元素。我正在使用 MatLab。我拥有的数据是:
包含节点坐标和的矩阵。大小为,其中是节点数。
包含每个三角形节点的矩阵。大小为,其中是网格中三角形的数量和 3 列,因为每个三角形都有三个节点。例如,这个矩阵的一行可能有所以三角形是由这些节点形成的,为了知道它们的坐标,我只取节点坐标矩阵中的第 10、4和行(前面的一)。
- 具有边界节点的数组。
我事先知道节点数(包括中点)将是其中是网格边界中的节点数,所以我可以预先分配矩阵。新节点矩阵将包含先前节点坐标和新节点坐标,元素矩阵现在将有 6 列,因为每条边将添加一个节点。
我的代码正在做的是遍历所有三角形并计算它们的边中点,如果它还没有在坐标节点矩阵中包括它(在这里我会浪费很多时间来检查它是否还在里面)。主要问题是,由于内部边缘对于两个三角形来说是共同的,所以已经计算了很多次边缘的中点,所以我在浪费时间计算中点,然后检查它是否已经在矩阵中。
你能给我任何关于如何更有效地计算边缘中点并将它们包含在矩阵中的建议吗?注意:我没有网格边缘的矩阵。
谢谢!