【LAMMPS学习】八、基础知识(2.3)三斜(非正交)模拟盒子

发布于:2024-04-14 ⋅ 阅读:(74) ⋅ 点赞:(0)

 8. 基础知识

此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。

8.1.通用基础知识

8.2. 设置入门

8.2.1.二维模拟

8.2.2.类型标签

8.2.3.三斜(非正交)模拟盒子

默认情况下,LAMMPS 使用正交模拟框来包围粒子。 boundary命令设置盒子的边界条件(周期性、非周期性等)。正交框的“原点”位于 (xlo,ylo,zlo),并由从 a = (xhi-xlo,0,0) 给出的原点开始的 3 个边缘向量定义; b = (0,yhi-ylo,0); c = (0,0,zhi-zlo)。 6 个参数 (xlo,xhi,ylo,yhi,zlo,zhi) 在创建模拟框时定义,例如通过 create_box 和 read_data 和 read_restart 命令。此外,LAMMPS 定义了盒子大小参数 lx,ly,lz,其中 lx = xhi-xlo,并且在 y 和 z 维度中类似。这6个参数以及lx、ly、lz可以通过 thermo_style custom 命令输出。

LAMMPS 还允许在形状为具有三斜对称的平行六面体的三斜(非正交)模拟盒中执行模拟。平行六面体的“原点”位于 (xlo,ylo,zlo),并由 3 个边向量定义,这些边向量从 a = (xhi-xlo,0,0) 给出的原点开始; b = (xy,yhi-ylo,0); c = (xz,yz,zhi-zlo)。 xy,xz,yz 可以是 0.0 或正值或负值,称为“倾斜因子”,因为它们是应用于原始正交框的面以将其转换为平行六面体的位移量。在 LAMMPS 中,三斜模拟框边缘向量 a、b 和 c 不能是任意向量。如图所示,a 必须位于 x 轴正方向上。 b 必须位于 xy 平面内,且 y 分量严格为正。 c 可以具有任何具有严格正 z 分量的方向。要求a、b和c分别具有严格正的x、y和z分量,确保a、b和c形成完整的右手基。这些限制不失一般性,因为可以旋转/反转任何 3 个晶体​​基向量的集合,以便它们符合这些限制。

例如,假设 3 个向量 A,B,C  是一般平行六面体的边向量,其中对 A,B,C  没有任何限制,除了它们形成完整的右手基,即A x B . C > 0。等效 LAMMPS a,b,cA,B,C  的线性旋转,计算公式如下:

16e261311d0a4e86a2774066f78e335e.png

其中  A = | A | 表示A的标量长度。帽子符号(^)表示对应的单位向量。 β和 γ 是下述向量之间的角度。请注意,通过构造,a,b,c分别具有严格正的 x、y 和 z 分量。如果ABC形成左手基,则上述方程对于  c无效。在这种情况下,有必要首先应用反转。这可以通过交换两个基向量或改变其中一个基向量的符号来实现。

为了保持一致性,应用于基向量的相同旋转/反转也必须应用于原子位置、速度和任何其他向量。这可以通过首先转换为旧基础中的分数坐标,然后转换为新基础中的距离坐标来方便地实现。变换由以下等式给出:

dc78a67d48e34ee49dc58b1ffa59eb43.png

其中V是盒子的体积,X是原始向量,x是LAMMPS基下的向量。

不要求三斜盒子在任何维度上都是周期性的,但如果您想强制跨越该边界的周期性边界条件发生变化,则通常至少应在倾斜的第二个维度(xy 中的 y)内。一些与三斜框一起使用的命令,例如fix deform 和 fix npt 命令需要特定尺寸的周期性或非收缩包裹边界条件。有关详细信息,请参阅命令文档页面。

9 个参数 (xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) 在创建模拟框时定义。这可以通过以下 3 种方式之一发生。如果  create_box命令与样式棱镜区域一起使用,则会设置三斜框。有关详细信息,请参阅区域命令。如果使用 read_data 命令定义模拟框,并且数据文件的头部包含一行带有“xy xz yz”关键字的行,则设置了三斜框。有关详细信息,请参阅  read_data 命令。最后,如果  read_restart 命令读取使用三斜框从模拟写入的重新启动文件,则将为重新启动的模拟设置三斜框。

请注意,您可以定义所有 3 个倾斜因子 = 0.0 的三斜盒子,以便它最初是正交的。如果盒子将变得非正交,则这是必要的,例如由于 fix npt或 fix deform 命令。或者,您可以使用 change_box 命令将模拟框从正交转换为三斜,反之亦然。

与正交框一样,LAMMPS 定义了三斜框尺寸参数 lx,ly,lz,其中 lx = xhi-xlo,在 y 和 z 维度中也类似。这9个参数以及lx、ly、lz可以通过 thermo_style custom自定义命令输出。

为了避免极端倾斜的盒子(这在计算上效率低下),LAMMPS 通常要求倾斜因子不能使盒子倾斜超过平行盒子长度的一半距离,这是倾斜因子中的第一个维度(x 代表 xz)。创建模拟框时,这都是必需的,例如通过 create_box 或 read_data 命令,以及当盒子形状在模拟过程中动态变化时,例如通过 fix deform 或 fix npt命令。

例如,如果 xlo = 2 且 xhi = 12,则 x 框长度为 10,并且 xy 倾斜因子必须介于 -5 和 5 之间。同样,xz 和 yz 都必须介于 -(xhi-xlo)/2 和+(yhi-ylo)/2。请注意,这不是限制,因为如果最大倾斜系数为 5(如本例所示),则倾斜 = …、-15、-5、5、15、25、… 的配置在几何上都是等效的。如果在动态运行期间盒子倾斜超过此限制(例如通过修复变形命令),则盒子将“翻转”到倾斜因子在边界内的等效形状,以便运行可以继续。有关更多详细信息,请参阅 fix deform 页面。

此规则的一个例外是倾斜因子中的第一个维度(x 代表 xy)是否是非周期的。在这种情况下,不会强制执行对倾斜因子的限制,因为在该维度上翻转盒子不会由于非周期性而改变原子位置。在此模式下,如果将系统倾斜到极端角度,由于高度倾斜的模拟盒,模拟将变得低效。

使用  fix deform 或 fix npt命令可能发生的盒子翻转可以使用任一命令的翻转无选项来关闭。

请注意,如果模拟盒具有较大的倾斜系数,LAMMPS 的运行效率将会降低,因为获取处理器不规则形状子域周围的鬼原子需要大量通信。对于倾斜的极端值,LAMMPS 也可能会丢失原子并产生错误。

三斜晶体结构通常使用三个晶格常数 a、b 和 c 以及三个角度 α 、β和γ 来定义。请注意,在此命名法中,a、b 和 c 晶格常数是上面定义的边缘向量 a、b 和 c 的标量长度。这 6 个量 (a, b, c, α 、β和γ) 与 LAMMPS 框大小 (lx,ly,lz) 之间的关系 = (xhi-xlo,yhi-ylo,zhi-zlo) 和倾斜因子 (xy,xz,yz) 如下:

55383f9e5fbb4117879e4aab6ddb7acd.png

反比关系可以写成如下:

2d8f41ee09ae4475a4d17bf105cb6c6c.png

a、b、c、 α 、β和γ的值可以打印出来,也可以通过使用  thermo_style custom 关键字 cella、cellb、分别为 cellc、cellalpha、cellbeta、cellgamma。

正如 dump 命令文档页面上所讨论的,当将快照的 BOX BOUNDS 写入三斜框的转储文件时,会输出包围三斜模拟框的正交边界框,以及 3 个倾斜因子(xy、xz) , yz) 的三斜框,格式如下:

ITEM: BOX BOUNDS xy xz yz
xlo_bound xhi_bound xy
ylo_bound yhi_bound xz
zlo_bound zhi_bound yz

该边界框对于许多可视化程序来说都很方便,并且是根据 9 个三斜框参数 (xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) 计算得出的,如下所示:

xlo_bound = xlo + MIN(0.0,xy,xz,xy+xz)
xhi_bound = xhi + MAX(0.0,xy,xz,xy+xz)
ylo_bound = ylo + MIN(0.0,yz)
yhi_bound = yhi + MAX(0.0,yz)
zlo_bound = zlo
zhi_bound = zhi

如果您需要将边界框转换回三斜框参数,则可以反转这些公式,例如xlo = xlo_bound - MIN(0.0,xy,xz,xy+xz)。

三斜模拟盒的用途之一是对具有三斜对称性的固态晶体进行建模。 lattice 命令可以与非正交基向量一起使用来定义一个晶格,该晶格将通过create_atoms命令平铺三斜模拟框。

第二种用途是通过 fix npt 命令运行 Parrinello-Rahman 动力学,该命令将调整 xy、xz、yz 倾斜因子以补偿压力张量的非对角分量。 energy minimization的模拟是fix box/relax 命令。

第三种用途是剪切散装固体以研究材料的响应。fix deform 命令可用于此目的。它允许在模拟运行时动态控制 xy、xz、yz 倾斜因子。这将在下一节非平衡 MD (NEMD) 模拟中讨论。

 

8d91be6a1bde4ccf965ff3f211c29ab3.png