Fortran 中的八叉树代码

计算科学 正则 积分方程
2021-12-17 05:19:52

我是科学计算的新手。我正在寻找八叉树的 Fortran(最好是 f90)实现。

我的问题需要一个八叉树来划分我的域,直到在任何框中不超过一些 N 个粒子(或我知道可以插入积分方程方法以求解拉普拉斯方程等方程的密度值的源)。

我只能找到这个 C++ 实现我想知道是否已有可以使用的 Fortran 库。

此外,关于在 Fortran 中八叉树实现的好论文推荐可以用来使在计算框上应用快速积分方程方法变得容易,将不胜感激!

2个回答

我没有使用 Octrees 的经验,但是每当我想在 Fortran 中使用一些不错的 C++ 库时,我只需编写一个简单的 C 驱动程序——通常是一些完全符合我需要的 C 函数。然后我使用 iso_c_binding 模块从 Fortran 调用它们。这有一个很大的优势,即您可以重用一个经过良好测试的库和一个围绕它的社区。

有关如何使用 iso_c_binding 的信息,我在这里写了一些信息:

http://fortran90.org/src/best-practices.html#interfacing-with-c

此特定信息用于从 C 调用 Fortran。我可以看到我应该更新它。这是我从 Fortran 调用 C++ 库的代码,第一个链接是简单的 C 驱动程序,第二个链接是 Fortran 接口,然后我就像任何其他 Fortran 子例程一样调用它:

https://github.com/certik/hfsolver/blob/master/src/qc_libint.cpp

https://github.com/certik/hfsolver/blob/master/src/qc.f90

您似乎非常喜欢使用 Fortran。八叉树在有效实现时是相当复杂的数据结构,因此更适合对此有更多支持的编程语言,例如 C/C++。C/C++ 中有许多非常高质量的实现可供您使用。