关于XYG3型双杂化泛函的介绍,可参考苏乃强老师和徐昕老师的综述:
WIREs Comput Mol Sci 2016, 6:721–747
XYG3型泛函没有内置在主流的Gaussian、ORCA等程序中,因此需要一些其他方法来进行XYG3泛函的计算。我们曾经推送过两篇关于如何在Gaussian、PySCF、ORCA中实现XYG3泛函的计算。本文将在前文的基础上,更详细地介绍如何使用由张颖老师(XYG3泛函的主要开发者之一)开发的xDH4Gau程序来进行XYG3型双杂化泛函的计算。
一、程序下载
首先在张颖老师的Github上下载源代码:
https://github.com/igor-1982/xDH4Gau
下载的zip压缩包为xDH4Gau-master.zip,使用
unzip xDH4Gau-master.zip
命令进行解压,之后可将文件夹重命名为xDH4Gau。
二、程序安装与配置
xDH4Gau程序的运行需要Python3,因此要确保服务器上已经正确安装Python3。然后进入xDH4Gau目录,运行配置文件config
./config
这一步会做两件事,一是在用户根目录下创建两个隐藏文件~/.xdh_modules_path和~/.xdh_path用于程序的运行。二是会在用户的home目录下创建一个bin目录,并给xDH4Gau下的run_xDH_using_Gaussian.py程序创建一个软链接。然后需要在~/.bashrc中增加
export PATH=$HOME/bin:$PATH
以将run_xDH_using_Gaussian.py加入环境变量(笔者发现在CentOS上~/bin目录是自动进入$PATH变量的,因此无需进行这一步操作,其他操作系统待验证)。如果不愿意在自己的home目录下创建bin目录,则可直接将第一步中解压的xDH4Gau的目录写入~/.bashrc中,也可调用run_xDH_using_Gaussian.py。
由于xDH4Gau的主体计算部分是由Gaussian来完成,因此还要修改xDH4Gau目录下的GXX__Environment文件,其中GXX对应服务器上的Gaussian版本。比如笔者使用的是G16,则打开G16__Environment文件,将以下部分的两个变量进行修改:
#================================================
# System-dependent setting parameters, which
# should be defined by the users
#================================================
export g16root=/opt
. $g16root/g16/bsd/g16.profile
if [ ! -d "/scratch/$USER/gaussian" ]; then
mkdir /scratch/$USER/gaussian
fi
export GAUSS_SCRDIR=/scratch/$USER/gaussian/XYG3
if [ ! -d "$GAUSS_SCRDIR" ]; then
mkdir $GAUSS_SCRDIR
fi
#================================================
其中g16root部分为G16的安装位置,后面主要修改GAUSS_SCRDIR变量。此变量在安装Gaussian时已经进行了定义,改成当前服务器上的路径即可。需要注意的是,要在第10行的位置末尾加上一个目录,因为xDH4Gau的运行中会有比较多的临时文件,且在程序运行结束后会将整个GAUSS_SCRDIR目录删除,因此最好再建一个文件夹,否则会影响普通Gaussian任务的运行。
三、计算
在Tests目录中,提供了输入文件的示例。xDH4Gau程序的输入文件与Gaussian的输入文件一样,只需将方法写成XYG3即可,如
%nprocs=24 %mem=100GB #p xyg3/cc-pvdz
water
0 1
O -2.18842208 0.47844928 0.00000000
H -1.24864578 0.49895528 0.00000000
H -2.44357611 1.38315720 0.00000000
默认做冻核近似,如果不做冻核近似,与Gaussian的写法一样,写作XYG3(full)。使用
run_xDH_using_Gaussian.py xxx.gjf
命令即可进行计算。若使用其他版本的Gaussian,则使用--gaussian-version=n(n为03、09或16(16为默认值))来控制版本。
输入文件为.xDH文件,除了XYG3,还会输出其他基于B3LYP密度的XYG系列泛函的计算结果:
=>"XYG3" is choosen for the question
==----------------------------------------------------------------------------==
E(B3LYP) = -76.41904971 A.U. E(XYG3) = -76.36146125 A.U.
==----------------------------------------------------------------------------==
=>XYG3 belongs to the family of xDH@B3LYP
=>E(XYGJ-OS) = -76.21597718 A.U.
=>E(revXYG3) = -76.36006667 A.U.
=>E(XYG5) = -76.25445639 A.U.
=>E(XYG6) = -76.23410169 A.U.
=>E(XYG7) = -75.99356330 A.U.
=>Job Type :: Single-Point Calculation
================================================================================
** **
** THE JOB OF "water-xyg" IS DONE **
** **
================================================================================
此外,程序还支持基于PBE0密度的xDH-PBE0泛函,关键词写作XDHPBE0即可。