周期性边界条件

实现

PBC算法主要体现在两部分。其一：对体系内粒子坐标的约束。x_size是一个方向上的元胞边长，则粒子坐标区间为[-0.5*x_size, 0.5x_size)，代码如下： 
if (periodic_x) then  if (x <  -x_size * 0.5) x = x + x_size
  if (x >=  x_size * 0.5) x = x - x_sizeend if
其二，粒子间距离计算使用最小镜像法则，代码如下：
if (periodic_x) then  dx = x(j) - x(i)
  if (dx >   x_size * 0.5) dx = dx - x_size
  if (dx <= -x_size * 0.5) dx = dx + x_sizeend if
利用取整运算可写出更为紧凑的代码实现：
! 此时坐标x(i)已更新，但尚未使用PBCx(i) = x(i) - floor(x(i) / x_size) * x_size  ! 坐标x(i)的PBC校验! 粒子i与j间的最小镜像距离dx = x(j) - x(i)dx = dx - nint(dx / x_size) * x_size
这样两粒子在一个坐标轴方向上的距离总是小于等于半个盒子边长。

性质

PBC的引入不影响体系的动量守恒与能量守恒，但是角动量不再守恒。
PBC作为一种人为的近似，不可避免地对模拟引入偏差，影响计算结果的有效范围。即使对于最简单的兰纳-琼斯流体，PBC的引入对NVE系综下的模拟的取样也有轻微影响，从而对物理量的统计值引入系统误差，故而引入PBC的NVE系综被建议称作NVEPG系综。径向分布函数g(r)在r大于半个盒子边长时是不准确的，r等于盒子边长时更是有人为的尖峰。在固体体系中，涉及振动的研究，声音，冲击波或声子的波长范围受体系大小的限制。对于长程力例如电磁相互作用的计算，需要使用特殊的方法(如Edwald加和，PPPM方法等)。相行为研究中，连续相的取向由于界面能的影响常常沿着盒子边长，体系受限甚至可能得出错误的结论，因此即使引入PBC，体系的大小也应当足够大以尽可能减小引入近似造成的非物理干扰。