我正在尝试为非结构化网格编写可扩展的并行 AMR。这似乎有三种方法
a)在每个处理器上存储一些全局网格信息,并使用 parmetis 分区(我追求的最简单的方法)。我以前从未使用过 ParMetis(只是 metis),所以我不知道如何能够并行读取给定的网格文件进行分区,然后以并行可读的格式存储文件。
b) 将全局网格存储在 rank=0 上,使用 Metis,然后分散。我不喜欢这种方法,因为它比 (a) 更复杂,而且您仍然需要一个能够存储整个网格的节点。
c) 使用像 p4est 这样的方法,它只适用于结构化的四边形/六边形。我不确定每个处理器上存储了多少全局信息,但它看起来相当可扩展。p4est 中用于网格编码的技术是否也可以用于非结构化网格。在我看来,即使一个只存储一个整数,比如表示一个元素属于哪个处理器,迟早由于无法在一个节点上存储该信息,可伸缩性将受到限制。我认为在p4est中所做的就是对一个粗网格进行分区(可以存储在每个节点上),并在分区后进行细化,但是这种方法不能用于非结构化AMR,对吗?
感谢您的任何意见。