大家好,我是小马老师。
本文介绍lammps输出模拟结果的4种方式。
lammps模拟的数据从数据结构上分,大体可以分为两类:标量和矢量。
标量就是一个值,类似C语言中的一个普通变量,通常表示全局或局部的量(如temp、press、pxx)。
矢量是一组值,类似C语言中的一维或者多维数组,通常表示单个原子的量,如单原子的坐标(x、y、z)、速度(vx、vy、vz)等。
不同的量输出方式不同,先介绍标量的输出,标量可使用三个命令输出。
(1)thermo命令
thermo命令模拟过程中全局标量,如步数、体系温度、压力等等,具体用法:
thermo命令使用方法
thermo命令输出的值保存到log.lammps文件中,模拟完成后需要从这个文件中把需要的数据复制出来再进行绘图处理。
(2)fix print命令
thermo命令输出的数据需要单独从log文件中复制出来,如果数据较多就会比较麻烦,比较简单方式是把数据输出到一个单独的文件,如拉伸过程中的应力应变数据输出到stress-strain.dat文件,可以使用fix print命令:
fix 1 all print 100 "${strainx} ${stressx}" file stress-strain.dat screen no
(3)fix ave/time命令
fix print命令按一定步数输出当前步数的瞬时值,有些模拟数据可能波动比较大,用fix print命令得到的曲线可能不平滑,此时,可对数据按一定步数进行平均后进行输出,用到的命令为fix ave/time命令,具体使用方法见:
fix ave/time使用教程
以上三个命令是对模拟标量的输出,下面介绍矢量值的输出方法。
lammps中的矢量主要是与单原子有关的量,单原子坐标、速度、受力等矢量是系统已经自定义好的量,可以直接引用。
有些量是通过compute命令计算出来的量,如compute stress/atom命令会计算出每个原子的应力,这个应力就是一个矢量。
矢量可以使用dump命令输出,具体使用方法见:
dump命令使用方法
以上4种命令是lammps模拟中常见的输出命令,灵活使用这几种命令足以满足模拟需求。
更多lammps教程,关注公众号:lammps加油站。