我正在研究移动网格上的并行有限元方法。
因此,每次重新网格化时,我都需要从ParMetis调用ParMETIS_V3_AdaptiveRepart
来执行重新分区。
成功时,该功能仅生成分区信息,即处理器上的元素。
然而,为了构造子网格的重影层,过程的邻居也是重要的。
所以我想知道是否有任何有效的方法来获取有关共享(重叠)实体和邻居的信息,或者ParMetis是否实际提供了这些信息?
答案 0 :(得分:0)
ParMetis 是功能 ParMETIS_V3_AdaptiveRepart 或多或少地执行 ParMETIS_V3_PartKway
ParMETIS_V3_PartKway 的输出为part
“大小等于本地存储的顶点数的数组。成功完成后,
将本地存储的顶点的分区矢量写入此数组。”
它也返回被切边的数量。 (这只是您想要的一部分)。
但是METIS不能像您所说的那样提供一种创建“幽灵层”的方法。
但是,由于创建了图形,因此您知道如何为每个元素找到每个邻居。然后,您可以检查您的邻居元素是否在当前流程的图形中,以及part[element]==part[neighbour_element]
是否在其中。如果邻居元素不在您当前的过程中,则必须执行一些MPI。