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

2024-04-16 06:44

本文主要是介绍【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

  • Disambiguation

  • Thermodynamic output

  • Dump file output

  • Fixes that write output files

  • Computes that process output quantities

  • Fixes that process output quantities

  • Computes that generate values to output

  • Fixes that generate values to output

  • Variables that generate values to output

  • Summary table of output options and data flow between commands

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热力学输出

热力学输出的频率和格式由 thermo, thermo_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/time, fix ave/chunk, fix ave/histo, fix 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命令对每个原子向量执行时间平均。每个原子的量可以是原子属性,例如位置、速度、力。它们也可以是通过 compute, fix或原子类型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

这篇关于【LAMMPS学习】八、基础知识(3.1)LAMMPS 的输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908055

相关文章

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss