【摘要】 随着ORCA变得越来越强大,越来越多的Gaussian用户开始学习使用ORCA。

随着ORCA变得越来越强大,越来越多的Gaussian用户开始学习使用ORCA。

 

ORCA对于一些功能独特的支持,更是使其成为小众方向研究者手中的神器。

 

但是,高斯中有很多解决计算报错的方法,在ORCA中同样适用。

 

但是不清楚怎么写关键词,或者有什么更推荐的关键词组合更适合ORCA的使用场景。

 

怎么办,翻手册?问前辈?还是官方论坛找开发者呢?

 

今天就给大家介绍一下ORCA中解决SCF不收敛问题的方法

 

 

此推文是我学习ORCA UM2020 的笔记,其实就是对官方的讲义的一个汇总。

 

关于UM2020的介绍,大家可以点击下方蓝字跳转查看:2020年ORCA官方第5届用户会议,你参加了吗?

 

SCF不收敛怎么办,这里首先推荐大家看一下卢天老师的《解决SCF不收敛问题的方法》http://sobereva.com/61  文中给出了解决SCF不收敛的若干建议,这个建议是各种计算软件通用的,而且卢老师在文中对高斯软件中如何书写关键词做了说明。

 

唯理计算工程师在此之前,先说一下自己对于ORCA计算的一些经验

 

注1:DFT先写上Grid6 NoFinalGrid; 开了RIJCOSX的先写上GridX6 NoFinalGridX;

注2:ORCA的SOSCF不甚稳健,经常表现为在迭代几十圈后能量突然暴涨并以很大的幅度震荡,此时如果在进入SOSCF之前收敛趋势向好,应该去掉SOSCF;

注3:读取Gaussian的波函数会令ORCA的使用体验大幅提升

 

下面正式开始介绍ORCA的官方建议。

 

ORCA中的SCF不收敛提示很明显,一般就是给你一句SCF NOT CONVERGED AFTER XX CYCLES。

 

尤其是才开始优化计算的第一圈就给我来这么一句,那基本快心脏骤停了。

 

这意味着纵然后续调整关键词能够收敛也会让总的计算时间比自己原本计划的多得多。

 

首先,大家应该先检查一下,是不是自己的体系建错了(原子有重叠或者距离太近,缺少某个原子),自旋多重度是不是设错了,然后再去着手解决收敛问题。

 

接下来是笔记时间。强烈大家看一下ORCA手册的9.6节学习一下以下建议中关键词的详细解释

 

 

官方建议1

 

 

%SCF MaxIter 200

END

 

这里的200可以根据实际情况修改,给出这样的关键词并不是让大家硬算。

 

因为ORCA软件默认给的允许迭代次数可能远小于实际体系应该要有的水平。

 

主动在计算时候监测一下计算过程,你可以看到,迭代时候SCF过程收敛判据是向好进行的,但是默认允许次数不够导致报错的,那么主动加一下最大迭代次数。

 

比如你计算一个200+原子的有机体系或者是几十个原子的金属团簇,个人推荐还是人为手动加一下这个迭代次数比较好

 

 

官方建议2

 

 

! KDIIS SOSCF

 

通常情况,默认是DIIS 和 SOSCF 的组合。

 

但是官方表示很多情况在ORCA中KDIIS好于DIIS。

 

尤其对于过渡金属配合物之类的体系,官方建议KDIIS SOSCF更合适,如果这个还是不行那就改成KDIIS NOSOSCF再试试。

 

 

官方建议3

 

 

%SCF STHRESH 1e-6 END

 

软件手册中建议的是%scf sthresh 1e-7 end,对于大基组或者带有弥散的基组(如aug-cc-pVTZ),可能会在计算时候出现线性依赖问题。

 

具体可看ORCA手册9.4.5 Linear Dependence 和http://sobereva.com/573 中有关线性依赖的描述


基函数的重叠矩阵的本征值过小,则说明基函数存在很大程度的线性依赖问题,此时会自动砍掉一些线性依赖基函数,将这些本征值设置为零以消除数值不稳定性问题。这里设置的是砍基函数的阈值。

 

此时可以通过检索输出文件中“Smallest eigenvalue”获得以下内容:

Smallest eigenvalue                        ... 6.622e-06

Time for diagonalization                   ...    0.152 sec

Threshold for overlap eigenvalues          ... 1.000e-08

Number of eigenvalues below threshold      ... 0

Time for construction of square roots      ...    0.124 sec

Total time needed                          ...    0.279 sec

 

如果实际计算中的数值小于上述说的阈值,那么这里意味着可能存在线性相关问题。

 

 

官方建议4

 

 

如果发生如下震荡

 

 

%SCF CNVShift true

LevelShift 1.5

END

%SCF CNVDamp true

DampFac 0.9

END

 

如果发生下面这种震荡

 

 

! Grid5 GridX5 NoFinalGrid NoFinalGridX

%SCF Tcut 1e-12

Thresh 1e-14

DirectResetFreq 1

End

 

上述的解决尾部震荡的高精度关键词组合,大家可以根据需要自行修改添加,直接用这个可能收敛是没问题,就是电费用的有点多。

 

官方建议5

 

%SCF DIISMaxEq 20

END

 

DIISMaxEq的默认数值是5,对于优化困难的体系可以试试放到15-40.

DIISMaxEq is the value for how many Fock matrices to remember for the DIIS extrapolation.

 

简单来说,DIIS外推要记住几个以前迭代的SCF矩阵

 

官方建议6

 

!SlowConv

或者

!VerySlowConv

 

平时没事别用这个。这个对于简单的体系,比如算个苯分子,也可能要几百步才能收敛。

 

这两个关键词都会设置很大的阻尼,收敛慢但是收敛机会大。

 

官方建议7

 

! KDIIS NOSOSCF GRID5 GRIDX5 NOFINALGRID NOFINALGRIDX

%SCF CNVSHIFT TRUE

LEVELSHIFT 0.5

DIRECTRESETFREQ 1

DIISMAXEQ 20

END

 

如果大家对于文中有什么疑问,欢迎大家在下方留言。

 

最后和大家道个歉,官方不允许第三方分发他们的讲义,所以请有需要的同学自行去ORCA官方论坛自行下载。

 

本文所有内容文字、图片和音视频资料,版权均属科学指南针网站所有,任何媒体、网站或个人未经本网协议授权不得以链接、转贴、截图等任何方式转载。