计算化学公社

标题: 求助:ORCA5.0.1几何优化时出现偶发某一离子步初始化错误问题 [打印本页]

作者
Author:
MisakaFaction    时间: 2021-8-15 22:00
标题: 求助:ORCA5.0.1几何优化时出现偶发某一离子步初始化错误问题
请教各位老师,我在ORCA5.0.1几何优化时总是出现某一离子步初始化错误的问题,希望大家帮助解决。这一问题可以重复,但改一改内存大小或并行核数有时就能顺利结束,但同样的设置对于另一个输入文件又可能出现问题,因此初步判定是ORCA并行问题。
我分别尝试了ORCA的动态库版本和静态库版本,都有概率出现此问题。
我用尝试用GCC和Intel编译器分别编译了openmpi4.1.1,都有概率出现此问题。
我用某超算的AMD64核处理器,尝试用16核,32核,64核提交,都有概率出现此问题。单核提交尚未遇到此问题。
正常情况下的离子步:
(, 下载次数 Times of downloads: 17)
问题情况下的离子步中的初始能量出现异常:
(, 下载次数 Times of downloads: 26)
最终报错:
(, 下载次数 Times of downloads: 18)
提交脚本:
(, 下载次数 Times of downloads: 17)
输入文件:
(, 下载次数 Times of downloads: 8)


作者
Author:
wzkchem5    时间: 2021-8-15 23:19
其他理论级别下有这个问题吗?
我们orca团队内部之前有人提到过r2SCAN-3c自带的基组容易有线性相关问题,可以检查一下overlap矩阵的最小本征值是不是比较小
作者
Author:
MisakaFaction    时间: 2021-8-16 10:49
wzkchem5 发表于 2021-8-15 23:19
其他理论级别下有这个问题吗?
我们orca团队内部之前有人提到过r2SCAN-3c自带的基组容易有线性相关问题, ...

经测试,使用B97-3c和B3LYP/def2-TZVP均可能出现错误。这类错误似乎从不发生在第一个离子步上,总感觉是内存或cpu之间数据交换时发生了什么错误。 (, 下载次数 Times of downloads: 19)

使用r2SCAN-3c时
(, 下载次数 Times of downloads: 23)
使用B3LYP/def2-TZVP时
(, 下载次数 Times of downloads: 17)


作者
Author:
wzkchem5    时间: 2021-8-16 17:04
MisakaFaction 发表于 2021-8-16 03:49
经测试,使用B97-3c和B3LYP/def2-TZVP均可能出现错误。这类错误似乎从不发生在第一个离子步上,总感觉是 ...

这个本征值还是稍微有点小。可以试试加大格点、把积分精度设严一些
作者
Author:
MisakaFaction    时间: 2021-8-17 00:09
wzkchem5 发表于 2021-8-16 17:04
这个本征值还是稍微有点小。可以试试加大格点、把积分精度设严一些

非常感谢,加大格点(defgrid3)或者积分精度(VeryTightSCF)在少量的测试中均没有出现报错。
但是overlap矩阵的本征值似乎也没有增大很多,不是很明白,感觉很神奇。
(, 下载次数 Times of downloads: 11)
另外一提,按照这个思路我查询了手册9.5.9提供的方案将sthresh设为1e-7,并没有避免错误。


作者
Author:
wzkchem5    时间: 2021-8-17 00:38
MisakaFaction 发表于 2021-8-16 17:09
非常感谢,加大格点(defgrid3)或者积分精度(VeryTightSCF)在少量的测试中均没有出现报错。
但是overlap ...

加大格点和积分精度避免线性相关问题的原理,不是增大overlap矩阵的本征值,而是让计算对于overlap矩阵的本征值更不敏感。
当overlap矩阵最小的本征值很小的时候,数值积分和双电子积分的误差会被放大,放大的倍数反比于本征值,当误差放大到一定程度以后,就会出现一种情况:当电子占据特定的轨道的时候,电子和电子之间不再是排斥作用了,反倒是吸引。于是电子就都往这个轨道上面跑,最后把能量拉得非常低。
所以为了解决这个问题,有两种思路。一个是砍掉overlap矩阵的比较小的本征值对应的本征矢,orca里是靠sthresh来控制的,本征值小于sthresh的都会被砍掉。但这会引入近似,所以sthresh一般最大设到1e-7,真的有必要的话最多加到1e-6到头了,再大的话误差可能不能接受。对于你的体系,最小的本征值不是那么的小,如果把sthresh一路加大到砍掉至少一个本征矢的程度,有可能引入不可接受的误差,而如果sthresh虽然加大了但是没有大于最小的本征值,又一点用都没有。
另一种方法就是减小积分的误差,也就是加大格点,减小thresh、tcut之类,这种方法比较治本,唯一缺点是计算时间变长(调sthresh几乎不影响计算时间)。





欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3