24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1917  |  回复: 5

beefly

专家顾问 (职业作家)

地沟油冶炼专家

[交流] 用冗余内坐标做结构优化的一些问题已有3人参与

自九十年代以来,用冗余内坐标作结构优化已经被越来越多的理论化学程序所采用,并且大多成为默认的方法。但是冗余内坐标并不总是最佳选项,有些情况下反而会出问题。最近读了Gaussian、Dmol3等程序的冗余内坐标方法的原始文献,发现作者把冗余内坐标的好处说得过于绝对,有误导读者之嫌。

什么是冗余内坐标

要解释冗余内坐标,首先要知道什么是直角坐标和Z矩阵坐标。直角坐标容易理解,每个原子的坐标用x,y,z三个方向的坐标值表示,依赖于坐标轴方位,也称为笛卡尔坐标。Z矩阵坐标把坐标用L=3N-6(或3N-5)个键长,键角,和二面角表示,描述原子之间的连接关系,不依赖坐标轴。Z矩阵坐标的缺点是在作结构优化的时候不能包含0和180度键角,因为坐标的导数具有任意性。Z矩阵坐标有时也称为内坐标,但这种说法不严格,因为内坐标的含义更广。像曲线坐标,键与平角夹角,分子环坐标,等等,也都属于内坐标。只能说Z矩阵坐标是内坐标最常见的一种形式。

冗余内坐标可以看作是Z矩阵坐标的扩展,有以下优点:
1,冗余内坐标通常由计算程序根据原子之间的成键性质自动产生(一般仍是键长,键角,和二面角三种),因此结构输入更加灵活,用户既可以提供Z矩阵坐标,也可以提供直角坐标
2,内坐标个数不再限于L,往往比这个数多(故称“冗余”),可以把梯度对每个结构参数的影响做平衡考虑,避免Z矩阵中某些结构参数被过度优化,或者优化程度不够的问题
3,Z矩阵的0和180度键角优化的问题,可以通过引入两个正交方向得到解决

尽管如此,冗余内坐标并不是万能的,有些情况下不适用。

限制优化

冗余内坐标不包含虚原子的信息,因此在做限制优化的时候,涉及到虚原子的那些结构参数无法被固定。Gaussian会完全忽略这些结构参数,而在ADF中则报错。Dmol3程序的作者声称可以,我不知道他们是怎么做到的。

遇到这种情况,要么用Z矩阵优化,要么在可能的情况下改写初始结构,避免用虚原子。

含有弱键的中等分子和大分子

上面说到,冗余内坐标通常由计算程序根据原子之间的成键性质产生,这些参数需要预先设置好,存储在程序中。但是这些内置的键长参数并不总是合理的。如果太长,则会包含太多的无用结构参数,增加计算量不说,还会引入数值噪声;如果太短,则可能会漏掉一些重要的键以及相关的键角、二面角。这会导致两种情况:

1,冗余内坐标无法构成L个正交的坐标空间,程序直接报错。请参考这篇文章:
http://muchong.com/bbs/viewthread.php?tid=8178056

2,冗余内坐标虽然无法构成L个正交的坐标空间,但是可以通过程序的内部检测阈值。因此看不到上面的出错信息,程序继续算下去,最后得到奇怪的梯度和更新后的坐标,接下来程序报错(例如原子距离太近,读写错误等,转移用户的注意力)。

Z矩阵坐标可以看作是冗余内坐标的子集,因此也会遇到同样的问题。

大分子计算

冗余内坐标优化的每一步都要做一个Nparm x Nparm矩阵的求逆(Nparm:冗余内坐标个数;> 3N)。对于大分子的结构优化计算,求逆矩阵是非常耗时的。一般认为原子数超过600~700以后,冗余内坐标已经不适用了(例如:https://www.scm.com/Doc/Doc2014/Quild/page15.html)。

Z矩阵坐标有同样的问题。直角坐标是最佳选择。

Gaussian的AMBER和ONIOM(QM:MM)做结构优化

Gaussian中的AMBER结构优化有两种算法。一种是按照标准的梯度流程走一遍,这对于Z矩阵优化是默认的。另一种是MM理论级别特有的算法,比前者快好几个数量级,但是必须用直角坐标优化。AMBER不支持冗余内坐标优化,根据不同情况会自动转成Z矩阵优化或直角坐标优化。

Gaussian的ONIOM在做QM:MM级别优化的时候,必须使用冗余内坐标,否则会出现错误“No microiterations with Cartesian or Z-matrix opts”。因此它计算速度,以及能够处理的体系大小,大家可以想象。
回复此楼

» 猜你喜欢

» 本主题相关商家推荐: (我也要在这里推广)

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

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

smutao

禁虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
本帖内容被屏蔽

2楼2016-02-02 12:29:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
2楼: Originally posted by smutao at 2016-02-02 12:29:42
最近看别人提交了一个3000个原子的体系
B矩阵求逆那步确实很慢
看来还是得用笛卡尔坐标呀

应该是程序作者没有考虑到大体系,所以就图省事,导致缓慢。

这里其实完全不需要求B逆,只要解线性方程就可以了,并且还是比较稀疏的。即使要regularized的话,也只要计算B^T.B,而这里只有涉及相同原子的坐标之间的项有贡献。

而从B^T.B求解笛卡尔位移一步是O2。四千个原子的体系需要20秒左右,这比四千个原子的电子结构计算快多了

发自小木虫IOS客户端
3楼2016-02-03 04:49:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smutao

禁虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
本帖内容被屏蔽

4楼2016-02-03 15:22:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
4楼: Originally posted by smutao at 2016-02-03 15:22:42
regularized是什么意思
B^T.B又是什么?...

这是一些优化里常见的trick

因为内坐标对平移,转动不变,B矩阵是奇异的,因此求解时数值不稳定,解会发散,难以直接求解Δy=BΔx。这时先左乘B的转置,变成B^T.Δy=B^T.BΔx,这实际上把线性方程问题转变为最小二乘法了,而得到的就是最小二乘法的正则方程

B^T.B是实对称矩阵,但是是奇异的,有6个0特征值。正则方程奇异时用M=B^T.B+λI代替系数矩阵,λ是一小常数,系数矩阵就变成正定了。这项的物理意义是最小化不定的自由度,称为regularization。

这里B是极其稀疏的,只有每个内坐标涉及原子对应的项非零,所以构建正则方程非常高效。而求解正定对称线性方程也很容易直接求解了

发自小木虫IOS客户端
5楼2016-02-03 16:37:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yongleli

木虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
QM/MM优化还是TINKER+XXX好使吧!
6楼2016-03-03 17:45:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 beefly 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见