lammps软件_LAMMPS中的输出命令(八)

本文详细介绍了LAMMPS软件中的`log`和`dump`命令,用于输出模拟过程中的信息和结果。`log`命令用于控制日志文件的输出,而`dump`命令则用于按步输出原子信息,支持多种格式,如atom、cfg、custom等,并可生成图像。通过`dump_modify`可调整输出设置,如强制原子在模拟盒内。理解这些命令有助于更好地管理和分析LAMMPS模拟数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击蓝字,关注我们

b73f2db37bf3e2cccdae43a77a97c827.pngb73f2db37bf3e2cccdae43a77a97c827.png5c62eda4c6a7374bea411330e3ea91a2.png

dump image命令直接输出的图片

在前面的介绍中,我们依次介绍了LAMMPS创建模型力场与势函数变量命令以及操作fix命令计算compute命令。在完成这些命令的设置之后,最终得到的计算结果包括体系的热力学量,各个原子的位置坐标与速度等信息,还要通过合理的方式输出并通过可视化或图表处理,才能获得能够指导实验与理论研究的模拟结果。因此,学习包括log, dump, thermo, thermo_style, thermo_modify 等等在内的输出命令也是学习LAMMPS的重要部分。本文将依次介绍上述输出命令的主要用法。

log命令

语法

log file keyword

file:为新的日志文件的文件名

keyword:为关键字,只有一个选择,即append。如果添加该关键字,接下来的输出会附加在指定的log文件中,而不是重新创建。

举例

log log.equil

log log.equil append

说明

在读取了in文件之后,LAMMPS会同时在终端屏幕上和日志log文件里同时输出模拟的初始化信息,预测模拟时长,给出内存的占用量和每隔一定步数的热力学信息,如下图所示:

997016156e215da282ec0209f140419d.png

loop time是模拟运行的实际时间,以秒为单位。Performance预测了完成模拟所需的时间,例如上例中,每天可以计算实际时间的18.436纳秒。Timing breakdown给出了计算势函数,建立邻域列表以及计算核心之间通信的时间占总时间的百分比,最后是一些邻域列表建立的信息。

默认地,log.lammps是LAMMPS的默认输出文件,如果使用log命令,LAMMPS会重新建立一个文件,文件名由使用者指定,并将LAMMPS的输出信息输入到新的文件中,如果使用了append关键字,LAMMPS会将输出信息附加在现有的新log文件中,而不是重新创建一个文件。

dump 命令

语法

dump ID group-ID style N file args

ID:用户指定的dump的名称

group-ID:用于输出的组的名称

style:用于控制输出原子的数值类型和文件格式,LAMMPS有丰富的输出格式,包括atom or atom/gz or atom/mpiio or cfg or cfg/gz or cfg/mpiio or custom or custom/gz or custom/mpiio or dcd or h5md or image or local or molfile or movie or netcdf or netcdf/mpiio or vtk or xtc or xyz or xyz/gz or xyz/mpiio可以使用。

N:每个N步进行一次输出

file:用于指定dump输出的文件路径和名字

args:每种类型style都对应不同的参数,来控制每种类型输出的格式。

举例

dump myDump all atom 100 dump.atom
dump myDump all atom/mpiio 100 dump.atom.mpiio
dump myDump all atom/gz 100 dump.atom.gz
dump 2 subgroup atom 50 dump.run.bin
dump 2 subgroup atom 50 dump.run.mpiio.bin
dump 4a all custom 100 dump.myforce.* id type x y vx fx
dump 4b flow custom 100 dump.%.myforce id type c_myF[3] v_ke
dump 4b flow custom 100 dump.%.myforce id type c_myF[*] v_ke
dump 2 inner cfg 10 dump.snap.*.cfg mass type xs ys zs vx vy vz
dump snap all cfg 100 dump.config.*.cfg mass type xs ys zs id type c_Stress[2]
dump 1 all xtc 1000 file.xtc

说明

dump是LAMMPS最常用的输出命令,它可以输出每个一定步数输出每一个原子的信息,这些信息对应一定的格式可以利用style中各种选择控制。此外,dump命令还可以输出JPG, PNG等格式的图片,并且可以将这些图片压缩成为一个动画。注意如果想要使用dump movie或image命令,需要在编译时修改makefile中的以下命令,而且还需要在后面指明PNG或JPEG或FFMPEG的库路径。

LMP_INC = -DLAMMPS_JPEG
LMP_INC = -DLAMMPS_PNG
LMP_INC = -DLAMMPS_FFMPEG

dump命令输出的原子坐标有可能在模拟盒子之外,这是因为周期性边界条件仅在建立邻域列表时起作用。如果用户希望强制所有原子都在模拟盒子内,可以利用dump_modify pbc的命令。

如果没有使用dump_modify sort命令,那么dump输出的每个原子的顺序是无规律的,不会按照原子的ID或某些顺序排列。但是,对于某些类型例如dcd,xtc,xyz和molfile,按照原子ID排序是默认的。

某些类型后面带有/gz的后缀,例如atom/gz, cfg/gz, custom/gz和xyz/gz,这些类型输出的时候是压缩文件,此时输出文件的名称必须以.gz为后缀。此外,带有/mpiio后缀的类型名与不带后缀的类型输出文件是相同的,不同的是有后缀/mpiio的类型名是通过并行库MPI-IO进行输出的。并行输出在输出文件很大或者输出频率很高时有更快的输出效率,使用并行输出需要在编译LAMMPS时使用mpiio包,即make yes-mpiio。

下面简要介绍一下各个类型atom类型的输出文件会输出原子ID,原子类型和原子坐标,默认地,这些坐标是按照模拟盒子的相对比例输出的,如果

希望直接输出绝对坐标,可以利用dump_modify进行修改。

custom类型的输出类型中,用户可以自己定义每个原子的输出量,不仅可以输出每个原子的坐标,还可以输出速度,电荷,或者是用户自己计算的atom类型的变量,custom类型在dump中用于自定义输出非常方便。

local类型用于输出compute或fix命令中计算局部性质的命令,例如compute property/local,该类型可以输出每个原子的键长,键角等信息。

cfg类型用于输出CFG格式的文件,可以用于Atomeye的可视化输入。dcd类型输出DCD类型的文件,用于CHARMM, NAMD和XPlor等分子动力学模拟软件的输入。xtc类型输出XTC文件,用于GROMACS软件的输入。xyz类型可以输出XYZ类型的文件,该文件通用性较强,可以被多个可视化软件或模拟软件使用。

可视化软件Ovito和VMD可以识别atom, custom, dcd, xtc和xyz等类型的文件,是非常强大可视化软件。 

thermo命令

语法

thermo N

N:用于控制log文件中每N步进行一次输出热力学信息。N可以是一个变量。

举例

thermo 100

thermo v_i

说明

该命令非常简单,就是控制log文件中每N步进行一次输出热力学信息,如果N的值设置为0,LAMMPS只会在模拟开始和结束各输出一次热力学信息。注意,如果N被指定为变量,需要利用v_name的形式引用变量,这样在每一次热力学量被输出后,变量N都会被重新计算,并在下一次达到相应的步数后输出热力学量。

有关热力学量输出的类型的控制都是使用thermo_style和thermo_modify命令。

thermo_style命令

语法

thermo_style style args

style:用于控制热力学量输出的类型,包括三个选择, one,multi和custom。

args:用于补充各个类型中具体格式的设置,其中关于custom的参数可以选择的输出量非常丰富,几乎包括了体系所有可能的性质。

举例

thermo_style multi
thermo_style custom step temp pe etotal press vol
thermo_style custom step temp etotal c_myTemp v_abc
thermo_style custom step temp etotal c_myTemp[*] v_abc

说明

该命令控制了log文件中和终端屏幕上输出的热力学量的类型。

one类型将依次输出:step temp epair emol etotal press,分别为当前步数,温度,对势能,分子势能,总能量和压强。

multi是类型one的增强版,依次输出:etotal ke temp pe ebond eangle edihed eimp evdwl ecol elong press,分别为总能量,动能,温度,势能,键能,键角能,二面角能,非常规势能,范德华力势能,库伦势能,长程势能和压强。

custom是最普遍的设置,它允许用户根据自己的需要定制热力学量的输出,不仅可以输出常规的体系的势能,温度和压强,实时计算效率,还可以输出用户自己定义的关于体系的变量,例如某些compute和fix命令的计算结果。具体可以输出的量大家可以参照官方manual文件,这里不再赘述。

thermo_style解决了输出哪些量的问题,那么怎么输出这些热力学量可以利用thermo_modify命令进行设置。

thermo_modify命令

语法

thermo_modify keyword value

keyword给出在热力学量输出时需要设置的具体选项,包括lost, lost/bond, norm, flush, line, format, temp, press

value 对不同的选项设置不同的参数。

举例

thermo_modify lost ignore flush yes
thermo_modify temp myTemp format 3 %15.8g
thermo_modify temp myTemp format line "%ld %g %g %15.8g"
thermo_modify line multi format float %g

说明

该命令设置了热力学信息计算和输出的选项。thermo_modify只对它前一个thermo_style起作用。

lost关键字可以使LAMMPS在计算热力学量的时候忽略体系中的原子丢失,尤其是对于非周期性边界条件,如果原子以一定速度越过边界,那么体系中的粒子就会减少,此时如果没有使用该命令忽略该粒子,程序就会报错。

lost/bond与lost类似,不同的是lost/bond命令用于忽略处于键合作用原子的丢失。

norm命令用于控制热力学量中的势能,动能等可扩展量是按照总量输出还是平均到每个原子输出。但是,对于温度,压强这些量是不可扩展量,不能按照每个原子的平均输出。

flush命令用于保证log文件中的信息是当前的,也就是这些信息不会在操作系统的缓冲中暂留。

line命令用于当thermo_style命令定制的量很多时,为了方便阅读可以设置一行输出或每行三个量输出。

format用于控制热力学量数值的输出格式,例如数值宽度,有效数字和小数位数等。

temp和press用于改变热力学量中温度和压强的输出的默认设置。默认的,如果thermo_style中存在temp和press的输出,LAMMPS会默认输出整个系统的温度和压强,如果希望修改LAMMPS默认输出的温度和压强,可以利用该命令将temp和press修改为用户自己计算的compute的值。

本文主要介绍了log, dump, thermo, thermo_style, 和thermo_modify命令,关于这些命令中参数的具体选择,在学习过程中可以更多地参考官方manual文件,多加实践就可以熟练使用。值得注意的,LAMMPS可以输出文件的命令当然不只这些,LAMMPS也可以使用print,fix ave/time等命令对计算量进行输出,这些命令可以更灵活的用于结果的获取和程序的调试。

905d7affe5d43b90f190ce1c13ca1f10.pnga337264b88ec93b1e86e4ce36c3e1ea0.png

扫码关注我们

分子模拟学习

微信号 : zhd-wb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值