XYG3型泛函的计算:xDH4Gau程序的使用简介

关于XYG3型双杂化泛函的介绍,可参考苏乃强老师和徐昕老师的综述:

WIREs Comput Mol Sci 2016, 6:721–747

XYG3型泛函没有内置在主流的Gaussian、ORCA等程序中,因此需要一些其他方法来进行XYG3泛函的计算。我们曾经推送过两篇关于如何在Gaussian、PySCF、ORCA中实现XYG3泛函的计算。本文将在前文的基础上,更详细地介绍如何使用由张颖老师(XYG3泛函的主要开发者之一)开发的xDH4Gau程序来进行XYG3型双杂化泛函的计算。

一、程序下载

首先在张颖老师的Github上下载源代码:

代码语言:javascript
复制
https://github.com/igor-1982/xDH4Gau

下载的zip压缩包为xDH4Gau-master.zip,使用

代码语言:javascript
复制
unzip xDH4Gau-master.zip

命令进行解压,之后可将文件夹重命名为xDH4Gau。

二、程序安装与配置

xDH4Gau程序的运行需要Python3,因此要确保服务器上已经正确安装Python3。然后进入xDH4Gau目录,运行配置文件config

代码语言:javascript
复制
./config

这一步会做两件事,一是在用户根目录下创建两个隐藏文件~/.xdh_modules_path和~/.xdh_path用于程序的运行。二是会在用户的home目录下创建一个bin目录,并给xDH4Gau下的run_xDH_using_Gaussian.py程序创建一个软链接。然后需要在~/.bashrc中增加

代码语言:javascript
复制
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文件,将以下部分的两个变量进行修改:

代码语言:javascript
复制
#================================================
# 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即可,如

代码语言:javascript
复制
%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)。使用

代码语言:javascript
复制
run_xDH_using_Gaussian.py xxx.gjf

命令即可进行计算。若使用其他版本的Gaussian,则使用--gaussian-version=n(n为03、09或16(16为默认值))来控制版本。

输入文件为.xDH文件,除了XYG3,还会输出其他基于B3LYP密度的XYG系列泛函的计算结果:

代码语言:javascript
复制
=>"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即可。