8. 基础知识
此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples
目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。
8.1.通用基础知识
8.2. 设置入门
8.3. 分析入门
8.3.1. LAMMPS 的输出(thermo, dumps, computes, fixes, variables)
8.3.2.使用chunks计算系统属性
8.3.3.使用分布式网格
2022 年 12 月 22 日版本中的新增功能。
LAMMPS 具有创建覆盖模拟域的均匀间隔网格的内部功能。对于 2d 和 3d 模拟,这些分别是 2d 和 3d 网格。从概念上讲,网格可以被视为网格单元的集合。每个网格单元可以存储一个或多个值(数据)。
网格单元及其存储的数据分布在处理器之间。每个处理器都拥有网格单元(和数据),其中心点位于处理器的空间子域内。如果计算需要,处理器还可以存储幻影网格单元及其数据。
分布式网格可以叠加正交或三斜模拟框;有关后者的解释,请参阅 Howto triclinic文档页面。对于三斜盒子,网格单元形状符合模拟域的形状,例如二维中的平行四边形而不是矩形。
如果在模拟过程中盒子的大小或形状发生变化,网格也会随之变化,因此它始终覆盖整个模拟域。对于非周期性尺寸,该尺寸中的网格尺寸与框尺寸相匹配,如boundary 命令为固定或收缩包裹边界所设置的那样。
如果通过balance or fix balance命令调用负载平衡,则处理器拥有的子域可以改变,这也可能改变它们拥有的网格单元。
网格单元数据的后处理和可视化可以通过 dump grid, dump grid/vtk, 和dump image 命令来启用。后者有一个可选的 grid 关键字。 OVITO可视化工具还计划(截至 2022 年 11 月)添加对使用 dump grid 输出文件作为输入来可视化网格单元数据(以及原子)的支持。
注:
对于开发人员来说,分布式网格是通过两个类在代码中实现的:Grid2d 和 Grid3d。它们在处理器之间划分网格,并具有允许幽灵网格数据的正向和反向通信以及负载平衡的方法。如果您编写需要分布式网格的新计算或修复,则需要查看这些类。新的配对样式可以通过修复定义来使用分布式网格。请参阅有关在样式类中使用分布式网格( using distributed grids within style classes )的部分以获取详细说明。
这些是当前定义或使用分布式网格的命令:
-
fix ttm/grid - 将电子温度存储在网格上
-
fix ave/grid - 每个原子或每个网格值的时间平均
-
compute property/grid - 生成网格 ID 和坐标
-
dump grid - 以 LAMMPS 格式输出每个网格值
-
dump grid/vtk - 以 VTK 格式输出每个网格的值
-
dump image grid - 在输出图像中包含彩色网格
-
pair_style amoeba - FFT 网格
-
kspace_style pppm (and variants) - FFT 网格
-
kspace_style msm (and variants) - MSM 网格
输入脚本无法引用kspace_style使用的网格。然而,其他命令创建和使用的网格和数据可以。
计算或修复命令可以创建一个或多个网格(不同大小)。每个网格可以存储一个或多个数据字段。数据字段可以是每个网格点(每个网格向量)的单个值或每个网格点(每个网格数组)的多个值。请参阅 Howto output 文档页面,了解某些命令如何生成每个网格数据以及其他命令如何使用每个网格的数据。
命令使用具有以下语法的网格引用从计算或修复访问网格数据:
-
c_ID:gname:dname
-
c_ID:gname:dname[I]
-
f_ID:gname:dname
-
f_ID:gname:dname[I]
前缀“c_”或“f_”指的是compute或fix的ID; gname是网格的名称,由compute或fix分配; dname 是数据字段的名称,也是由compute 或fix 分配的。
如果数据字段是每个网格向量(每个网格点一个值),则不使用括号来访问这些值。如果数据字段是每个网格数组(每个网格点有多个值),则使用括号指定数组的第 I 列。 I 的范围从 1 到 Ncol(含),其中 Ncol 是数组中的列数,由计算或修复定义。
目前,LAMMPS 中没有实现每网格变量。可能会在某个时候添加此功能。