8. 基础知识
此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples
目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。
8.1.通用基础知识
8.2. 设置入门
8.3. 分析入门
8.4. 力场入门
8.5. 软件包入门
8.5.1.有限尺寸球形和非球形粒子
8.5.2. 粒度模型
8.5.3.体粒子
概述:
在 LAMMPS 中,体粒子是广义的有限尺寸粒子。单个体粒子可以表示复杂的实体,例如离散点的表面网格、子粒子的集合、可变形物体等。请注意,LAMMPS 还支持其他类型的有限尺寸球形和非球面粒子,例如球体、椭球体、线段和三角形,但它们是比体粒子更简单的实体。有关所有这些粒子类型的一般概述,请参阅 Howto spherical 页面。
体粒子通过atom_style body 命令使用。它以body style作为参数。目前LAMMPS支持的body样式如下。第一列中的名称用作atom_style body命令的bstyle 参数。
nparticle | rigid body with N sub-particles |
rounded/polygon 圆形/多边形 | 2d polygons with N vertices |
rounded/polyhedron 圆形/多面体 | 3d polyhedra with N vertices, E edges and F faces |
体样式决定了为每个主体存储哪些属性,以及如何使用它们来计算成对的主体/主体或键/非主体(点粒子)相互作用。下面描述了每种样式的更多细节。
将来可能会添加更多样式。有关如何向代码添加新主体样式的详细信息,请参阅page on creating new body styles。
何时使用体粒子:
如果成对刚体之间的相互作用只是较简单粒子之间成对相互作用的总和,则不应使用体粒子来模拟由较简单粒子(例如点、球体、椭球体、线段、三角形粒子)组成的刚体。 LAMMPS 已经通过fix rigid 命令支持这种模型。可以使用计算更简单粒子之间相互作用的众多对样式中的任何一种。fix rigid命令对刚体的运动进行时间积分。所有用于恒温、添加约束、执行输出等的标准 LAMMPS 命令都将在简单粒子上按预期运行。
相比之下,当使用主体粒子时,LAMMPS 将整个主体视为单个粒子,用于计算成对相互作用、构建邻居列表、在处理器之间迁移粒子、将粒子输出到转储文件等。这意味着对之间的相互作用物体的粒子或物体与非物体(点)粒子之间的粒子需要以适当的对样式进行编码。如果这样的配对样式要模仿固定刚性模型,则每次计算单个body/body相互作用时,都需要循环两个物体内简单粒子对之间相互作用的整个集合。
因此,只有当粒子/粒子相互作用比fix rigid命令已经可以计算的更复杂时,使用体粒子并开发这样的pair style才有意义。例如,考虑具有以下一项或多项属性的粒子:
-
由表面网格表示
-
由几何实体的集合表示(例如平面+球体)
-
可变形的
-
引起碎裂的内应力
对于这些模型,粒子对之间的相互作用可能比简单的成对相互作用的总和更复杂。一个例子是具有相互渗透的平面表面的颗粒之间的接触力或摩擦力。同样,体粒子可以存储内部状态,例如用于计算断裂准则的应力张量。
这些是附加的 LAMMPS 命令,可与不同样式的体粒子一起使用
fix nve/body | integrate motion of a body particle in NVE ensemble |
fix nvt/body | ditto for NVT ensemble NVT 系综也同上 |
fix npt/body | ditto for NPT ensemble NPT 系综也同上 |
fix nph/body | ditto for NPH ensemble NPH 系综也同上 |
compute body/local 计算主体/本地 | store sub-particle attributes of a body particle |
compute temp/body 计算温度/身体 | compute temperature of body particles |
dump local | output sub-particle attributes of a body particle |
dump image | output body particle attributes as an image |
体样式n粒子特性:
n粒子体样式将体粒子表示为具有可变数量 N 的子粒子的刚体。它作为体粒子的普通原型示例提供,尽管如上所述, fix rigid命令已经复制了其功能。
此体样式的atom_style体命令需要两个附加参数:
atom_style body nparticle Nmin Nmax
Nmin = minimum # of sub-particles in any body in the system
Nmax = maximum # of sub-particles in any body in the system
Nmin 和 Nmax 参数用于限制每个粒子内部使用的数据结构的大小。
当 read_data 命令读取此正文样式的数据文件时,必须为数据文件的正文部分中的每个条目提供以下信息:
atom-ID 1 M
N
ixx iyy izz ixy ixz iyz
x1 y1 z1
...
xN yN zN
其中M = 6 + 3*N,N是体粒子中子粒子的数量。
整数线具有单个值 N。浮点线列出 6 个惯性矩,后跟 N 个子粒子(x1 到 zN)的坐标(作为 3N 个值)。这些值可以在任意多行中列出;有关详细信息,请参阅 read_data命令。
6 个惯性矩 (ixx,iyy,izz,ixy,ixz,iyz) 应与刚体当前围绕质心的方向一致。这些值是相对于模拟框 XYZ 轴的,而不是相对于刚体本身的主轴的。 LAMMPS 在内部执行后一种计算。
每个子粒子的坐标被指定为其距体粒子质心的 x,y,z 位移。粒子的质心位置由数据文件“原子”部分中的 x、y、z 值指定,物体粒子的总质量也是如此。
请注意,如果数据文件定义了通用三斜模拟框,则这些子粒子位移与方向相关,并且如上所述,应反映通用三斜框内体粒子的方向。
pair_style body/nparticle命令可与此体样式一起使用来计算body/body 和 body/non-body相互作用。
圆形/多边形体样式的特性:
圆形/多边形主体样式将主体粒子表示为具有可变数量的 N 个顶点的 2d 多边形。该样式只能用于2d模型;请参阅边界命令。请参阅pair_style body/rounded/polygon 页面,了解两个顶点带有圆角的正方形的图。还可以指定 N = 1(circle)和 N = 2(rod with rounded ends)的特殊情况。
这种主体样式的一种用途是用于二维离散元素模型,如 Fraige. 中所述。
与体样式 narticle 类似,此体样式的atom_style body 命令需要两个附加参数:
atom_style body rounded/polygon Nmin Nmax
Nmin = minimum # of vertices in any body in the system
Nmax = maximum # of vertices in any body in the system
Nmin 和 Nmax 参数用于限制每个粒子内部使用的数据结构的大小。
当 read_data命令读取此正文样式的数据文件时,必须为数据文件的正文部分中的每个正文提供以下信息:
atom-ID 1 M
N
ixx iyy izz ixy ixz iyz
x1 y1 z1
...
xN yN zN
diameter
其中 M = 6 + 3*N + 1,N 是主体粒子的顶点数。
整数线具有单个值 N。浮点线列出 6 个惯性矩,后跟 N 个顶点的坐标(x1 到 zN)作为 3N 个值(每个值 z = 0.0),后跟一个直径值 = 围绕每个顶点的圆的圆直径。每个主体粒子的直径值可以不同。这些浮点值可以在任意多行中列出;有关详细信息,请参阅read_data 命令。
注:重要的是,每个多边形体粒子的顶点按其周边的顺序列出,以便可以推断出边。 LAMMPS 不会检查情况是否如此。
6 个惯性矩 (ixx,iyy,izz,ixy,ixz,iyz) 应与刚体当前围绕质心的方向一致。这些值是相对于模拟框 XYZ 轴的,而不是相对于刚体本身的主轴的。 LAMMPS 在内部执行后一种计算。
每个顶点的坐标被指定为其距主体粒子质心的 x、y、z 位移。粒子的质心位置由数据文件“原子”部分中的 x、y、z 值指定。
例如,以下信息将指定一个方形粒子,其边长为 sqrt(2),圆角直径为 1.0。正方形的方向与 xy 坐标轴对齐,这与 6 个惯性矩一致:ixx iyy izz ixy ixz iyz = 1 1 4 0 0 0。请注意,在 2D 模拟中只有 Izz 很重要。
3 1 19
4
1 1 4 0 0 0
-0.7071 -0.7071 0
-0.7071 0.7071 0
0.7071 0.7071 0
0.7071 -0.7071 0
1.0
一根二维棒,其长度为 4.0,质量为 1.0,两端被直径为 0.5 的圆磨圆,指定如下:
1 1 13
2
1 1 1.33333 0 0 0
-2 0 0
2 0 0
0.5
直径为 3.0、质量为 1.0 的圆盘指定如下:
1 1 10
1
1 1 4.5 0 0 0
0 0 0
3.0
请注意,如果数据文件定义了通用三斜模拟框,则这些多边形顶点位移与方向相关,并且如上所述,应反映通用三斜框内体粒子的方向。
pair_style body/rounded/polygon命令可与此体样式一起使用来计算主体/主体交互。 fix wall/body/polygon 命令可与此主体样式一起使用来计算体粒子与墙的相互作用。
圆形/多面体体样式的特性:
圆形/多面体主体样式将主体粒子表示为具有可变数量的 N 个顶点、E 边和 F 面的 3d 多面体。该样式只能用于3d模型;请参阅边界命令。请参阅“pair_style body/rounded/polygon”页面,了解两个顶点带有圆角的二维正方形的图。一个 3d 立方体在 8 个顶点和 12 个圆边上有圆球体,也是类似的。还可以指定 N = 1(球体)和 N = 2(带有圆端的杆)的特殊情况。
此主体样式适用于 3D 离散元素模型,如 Wang中所述。
与圆形/多边形主体样式类似,此主体样式的atom_style body命令需要两个附加参数:
atom_style body rounded/polyhedron Nmin Nmax
Nmin = minimum # of vertices in any body in the system
Nmax = maximum # of vertices in any body in the system
Nmin 和 Nmax 参数用于限制每个粒子内部使用的数据结构的大小。
当 read_data 命令读取此正文样式的数据文件时,必须为数据文件的正文部分中的每个条目提供以下信息:
atom-ID 3 M
N E F
ixx iyy izz ixy ixz iyz
x1 y1 z1
...
xN yN zN
0 1
1 2
2 3
...
0 1 2 -1
0 2 3 -1
...
1 2 3 4
diameter
其中 M = 6 + 3*N + 2*E + 4*F + 1,N 是主体粒子中的顶点数,E = 边数,F = 面数。对于 N = 1 或 2,格式更简单。 E 和 F 被忽略,并且没有列出边或面,因此 M = 6 + 3*N + 1。
整数线具有三个值:顶点数 (N)、边数 (E) 和面数 (F)。浮点线列出 6 个惯性矩,后跟 N 个顶点(x1 到 zN)的坐标(作为 3N 个值),后跟与 E 边的端点相对应的 2E 个顶点索引,然后是 4*F 顶点索引定义 F 面。最后一个值是直径值 = 围绕每个顶点的球体的圆直径。每个主体粒子的直径值可以不同。这些浮点值可以在任意多行中列出;有关详细信息,请参阅 read_data 命令。
请注意,顶点编号从 0 到 N-1(含)。每条边中 2 个顶点的顺序并不重要。面可以是三角形或四边形。在这两种情况下都必须指定 4 个顶点。对于三角形,第四个顶点是 -1。每个三角形或四边形面内的 4 个顶点应按右手定则排序,以便面的法向量从质心向外指向。对于面数超过4个顶点的多面体,应将复杂面拆分为多个简单面,每个简单面都是三角形或四边形。
注:如果一个面是四边形,那么它的 4 个顶点必须共面。 LAMMPS 不会检查情况是否如此。如果您有一个非平面的多面体四边形面(例如,顶点已随机移位的立方体),那么您应该将单个四边形面表示为两个三角形面。
6 个惯性矩 (ixx,iyy,izz,ixy,ixz,iyz) 应与刚体当前围绕质心的方向一致。这些值是相对于模拟框 XYZ 轴的,而不是相对于刚体本身的主轴的。 LAMMPS 在内部执行后一种计算。
每个顶点的坐标被指定为其距体粒子质心的 x、y、z 位移。粒子的质心位置由数据文件“原子”部分中的 x、y、z 值指定。
例如,以下信息将指定边长为 2.0、圆角直径为 0.5 的立方粒子。立方体的方向与 xyz 坐标轴对齐,这与 6 个惯性矩一致:ixx iyy izz ixy ixz iyz = 0.667 0.667 0.667 0 0 0。
1 3 79
8 12 6
0.667 0.667 0.667 0 0 0
1 1 1
1 -1 1
-1 -1 1
-1 1 1
1 1 -1
1 -1 -1
-1 -1 -1
-1 1 -1
0 1
1 2
2 3
3 0
4 5
5 6
6 7
7 4
0 4
1 5
2 6
3 7
0 1 2 3
4 5 6 7
0 1 5 4
1 2 6 5
2 3 7 6
3 0 4 7
0.5
3D 的一根杆,长度为 4.0,质量为 1.0,两端带有直径为 0.5 的圆,指定如下:
1 3 13
2 1 1
0 1.33333 1.33333 0 0 0
-2 0 0
2 0 0
0.5
直径为 3.0、质量为 1.0 的球体指定如下:
1 3 10
1 1 1
0.9 0.9 0.9 0 0 0
0 0 0
3.0
杆或球体的边和面的数量必须列出,但会被忽略。
请注意,如果数据文件定义了一般三斜模拟框,则这些多面体顶点位移与方向相关,并且如上所述,应反映一般三斜框内体粒子的方向。
pair_style body/rounded/polhedron命令可与此主体样式一起使用来计算主体/主体交互。 fix wall/body/polyhedron命令可与此体样式一起使用来计算主体粒子与墙壁的相互作用。
所有体样式的输出特性:
对于计算主体/本地和转储本地命令,其页面上描述的所有 3 种主体样式都会为体粒子中的 N 个(子粒子)顶点中的每一个生成一个数据。该数据有 3 个值:
1 = x position of vertex (or sub-particle)
2 = y position of vertex
3 = z position of vertex
这些值是模拟域内顶点的当前位置,而不是距体粒子本身质心 (COM) 的位移。这些值是使用当前 COM 和体粒子的方向计算的。
dump image 命令及其 body 关键字可用于渲染体粒子。
对于 n粒子体样式,每个体都被绘制为球体的集合,每个球体对应一个子粒子。每个球体的大小由 body 关键字的 bflag1 参数确定。 bflag2 参数被忽略。
对于圆形/多边形体样式,每个主体都绘制为具有 N 条线段的多边形。对于圆形/多面体样式,每个主体的每个面都绘制为具有 N 条线段的多边形。每条线段的绘制直径由 body 关键字的 bflag1 参数确定。 bflag2 参数被忽略。
请注意,对于圆角/多边形和圆角/多面体样式,线段是在顶点对之间绘制的。根据线段的直径,这可能与通过 pair_style rounded/polygon 或 pair_style rounded/polyhedron命令计算的实体的物理范围略有不同。从概念上讲,对样式通过与放置在每个顶点位置上的指定直径的有限尺寸球体相切的线或平面来定义 2d 或 3d 实体的表面。
参考文献:
(Fraige) F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds, Particuology, 6, 455 (2008).
(Wang) J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular Matter, 13, 1 (2011).