我一直在用 C 语言编写一些代码来进行细胞内粒子模拟。PIC算法的步骤之一需要求解(数值)泊松方程
最初我想将程序限制为 2d 情况(而不是 3d)并使用有限差分法(而不是有限元)。
令我惊讶的是,我找不到任何免费的开源 C 库来完成这项任务(即使用有限差分法求解 2d Poisson 方程)。我发现的唯一东西是 FISHPACK - FORTRAN77 例程的集合,是著名的 SLATEC 库的一部分。
我对 fortran 很好,但是从 C 调用 fortran 例程需要一些不必要的数组转换,并且“本机”C 解决方案似乎更方便。我犹豫使用 FISSHPACK 的另一个原因是它使用带有隐式类型声明的单精度浮点数。使用 gcc '-fdefault-real-8' 标志我能够将其转换为双精度,但我不确定在此之后一切是否仍然正常工作。
所以,我的问题是:是否有任何免费(如自由)C/C++ 库来使用有限差分法求解 2d Poisson 方程?由于我确实打算切换到 3d 和有限元,因此也欢迎为此目的提供有关 C 库的建议。