frozen铃兰吧 关注:28贴子:366
  • 0回复贴,共1

【量化】对gaussian中不收敛的对策

只看楼主收藏回复

gaussian对于优化不收敛的对策
首先,我们必须理解收敛是什么意思。在自洽场(SCF)计算中,自洽循环中,首先产生一个轨道占据的初始猜测,
1)然后根据此轨道占据构造电荷密度和哈密顿量。
2)对角化哈密顿量,得到新的轨道能级和占据。
3)产生新的电荷分布和哈密顿量,重复步骤2)
   经过一定次数的循环后,某次循环前和循环后的电荷密度差别小于一定的标准,我们称之为收敛。
   如果以上过程不能收敛,则gaussian给出convergence failure的警告。
   如果SCF计算收敛失败,你首先会采取哪些技巧呢?这里是我们强烈推荐的首选方法。
1 考虑使用更小的基组
   由于一定的基组对应于一定精度和速度,所以更换基组并不在所有的情况下都适用。方法是首先用小基组进行计算,由前一个波函得到用于大基组计算的初始猜测(Guess=Read自动进行)。
2 增加最大循环步数
Gaussian默认的最大循环步数为64 (SCF=DM或SCF=QC方法则为512),如果循环次数超过这个数目则会汇报convergence failure。在一定的情况下,不收敛的原因仅仅是因为最大循环步数不够。可以通过设置maxcyc来增大最大循环步数。更多的SCF迭代(SCF(MaxCycle=N),其中N是迭代数)。这很少有帮助,但值得一试。
3
放宽收敛标准
如果接近SCF但未达到,收敛标准就会放松或者忽略收敛标准。这通常用于不是在初始猜测而是在平衡结构收敛的几何优化。SCF=Sleazy放松收敛标准,Conver选项给出更多的控制。
4
尝试改变初始构型
首先略微减小键长,接下来略微增加键长,接下来再对结构作一点改变。
5
尝试能级移动Level shifting (SCF=Vshift)
   如果不收敛的原因是波函数的震荡行为,通常是因为在相近的能量上的泰的混合。对于这种情况,我们可以采用level shifting的方法。Level shifting的含义是人工的升高非占据轨道的能级,以防止和最高占据轨道之间的混合,以达到收敛的目的。在Gaussian中此方法的关键词为SCF=Vshift
6
使用强制的收敛方法SCF=QC
SCF=QC通常最佳,但在极少数情况下SCF=DM更快。此关键字将大大增加计算时间,但是收敛的机会更大。不要忘记给计算额外增加一千个左右的迭代。应当测试这个方法获得的波函,保证它最小,并且正好不是稳定点(使用Stable关键字)。
7
对开壳层体系,尝试收敛到同一分子的闭壳层离子,接下来用作开壳层计算的初始猜测。添加电子可以给出更合理的虚轨道,但是作为普遍的经验规则,阳离子比阴离子更容易收敛。选项Guess=Read定义初始猜测从Gaussian计算生成的checkpoint文件中读取。
8
一些程序通过减小积分精度加速SCF。对于使用弥散函数,长程作用或者低能量激发态的体系,必须使用高积分精度:SCF=NoVarAcc。
9
改变模型或方法
可以考虑改变模型方法。比较常见的方法有HF,GVB,MCSCF,CASSCF,MPn等。改变模型方法通常也会收敛性质。通常,精度更高的方法更难收敛。精度比较低的方法产生的计算结果可以作为高精度计算的初始猜测。考虑使用不同理论级别的计算。这并不总是实用的,但除此之外,增加迭代数量总是使得计算时间和使用更高理论级别差不多。
10
关闭DIIS外推(SCF=NoDIIS)。同时进行更多的迭代(SCF=(MaxCycle=N))。
11
试着改用DIIS之外其它方法(SCF=SD或SCF=SSD)。


1楼2011-04-21 00:22回复