用于求解线性 2D/3D 椭圆 PDE 的 C 或 fortran 库

计算科学 pde C 图书馆 椭圆pde
2021-12-24 22:46:26

我正在寻找一个通用库,它可以在具有混合/Robin 边界条件的矩形域上求解 2D 或 3D 线性椭圆 PDE。我是一名 C 程序员,所以我更喜欢 C 库,但 fortran 也可以,因为它很容易从 C 调用 fortran 代码。到目前为止,我只找到了一个选项:MUDPACK这是一个使用 Multigrid 并处理 2D 和 3D 椭圆 PDE 的 fortran 库。

只是想知道是否还有其他选择?对我来说不幸的是,许多 PDE 库是用 C++ 编写的,可能无法轻松与 C 接口。

1个回答

大多数广泛使用的有限元库都是用 C++ 编写的。如果你真正关心的——如果你永远关心的——是在一个矩形上求解一个椭圆 PDE,那么自己编写有限元部分可能不是大量的工作(几百行)并将 PETSc 用于线性代数。

但是,如果您认为您可能想要做一些更复杂的事情,那么可能值得使用已建立的更大软件包之一。从 C 调用 C++ 并不难:你用 C++ 编写你的有限元求解器,并且在你的一个 C++ 文件中你有一个函数

extern "C" int run_fem_solver (/*possibly arguments*/) {
   ...put C++ code here that runs the fem solver...
}

该函数由 C++ 编译器编译,因此可以调用所有 C++ FEM 机器。但是因为它是被标记的extern "C",所以你可以从你的应用程序的 C 部分调用它。