计算化学公社

标题: 如何处理双电子积分的奇点? [打印本页]

作者
Author:
Freeman    时间: 2020-8-21 17:04
标题: 如何处理双电子积分的奇点?
最近我想算一下两个原子轨道的相互作用,遇到了这样的问题:双电子积分有1/rij项,如果i和j坐标恰好重合,rij=0,这个点的值就会blow up,程序报错退出。
我的解决方法是:
在rij旁边强行加上一个小量(一般用1e-13m,也就是1e-3埃),使分母永远不为0。但是我发现小量的大小对结果的影响蛮大的,多一个0或少一个0就会差零点几个eV;如果加太多0,还会引发其它问题(不能通过MATLAB的误差检测,奇怪的报错,算得慢等等)。所以我觉得尽管这个方法能用,但不太好。
请问现在主流的量化程序是怎么处理双电子积分rij=0的点的?

作者
Author:
sobereva    时间: 2020-8-21 18:46
建议你先了解一下主流量化程序用的双电子积分的基本算法,比如这篇就讲得挺清楚和系统
(, 下载次数 Times of downloads: 73)

并没有什么特殊的处理。有奇点不代表不能算这个积分。


作者
Author:
wzkchem5    时间: 2020-8-21 20:37
简单地说,通过解析的积分变换,变成一个没有奇点的积分。与此同时这个过程还把本来是6维积分的双电子积分简化成了1维,而这个1维积分可以直接预先列一个表,查表获得。
直接按定义做数值积分是算不动的
作者
Author:
卡开发发    时间: 2020-8-22 00:28
非要数值做这个积分的话,可以将求积分转换成解Poisson方程(https://doi.org/10.1016/0009-2614(83)80104-3)。然后单中心的话就可以直接转化成径向的差分方程求解,多中心的话可以用Becke的方法划分后分别对每块球形区域求解差分方程(http://dx.doi.org/10.1063/1.455005)。整个过程十分繁琐(尤其是各种坐标变换)




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