显然,上述能量与 Gaussian 给出的能量不太一样,因为这是没有补上 PT2 贡献的能量.现在我们代入 GradMP2 中:
b2ph.eng
尽管说 PySCF 没有默认的双杂化泛函的计算方式,API 文档或说明文档也没有提及 PySCF 是否可以计算双杂化泛函;但若了解双杂化泛函的形式,我们应当发现 PySCF 计算双杂化泛函的方式与 MP2 几乎完全相同;有所区别之处也仅仅在于 PT2 部分的系数,以及用的是 DFT 自洽场而不是 HF 自洽场.因此,PySCF 可以计算双杂化泛函的能量 而不需要借助其他工具.不过需要指出,PySCF 目前不支持对双杂化泛函的梯度性质计算.
自洽场我们已经通过 scf_eng 给出了;剩下的是计算 PT2 部分.仿照 MP2 的计算代码,
可以验证上述结果与 Gaussian 的结果相等: