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