我相信你可以做一个小的改进,但不是一个戏剧性的改进。假设你的力环由一个外环组成,一个外环覆盖细胞,一个内环覆盖最近邻细胞(然后,更多的环覆盖这些细胞内的原子)。对于配对分布函数计算,相对于外循环中考虑的单元,内循环不仅可以遍历最近邻单元,还可以遍历覆盖大致球形区域到所需距离的所有单元。您可以在程序开始时构建这些单元格的列表(带有相对于中心单元格的索引)。正如您在之前的问题中提到的,您如何执行此操作取决于您如何处理单元格索引。
如果感兴趣的最大距离没有盒子长度的一半那么大,那么与所有对方法相比,这可以合理地节省时间。然而,如果你想计算出一半的盒子长度,最大的节省是你正在查看的球形体积的比率,与体积你会看到所有对:大约 50%。本质上,您只是避免查看围绕给定单元格的周期框的“角落”。对于大小为的系统,我认为这不值得,您最好坚持使用所有对(丢弃任何分离大于的)。L43π(L/2)3L3N=1000L/2
这里的一线希望是计算的统计数据随着完成的额外工作而提高。从某种意义上说,你得到了你所付出的:你看更多的对,对于更高的值,所以成本上升,但是对于大的 ,计算的精度更好。如果您愿意,您可以通过减少计算频率来抵消这一点(当然不是每一步!)。rr
的远程部分,但同样,如果您有更大的系统,它可能才值得这样做。您可以从配置的快照创建粒子密度的 3D 直方图,方法是计算立方网格中的原子,但长度比例比力计算要小。通常,单元尺寸应该是颗粒直径的一小部分。然后使用 FFT 算法执行 3D 离散傅里叶变换,给出瞬时并取平方模。波向量函数g(r)ρ(r)ρ^(k)|ρ^(k)|2可以对间隔拍摄的快照进行平均,并最终给出结构因子。逆傅立叶变换这会给你。原子来说太麻烦了。S(k)g(r)N=1000