24小时热门版块排行榜    

CyRhmU.jpeg
查看: 969  |  回复: 1

beefly

专家顾问 (职业作家)

地沟油冶炼专家

[交流] Gaussian计算超极化率的符号错误已有1人参与

今天偶然读到下面的文章
曾薇,丁培江,赵可清,Gaussian程序计算的一阶超极化率的符号问题,四川师范大学学报(自然科学版),33(2),228,2010。可下载
http://www.paper.edu.cn/index.ph ... 395(2010)02-0228-03

文章说Gaussian程序计算的一阶超极化率差一个负号。一开始感觉不可思议,因为感觉Gaussian不大可能犯这种低级错误,而且即使犯了,也会很快被众多用户发现并得到及时改正,不可能保留这么多年(如果从已知可以计算超极化率的G92算起,那么也有20年了)。

但是经过简单的计算后,发现作者是对的。这里使用不同于文献中的算法,直接从定义出发,即,一阶超极化率(beta)等于能量对电场的三阶导数,再乘以-1。可以用5点公式计算数值三阶导数。五个点的能量和电场位移量已经在文章的表2给出,三阶导数公式的因子可以在这里查到(第一个表)
http://en.wikipedia.org/wiki/Finite_difference_coefficient

MATLAB流程如下:
e=[-15.2698590257
-15.2732037424
-15.2768727762
-15.2808584389
-15.2851530988];
c=[-.5 1 0 -1 .5];
beta=-c*e/(0.005^3)

计算得到的beta=-61.2796与表1中FF结果非常接近。有一点小差异是因为从公式(2)计算的一阶超极化率包含了高阶项的贡献。可见Gaussian程序计算的一阶超极化率确实差一个负号。也许有人会认为Gaussian程序使用了不同的定义,但是迄今为止,文献中所有计算能量对电场n阶导数的公式都有一个负号。既然偶极矩(1阶导数)和极化率(2阶导数)公式都有负号,对一阶超极化率(3阶导数)何必用不同的定义呢?实际上,Gaussian的超极化率文献用的就是带负号的公式。

其实不光文章中指出的CPHF和ENONLY方法(正确的叫法应该是解析方法和纯数值方法),利用偶极矩数值求导的半解析方法一样会得到错误的超极化率符号。也就是说,Gaussian程序超极化率符号的错误与算法无关。这个错误在Gaussian09 C.01中依然存在。

经过检查,还发现GAMESS(US)程序计算一阶超极化率的符号是正确的。

[ Last edited by beefly on 2012-11-1 at 03:14 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

beefly《西太平洋大学现代英汉词典》[bi:fli]牛肉一般地
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lihb734

铁杆木虫 (职业作家)

站在计算化学入门的门槛上


小木虫: 金币+0.5, 给个红包,谢谢回帖
beefly先生:既然每个分量都有符号的问题,这样也不影响结果的讨论吧?但作者任然应该知道这样一个事实。
前途光明,出路难觅!
2楼2012-11-01 09:23:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 beefly 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见