Bet9链接:计算Python上的量子化学计算—Psi4

由 Bet9链接 ѵ搜уυʀ667原创编译,用于量子化学计算的软体有多种类型,有付费的也有免费的。 Psi4 是用于量子化学计算的Psi 软体包的最新版本。它是在GitHub 上作为免费的开源软体开发的。

Psi4 的功能包括使用Hartree-Fock 法等分子轨道法和密度泛函理论等方法进行的一系列计算:

  • 能量计算
  • 结构最佳化计算
  • 振动频率计算

在建立输入档案时可以为高级使用者进行详细设置,但Psi4 设计为适合初学者,允许使用最少的输入资讯执行计算,因为它会自动识别并对许多选项进行类比。 Psi4 的主要计算部分是用C++ 编码的,可以透过API 从python 中使用。

安装Psi4

我们可以按照psi4 官网的说明可以轻松安装在Windows WSL、Linux 和Mac OS 环境中。

这里分享一下自己的安装方法:

  1. 建立一个python 的虚拟环境:conda create -n my-psi4-env
  2. 开启虚拟环境:conda activate my-psi4-env
  3. 安装psi4:conda install psi4 -c conda-forge
  4. 安装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 ):

  1. 高频/STO-3G
  2. 高频/3–21G
  3. WB97X/STO-3G
  4. 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

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值