给def2以ma-方式加弥散函数的Gaussian格式的基组定义文件(含所有def2支持的元素)

给def2以ma-方式加弥散函数的Gaussian格式的基组定义文件(含所有def2支持的元素)

Basis set definition file in Gaussian format that adds diffuse functions to def2 series in the way of "ma-" (including all elements supported by def2)

文/Sobereva@北京科音

First release: 2019-Aug-28   Last update: 2019-Oct-11


def2系列基组非常流行,在笔者的很多博文里都提到、用到,但遗憾的是没有官方标配的带弥散函数的版本。之前笔者写过一篇文章《给ahlrichs的def2系列基组加弥散的方法》(http://sobereva.com/340)介绍了几种给def2加弥散函数的方法,其中一个是以ma-方式加弥散函数,诸如def2-TZVP以ma-方式加弥散后叫ma-TZVP。在Truhlar课题组的基组网站http://comp.chem.umn.edu/basissets/basis.cgi上直接提供了这些ma-基组的定义,但关键缺点是元素不全。原本def2系列是对于除了锕系以及最后一个周期外所有元素都有定义,但那个网站上提供的ma-TZVP.gbs基组文件里甚至连常用的碘都没有,因此用的时候还得自己去基于def2的定义和ma-规则手写,比较麻烦,初学者还容易搞错。而且每当有人问怎么去手动改,如果对方没基组常识,解释起来可费劲了。

为了解决上述问题,笔者写了个程序,直接基于BSE上的def2系列基组支持的所有元素的定义文件,自动批量按照ma-方式添加弥散函数。这些文件可以在这里下载:http://sobereva.com/attach/509/file.zip。此文件包里比如ma-QZVPP.txt就是def2-QZVPP所有元素按ma-方式加上弥散函数的版本。里面还有个文件def2-ECP.txt,这是所有def2基组共用的赝势文件,因为def2系列对第五周期开始的元素是赝势基组。

基于这个文件包里的文件,用Gaussian使用ma-系列基组可省事了。只要把文件先放到某个目录,要用的时候用@来include即可。

下面是一个Windows下计算的例子,用B3LYP-D3(BJ)/ma-TZVP计算水-氟代甲烷的单点。计算前先把ma-TZVP.txt放到C:\下。@代表把后面的文件计算Gaussian之前会被自动展开。

#p B3LYP/gen em=gd3BJ int=fine
[空行]
test
[空行]
0 1
 O                  2.21137200   -0.00419200   -0.00194900
 H                  2.78894100   -0.77058600    0.00034800
 H                  2.79813100    0.75514700   -0.00127500
 C                 -0.65861500    0.01454700    0.00490000
 H                 -0.29784800   -0.58761200    0.83720700
 H                 -0.28960200   -0.38738100   -0.93713900
 H                 -0.32683900    1.04530400    0.12361900
 F                 -2.04578600   -0.01206800   -0.00406300
[空行]
@C:\ma-TZVP.txt

由于ma-TZVP.txt里所有元素前头都有个负号,因此只有当前体系里存在的元素才会自动取.txt里的基组定义,而.txt里定义的其它元素不影响当前计算。

再看另一个例子,BP86计算顺铂,对所有元素用ma-SVP,对Pt还加了赝势,因为def2系列对Pt是赝势基组。计算前先把ma-SVP.txt和def2-ECP.txt放到C:\下。
#P BP86/genecp int=fine
[空行]
b3lyp/def2TZVP opted
[空行]
0 1
 Pt                 0.00000000    0.00000000    0.18195700
 Cl                 0.00000000    1.70827400   -1.36819100
 Cl                 0.00000000   -1.70827400   -1.36819100
 N                  0.00000000    1.59755500    1.56108400
 H                 -0.82596600    1.64390200    2.14978600
 H                  0.00000000    2.40772900    0.93575300
 H                  0.82596600    1.64390200    2.14978600
 N                  0.00000000   -1.59755500    1.56108400
 H                 -0.82596600   -1.64390200    2.14978600
 H                  0.00000000   -2.40772900    0.93575300
 H                  0.82596600   -1.64390200    2.14978600
[空行]
@C:\ma-SVP.txt
[空行]
@C:\def2-ECP.txt

上例中C:\ma-SVP.txt对体系涉及的所有元素都定义了基组,对Pt而言相当于赝势基组。C:\def2-ECP.txt是def2系列支持的从第五周期开始的所有元素的赝势定义,其中自然也包括对Pt的定义。此文件里也是各个元素前头都有负号,因此定义的元素在当前体系中没出现也不会报错。

在Linux下也可以用引用的方式用,下面还是顺铂的例子。这里/N避免Linux下运行时自动把文件里的内容完整输出一遍。两个文件之间这回没有了空行,因为如果有的话,会导致Pt的赝势信息没法被载入。
[同上...一直到坐标]
[空行]
@/sob/ma-SVP.txt/N
@/sob/def2-ECP.txt/N
[空行]
[空行]

当然了,自己手动把.txt文件里的涉及到的元素的基组、赝势定义拷出来,按照常规的genecp的格式去定义基组和赝势也可以正常使用这些ma-基组,但显然不如靠@来引用基组/赝势文件省事。如果在看上文时感到有不解之处,参看《详解Gaussian中混合基组、自定义基组和赝势基组的输入》(http://sobereva.com/60)。

文件包里还有个ma-TZVP(-f).txt,是对def2-TZVP(-f)以ma-方式加弥散函数的版本。def2-TZVP(-f)比def2-TZVP便宜得多,差异在于前者把后者的f极化函数去掉了(对镧系元素笔者保留了f函数,因为f函数对于La系并非是极化函数,而g极化函数被去掉了)。ma-TZVP(-f)比6-311+G(2d,p)略大一丁点,由于def2系列基组很适合代替Pople系列基组,因此强烈鼓励将之代替6-311+G(2d,p)使用。顺带一提,由于def2-TZVP(-f)比def-TZVP更大(比如对于碳,前者有两层d极化而后者只有一层),因此ma-TZVP比起将def-TZVP用ma-方式加弥散函数的版本更贵一些。

最后,给出笔者构建上面那些ma-的基组定义的程序ma-diffuse:http://sobereva.com/soft/ma-diffuse.rar。里面是Windows版可执行文件,Def2-SVP.gbs是原始的def2-SVP的定义文件,可以作为ma-diffuse的输入文件。此程序运行时可以由用户设定最小的s和p指数要除的因子,如果设成3,对应的就是以标准的ma-方式加弥散函数的情况。新产生的基组会输出到当前目录下的new.txt。

PS:笔者之前还有另一个给原有基组加弥散函数的工具,见《给基组以even-tempered方式增加弥散函数的工具adddiffuse》(http://sobereva.com/347)。