如何选择合适的泛函和基组的组合?
1分子结构、键长和键角:
    对于比较轻的元素,b3lyp/6-311++g**就很优秀,如果把基组加到了aug-cc-pv?z的程度,就没什么大的必要了。
    对于一些中等重量的元素,LanL2DZ就不错啦,没必要加更高的机组了,加了也是浪费。
  再重一些,比如稀土,LanL2DZ就不行了,M. Dolg先生搞出来的那个基组,斯图加特RECP-GTO占了大部分市场份额。而泛函选择上,百分之四十用的是B3LYP,百分之四十用的是B3PW91,百分之五用的是MPn族,百分之五用的是CCSD(T)族,百分之五用的是PBE族,百分之五用的是经过改进的半经验。有时候还要自己选择,是用小核赝势呢,还是大核赝势呢。听说ADFPBE/DZPZORA处理稀土,效果也不错,但是我没用过。
有金属的时候,据说tpss不错,但是我也没用过,不敢说。
这里我要批一批我偶然见到的一个文献:Int.J.Electrochem.Sci. 2009, 4, 295-307,伊朗的一人做的工作。他们居然用6-31G*计算稀土元素,这简直是扯淡,大家不要学他。
半经验方法中,处理CHNO之类的元素,AM1PM3都不错,PM6也很好,他们可以作为我们前期粗略优化的手段。不过要注意AM1处理共轭体系不太好。有人用Sparkle/AM1Sparkle/P
M3处理稀土元素。精度并不是多么好,但是极大地减轻了计算量,可以说还是很有成效的一个工作。不过这里不探讨半经验,仅仅探讨密度泛函,所以不多说了。
一个例子:3-,我会选择B3lyp/genecp来优化其结构。genecp对应关系如下(其实,这个混合基组有自己的专门的名字,叫做LACVP+*
Fe 0
LanL2DZ
****
C N 0
6-31+g*
****
Fe 0
LanL2DZ
2
氢键:
氢键的计算,还是以b3lypb97-?pwb6kb2plypb3p86pbe1pbe这几族泛函比较好。
基组的话,还是aug-cc-pv?zmg3s好一些。其实劈裂价键基组也不错,但是必须加大弥散高角动量,因为氢键还是比较弱一些,氢键对应的波函数必须加大离域程度。
其实氢键还算是一个比较好算的东西。流行的DFT中,除了OLYPO3LYP之外,基本都有一定精度。氢键的计算,基组的选择影响大一些,大弥散基组是必须的。
3
远程弱作用:
远程作用就比较扯淡了。B3交换泛函彻底完蛋。虽然我主要也是B3LYP阵营的人,但是要我在这个领域夸夸B3LYP,我还真不能瞪着眼睛说瞎话。这个领域DFTBDFTB+曾经试图在这个领域做些贡献,但是成就并不是很大。比较成功的是DFT-D,包括b97-d,b2plyp-d等等这些加上dispersion项的DFT了。听说G09对传统DFT有了两种加dispersion项的方法,但是还没用过,不敢乱说。
远程作用还有别的选择——尽管它会大大增加我的计算量
一种选择,使用MPn,还是不够准
另一种选择,是把MPn改造成SCF-MPn,计算量忒大
再一种选择,使用CCSD(t)之类的,……呃,还是算了吧,计算量我更受不了。
基组问题:算远程作用必须用极大的基组。从TZV(d),TZV(d,p),TZV(2d,2p),TZV(2df,2dp),TZV(3d2f,3p2d),……继续加吧,能加多高,就加多高,算远程弱作用,您永远别吝啬你的资源。当然,我绝不反对你使用DZV
另一个选择:从6-311++g(d,p),到6-311++g(2d,p),到6-311++g(2df,2pd),到6-311++g(3df,3pd),到6-311++g(3d2f,2p2d)……继续加呀加呀加呀加!
再来个选择:从aug-cc-pvtz,aug-cc-pvdz,aug-cc-pvqz,……子子孙孙无穷尽也
听说过一族巨型机组,叫ANO基组,当然还有它的一些变体。但是从没在文献中见过,也许是基组规模太大了,以至于丧失了实用性?
4
多加一句:关于核磁,给某些人提个醒儿
有人在qq上问我关于核磁计算结果与实验值相差太大的事儿。我问他你用啥算的?他说是b3lyp/6-31g*。我直接就无语+仆街了。
很多人习惯用6-31g*。这确实是一个很优秀的基组。但是您居然扛着6-31g*跑去算核磁,误差不达到百分之一千才怪。算核磁最小的基组,至少要用6-31++g(d,p)。这已经是最低要求了,不能再低了,建议使用6-311++g(2df,2pd)或更高
请大家斧正,谢谢各位高手的批评!
请大家斧正,谢谢各位高手的批评!请各位高手一定要批评我的不足之处呀,没有批评没有进步。看在小卒我为计算模拟区做了这么多贡献的面子上,给点儿批评吧:cry:(当然以前我是常驻量子化学版的。不过计算基础版改版之后,有了密度泛函子版块,因此今后我会常来计算基础版的逛逛滴。)

Gaussian中混合基组的输入 /Sobereva
高斯中混合基组的输入方法有人有误区,下面简单说一下。例子用的是CH4原子C1,H2,H3,H4,H5,以此为例纯粹是为了介绍方便,随意设定混合基组可能导致程序出错。
route section的基组写gen代表从下面读入,如果这里直接写明了用什么基组,则以下内容都不会读取,也不生效。用iop(3/24=1)可以显示每个原子实际用的基组,检查是否设对了;也可以用GFPrint关键词输出相似内容,但没那么清楚;也可以用GFInput关键词来输出实际所用基组,这些信息可以直接作为基组输入的信息。
例如想让C6-31gH6-31g**,则
{坐标部分}
[空行]
C 0
6-31g
****
H 0   <--等价于写成2 3 4 5,也可以写成2-5或者2-3 4-5或者2 3-5等,用-代表范围在原子多时会方便很多。
6-31g**
****
必须确保每个原子都定义了基组。另外也不能多定义基组,比如将C 0改成C F O来说明F也用6-31g基组,由于体系里没F,会因此报错。但可以在元素符号前写上-,这说明分子中有这个元素则基组定义生效,如果没有这个元素也不报错。例如可以将上面C 0改成C -F 0,也等价于在末尾添加这一项
-F 0
6-31g
****
都不会引起报错。一般元素或者原子序号写完之后都写个0示意写完了,但不写也没关系。
如果只想让H中的H2H3H46-31G**H5还是用6-31G,不能这样写:
C H 0
6-31g
****
2 3 4 0
6-31g**
****
也不能这样写:
2 3 4 0
6-31g**
****
C H 0
6-31g
****
这两种写法等价,后果都是H2H3H4同时被赋上6-31g6-31g**的基组,即壳层同时包括6-31g**S S P6-31gS S,区别仅是赋予基组的顺序不一样而已。所以写的时候不能有重复,并不是覆盖的关系,而是累加的关系,可能会因此报错,或者所得运行结果不是在你实际想用的基组下的结果。上例应当这样写:
C 5 0      <--元素符号和原子序号可以同时出现,等价于1 5 0
6-31g
****
2 3 4 0
6-31g**
****
实际上,高斯会先把每个元素符号展开成原子序号,把每个基组名字展成基组的具体信息。最开始的例子也可以写成下面这样,直接写明C的基组信息,内容是从高斯自带的631.gbs6-31G基组信息文件)上的C的条目挪过来的。
C 0
S    6 1.00
0.3047524880D+04 0.1834737130D-02
0.4573695180D+03 0.1403732280D-01
0.1039486850D+03 0.6884262220D-01
0.2921015530D+02 0.2321844430D+00
0.9286662960D+01 0.4679413480D+00
0.3163926960D+01 0.3623119850D+00
SP   3 1.00
0.7868272350D+01 -0.1193324200D+00 0.6899906660D-01
0.1881288540D+01 -0.1608541520D+00 0.3164239610D+00
0.5442492580D+00 0.1143456440D+01 0.7443082910D+00
SP   1 1.00
0.1687144782D+00 0.1000000000D+01 0.1000000000D+01
****
H 0
6-31g**
****
如果想再给C添上额外的弥散函数,可以从plus.gbs(重原子的弥散函数信息文件)中把C的那部分拿来添上,就等于6-31+g基组。把下面内容复制追加到上例的末尾即可,或者将弥散轨道信息直接合并写进C的基组定义区段里。
C 0
SP   1 1.00
0.4380000000D-01 0.1000000000D+01 0.1000000000D+01
****
这样写也可以实现等价的效果
C 0
6-31G
SP   1 1.00
0.4380000000D-01 0.1000000000D+01 0.1000000000D+01
****
H 0
6-31G**
****
如果从631s.gbs6-31G重原子的极化轨道信息文件)中拿来C的定义也这么添加,就等价于使用了6-31g*基组。
高斯用的基组定义,若是linux版,都在安装目录下的basis文件夹里,是.gbs文件,可由文本编辑器打开,这些基组并不会在高斯运行时被调用,但可以通过高斯的文件引用功能把它们直接弄进输入文件里。通过文件名可大致猜到对应什么基组。每种基组包含的全部元素定义都在里面。例如631.gbs
-H
S    3 1.00
0.1873113696D+02 0.3349460434D-01
0.2825394365D+01 0.2347269535D+00
0.6401216923D+00 0.8137573262D+00
S    1 1.00
0.1612777588D+00 0.1000000000D+01
****
-He
S    3 1.00
0.3842163400D+02 0.2376600000D-01
......
.gbs文件可以通过高斯的文件引用功能直接用于基组自定义输入,例如:
# hf/gen
{分子坐标信息}
{空行}
@/sob/g03/basis/sto3g.gbs <--如果末尾写上/N,可以避免在输出中显示一遍这文件的内容。
{空行}
{空行}
泛这里@代表引用外部文件,在高斯的Link0模块中这个条目会被展开成实际文件内容,如同编程中的include一样。当然直接把.gbs文件内容复制到输入文件里也可以。.gbs里面定义的元素众多,肯定不会同时出现在当前分子中,由于此文件每个元素符号前都有负号,所以多定义的那些元素不会引起报错,直接忽略掉。

extrabasis的用处是给当前基组添加一些基函数,需要在route section当中明确写出来基组,而gen则是完全重新定义所有原子的基组。虽然两种方法都能实现相同的目的,且Gen更强大,但extrabasis偶尔更方便。例如给C添加由plus.gbs定义的弥散轨道:
hf/6-31g extrabasis
{分子坐标信息}
{空行}
C 0
SP   1 1.00
0.4380000000D-01 0.1000000000D+01 0.1000000000D+01
****
说明C使用了6-31+g,而其余原子仍用6-31gextrabasisgen不要一起混用。