lammps教程:平均值输出fix ave/time命令详解

lammps模拟输出方式有很多,前面几篇文章也介绍过,对于模拟总体系的值一般使用thermo命令输出,而单个原子的变量值使用dump命令输出。
今天主要讨论一下体系量值的输出,使用thermo命令有两个缺点:
其一,默认情况下,thermo输出的结果存储在log.lammps文件中,在进行数据处理的时需在log.lammps中找到数据部分,复制粘贴到Origin进行绘图。
其二,对于一些波动比较大的值,thermo命令不能进行均值输出。比如摩擦力曲线,波动比较大,使用平均值输出能够得到更平滑的曲线。
1. fix ave/time语法
本文介绍另外一种数据输出命令:fix ave/time,可有效解决以上问题。
fix ave/time命令的功能是按照设定的步数对输出变量求平均值,并将平均值保存到设定文件中。
语法规则为:

fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ...

这个命令的语法相对复杂,设置的参数也较多,本文只介绍一种用法。
2.fix ave/time使用方法
以输出摩擦过程中摩擦球的受力为例:

compute fx0 ball reduce sum fx
compute	fy0 ball reduce sum fy
compute	fz0 ball reduce sum fz
variable step0 equal step
fix 1 all ave/time 10 5 100 v_step0 c_fx0 c_fy0 c_fz0 file friction.txt

前三行分别计算xyz方向的力,第四行代码获取当前模拟步数。
fix命令中10 5 100的意思是每100步保存1次数据,保存的数据为v_step0 c_fx0 c_fy0 c_fz0变量的平均值。
file friction.txt值把数据保存到friction.txt文件中。
最难理解的可能就是10 5 100这三个数的设置。
10 5 100表示每100步计算或者保存1次数据(平均值),“10 5”参数表示以100步为基准向前每隔10步采1个样,共采5个样。
所以,计算第一个平均值采的样为:60、70、80、90、100,对这5步的受力值取平均即为friction.txt中的第一组数据。
同理,如手册中的例子为“2 6 100”,采样为:90,92,94,96,98,100。
学会了fix ave/time,曲线平滑就是如此简单!

更多lammps教程,请关注微信公众号:lammps加油站
lammps教程:平均值输出fix ave/time命令详解

上一篇:多线程实现生产者消费者模型


下一篇:「iOS造*」之UIButton 用Block响应事件