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计算系统属性
在 LAMMS 中,“chunks”是原子的集合,由compute chunk/atom 命令定义,该命令将每个原子分配给一个块 ID(或根本不分配给任何块)。块的数量以及块 ID 到原子的分配可以是静态的或随时间变化。 “块”的例子是具有相似值(例如配位数或势能)的分子或空间仓或原子。
每个原子块 ID 可以用作其他两种命令的输入,以计算系统的各种属性:
-
fix ave/chunk
-
any of the compute */chunk commands
这里提供了 4 种与块相关的命令中每一种的简要概述。然后给出了一些示例,说明如何使用块命令计算不同的属性。
Compute chunk/atom command计算块/原子命令:
该计算可以将原子分配给各种样式的块。仅将指定组和可选指定区域中的原子分配给块。以下是一些可能的块定义:
atoms in same molecule 同一分子中的原子 | chunk ID = molecule ID |
atoms of same atom type | chunk ID = atom type |
all atoms with same atom property (charge, radius, etc) | chunk ID = output of compute property/atom |
atoms in same cluster 同一簇中的原子 | chunk ID = output of compute cluster/atom command |
atoms in same spatial bin | chunk ID = bin ID |
atoms in same rigid body | chunk ID = molecule ID used to define rigid bodies |
atoms with similar potential energy | chunk ID = output of compute pe/atom |
atoms with same local defect structure | chunk ID = output of compute centro/atom or compute coord/atom command |
请注意,块 ID 是整数值,因此对于生成浮点值的原子属性或计算,它们将被截断为整数。您还可以在变量中使用计算来缩放浮点值以将其分布在多个整数上。
空间仓可以有多种类型,例如1d 容器 = 平板,2d 容器 = 铅笔,3d 容器 = 盒子,球形容器,圆柱形容器。
此计算还计算块的数量 Nchunk,其他命令使用它来计算每个块的数据。 Nchunk 可以是静态值或随时间变化(例如簇的数量)。单个原子的块 ID 也可以是静态的(例如分子 ID),也可以是动态的(例如原子移动时位于哪个空间仓中)。
请注意,此计算允许使用其他计算、修复和变量的每个原子输出来定义每个原子的块 ID。这意味着您可以编写自己的计算或修复来输出每个原子的数量以用作块 ID。有关如何执行此操作的信息,请参阅修改文档页面。您还可以在输入脚本中定义每个原子变量,该变量使用公式为每个原子生成块 ID。
Fix ave/chunk command固定ave/chunk 命令:
此fix将计 compute chunk/atom 命令的 ID 作为输入。然后,对于每个块,它会对每个块中的原子上的一个或多个指定的每原子值求和。每个原子的值可以是任何原子属性,例如速度、力、电荷、势能、动能、应力等。为每个块的属性(例如密度和温度)定义了其他关键字。更一般地,由其他 computes, fixes, and per-atom variables生成的任何每原子值都可以对每个块中的原子求和。
与其他平均fixes类似,此fixes允许以各种方式对每个块的总和值进行时间平均,并输出到文件。该修复会生成一个全局数组作为输出,每个块包含一行值。
Compute */chunk commands计算 */chunk 命令:
以下计算对原子块进行操作以生成每个块的值。任何样式名称以“/chunk”结尾的计算都属于此类别:
-
compute com/chunk
-
compute gyration/chunk
-
compute inertia/chunk
-
compute msd/chunk
-
compute property/chunk
-
compute temp/chunk
-
compute torque/chunk
-
compute vcm/chunk
它们各自将 compute chunk/atom 命令的 ID 作为输入。正如其名称所示,它们计算每个原子块的质心、回转半径、惯性矩、均方位移、温度、扭矩和质心速度。compute property/chunk 命令可以计算每个块中的原子数量并提取其他每个块的属性。
这些不同的计算不是 fix ave/chunk 命令的一部分的原因是,每个计算都需要比简单地对每个块中的每个原子值求和和平均更复杂的操作。例如,其中许多需要计算质心,这需要对原子上的质量*位置求和,然后除以总质量。
所有这些计算都会生成一个全局向量或全局数组作为输出,每个块具有一个或多个值。输出可以通过多种方式使用:
-
作为 fix ave/time 命令的输入,该命令可以将值写入文件并可选择对它们进行时间平均。
-
作为fix ave/histo 命令的输入,以显示跨块的直方图值。例如,团簇大小或分子扩散速率的直方图。
-
作为equal-style variables的特殊函数的输入,例如 sum() 、 max() 和 ave() 。例如。找到最大的团簇或最快扩散的分子或一组分子(块)的平均回转半径。
Other chunk commands其他块命令:
-
compute chunk/spread/atom
-
compute reduce/chunk
compute chunk/spread/atom 命令将每个块的值传播到块中的每个原子,产生每个原子的值作为其输出。这对于将每个块的值输出到每个原子转储文件非常有用。或者在原子样式变量中使用原子的关联块值。或者作为 fix ave/chunk 命令的输入,以在空间上平均由每块计算计算出的每块值。
compute reduce/chunk 命令减少每个块中原子的peratom值以产生每个块的值。当与compute chunk/spread/atom命令一起使用时,它可以创建peratom值,通过第二个compute chunk/atom命令诱导一组新的块。
Example calculations with chunks块计算示例:
以下是使用块命令来计算各种属性的示例:
-
1000 个 2d 空间仓中每个的平均速度:
compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.01 units reduced
fix 1 all ave/chunk 100 10 1000 cc1 vx vy file tmp.out
2. 每个空间仓内的温度,减去流速后:
compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.1 units reduced
compute vbias all temp/profile 1 0 0 y 10
fix 1 all ave/chunk 100 10 1000 cc1 temp bias vbias file tmp.out
3.每个分子的质心:
compute cc1 all chunk/atom molecule
compute myChunk all com/chunk cc1
fix 1 all ave/time 100 1 100 c_myChunk[*] file tmp.out mode vector
4.每个分子上的总力以及所有分子的平均/最大力:
compute cc1 all chunk/atom molecule
fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out
variable xave equal ave(f_1[2])
variable xmax equal max(f_1[2])
thermo 1000
thermo_style custom step temp v_xave v_xmax
5.团簇大小的直方图:
compute cluster all cluster/atom 1.0
compute cc1 all chunk/atom c_cluster compress yes
compute size all property/chunk cc1 count
fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo
6. compute chunk/spread/atom命令文档页面上解释了使用每块值来施加每原子力来压缩混合物中的单个聚合物链(分子)的示例。
7. compute reduce/chunk 命令文档页面上解释了使用一组分子块的每块值来创建第二组胶束规模块(由于疏水性而聚集的分子)的示例。
8. 对分子块使用一组每块值(偶极矩向量),将值传播到每个块中的每个原子,然后将第二组块定义为空间仓,并使用 fix ave/chunk命令计算每个 bin 的平均偶极矩向量。该示例在 compute chunk/spread/atom 命令文档页面上进行了解释。