由 Bet9链接 ѵ搜уυʀ667原创编译,用于量子化学计算的软体有多种类型,有付费的也有免费的。 Psi4 是用于量子化学计算的Psi 软体包的最新版本。它是在GitHub 上作为免费的开源软体开发的。
Psi4 的功能包括使用Hartree-Fock 法等分子轨道法和密度泛函理论等方法进行的一系列计算:
- 能量计算
- 结构最佳化计算
- 振动频率计算
在建立输入档案时可以为高级使用者进行详细设置,但Psi4 设计为适合初学者,允许使用最少的输入资讯执行计算,因为它会自动识别并对许多选项进行类比。 Psi4 的主要计算部分是用C++ 编码的,可以透过API 从python 中使用。
安装Psi4
我们可以按照psi4 官网的说明可以轻松安装在Windows WSL、Linux 和Mac OS 环境中。
这里分享一下自己的安装方法:
- 建立一个python 的虚拟环境:
conda create -n my-psi4-env
- 开启虚拟环境:
conda activate my-psi4-env
- 安装psi4:
conda install psi4 -c conda-forge
- 安装RDKit:
pip install rdkit
接着在Jupyter notebook 测试一下是否安装成功。
Psi4 计算方法
设定分子结构时,通常使用XYZ 座标提供每个原子的位置资讯。将当时指定的分子结构储存在变数中,并指定稍后要执行计算的结构。
水分子(H2O) 的XYZ 座标范例如下所示:
氧 0 0 -0.11
氢 0 -1.4 1.2
氢 0 1.2 1.2
将XYZ 座标写成字串形式,换行用\n
来代表:
'O 0 0 -0.11\nH 0 -1.4 1.2\nH 0 1.2 1.2'
接下来,我们可以使用psi4.set_XXX 设定计算环境。用于计算的CPU 线程数和记忆体设定是与计算速度直接相关的因素。 我们使用2 个线程和4GB 记忆体来计算水分子,程式码如下:
xyz_string = 'O 0 0 -0.11\nH 0 -1.4 1.2\nH 0 1.2 1.2'
psi4.set_num_threads( 2 )
psi4.set_memory( '4 GB' )
H2O = psi4.geometry(xyz_string)
Python 驱动程序将线程设置为 2。
Python 驱动程序将内存设置为 3.725 GiB。
下一步,我们来进行一下能量计算,我们可以指定使用的泛函数和基函数。例如我们使用泛函数是B3LYP 、基函数6–31G(d) ,下面的程式码是使用B3LYP/6–31G(d)
进行结构最佳化然后再计算能量:
psi4.优化(“B3LYP/6-31G(d)”,分子=H2O)
能量=psi4.能量(“B3LYP/6-31G(d)”,分子=H2O)
打印(“能量= {:.4f}”。格式(能量))
能量 = -76.4090
我们也可以来比较不同的泛函数( HF 、 wb97x ) 和基函数组合( STO-3G 、 3–21G ):
- 高频/STO-3G
- 高频/3–21G
- WB97X/STO-3G
- wb97x/3–21G
导入itertools
理论 = [ 'HF' , 'wb97x' ]
基础集 = [ 'STO-3G' , '3-21G' ]
能量结果 = {}
对于itertools.product(理论, 基础集)中的th, ba :
H2O = psi4.geometry(xyz_string)
水平 = th + '/' + ba
psi4.optimize(水平, 分子=H2O)
e = psi4.energy(水平, 分子=H2O)
能量结果[水平] = e
接下来利用上面提到的方法用B3LYP/6–31G(d)
进行结构最佳化然后再计算能量:
psi4.set_memory( '4 GB' )
psi4.set_num_threads( 2 )
benz = psi4.geometry(string)
psi4.optimize( "B3LYP/6-31G(d)" , molecule=benz)
energy = psi4.energy( "B3LYP/6-31G(d)" , molecule=benz)
打印(能量)
-232.248617126633