OpenFoam 与 FiPy

计算科学 开放式泡沫 有限体积
2021-12-10 12:02:38

我需要为我正在从事的项目学习和使用有限体积的自动化解决方案包,并将其缩小到这两个包。我想知道是否有人对这两个软件包都有经验,也许可以对比较发表评论。考虑到这两个软件包的相似目标,我有点惊讶于我找不到太多在线比较的方式。

我的感觉是 FiPy 会更容易学习/实现,因为它是基于 Python 的,但 OpenFoam 可能由于其广泛采用而更加健壮和功能丰富?这两个软件包背后都有非常可靠的组织。

1个回答

我没有使用过 FiPy而只使用过OpenFOAM,但我认为两个主页上的一些观点都表明它在很大程度上取决于你想要模拟的内容。

OpenFOAM 已经实现了一些求解器(主要是 CFD,因为您的配置文件说明了计算等离子体物理,mhdFoam求解器可能是您想要的或至少作为基础,这里是它的用户组),但可以扩展以求解其他 FVM 可行的 PDE ,而在 FiPy 中,无论如何您可能都必须从头开始实现方程式 - 在后一种情况下,是的,Python 比 C++ 舒服得多,至少对我来说是这样。

有一些 Python 代码可以让 OpenFOAM 的生活变得更轻松:PyFoam帮助设置案例,以及pythonflu,一个用 Python 编写求解器的包装器(未经测试,我不知道它是如何执行的)。

根据我的经验,在 OpenFOAM 中设置一个案例是相当乏味的,而且你很可能最终会编写脚本来自动化网格设置等,所以我不知道 FiPy 是否真的需要更多的努力,即使使用了一个OpenFOAM 已经实施的求解器。如果您选择使用 Python 编写脚本,我怀疑您可以编写大部分代码,即 FiPy 与 OpenFOAM 的决定归结为少于 100 行代码的差异,即不应该太以后很难改变主意,尤其是在事先计划好的情况下。

当然,更重要的一点是,第一次设置需要多少时间以及它的性能如何。但是我找不到任何比较,所以你必须自己比较它们......

就个人而言,如果我之前没有使用过 OpenFOAM,并且我需要模拟一个 OpenFOAM 尚未提供求解器的系统,我很可能会首先尝试 FiPy,因为我更喜欢 Python 而不是 C++。但如前所述,与 PyFoam 一起可能会提出一个相当通用的框架来比较两者……如果可以使用 OpenFOAM 的求解器,我可能会使用那个。