【LAMMPS学习】八、基础知识(3.1)LAMMPS 的输出

8. 基础知识

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

8.1.通用基础知识

8.2. 设置入门

8.3. 分析入门

8.3.1. LAMMPS 的输出(thermo, dumps, computes, fixes, variables

LAMMPS 输出有四种基本形式:

  • Thermodynamic output, 热力学输出,是每隔几个时间步打印到屏幕和日志文件的数量列表。

  • Dump files, 转储文件,其中包含原子快照和各种每个原子值,并以指定频率写入。

  • 某些fixes可以将用户指定的数量输出到文件:fix ave/time进行时间平均, fix ave/chunk以进行空间或其他平均,以及fix print进行variables的单行输出。Fix print 也可以输出到屏幕上。

  • Restart files. 重新启动文件。

模拟打印一组热力学输出和(可选)重启文件。它可以生成任意数量的转储文件并修复输出文件,具体取决于您指定的dump 和 fix 命令。

如下所述,LAMMPS 为您提供了多种方法来确定当上面列出的热力学、转储或修复命令执行输出时计算和打印哪些量。在整个讨论中,请注意,用户还可以 add their own computes and fixes to LAMMPS ,LAMMPS 可以生成然后可以使用这些命令输出的值。

以下小节讨论与输出相关的不同 LAMMPS 命令以及它们操作和生成的数据类型:

Global/per-atom/local/per-grid data

各种与输出相关的命令可处理四种不同“样式”的数据:全局、每个原子、本地和每个网格。全局数据是一个或多个系统范围的值,例如系统的温度。每原子数据是每个原子的一个或多个值,例如每个原子的动能。本地数据由每个处理器根据其拥有的原子计算,并且每个原子可能有零个或多个,例如键距列表。

对于覆盖模拟域的网格,每网格数据是每个网格单元的一个或多个值。与原子和每原子数据类似,网格单元及其存储的数据分布在处理器之间;每个处理器拥有其中心点落在其子域内的网格单元。

Scalar/vector/array data

全局、每原子、局部和每网格数据可以分为三种“类型”:单个标量值、值向量或二维值数组。更具体地说,这些是每种样式的有效类型:

  • global scalar 全局标量

  • global vector 全局向量

  • global array 全局数组

  • per-atom vector 每原子向量

  • per-atom array 每原子阵列

  • local vector 局部向量

  • local array 局部数组

  • per-grid vector 每网格向量

  • per-grid array 每网格阵列

每个原子向量意味着每个原子有一个值; “矢量”是原子数量的长度。每个原子数组意味着每个原子有多个值。类似地,局部向量或数组意味着每个实体有一个或多个值(例如系统中的每个键)。每个网格向量或数组意味着每个网格单元有一个或多个值。

生成数据的计算、修复或变量的文档页面将指定其生成的数据的样式和类型,例如每个原子的向量。请注意,计算或修复可能会生成多种样式和类型的输出。但是,对于每个原子数据,仅输出向量或数组,而不是两者都输出。对于每个本地和每个网格数据也是如此。生成多种样式和类型数据的修复示例是 fix mdi/qm 命令。它输出系统的量子机械能和维里以及每个原子上的力的全局标量、全局向量和每原子阵列。

相比之下,不同的变量样式仅生成单一类型的数据:相等样式变量的全局标量、矢量样式变量的全局向量以及原子样式变量的每原子向量。

当数据被另一个命令访问时,正如下面讨论的许多输出命令一样,可以通过以下括号表示法来引用它,其中 ID 在这种情况下是compute的 ID。前导“c_”将替换为“f_”以进行fix,或将“v_”替换为变量(ID 将是变量的名称):

c_ID

entire scalar, vector, or array
整个标量、向量或数组

c_ID[I]

one element of vector, one column of array
向量的一个元素,数组的一列

c_ID[I][J]

one element of array 数组的一个元素

请注意,使用一个括号会减少数据的维度一次(向量 -> 标量,数组 -> 向量)。使用两个括号可将维度减少两倍(数组 -> 标量)。因此,使用标量值作为输入的命令在概念上也可以对向量或数组的元素进行操作。

每个网格向量或数组的访问方式类似,只是计算或修复的 ID 包括网格名称和数据名称。这是因为修复或计算可以创建多个网格(不同大小)和多组数据(针对每个网格)。修复或计算定义了每个网格和每个数据集的名称,以便其他命令可以访问所有这些名称。有关更多详细信息,请参阅 Howto grid 文档页面。

Disambiguation消歧义

当计算或修复产生多种样式的数据时,例如全局和每个原子,对数据的引用有时可能是不明确的。通常,输入脚本引用数据的上下文决定了所指的样式。

例如,如果计算输出全局向量和每原子数组,则将通过在 thermodynamic output中使用 c_ID[I] 来访问全局向量的元素,而每原子数组的列将被访问。通过在 dump custom 命令中使用 c_ID[I] 进行访问。

但是,如果atom-style variable 引用 c_ID[I] ,那么它可能旨在引用全局向量的单个元素或每个原子数组的列。任何具有潜在歧义的命令(变量是最常见的)的文档页面将解释如何解决歧义。

在这种情况下,原子样式变量引用每个原子数据(如果存在)。如果需要访问全局向量的元素(如本例所示),则可以定义引用该值的相等样式变量并在原子样式变量公式中使用。

同样,thermodynamic output 只能引用来自计算或修复的全局数据。但您可以按如下方式间接访问每个原子的数据。compute displace/atom命令 ID 的引用 c_ID[245][2] 指 ID 为 245 的原子位移的 y 分量。虽然您不能直接在 thermo_style 命令中使用该引用,但可以使用它是一个等式变量公式,然后在热力学输出中引用该变量。

Thermodynamic output热力学输出

热力学输出的频率和格式由 thermothermo_style, 和 thermo_modify 命令设置。 Thermo_style 命令还指定计算和写出哪些值。可以指定预定义的关键字(例如 press、etotal 等)。还可以指定三种附加类型的关键字(c_ID、f_ID、v_name),其中 compute 或 fix 或 variable 提供要输出的值。在每种情况下,计算、修复或变量必须生成全局值以输入到thermo_style custom命令。

请注意,热力学输出值可以是“广泛的”或“密集的”。前者与系统中原子的数量(例如总能量)成正比,后者则不然(例如温度)。 thermo_modify norm的设置决定是否对大量数量进行归一化。计算和修复产生广泛或密集的值;有关详细信息,请参阅其各自的文档页面。 Equal-style variables仅产生密集值;如果需要,您可以在公式中除以“natoms”,以使广泛的计算产生密集的结果。

Dump file output转储文件输出

转储文件输出由 dump 和 dump_modify 命令指定。有几种预定义的格式(转储原子、转储 xtc 等)。

还有一种 dump custom 格式,用户可以在其中指定每个原子输出的值。可以指定预定义的原子属性(id、x、fx 等)。还可以指定三种附加类型的关键字(c_ID、f_ID、v_name),其中 compute or fix or variable 提供要输出的值。在每种情况下,计算、修复或变量必须生成每个原子值以输入到 dump custom 命令。

还有一种 dump local 格式,用户可以在其中指定要输出的本地值。可以指定预定义的索引关键字来枚举本地值。还可以指定另外两种关键字(c_ID、f_ID),其中  compute or fix or variable 提供要输出的值。在每种情况下,计算或修复都必须生成本地值以供 dump local 命令的输入。

还有一种dump grid 格式,用户可以在其中指定从生成每个网格数据的计算或修复中输出哪些每个网格值。

Fixes that write output files固定写入输出文件

多个fixes将不同的量作为输入,并可以写入输出文件: fix ave/timefix ave/chunkfix ave/histofix ave/correlate, 和 fix print

fix ave/time命令可以直接输出到文件和/或对全局标量或向量进行时间平均。用户指定一个或多个数量作为输入。这些可以是全局计算值、全局固定值或除生成每个原子值的原子样式之外的任何样式的变量。由于变量可以引用 thermo_style custom 命令(如 temp 或 press)使用的关键字和各个原子值,因此可以以这种方式对各种数量进行时间平均和/或输出。如果输入是一个或多个标量值,则修复会生成输出的全局标量或向量。如果输入是一个或多个向量值,则修复会生成一个全局向量或输出数组。此修复的时间平均输出也可以用作其他输出命令的输入。

fix ave/chunk 命令允许直接输出到块平均每个原子数量的文件,就像转储文件中的输出一样。块可以表示空间仓或其他原子集合,例如单个分子。每个原子的量可以是原子密度(质量或数量)或原子属性,例如位置、速度、力。它们也可以是通过计算、修复或原子类型变量计算出的每个原子的数量。此修复的块平均输出是全局的,也可以用作其他输出命令的输入。

请注意,fix ave/grid 命令还可以对空间箱内相同的每个原子数量进行平均,但它针对网格单元由不同处理器拥有的分布式网格执行此操作。它输出每个网格的数据,而不是全局数据,因此对于大量平均箱来说更有效。

请注意,fix ave/grid 命令还可以对空间箱内相同的每个原子数量进行平均,但它针对网格单元由不同处理器拥有的分布式网格执行此操作。它输出每个网格的数据,而不是全局数据,因此对于大量平均箱来说更有效。

fix ave/histo 命令允许直接输出到直方图数量的文件,这些数量可以是全局的、每个原子的或局部的数量。此修复的直方图输出也可以用作其他输出命令的输入。

fix ave/correlate 命令允许直接输出到时间相关量的文件,这些量可以是全局值。此修复的相关矩阵输出也可以用作其他输出命令的输入。

fix print 命令可以在运行模拟期间定期生成一行输出,写入屏幕和日志文件或单独的文件。该行可以包含任何样式变量的一个或多个变量值(矢量或原子样式除外)。如上所述,变量本身可以包含对由热力学关键字、计算、修复或其他变量生成的全局值的引用,或者对特定原子的每个原子值的引用。因此,fix print 命令是一种输出与正常热力学或转储文件输出不同的各种量的方法。

Computes that process output quantities计算过程输出量 

 compute reduce 和 compute reduce/region 命令将一个或多个每原子或局部向量作为输入,并将它们(sum、min、max、ave)“减少”为标量。这些作为输出值生成,可以用作其他输出命令的输入。

 compute slice 命令将一个或多个全局向量或数组量作为输入,并提取其值的子集以创建新的向量或数组。这些作为输出值生成,可以用作其他输出命令的输入。

 compute property/atom命令获取一个或多个预定义原子属性(id、x、fx 等)的列表,并将这些值存储在每个原子向量或数组中。这些作为输出值生成,可以用作其他输出命令的输入。原子属性列表与dump custom 命令相同。

 compute property/local 命令获取一个或多个预定义本地属性(键合信息、角度信息等)的列表,并将这些值存储在本地向量或数组中。这些作为输出值生成,可以用作其他输出命令的输入。

compute property/grid 命令获取一个或多个预定义的每网格属性(id、网格单元坐标等)的列表,并将这些值存储在每网格向量或数组中。这些作为输出值生成,可用作 dump grid 命令的输入。

 compute property/chunk 命令采用一个或多个预定义块属性(空间箱的 ID、计数、坐标)的列表,并将这些值存储在全局向量或数组中。这些作为输出值生成,可以用作其他输出命令的输入。

Fixes that process output quantities固定过程输出量

fix vector 命令可以创建全局向量作为输入的全局标量的输出,一次累积一个元素。

fix ave/atom命令对每个原子向量执行时间平均。每个原子的量可以是原子属性,例如位置、速度、力。它们也可以是通过 computefix或原子类型variable计算出的每个原子的量。此fix的每个原子的时间平均输出可用作其他输出命令的输入。

fix store/state 命令可以在特定时间归档一个或多个每原子属性,以便旧值可以在将来的计算或输出中使用。原子属性列表与 dump 自定义命令相同,包括由计算、修复或原子类型变量计算的每个原子数量。此修复的输出可用作其他输出命令的输入。

 fix ave/grid 命令对每个原子或每个网格数据执行时间平均。

对于每个原子数据,它对每个网格单元内的原子执行平均,类似于当其块被定义为常规 2d 或 3d bin 时的 variable命令。每个原子的量可以是原子密度(质量或数量)或原子属性,例如位置、速度、力。它们也可以是通过计算、修复或原子类型变量计算出的每个原子的数量。

在此上下文中使用fix ave/grid and fix ave/chunk 命令之间的主要区别在于,前者使用分布式网格,而后者使用全局网格。分布式意味着每个处理器拥有其子域内的网格单元子集。全局意味着每个处理器都拥有整个网格的副本。因此,fix ave/grid 命令对于大型网格来说更有效。

对于每个网格数据, fix ave/grid 命令获取其他计算生成的网格数据的输入,或固定并平均每个网格点随时间的值。

Computes that generate values to output生成输出值计算

LAMMPS 中的每次计算都会生成全局值或每个原子值、局部值或每个网格值。这些值可以是标量、向量或数据数组。可以使用本节中描述的其他命令输出这些值。每个计算命令的页面都描述了它产生的结果。生成每个原子或本地或每个网格值的计算将单词“atom”或“local”或“grid”作为其样式名称的最后一个单词。不使用“原子”或“局部”或“网格”一词的计算会产生全局值。

Fixes that generate values to output生成输出值固定

LAMMPS 中的一些修复会生成全局或每个原子或本地或每个网格值,这些值可以通过其他命令访问。这些值可以是标量、向量或数据数组。可以使用本节中描述的其他命令输出这些值。每个修复命令的页面都会告诉您它是否产生任何输出数量并对其进行描述。

Variables that generate values to output生成输出值变量

输入脚本中定义的变量可以存储一个或多个字符串。但是 equal 样式、向量样式和原子样式或atomfile 样式变量在访问时分别生成全局标量值、全局向量或值或每个原子向量。用于定义这些变量的公式可以包含对热力学关键字以及对由计算、修复和其他变量生成的全局和每原子数据的引用。变量生成的值可用作本节中描述的其他命令的输入并由此输出。

每个网格变量尚未实现。

Summary table of output options and data flow between commands输出选项和命令之间的数据流汇总表

此表总结了可用于从 LAMMPS 生成输出的各种命令。每个命令都会生成某种类型的输出数据和/或将数据写入文件。大多数命令可以从其他命令获取数据作为输入。因此,您可以以管道形式将许多这些命令链接在一起,其中一个命令生成的数据用作另一命令的输入,并最终写入屏幕或文件。请注意,要将两个命令挂钩在一起,输出和输入数据类型必须匹配,例如全局/每个原子/局部数据和标量/向量/数组数据。

另请注意,如上所述,当命令采用标量作为输入时,该标量也可以是向量或数组的元素。同样,向量输入可以是数组的列。

Command

Input

Output

thermo_style custom

global scalars

screen, log file

dump custom

per-atom vectors

dump file

dump local

local vectors

dump file

dump grid

per-grid vectors

dump file

fix print

global scalar from variable

screen, file

print

global scalar from variable

screen

computes

N/A

global/per-atom/local/per-grid scalar/vector/array

fixes

N/A

global/per-atom/local/per-grid scalar/vector/array

variables

global scalars and vectors, per-atom vectors

global scalar and vector, per-atom vector

compute reduce

per-atom/local vectors

global scalar/vector

compute slice

global vectors/arrays

global vector/array

compute property/atom

N/A

per-atom vector/array

compute property/local

N/A

local vector/array

compute property/grid

N/A

per-grid vector/array

compute property/chunk

N/A

global vector/array

fix vector

global scalars

global vector

fix ave/atom

per-atom vectors

per-atom vector/array

fix ave/time

global scalars/vectors

global scalar/vector/array, file

fix ave/chunk

per-atom vectors

global array, file

fix ave/grid

per-atom vectors or per-grid vectors

per-grid vector/array

fix ave/histo

global/per-atom/local scalars and vectors

global array, file

fix ave/correlate

global scalars

global array, file

fix store/state

per-atom vectors

per-atom vector/array

  • 39
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LAMMPS是一款应用广泛的计算分子动力学软件,它可以通过模拟分子间的相互作用,模拟各种物理化学现象,如材料的力学性能、催化性能、热力学性质等。在LAMMPS中,可以通过使用dump命令将模拟的体系输出为.xyz或.lammpstrj等格式的文件。 对于输出的模型文件,提取其轮廓信息是十分必要的。轮廓信息反映了模型的形貌,包括形状、曲率、表面面积等,对于材料科学研究和工程设计具有十分重要的意义。 在LAMMPS中,可以使用VMD等软件对输出的模型文件进行轮廓提取,以下是具体步骤: 1. 将LAMMPS输出的模型文件(如.xyz或.lammpstrj)导入到VMD软件中。 2. 使用VMD的“New Molecule”功能打开模型文件,并选择“Graphics”面板中的“New Representation”。 3. 在“Representation”对话框中,选择“VDW”,并在“Drawing Method”栏中选择“3D Surface”,然后点击“Create Rep”。 4. 出现3D表面图后,右键点击3D表面图,选择“Graphics” > “Materials Browser”。 5. 在“Materials Browser”里,可以设置3D表面图的表面类型、镜面反射率、粗糙度等参数。 6. 在完成3D表面图的设置后,可以通过“File” > “Export Scene”来将其导出为各种格式的文件,如.obj、.stl等。 以上就是在LAMMPS中提取模型轮廓的方法,需要注意的是,在提取模型轮廓时,还需要考虑到模拟精度、网格划分等因素,以保证提取的轮廓信息准确可靠。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值