计算化学公社

标题: 如何把cartesian下的gradient&hessian转换成基于internal coordinates的? [打印本页]

作者
Author:
一颗赛艇    时间: 2019-11-2 18:40
标题: 如何把cartesian下的gradient&hessian转换成基于internal coordinates的?
最近再写一个优化结构的脚本,利用高斯产生的gradient和hessian。由于想把转动和平移的成分去掉,所以就想把基于Cartesian的gradient和hessian转成基于内坐标的。

放狗搜索一通后发现在高斯官网有个PDF专门讲振动分析的,其中里面提到一个转换矩阵D,是这么说的:
(, 下载次数 Times of downloads: 58)

看了半天还是很糊涂,这个D是怎么来的?和上面D1 D2 …… D5 D6 向量有什么关系也不是很清楚

就算得到的这个D矩阵,那么怎么把基于Cartesian的gradient转成基于内坐标的呢?谢谢
PDF见附件

(, 下载次数 Times of downloads: 28)





作者
Author:
Warm_Cloud    时间: 2019-11-2 20:02
你直接读高斯的内坐标的不就得了。
作者
Author:
bnulk    时间: 2019-11-3 02:30
        D矩阵前三列是平动向量,后三列是转动向量。用这六个向量组成一个3N行6列的矩阵(N是分子中原子个数),就是分子的平动转动空间。
        这时候检查一下每一列的内积,如果为零则是线性分子。把那一列剔除掉,就是对于线性分子的3N行5列矩阵。
        平动转动空间的互补空间,就是投影掉平转动之后的振动空间。求互补空间的方法是Schmidt正交化。白皮书后面用的D矩阵,就是这个去掉了平转动空间的互补空间。

        这个白皮书,介绍了用D矩阵,把笛卡尔坐标Hessian矩阵转换为标准取向下内坐标Hessian矩阵的做法。但是,并没有介绍转换为特定内坐标下梯度和Hessian矩阵的方法。白皮书这部分我写过代码(c#代码,供参考。),见附件。

作者
Author:
一颗赛艇    时间: 2019-11-4 16:37
Warm_Cloud 发表于 2019-11-2 20:02
你直接读高斯的内坐标的不就得了。

目前还是先从fchk里面读应急一下
作者
Author:
Markmahao    时间: 2022-5-9 16:55
bnulk 发表于 2019-11-3 02:30
D矩阵前三列是平动向量,后三列是转动向量。用这六个向量组成一个3N行6列的矩阵(N是分子中原子个 ...

您好,请问里面的 Matrix.tred2 和 Matrix.tqli分别是啥意思呢?
作者
Author:
bnulk    时间: 2022-6-17 21:28
Markmahao 发表于 2022-5-9 16:55
您好,请问里面的 Matrix.tred2 和 Matrix.tqli分别是啥意思呢?

            * tred2(Matrix a, Vector d, Vector e)  实对称矩阵A[n,n]的Householder约化,和tqli结合是当前计算实对称矩阵特征值和特征向量最有效的方法。
              输入:a为待处理的实对称矩阵。d,e为空。
              输出:a被产生变换的正交矩阵Q取代。d返回三对角矩阵的对角元素,e返回非对角元素,且e[0]=0。
            * tqli(ref Vector d, ref Vector e, ref Matrix z) 计算特征值和特征向量。
              输入:实对称矩阵,事先由tred2约化后得到的三对角矩阵和正交矩阵Q。d是对角元素,e是次对角元素,e[0]取任意值。z是tred2中的a矩阵。
              输出:d是特征值,e被破坏,z每一列是特征向量。输出z的第k列是与d[k]相对应的规范特征向量。
              另:如果输入z是单位矩阵的话,则输出为三对角矩阵的特征向量。输出z的第k列是与d[k]相对应的规范特征向量。
作者
Author:
Markmahao    时间: 2022-6-17 22:54
bnulk 发表于 2022-6-17 21:28
* tred2(Matrix a, Vector d, Vector e)  实对称矩阵A[n,n]的Householder约化,和tqli结合是 ...

非常感谢!我研究一下。




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