【发布时间】:2016-08-25 00:20:59
【问题描述】:
我有一个原子坐标数组(钻石晶格) 看起来像这样:
[[0.0, 0.0, 0.0],
[0.0, 0.5, 0.5],
[0.5, 0.0, 0.5],
[0.5, 0.5, 0.0],
[0.25, 0.25, 0.25],
[0.25, 0.75, 0.75],
[0.75, 0.25, 0.75],
[0.75, 0.75, 0.25]]
每个原子都有一个 id。 我需要创建一个键列表,这是一个给定原子所连接的原子的邻居列表。 所有内部原子必须有 4 个邻居(键)。所有表面原子不能有超过 4 个邻居(键)。
我知道如何处理内部原子: 使用快速且运行良好的 kdTree。
kdtree = scipy.spatial.KDTree(Atom_xyz[:,])
Neighs = kdtree.query_pairs(RCUT=1.0)
Neighs = list(Neighs)
但是它不适用于表面原子,因为它不适用于周期性图像,我需要确保我的邻居不超过 4 个。 我想知道你们是否可以帮助我提供一个算法。
在这里我附上我的晶格的图像,其中原子被可视化为青色,而键则是弯曲的白色。
只有内部原子结合的金刚石晶格:
【问题讨论】:
标签: python numpy scipy simulation kdtree