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


18

自适应网格细化(AMR)是解决PDE数值解中空间尺度变化很大的常见技术。在结构化网格上存在哪些针对AMR的通用库?理想情况下,我希望本着PETSc的精神,库仅处理自适应网格,而我提供物理和离散化(有限差分/体积/元素)。

理想的图书馆是

  • 模块化:不决定如何编写代码或过多的数据结构
  • General:不在乎我使用的是哪种离散化
  • 高效:不会产生太多开销
  • 并行且高度可扩展

仅适合这些条件中的一个子集的库仍将受到关注。

附录:我知道Donna Calhoun的AMR软件包的详细列表,但是我不知道其中哪个(如果有)符合上述条件。因此,我主要感兴趣的是听取具有一个或多个(或更多)软件包的实际经验的人,以了解他们如何衡量这些术语。


2
+1,我也想知道还有什么AMR软件,并且希望它满足您上面提到的标准。
Geoff Oxberry 2012年

只是想我要提到的是,Chombo的最新版本刚刚发布,并且(据称)应该更容易集成到更大的软件包中(发行说明)。这不是主要修订,因此可能有些内容仍不能满足您的所有条件。
杰里米·科兹登

Answers:


14

BoxLib是要考虑的一个库。其主要功能(来自网站)包括:

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


    9

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

    当然,有一种libMesh的处理方式,但是也有PETSc的处理方式。因此希望这不会吓到您。


    4

    我会尝试SAMRAI,因为我知道至少有一个成功使用它的代码-IBAMR,这是一种用于与AMR进行流体-结构相互作用的浸入边界方法代码。


    感谢Johntra(并欢迎使用scicomp)!您是否偶然知道SAMRAI和BoxLib之间的显着差异?另外,您可以通过以下方式使用内联链接:在[]中放置链接文本,在()中
    放置

    不幸的是,我并没有(因为我真的是第一次)(BoxLib)。这正是我决定加入的原因-通过与大家进行非正式讨论来学习新的技术-谢谢。
    约翰特拉·沃尔塔

    我第二次说说SAMRAI,它是AMR的非常有用的通用框架。我也非常喜欢混合C ++ / Fortran设计作者的青睐。计算内核可以按原样使用Fortran编写,C ++类提供隐藏内部MPI和内存管理所需的所有抽象。
    talonmies,2012年

    @AronAhmadia:BoxLib无法处理以单元为中心的几何Multigrid中改变的Dirichlet边界的分段线性插值。思想将其添加为一个有趣的观点。
    Gaurav Saxena

    2

    您未指定结构化或非结构化。

    看看Paramesh,金字塔,p4est,Dendro,Samrai和Chombo。

    Btw金字塔不进行粗化处理。


    1
    接得好; 我已经编辑了问题。您能否评论这些库符合我的标准的程度如何?
    David Ketcheson 2012年
    By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
    Licensed under cc by-sa 3.0 with attribution required.