计算化学公社

 找回密码 Forget password
 注册 Register
Views: 7874|回复 Reply: 6
打印 Print 上一主题 Last thread 下一主题 Next thread

[算法与编程] 如何把cartesian下的gradient&hessian转换成基于internal coordinates的?

[复制链接 Copy URL]

230

帖子

0

威望

2665

eV
积分
2895

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
最近再写一个优化结构的脚本,利用高斯产生的gradient和hessian。由于想把转动和平移的成分去掉,所以就想把基于Cartesian的gradient和hessian转成基于内坐标的。

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


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

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

vib.pdf (229.19 KB, 下载次数 Times of downloads: 28)




123

帖子

0

威望

2613

eV
积分
2736

Level 5 (御坂)

7#
发表于 Post on 2022-6-17 22:54:14 | 只看该作者 Only view this author
bnulk 发表于 2022-6-17 21:28
* tred2(Matrix a, Vector d, Vector e)  实对称矩阵A[n,n]的Householder约化,和tqli结合是 ...

非常感谢!我研究一下。

23

帖子

1

威望

575

eV
积分
618

Level 4 (黑子)

6#
发表于 Post on 2022-6-17 21:28:39 | 只看该作者 Only view this author
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]相对应的规范特征向量。

Matrix_0_HouseholdAndQL.cs

11.45 KB, 下载次数 Times of downloads: 3

123

帖子

0

威望

2613

eV
积分
2736

Level 5 (御坂)

5#
发表于 Post on 2022-5-9 16:55:23 | 只看该作者 Only view this author
bnulk 发表于 2019-11-3 02:30
D矩阵前三列是平动向量,后三列是转动向量。用这六个向量组成一个3N行6列的矩阵(N是分子中原子个 ...

您好,请问里面的 Matrix.tred2 和 Matrix.tqli分别是啥意思呢?

230

帖子

0

威望

2665

eV
积分
2895

Level 5 (御坂)

4#
 楼主 Author| 发表于 Post on 2019-11-4 16:37:20 | 只看该作者 Only view this author
Warm_Cloud 发表于 2019-11-2 20:02
你直接读高斯的内坐标的不就得了。

目前还是先从fchk里面读应急一下

23

帖子

1

威望

575

eV
积分
618

Level 4 (黑子)

3#
发表于 Post on 2019-11-3 02:30:08 | 只看该作者 Only view this author
        D矩阵前三列是平动向量,后三列是转动向量。用这六个向量组成一个3N行6列的矩阵(N是分子中原子个数),就是分子的平动转动空间。
        这时候检查一下每一列的内积,如果为零则是线性分子。把那一列剔除掉,就是对于线性分子的3N行5列矩阵。
        平动转动空间的互补空间,就是投影掉平转动之后的振动空间。求互补空间的方法是Schmidt正交化。白皮书后面用的D矩阵,就是这个去掉了平转动空间的互补空间。

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

GaussianHVA.cs

32.32 KB, 下载次数 Times of downloads: 23

高斯的振动分析

评分 Rate

参与人数
Participants 2
eV +10 收起 理由
Reason
一颗赛艇 + 5 谢谢老师指点!现在明白不少,我再研究研究
sobereva + 5

查看全部评分 View all ratings

308

帖子

3

威望

6259

eV
积分
6627

Level 6 (一方通行)

2#
发表于 Post on 2019-11-2 20:02:09 | 只看该作者 Only view this author
你直接读高斯的内坐标的不就得了。
欢迎使用量子化学软件Amesp

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-18 07:30 , Processed in 0.191370 second(s), 27 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list