计算化学公社
标题:
如何处理双电子积分的奇点?
[打印本页]
作者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)
上传 Uploaded
点击下载Click to download
并没有什么特殊的处理。有奇点不代表不能算这个积分。
作者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