PSI4是一款用C++和Python编写的开源量子化学程序。除支持大部分常见的计算方法和任务外,PSI4还支持一些比较有特色的功能,如对称匹配微扰理论(SAPT)能量分解、CCSD(T)的解析梯度等。最新的介绍可参见论文:J. Chem. Phys. 152, 184108 (2020)。
一、安装
PSI4有多种安装方法,此处介绍一种较为方便的安装方法。在
http://vergil.chemistry.gatech.edu/psicode-download/
下载安装包,可根据所用的操作系统选择所需的版本。这种安装包会附带安装一个Python环境,而这个Python环境是与服务器上已有的Python不相关的,版本号可以不同。笔者的服务器是CentOS系统,因此下载的是Psi4conda-1.4rc2-py39-Linux-x86_64.sh。
输入命令
sh Psi4conda-1.4rc2-py39-Linux-x86_64.sh
即开始安装。过程中输入安装路径即可,笔者的安装路径为$HOME/software/psi4conda。安装的最后一步可以选择no,程序则不会生成base环境。最后写入以下两个环境变量:
export PATH=$HOME/software/psi4conda/bin:$PATH
export PSI_SCRATCH=/scratch/zhigang/PSI4
其中第二个环境变量是设置临时文件的目录,最好选择本地高速硬盘。
PSI4也可以从源码编译,但有一定的难度。如果有读者成功编译过PSI4,欢迎与大家分享。
二、程序运行及输入文件写法
PSI4的运行命令很简单,可使用
psi4 -i input_file -o output_file -n 16
其中-i后跟输入文件名称,-o后跟输出文件名称,-n后跟并行线程数。按顺序书写时,-i和-o也可以省略。
本文介绍最简单的水分子的Hartree-Fock计算,输入文件如下:
memory 1 GB
molecule {
0 1
O 5.42912880 0.46163848 0.00000000
H 6.38912880 0.46163848 0.00000000
H 5.10867421 1.36657432 0.00000000
}
set {
basis def2-tzvp
scf_type df #use density fitting
}
energy('scf')
PSI4的输入文件中#开头的是注释部分,可以单独成行,也可以写在行内。
memory行设定程序可使用的最大内存,支持GB、MB等多种单位。
molecule部分为分子结构,整个部分位于{}内。molecule和{之间可以写入自定义的分子名称,如本例可写成molecule water {。{}内首先写入电荷和自旋多重度,然后写入分子坐标。
后面通过set字段设置程序运行的一些关键词,例如此处我们指定基组为def2-TZVP,并使用density fitting技术来加速电子积分的计算。多行set也可以不使用{},而分开书写,例如本例可写成:
set basis def2-tzvp
set scf_type df
最后energy('scf')指定计算任务和使用的方法。值得一提的是,若将此句改写为以下两行:
scf_e, scf_wfn = energy('scf', return_wfn=True)
fchk(scf_wfn, 'water.fch')
这样便可直接生成高斯fch文件,方便观看轨道和做后续计算。
更多更详细的说明可参考PSI4官方的在线说明文档,见:
https://psicode.org/psi4manual/master/index.html
三、从Gaussian向PSI4传轨道
公众号前期介绍过的开源程序MOKIT(https://gitlab.com/jxzou/mokit)里提供了一个小程序fch2psi,可以实现从高斯向PSI4传轨道。使用示例如下
fch2psi water.fch
这样会生成PSI4输入文件water_psi.inp(内含坐标和基组数据)和water.A文件(内含Alpha轨道数据)。fch2psi会自动识别fch文件里是RHF/ROHF/UHF型波函数,若是UHF,还会生成一个water.B文件(内含Beta轨道)。借助这个小程序,我们可以先在高斯中做一些很难收敛的HF/DFT计算,然后传轨道进PSI4做下一步计算。万一在PSI4中遇到SCF不收敛问题,也可用这个功能直接解决。
PSI4的输出文件非常易读,本文就不做介绍。后续我们还将陆续介绍PSI4的其他功能。