Gaussian


1.问:如何用CIS计算某个激发态的偶极矩?
 答: 
  # CIS(Root=N) Density=Current
2.问:错误信息“IPrim.ne.NPrim in ShlToP.”
 答: 
  Gaussian 03以及更早版本在保存wfn文件时可能遇到这个错误,原因是基组包含了g和g以上的函数。建议换新版本,或者改用fchk文件做各种性质分析。
3.问:为什么同样的计算方法,Gaussian的结果无法用其它程序重复?
 答: 
  通常,无法用不同程序重复周期体系的量子化学计算结果,因为倒空间积分、库仑势等的算法存在差别。但是对于孤立体系的计算(原子、分子、团簇),不同的程序中的同样方法原则上应该得到相同的结果(在计算精度内),当然前提是分子结构相同(注意长度的默认单位)。但也有一些例外。对于Gaussian而言,可能的原因有:
1. 使用的基组不同。即使是同名基组也可能在细节上略有差别,因此要用GFPRINT关键词把基组打印出来,仔细检查基组是否完全相同(例如:Br的STO-6G基组,Gaussian内置的收缩因子与emsl基组网站上的因子不一致;标准的def2型基组中的重元素,由于历史原因删除了f以上的赝势函数,而Gaussian保留了高角动量赝势函数)。
此外,Gaussian还可能会修改基函数的收缩方式。例如F的cc-pVDZ基组,s函数收缩形式是(8,8,1),而Gaussian在基组库中定义的形式却是(7,7,1)。在和其它程序比较结果的时候,这会导致总能量(尤其是用ANO型基组的重元素),电子性质,分子轨道因子等不一致。解决办法:加上选项iop(3/60=-1)。
2. 直角基函数和球谐基函数。不同程序的默认设置不同,结果也是不一样的。Gaussian中的默认设置随基组类型而定(见使用手册中关于基组说明的部分),或者在输入中直接指定5d 7f或6d 10f。
3. 对于DFT计算,需要考虑积分格点的差别。不过在一般情况下,对总能量的影响不会非常大。
4. 非标准的HF,DFT和Post-HF计算,例如使用了密度拟合基组或局域轨道。虽然在Gaussian中可以对纯GGA使用密度拟合基组,但由于技术细节不同,结果可能不同于其它程序。
5. 对于杂化泛函,还有个更重要的原因:相名不同义。
最著名的是B3LYP:在局域关联部分,Gaussian用VWN-3而不是原始文献建议的VWN-5,幸好大多数密度泛函程序同时提供两个版本的B3LYP。
最近发现的是O3LYP,在文献中,OPTX项的因子定义不明确导致混乱:在Gaussian中采用的因子是0.8133*1.43169(据称计算结果和O3LYP原始文献一致;但也有反例PCCP,2004,6,673),而PC-GAMESS和ORCA程序采用0.8133(最新版本的PC-GAMESS也支持前一种定义)。此外,Jaguar和PQS程序的O3LYP结果都不同于以上两者,技术细节不清楚。
6. 大多数多组态方法也存在相名不同义的问题(此问题不只限于Gaussian)。原则上,唯一一致的多组态方法是不加任何近似的MR-CISD,但此方法计算效率低,现在很少有人用它了。目前普遍使用的各种多参考方法,不同程序给出的结果都是不一样的。具体到Gaussian,它的MR-MP2(CASSCF+MP2)方法,和其它程序的CASPT2、MCQDPT等方法的结果是不一样的。
7. Douglas-Kroll标量相对论计算。大多数程序使用点核模型,Gaussian使用更精确的Gaussian有限核模型。对于重元素体系的计算,总能量有显著差别。若使用点核模型,需要加上选项IOP(3/93=1)。
8. 使用了不同版本的物理常数。例如在全电子相对论计算中,超精细结构常数、原子核半径等可能会不同于其它程序和文献,对于重元素体系会造成虽然不是很大但也非常明显的能量差。
9. 对于Post-HF计算,冻结轨道设置不同。Gaussian默认冻结全部芯轨道。如果HF参考能量相同,但Post-HF能量不同,通常就属于这个原因。
10.占据轨道不同。
11.存在多个近简并轨道的开壳层体系,不同的程序可能会得到不同的占据方式,导致在能量、平衡结构和性质上有微小的差别。
12.Gaussian09以下版本的BUG:在做HF、DFT级别单点能计算的时候,如果分子含有18号以上的元素,则能量的SCF收敛阈值只有0.01 Hartree。由于同时还有电子密度的收敛阈值进行限制,这么低的能量收敛阈值一般不会导致太大的能量误差。但是在有些情况下,能量误差可能会达到15个波数,如果计算虚轨道有关的性质,甚至会导致定性错误。
13.超极化率的BUG:Gaussian计算的超极化率应乘以一个负号。参见:曾薇,丁培江,赵可清,Gaussian程序计算的一阶超极化率的符号问题,四川师范大学学报(自然科学版),33(2),228,2010。也可以用其它程序验证。例如,GAMESS(US)的定义是符合习惯的。
14.相对论情况下,要考虑光速,核半径,是否考虑了双电子相对论积分,等等。
15.其它原因,如编译器问题,程序BUG,输入错误,等。
以上大多数原因也适用于其它程序。
4.问:Gaussian如何算Mayer键级?
 答: 
  对于Gaussian 03或更高版本,加上IOp(6/80=1)。例如:#p hf/6-31g IOp(6/80=1)。对于支持电子密度的某些post-HF计算,还要加上Density=MP2、QCI、等,否则电子密度是HF理论级别的。参见Density关键词。
Gaussian计算完成后,打开输出文件,在Mulliken电荷的信息之后,可以看到类似于以下结构的数据(这个例子是水):
Atomic Valencies and Mayer Atomic Bond Orders:
    1     2     3
1 O 1.606461 0.803230 0.803230
2 H 0.803230 0.804250 0.001019
3 H 0.803230 0.001019 0.804250
解释:对角元E(i,i)是原子i的总键级。非对角元E(i,j)是原子i,j之间的键级。
5.问:如何在SCF和结构优化中固定轨道占据方式?
 答: 
  默认情况下,Gaussian在SCF过程中会自动调整轨道占据,以获得总能量尽可能最低的基态,但是在缺少相关能的情况下,这是经常是靠不住的。如果默认占据有问题,或者想要收敛到某个已知占据的激发态,可以用选项
Guess(Alter) IOp(5/15=2)
前者用于交换轨道,得到需要的占据;后者使占据方式在SCF过程中保持不变。需要注意的是,高对称体系必须先施加小位移降到阿贝尔点群,否则这个方法无效。
6.问:如何为不同的元素指定不同的基组?
 答: 
  以ZnCl2分子为例,下面是一个通用模板:
# HF/gen

test

0 1
Zn
Cl 1 r1
Cl 1 r1 2 180.0

r1=2.4

Zn 0
3-21g
****
Cl 0
6-31g
****

如果用ECP基组,则需要改为:

# HF/genecp

test

0 1
Zn
Cl 1 r1
Cl 1 r1 2 180.0

r1=2.4

Zn 0
lanl2dz
****
Cl 0
cep-121g
****

Zn 0
lanl2dz
Cl 0
cep-121g
7.问:如何为相同元素的不同原子指定不同的基组?
 答: 
  和上面类似,但在指定基组和ECP时,元素符号一律改用原子在坐标中出现的序号。例如:
# HF/genecp

test

0 1
Zn
Cl 1 r1
Cl 1 r2 2 180.0

r1=2.4
r2=2.5

1 2 0
lanl2dz
****
3 0
cep-121g
****

1 2 0
lanl2dz
3 0
cep-121g;

注意,这可能会破怀对称性,使用时要小心。

8.






 
问:






 
SCF不收敛,并且SCF迭代过程中出现以下输出是什么意思?
Large coefficients: NSaved= 20 BigCof= 0.00 CofMax= 10.00 Det=-2.88D-15
Inversion failed. Reducing to 19 matrices.
Large coefficients: NSaved= 19 BigCof= 0.00 CofMax= 10.00 Det=-2.88D-15
Inversion failed. Reducing to 18 matrices.
Large coefficients: NSaved= 18 BigCof= 0.00 CofMax= 10.00 Det=-2.89D-15
Inversion failed. Reducing to 17 matrices.
...
 答: 
  如果设置了#P,就会看到以上输出。这表明基组线性依赖,Gaussian在SCF过程中试图排除一些小矩阵来解决此问题,但阻碍了收敛。解决办法:改用小点的基组,或者去掉弥散函数。如果是DFT计算,使用关键词Int(Grid=UltraFine)可能也会有帮助。
9.问:HF/DFT解析频率计算不收敛,该如何解决?
 答: 
  在原子数很少的情况下(通常5个原子以下),可以考虑改用数值频率(5原子以下:Freq=Numerical或Freq=DoubleNumer;20原子以下:Freq=Numerical)。

一般情况下,可以考虑换程序,换泛函或理论模型,或者换基组。还可以修改控制CPHF/CPKS方程收敛的IOP选项,有以下几个。在单点能输出之后,找到类似于下面的输出(如果计算加上了#P开关,位于"(Enter .../g09/l1002.exe)"的下一行):

Minotr: Closed shell wavefunction.
IDoAtm=111
Direct CPHF calculation.
Differentiating once with respect to electric field.
with respect to dipole field.
Differentiating once with respect to nuclear coordinates.
Using symmetry in CPHF.
Requested convergence is 1.0D-10 RMS, and 1.0D-09 maximum.
Secondary convergence is 1.0D-12 RMS, and 1.0D-12 maximum.

最后两行定义了解CPHF/CPKS方程的四个收敛标准。
第一个标准由IOp(10/7=N)控制:10^(-N),默认N=8
第二个标准由系统设置,等于第一个标准乘10
第三、四个标准通常相等,由IOp(10/16=N)控制:10^(-N),默认N=12。用于溶剂计算。

如果是气态分子计算,把IOp(10/7)改小一点就行了。其它可能用到的还有:
IOp(10/73):可以增大CPHF方程的迭代次数,默认1000
IOp(10/18=3):CPHF方程仅迭代一次,不检查收敛。可以用来检查定性结果,通常会带来几个到几十个波数的振动频率误差,不能用于正式计算。

另外还需要注意,IOP不能在多步任务中传递,因此如果使用上面的IOP选项,结构优化和频率计算要分开算。

10.问:如何用GAUSSIAN计算激发态之间的跃迁偶极矩或振荡强度(f)?
 答: 
  对于CIS和ZINDO方法,可以用AllTransitionDensities,如
cis(singlets,AllTransitionDensities)
11.问:Link 801出现错误“Excessive mixing of frozen core and valence orbitals.”该如何解决?
 答: 
  这个错误在Post-HF计算中可能会出现,用IOP(8/11=1)可继续计算。这个错误有可能是默认的(或人为设置的)芯轨道不合理所导致。注意:对于5d和6d金属体系,Gaussian默认的芯轨道可能是错的,需仔细检查输出文件打印的NFC参数。如果不合理,需要在输入中直接指定冻结轨道。
12.问:如何从checkpoint文件读取力常数矩阵,重新计算振动频率?
 答: 
  使用以下流程
%chk=***.chk
#P NonStd
1/29=10000,38=1/1;
2/15=1,40=1/2;
7/8=1,25=11,30=1/16;
99/5=22/99;

title

0 1

其中的chk文件必须保存有力常数矩阵。

13.问:结构优化,出现下面的错误:
GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
Berny optimization.
FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4.
Eigenvalue 1920 is 9.98D-07 should be greater than 0.000001 Eigenvector:
A602 A605 A526 A529 A590
1 -0.23218 0.21568 -0.17301 0.17222 -0.16746
A684 A687 D849 A603 D896
1 0.13759 -0.13443 -0.13232 0.11672 0.11547
NTrRot= -1 NTRed= 3567 NAtoms= 642 NSkip= 1647 IsLin=F
Error in internal coordinate system.
 答: 
  

问题分析:Gaussian默认使用冗余内坐标做结构优化,计算中检查使用的冗余坐标能否构成3N-L(L=6或5)个独立内坐标空间,也就是检查Wilson G矩阵是否有3N-L个非零特征值。由于产生冗余内坐标的算法本身存在缺陷,随着分子尺寸不断增加(通常几百个原子以上),有些重要的弱键如氢键可能会被丢掉,导致G矩阵的非零特征值个数小于3N-L。这时就会遇到上面的出错信息。

解决方法:
1,自己写个小程序,给定原子类型后,找出键长在一定范围的所有的弱键。如果弱键不包含在Gaussian产生的冗余内坐标中,就把它用opt=ModRedundant加到输入文件里。
2,更好的办法是改用直角坐标做优化,不仅不会遇到上述问题,还可以避免耗时的G矩阵对角化过程。不过对于有些体系会使结构不容易收敛,而且有些计算方法不支持直角坐标优化。

14.问:如何禁止程序修改基函数的收缩方式?
 答: 
  Gaussian默认会修改基函数的收缩方式。见3.1。解决办法:加上选项iop(3/60=-1)。
15.问:如何生成用于GENNBO分析的.47文件?
 答: 
  加上选项pop=nboread,并且在输入文件的最后加上一行命令:
$nbo archive file=myjob $end

其中myjob是自己指定的文件名。注意:archive不是achieve!
16.问:用Z矩阵定义分子结构,在做完几何优化后,如何让程序打印优化好的Z矩阵结构参数?
 答: 
  本来是一件很简单的事情,却被Gaussian整得挺复杂。分几种情况。

一,OPT(z-matrix)优化:在结构收敛后的“Optimized Parameters”表格里。缺点:有效数字太少,不能满足精度要求,将来难以重复结果。如果Z矩阵参数比较少,可以用GaussView等分子建模程序打开优化好的结果文件(建议用格式化的checkpoint文件,比文本输出文件精度高),测量这些结构参数;否则,建议自己写脚本完成此项工作。也可以同时指定Freq,这样Gaussian在频率计算步骤的一开始会自动打印优化过的高精度Z-matrix结构参数。

二,OPT或OPT(Redundant)优化:在结构优化输出的最后,会打印Z矩阵坐标以及优化后的结构参数。搜索标题“Final structure in terms of initial Z-matrix”就可以找到。还有两个前提条件。
首先,输入的Z矩阵结构参数必须全部用变量定义,不能出现常数,否则不打印结构参数。例如水分子的Z矩阵坐标输入:
O
H 1 r1
H 1 r1 2 104.0

r1 1.0

无法得到优化后的Z矩阵结构参数。如果键角在优化过程中保持冻结,必须改为:
O
H 1 r1
H 1 r1 2 a1

r1 1.0

a1 104.

其次,Z矩阵坐标中不能有虚原子,因为虚原子在优化过程中被忽略,导致它们的位置不容易确定(由于同样的原因,虚原子涉及的结构变量在优化过程中可能无法冻结)。对于有些高对称性的结构,不用虚原子无法定义Z矩阵,这种情况下只能用OPT(z-matrix)做优化。

17.问:如何打印赝势/ECP?
 答: 
  加上选项iop(3/18=1)。
18.问:带电体系的ONIOM计算,电荷和自旋多重度该怎么写?
 答: 
  以两层ONIOM计算为例,体系是AB-(= [A+][B--]),其中A+是high层,B--是low层。电荷与自旋多重度这一行至少要写6个数
C1 M1 C2 M2 C3 M3
C1是AB整个体系的净电荷,本例是-1。
C2是A+体系在high级别计算使用的净电荷,本例是1。
C3是A+体系在low级别计算使用的净电荷,一般和C2相同。注意:不要用B--的净电荷-2,Gaussian手册里的描述有歧义。
知道了C1,C2,C3后,可以确定相应的自旋多重度。
19.问:ONIOM如何使用Z矩阵坐标?
 答: 
  
O
H 1 r1
H 1 r1 2 a1
He 1 r2 2 a2 3 b1 0 L

r1 1.0
r2 2.8
a1 104.0
a2 110.0
b1 91.0
前三个原子只能是H层,不用标记。其余原子的Z矩阵坐标后标记分层,Z矩阵坐标最后有个指定角度类型的代码(默认是0,表示二面角),此时不能省略。
如果前三个原子中的某个不是H层,必须用标准直角坐标给出,其中元素符号与xyz坐标之间的0不能省略,否则无法正确读取坐标变量。