计算化学公社
标题:
orca优化后的结构在同样条件下优化为什么还优化了十几步才收敛?
[打印本页]
作者Author:
lufenghxu
时间:
2023-5-16 17:18
标题:
orca优化后的结构在同样条件下优化为什么还优化了十几步才收敛?
优化过渡态结构,收敛后,我在同样的添加下利用上一次优化后的结构优化,发现orca还是算了十二步才收敛结束。这是什么原因造成的?结构前后的能量值一致(前五位一样,Hartree为单位)。anFreq计算的频率略有差异。谢谢各位。
作者Author:
wzkchem5
时间:
2023-5-16 18:04
判断结构优化收敛,一般用3类标准:梯度、步长、能量变化。其中梯度和步长又分为平均大小(RMS)和最大分量(Maximum)两个标准。当5个标准同时满足收敛限,或者大部分标准明显比收敛限好、剩下一两个标准离收敛限也不远了的时候,认为结构优化收敛。
因此,即便是已经优化收敛的结构,再重新优化,ORCA也会尝试多优化一步,因为这样才知道能量变化是多少。这样会带来几个后果:
(1)此时优化收敛的结构必然和初始结构有少许差别,因为结构优化又走了至少一步,即便这一步很小(但是在默认的收敛限下,这个差别不影响结果的可比性,可以忽略);
(2)之前的ORCA计算发现能量变化小于收敛限,可能只是碰巧。类似你下山,几乎下到谷底了,坡度、步长都收敛了,但是高度变化还没收敛,结果你下一步迈得稍微有点大,刚好跨过了谷底,走到了谷底的另一侧,刚好高度没有变化,所以就收敛了。但是你继续优化的时候,迈的步子小一些,这次没有错过谷底,因此高度又有变化了,程序认为暂时还没有收敛。
(3)步长是根据Hessian确定的,而结构优化过程中当前的Hessian和优化历史有关。结构优化第一步会产生一个基于分子力学的初始Hessian,这个最粗糙;随着结构优化的进行,程序用BFGS等算法不断改善Hessian;优化几十步以后,误差累积,可能导致Hessian不再改善,反而变得越来越差。如果用calc_hess true要求计算精确Hessian,那么是最准的,在接下来的结构优化里会慢慢变差。因此,除非你每一步结构优化都精确计算Hessian,否则结构优化过程中的一个结构你单拿出来新开一个计算,它第一步迈的步长和原来的结构优化里迈的步长是不一样的,可能导致原来结构优化判断收敛的一个结构,新跑的结构优化认为没有收敛。其中当Hessian是精确Hessian时,步长的结果最为客观、可靠;当Hessian不是精确Hessian时,步长是否必须用精确Hessian来判断,是有一定争议的。高斯里面一般认为严格的做法是让精确Hessian判断的步长也是收敛的,但如果做得粗糙一些的话也可以不用精确Hessian判断(
http://sobereva.com/278
),因此高斯做完freq还会重新算一遍步长;ORCA里面一般认为不需要用精确Hessian判断,如果嫌结构的可靠程度不够,应当用tightopt等关键字同时把所有收敛限都设严,单把步长的判断做得严格可能得不偿失,因为可能需要多算一次Hessian。
作者Author:
lufenghxu
时间:
2023-5-25 18:42
十分感谢老师的耐心解答!谢谢!
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3