我正在制作一个只有短程交互的 NVT Monte Carlo (MC) 模拟代码。
我在网上找到了很多 MC 教程代码(通常是 Lennard-Jones 系统)。然而,他们中的大多数是在不使用邻居列表的情况下进行能量计算。我想看看在 MC 模拟期间如何以及何时构建和更新邻居列表。我有几个问题。
1)我正在使用带有单元列表方法的邻居列表。在每次尝试移动时,我都应该更新它。在分子动力学中,我应该更新整个邻居列表(和细胞列表)。然而,在 MC 中,一个循环中有许多移动。移动的次数等于粒子的移动次数。做许多相邻的建筑物在计算上会很昂贵。所以我认为会有一种类似于部分邻居列表更新的方法。但我找不到它的参考。这个想法是正确的还是我应该每一步都更新整个邻居列表?
2) 构建存储在任何 i 和 j 粒子 (i=1,2,...,N) 之间的 N×N 数组是个好主意吗?参考距离的阵列可以给出可用于计算相互作用能量的距离。我认为使用它是个好主意,但是与 1) 结合使用,它应该使用邻居列表进行更新。如果我带这么大的数组,恐怕会减慢模拟速度。