自适应网格细化代码的简单示例

计算科学 自适应网格细化
2021-12-19 11:46:57

我一直在编写自适应网格细化(amr)代码。作为代码的原型,我一直在查看我的顾问编写的自适应网格细化代码(用 c 编写)。我发现查看他们的代码很有用,但代码也做了诸如大量使用全局变量之类的事情,我想知道是否有更好的方法来实现Berger 和 Oliger syle amr

有人可以指出一些用于双曲线 pde 的简单(比如一维)amr 代码的源代码吗?我想与我的顾问写的内容进行比较和对比(这不是公开的,所以很遗憾我无法在这里链接到它)。我一直在查看其他 amr 代码(例如chombo)的网站,但我还没有找到基本 Berger 和 Oliger 算法的简单示例实现。

编辑:虽然现在有一个“已接受”的答案(Berger网站的链接,其中包含良好的文档),但该代码主要是用 Fortran 编写的;我当然希望链接到示例 amr 代码以及用其他语言(例如 c++)编写的文档!

另一个编辑:也许这有点无耻,但我终于编写了自己的简单 amr 代码(在 c 中),你可以在这里找到。我仍然希望有更多指向其他 AMR 代码的链接,这些代码具有相对简单的 api 和良好的文档(我应该说我的代码不符合这些标准......)

2个回答

多年来,Marsha 已经提供了相当多的源代码。其中一些不再受支持,但鉴于她是 Berger 和 Oliger 中的 Berger,检查她的网站和 clawpack 网站(其中也有她的代码,并且考虑到这是她、Randy 和其他人之间的合作),似乎好的开始。

https://cs.nyu.edu/berger/

ClawpackAMRClaw / GeoClaw的较新版本确实包含一些 1D 版本,但我不确定这是否会完全有帮助。Donna Calhoun 有一个页面试图列出一些您可能会感兴趣的常用代码。

也很抱歉没有早点发布这个。