计算化学公社

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

[新手求助] 求助通过笛卡尔坐标,计算键角二面角的公式

[复制链接 Copy URL]

11

帖子

0

威望

119

eV
积分
130

Level 2 能力者

老师们好,请问通过原子的笛卡尔坐标(每个原子的绝对坐标,即XYZ)求键角与二面角的计算公式?感谢!键长的公式为sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)
想请问一下键角与二面角的计算公式,谢谢各位老师!




图片1.png (23 KB, 下载次数 Times of downloads: 32)

图片1.png

1043

帖子

0

威望

4188

eV
积分
5231

Level 6 (一方通行)

2#
发表于 Post on 2020-8-27 20:29:47 来自手机 | 只看该作者 Only view this author
采用矢量运算就很简单。对于键角,设a=v1-v2, b=v3-v2,则矢量a与b的夹角就是键角,a^b=acos( a.b/|a|/|b| )
对于二面角,可令b=v4-v3, 再求a^b即可

186

帖子

1

威望

4551

eV
积分
4757

Level 6 (一方通行)

3#
发表于 Post on 2020-8-27 21:35:57 | 只看该作者 Only view this author

1665

帖子

5

威望

4788

eV
积分
6553

Level 6 (一方通行)

喵星人

4#
发表于 Post on 2020-8-27 21:55:45 | 只看该作者 Only view this author
这不是最基本的解析几何问题嘛。。。。

6万

帖子

99

威望

6万

eV
积分
125128

管理员

公社社长

5#
发表于 Post on 2020-8-28 04:27:04 | 只看该作者 Only view this author
注意你的贴图方式不对,仔细看置顶的新社员必读贴了解怎么正确贴图
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

6万

帖子

99

威望

6万

eV
积分
125128

管理员

公社社长

6#
发表于 Post on 2020-8-28 04:28:26 | 只看该作者 Only view this author
Multiwfn源代码包的util.f90里的xyz2angle和xyz2dih子程序就是算键角和二面角的,直接输入原子的笛卡尔坐标就能用,一看便知
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

517

帖子

1

威望

2414

eV
积分
2951

Level 5 (御坂)

7#
发表于 Post on 2020-8-28 11:40:00 | 只看该作者 Only view this author
我以前写过一段awk代码,就是矢量运算。纯粹的高中数学。

#The unit of the results given by function fangle is degree.
function fangle(a1,a2,a3,    x1,y1,z1,x2,y2,z2,x3,y3,z3,cosangle)
{
    x1 = Atom[a1,1];
    y1 = Atom[a1,2];
    z1 = Atom[a1,3];
    x2 = Atom[a2,1];
    y2 = Atom[a2,2];
    z2 = Atom[a2,3];
    x3 = Atom[a3,1];
    y3 = Atom[a3,2];
    z3 = Atom[a3,3];
    cosangle = ((x1-x2)*(x3-x2)+(y1-y2)*(y3-y2)+(z1-z2)*(z3-z2))/sqrt(((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2))*((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2)));
    return 57.29577951*atan2(sqrt(1-cosangle*cosangle),cosangle);
}
#The unit of the results given by function fdihedral is degree.
function fdihedral(d1,d2,d3,d4,    x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,norm1,x5,y5,z5,norm2,x6,y6,z6)
{
    x1 = Atom[d1,1];
    y1 = Atom[d1,2];
    z1 = Atom[d1,3];
    x2 = Atom[d2,1];
    y2 = Atom[d2,2];
    z2 = Atom[d2,3];
    x3 = Atom[d3,1];
    y3 = Atom[d3,2];
    z3 = Atom[d3,3];
    x4 = Atom[d4,1];
    y4 = Atom[d4,2];
    z4 = Atom[d4,3];
    norm1 = sqrt((y1*(z2-z3)+y2*(z3-z1)+y3*(z1-z2))*(y1*(z2-z3)+y2*(z3-z1)+y3*(z1-z2))+(z1*(x2-x3)+z2*(x3-x1)+z3*(x1-x2))*(z1*(x2-x3)+z2*(x3-x1)+z3*(x1-x2))+(x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))*(x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2)));
    x5 = (y1*(z2-z3)+y2*(z3-z1)+y3*(z1-z2))/norm1;
    y5 = (z1*(x2-x3)+z2*(x3-x1)+z3*(x1-x2))/norm1;
    z5 = (x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/norm1;
    norm2 = sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2));
    x6 = (y5*(z3-z2)-(y3-y2)*z5)/norm2;
    y6 = (z5*(x3-x2)-(z3-z2)*x5)/norm2;
    z6 = (x5*(y3-y2)-(x3-x2)*y5)/norm2;
    return -57.29577951*atan2(x6*(y2*(z3-z4)+y3*(z4-z2)+y4*(z2-z3))+y6*(z2*(x3-x4)+z3*(x4-x2)+z4*(x2-x3))+z6*(x2*(y3-y4)+x3*(y4-y2)+x4*(y2-y3)),x5*(y2*(z3-z4)+y3*(z4-z2)+y4*(z2-z3))+y5*(z2*(x3-x4)+z3*(x4-x2)+z4*(x2-x3))+z5*(x2*(y3-y4)+x3*(y4-y2)+x4*(y2-y3)));
}

222

帖子

5

威望

2585

eV
积分
2907

Level 5 (御坂)

8#
发表于 Post on 2020-8-28 11:53:12 | 只看该作者 Only view this author
这都简单,注意二面角的取值范围,如果是-180~180,你应该考虑方向。我这有个小程序可以直接计算键长,键角,二面角,支持xyz/gjf/gro/pdb,。https://github.com/liuyujie714/T ... aster/cal_bondangle

1043

帖子

0

威望

4188

eV
积分
5231

Level 6 (一方通行)

9#
发表于 Post on 2020-8-28 16:32:21 来自手机 | 只看该作者 Only view this author
Daniel_Arndt 发表于 2020-8-28 11:40
我以前写过一段awk代码,就是矢量运算。纯粹的高中数学。

#The unit of the results given by function  ...

这代码可进一步优化,很多相同的表达式重复运算了

517

帖子

1

威望

2414

eV
积分
2951

Level 5 (御坂)

10#
发表于 Post on 2020-9-1 09:22:43 | 只看该作者 Only view this author
granvia 发表于 2020-8-28 16:32
这代码可进一步优化,很多相同的表达式重复运算了

确实可以,但当时就是临时写来用的,我也不想再折腾自己了

11

帖子

0

威望

119

eV
积分
130

Level 2 能力者

11#
 楼主 Author| 发表于 Post on 2020-9-1 15:05:46 | 只看该作者 Only view this author
十分感谢大家!以后贴图的方式会更加注意,谢谢各位老师

本版积分规则 Credits rule

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

GMT+8, 2026-2-20 01:45 , Processed in 0.232595 second(s), 23 queries , Gzip On.

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