少年爱吃地三鲜 发表于 2021-1-14 17:19 显然要加上键连关系才能明确处理 |
少年爱吃地三鲜 发表于 2021-1-14 16:54 (假设是正交盒子)每个坐标如果超过盒子长度就减去一个盒子长度,如果是负数就加上一个盒子长度。通常来说,不会有跑到中心盒子边上两个和以上盒子距离的情况。 |
liyuanhe211 发表于 2021-1-7 15:22 老师,我想问一下您,我们自己构建函数时候用到的原子坐标可能随着轨迹突然跳到另一端,这个时候我们编写程序应该如何定义呢? 还是说只能在gomacs 中 使用nojump? 这个周期性边界自己写该如何考虑,麻烦您了 |
liyuanhe211 发表于 2021-1-7 15:22 学过。但是脑子一抽,就想不起来用…… ![]() |
我本是个娃娃 发表于 2021-1-7 12:10 学一下numpy吧,很好用的。 |
我本是个娃娃 发表于 2021-1-7 12:10 |
我本是个娃娃 发表于 2021-1-7 12:10 你这个实际用起来应该不一定对,你没有考虑正负,正常情况应该是[-PI, PI]. |
2019年7月写的,当时是为了解决另一个帖子的关于乙烷的二面角问题。
diangle.py
(1.28 KB, 下载次数 Times of downloads: 14)
|
highlight 发表于 2021-1-7 09:41 非常感谢您! |
|
def dihedral(p1,p2,p3,p4): '''p1,p2,p3,p4 are atoms''' c1=p1.position c2=p2.position c3=p3.position c4=p4.position b0 = -1.0*(c2-c1) b1 = c3 - c2 b2 = c4 - c3 b1 /= np.linalg.norm(b1) v = b0 - np.dot(b0, b1)*b1 w = b2 - np.dot(b2, b1)*b1 x = np.dot(v, w) y = np.dot(np.cross(b1, v), w) return np.degrees(np.arctan2(y, x)) |
|
本帖最后由 liuyuje714 于 2021-1-7 10:13 编辑 按照图二的公式写就好了。对于做MD轨迹分析的话你还是应该看看一些源码的,比如mdanalysis的源中就有相应的二面角计算函数,你主要还应该考虑跨周期性分子的问题。物理知识只是告诉你如何做和原理是什么,真正用到实际问题考虑要更加全面。 |
liyuanhe211 发表于 2021-1-7 09:45 感谢您的教导!!!! ![]() |
|
代码截图的分辨率起码得能看得清是等号还是减号吧。。。 令二面角是A1-A2-A3-A4组成的,则算二面角的俩向量应该是向量A2->A1和向量A3->A4之间的二面角,而不是向量A1->A2和向量A3->A4的二面角,所以它乘个负一。。。为啥要减个错的再乘负一我也不知道 设有一单位向量a,(b·a)a 的几何意义是求b在平行于a方向的分向量。b - (b·a)a 就是求b在垂直于a方向的分向量.
|
| 参与人数Participants 1 | eV +5 | 收起 理由Reason |
|---|---|---|
|
| + 5 | 谢谢 |
手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图
GMT+8, 2026-2-22 13:17 , Processed in 0.171222 second(s), 26 queries , Gzip On.