三斜盒的周期性边界条件

计算科学 边界条件 分子动力学
2021-12-24 05:01:37

我正在尝试对从 lammps 生成的原子坐标数据集进行分析。我在三斜方盒中模拟了一个 α 甘氨酸晶体。框向量如下所示,其中 xy、xz 和 yz 是倾斜因子。

    xlo = -0.34; xhigh = 40.466
    ylo = -1.6283; yhigh = 49.50861
    zlo = 0.77; zhigh = 39.79
    xy  = -8.62; xz = 0.0; yz = 0.0

在立方盒的情况下,实现周期性边界条件的方法很简单。

if(x.gt.xhigh)x=x-xbox
if(x.lt.xlo)x=x+box

等等。

但是,我似乎无法弄清楚如何处理三斜箱的倾斜因素,以正确实施 PBC。有人可以为我提供一个概述这个的代码片段吗?

2个回答

我从来没有为这个对称类实现过周期性,尽管我之前已经为六角晶体做过。

让我们从如图所示的(2D)盒子开始

在此处输入图像描述

在这种情况下,我们有一个轴与x另一个带有向量u2. 盒子的侧面由下式给出ylow,yhigh, 和斜线ax+by=c1,ax+by=c2. 并制作侧面AB.

然后,当一个粒子在上面yhigh你重新分配它

(x,y)=(x,y)Bu2

在另一种情况下,当y<ylow

(x,y)=(x,y)+Bu2.

在里面x新位置更容易的方向只是

(x,y)=(x,y)Au1
(x,y)=(x,y)+Au1.

在这种情况下,困难在于知道粒子何时离开边界。在上面的例子中,如果粒子向右出

ax+by<c2

如果

ax+byc1.

因此,外侧位于该线下方ax+by=c2如果盒子的剪切在右边,如果在左边,则在上面。这种推理可以扩展到更多维度(尽管在您的特定示例中,盒子里只有一把剪刀)。

嗯,总有通用的方法。假设我们在某个位置有一个粒子r和晶格向量,即形成模拟单元边的向量,是ai. 然后我们可以表达r在的基础上ai

r=ifiai

您可以将其表示为矩阵向量相乘

r=Af
其中A是一个矩阵,其列是格向量,可以看出f是分数坐标。所以定义B=A1你可以简单地找到派系坐标

f=Br

现在我们希望我们所有的图像都在同一个单元格中......这样做的一种方法是确保0fi<1,要实现这一点,我们可以简单地修改fi成为fifloor(fi)因为由于周期性边界条件,这只是将粒子转换到参考单元中的等效位置。因此,对于任意单元格(任意维度),配方是

  • 形式A
  • 倒置A来形成B,这应该总是在数值上很好地确定,因为矩阵的行列式是细胞的体积,因此应该远离零。无论如何,您可能还希望这些向量用于 Ewald 总和...
  • 从一个粒子的位置r形式f经过f=Br
  • 翻译成参考单元格gi=fifloor(fi)
  • 形成真实空间的新阵地t经过t=Ag