是否有用于结构化网格自适应网格细化的通用库?

计算科学 pde 图书馆 并行计算 自适应网格细化
2021-12-11 22:11:40

自适应网格细化(AMR) 是一种常用技术,用于处理 PDE 数值解中空间尺度变化很大的问题。结构化网格上的 AMR 有哪些通用库?理想情况下,我想要一些具有 PE​​TSc 精神的东西,其中库只处理自适应网格,我提供物理和离散化(有限差分/体积/元素)。

理想的图书馆是

  • 模块化:不规定我如何编写代码或过多的数据结构
  • 一般:不在乎我使用什么样的离散化
  • 高效:不会产生太多开销
  • 并行且高度可扩展

仅符合这些标准的一个子集的库仍然会引起人们的兴趣。

附录:我知道Donna Calhoun 的 AMR 包的广泛列表,但我不知道其中哪些(如果有)符合上述标准。所以我主要想听听那些对一个或(更好)更多包有实际经验的人的意见,关于他们在这些方面的衡量标准。

4个回答

要考虑的一个库是BoxLib它的主要特点(来自网站)是:

  • 支持具有可选子循环的块结构 AMR
  • 支持以细胞为中心、以人脸为中心和以节点为中心的数据
  • 支持分层网格结构上的双曲线、抛物线和椭圆求解
  • C++ 和 Fortran90 版本
  • 支持 MPI 和 OpenMP 的混合编程模型
  • 在燃烧、天体物理学、宇宙学和多孔介质方面的成熟应用基础
  • 演示扩展到超过 200,000 个处理器
  • 免费提供给感兴趣的用户
  • Fortran 版本还包含一个Python 包装器(由我编写)(尽管它还很年轻)。

    您还应该查看libMesh它针对有限元方法,但除此之外,我认为它可以检查您的大部分内容。与 BoxLib 不同的是,它是一个完全非结构化的混合元素类型库,它在同一网格中支持四面体、金字塔、棱柱和六面体。它还具有最大的高阶多项式基函数集成规则集之一。它设置为允许您直接调用 PETSc(以及其他一些库),因此您具有与 PETSc 相同的求解器可扩展性。

    当然有一种 libMesh 做事方式,但也有一种 PETSc 做事方式。所以希望这不会吓到你。

    我会尝试SAMRAI,我知道至少有一个代码可以成功使用它——IBAMR,一种用于与AMR 的流固耦合的沉浸式边界方法代码。

    您没有指定结构化或非结构化。

    看看 Paramesh、Pyramid、p4est、Dendro、Samrai 和 Chombo。

    顺便说一句,金字塔不做粗化。