很多人都知道的小技巧:在做结构优化的时候,用低级别方法先预优化一下,可以加快高精度方法结构优化的收敛速度。另外,如果优化过程中突然死机,或者超过了最大优化步数,可以用最后一步的结构继续做结构优化计算,从而节省时间。但是,这些处理技巧在Cfour这里经常是行不通的。例如下面的例子,初始结构参数已经用Gaussian在DFT级别优化好了,拿到Cfour在CCSD(T)级别计算,得到能量变化曲线如下:
cfour-ccsdt
对于能量变化最大的第四步,结构参数如下:
cfour-opt
可见2.5 Hartree的能量跳跃主要是键角、二面角变化过大引起的(默认上限是0.3 a.u.,大约17.2度)。看来Cfour控制优化步长的算法不太合理,或者代码有bug(1.0到2.1版本都存在这样的问题)。因此再好的初始结构,让这个bug一搅合,已经变得毫无意义了。好在这是个主族的轻元素体系,如果是过渡元素体系,不合理的结构经常还会导致SCF或CC不收敛。 Cfour有个关键词GEO_MAXSTEP可以减小结构参数变化的上限(类似于Gaussian的OPT选项maxstep)。例如设定GEO_MAXSTEP=30,可以让键长、角度变化的上限分别为0.03 Bohr和1.7度,但是作用有限,开始的几步仍然是往错误的方向跑,导致总的优化步数更多,计算更加耗时。
在Cfour作者改进结构优化代码之前,彻底的解决办法是用第三方程序做结构优化,通过接口驱动Cfour计算单点的梯度。目前PSI4有这个接口,使用手册里有个例子。另外Gaussian 16也提供了调用外部程序算梯度的接口,有发表的论文就是Gaussian调用Cfour算的。
|