neighbor command — LAMMPS documentation
在LAMMPS中,neighbor命令用于定义邻居列表(neighbor list
)的更新策略和切割半径(skin distance
),是分子动力学模拟中至关重要的一部分。邻居列表用于储存每个粒子在切割半径(cutoff
)内的相邻粒子信息,从而加速力的计算。
neighor 命令的语法
neighbor <skin> <style>
skin
:额外的缓冲距离,单位为距离(与模拟的单位制一致)。skin
的值决定了邻居列表的范围,粒子间的总相互作用是cutoff+skin
。style
:控制邻居列表更新的方式:- bin:基于网格划分的方式更新邻居列表(默认)。
- msq:基于直接的 O ( N 2 ) O(N^2) O(N2)距离比较的方式计算邻居列表,适用于小系统。
- multi:对于多种粒子类型的系统使用多种网格划分方式。
参数解释
skin 参数
skin
参数的作用是避免频繁地重建邻居列表,从而节省计算时间。通常 skin 数值越大,建立近邻列表的频率越低,但是每步都必须检索更多的原子对以确定正确的力相互作用。skin 的值通常设置为 0.3 - 2.0 倍的原子间隔,但它需要根据系统的温度和压力调整。
如果将 neigh modify命令的check选项设置为 yes,则skin距离还用于确定原子迁移到新处理器的频率。原子在重新构建邻居列表的同一时间步上迁移(通信)到新的处理器。
如果粒子在两个邻居列表更新之间移动的距离超过 skin,LAMMPS 会中止运行,并报错。
若系统温度高或原子运动幅度大(如在高能量初始态或拉伸模拟中),需要增加 skin 的值或者减小步长以避免此问题。
示例:
neighbor 2.0 bin
style-bin 参数
- 使用基于空间划分的网格(bins)来高效构建邻居列表。计算复杂度为 O(N/P),N 为原子总数,P 为处理器数。
- 每个粒子只搜索其所在网格和相邻网格中的粒子,大大减少了粒子对之间的距离计算次数。对于一般的体系,bin 计算速度比 nsq 快很多
- 适合大多数分子动力学模拟。
style-nsq 参数
- 采用简单的全粒子对比较方法,计算每两个粒子之间的距离。
- 计算复杂度为 O ( N 2 ) O(N^2) O(N2),通常只适用于非常小的系统(如 <1000 个粒子)。
- 对于非周期盒子中未溶解的小分子,nsq的选择有时会更快。在不考虑误差的情况下, bin 与 nsq 的计算结果应该是相同。
style-multi 参数
- 对于不同类型的粒子(atom types),使用不同的划分网格(bins)。
- 适合粒子大小或密度分布差异较大的系统。
默认设置
0.3 bin for units = lj, skin = 0.3 sigma
2.0 bin for units = real or metal, skin = 2.0 Angstroms
0.001 bin for units = si, skin = 0.001 meters = 1.0 mm
0.1 bin for units = cgs, skin = 0.1 cm = 1.0 mm
本博客致力于分享知识与信息,部分内容可能引用了网络资源。我会尽力注明作者或来源。如果您认为本博客的内容存在侵权现象(包括但不限于版权、商标权等),请立即与我联系。