C/C++ 中的简单开源量子化学或 DFT 代码

计算科学 C++ C 量子力学 密度泛函理论
2021-12-07 15:52:33

我知道 fortran 中的很多密度功能包,包括我们在我们小组中开发的一个(Fireball-DFT),但我不太喜欢 fortran,我想要更容易集成到其他软件的东西。

例如,我想用基于 DFT 或半经验量子化学方法的 GUI 创建一些简单的交互式工具,它可以几乎实时地(对于小分子)提供粗略的结果(例如分子轨道)。

虽然一些基于 fortran 的 DFT 包可以连接到 python 接口,例如在ASE中,但它是非常缓慢和繁琐的方式。此外,我还在寻找适用于小型系统的简约求解器,因此,例如主要使用 C/C++ 的GPAW对我来说不是很好。

你知道一些用 C/C++ 甚至更好的 OpenCL 编写的简单量子求解器吗?以防万一,我考虑开始自己开发类似的东西。

1个回答

量子化学代码可以很快变得非常复杂。即使您将自己限制为 DFT,也有许多功能需要支持。这里会为你做一个权衡。你可以获得一个简单的、更小的代码库,但你最终会得到很少的功能。或者你可以使用更大、更成熟的代码库,但打包它会更复杂。

说起来简单,考虑一下来自 LIBINT 的示例代码:

https://github.com/evaleev/libint/wiki/using-modern-CPlusPlus--interface-v22

这仅使用几百行代码就在现代 C++ 中构建了一个功能相当强大的 Hartree-Fock 代码。为什么不在你的新包中重现它呢?当然,实现密度泛函、后 Hartree-Fock 方法、力等将使您的代码快速增长。

编辑:包含 2 个电子积分的完整 Hartree-Fock 示例代码示例位于 tests/hartree-fock/hartree-fock.cc 下的源代码中。