高斯不收敛,如何优化
#p b3lyp/lanl2dz opt pop=(full,npa)
>>>>>>>>>> Convergence criterion not met.
SCF Done: E(UB+HF-LYP) = -1714.45115901 A.U. after 129 cycles
Convg = 0.8068D-05 -V/T = 2.0529
S**2 = 0.9172
KE= 1.628346096785D+03 PE=-1.275059909267D+04 EE= 5.005782636124D+03
Annihilation of the first spin contaminant:
S**2 before annihilation 0.9172, after 0.7568
Convergence failure -- run terminated.
Error termination via Lnk1e in d:program filesg03l502.exe at Fri Jun 18 18:59:12 2021.
Job cpu time: 1 days 5 hours 55 minutes 14.0 seconds.
File lengths (MBytes): RWF= 206 Int= 0 D2E= 0 Chk= 18 Scr= 1
请问高手,我这个从报错看应该是没有收敛,但是应该如何优化或者修改?救救孩子吧。。。。@jiewei
返回小木虫查看更多
京公网安备 11010802022153号
增加循环次数
此楼不小心重复了
导致scf不收敛的原因很多。通常默认的128步是够用的。如果不收敛。可能有其他一些原因。直接增加步数用处可能会很小。有一些比较通用的做法可以看我这个教程里第2.2节scf不收敛的应对方法。
https://muchong.com/t-14242735-1
因为没法发截图了 那就把内容复制到这里,不过排版就没有那么好了。
如下:
a. 首先检查输入结构是不是合理。绝大部分情况下都是因为结构跟 “真实” 结构差的很远,导致的scf难以收敛。尽量给一个能给出的最好结构 (比如先用uff粗略优化一下,再用pm6 在优化一下。然后再用dft计算之类的)
b. 检查体系的自旋多重度是否设置的合理。尤其是过渡金属体系。如果多重度设置的偏离 “真实” 情况很远,则非常难以收敛
c. 检查基组是否合理。尤其是包含重原子,是否合理的设置了混合基组之类的都会影响。具体参考本文1.1节设置混合基组和赝势的方法。这里你可以多看看 我看你用的lanl2dz如果你这个体系不是一个重金属的团簇 对整个体系都用这个赝势基组未必是好选择
d. 检查当前给的初始结构是否真实存在于 “气相” 中。因为有时候气相和溶液相结构很不一样。这就会导致初始结构以为很准其实是很差的情况。如果是溶液中的结构则需要加上溶剂模型scrf,见本文1.2 .有时候加了溶剂模型就可以帮助收敛。
e. 以上确定是没有问题的,这时候就考虑加入一些关键词帮助收敛
scf=(xqc,maxconventionalcycles=64)
这个关键词可以应用在绝大部分情形下都有效。但是绝不要一上来就用,一定要检查之前的步骤一都没问题了再去使用。g09的话就用scf=xqc就好。 g16可以写这一串。
scf=novaracc
高斯在计算scf过程中,最开始的几步为了加速会降低积分精度。这样有时候就会让波函数不小心进入了一个错误的区间。很难再优化下去。所以可以用这个关键词,取消这种加速降低积分精度的方法。
scf(vshift=500) 这个一般可以用在过渡金属体系。这种体系,可能homo-lumo间距过小导致波函数不容易收敛。可以计算中人为太高这个值。这个不会影响结果只会影响收敛过程。一般设定在500上下比较合理。
int(acc2e=12, ultrafine)
如果用g09进行计算,也可以考虑这个关键词提高了dft的积分精度和格点精度。这个仅仅适用在某些dft计算中。比如m062x 这类对于格点要求比较高的泛函中。g16中这个已经是默认值不需要写。
实际计算可以用以上提到的一个或者几个关键词一起帮助收敛。
如果体系实在是太过巨大,这些都做了还是很难收敛。可以使用
scf(conver=6)
这个关键词降低scf收敛限到10^-6, 而默认是10^-8。但是慎用。这样的结构可能得到的根本不准。最好是优化完成后,读取波函数和结构恢复到默认的收敛限再进行一次优化,