lammps怎么计算某一配位数原子数量

请问lammps怎么输出 某一配位数原子数量 随时间变化的折线图

lammps模拟中,group是一个比较重要的命令,几乎所有的fix和compute命令均对group id进行操作。

默认情况下,原子组是一个静态(static)类型的组当原子被划入到一个组中后,原子将“永远”属于这个组,除非被新的group命令设置。

如有命令:

group 1 region mobile
组1的原子离开mobile区域后,还是属于组1,同理,当有新的原子进入到mobile区域,该原子也不会被归入到组1中。

如果以region区域作为讨论对象,研究region内某一时刻原子的性质,就必须动态的跟踪region内的原子。

用普通的静态分组显然无法满足要求,这时候就需要用到动态组(dynamic group)。

如统计半径为15的球形区域内气体的数量.

气体处于扩散状态,球形区域内的气体有进有出,所以需要设置动态组。

region ss sphere 0 0 0 15
group mobile dynamic all region ss every 10
variable number equal count(mobile)
在组名mobile后面加dynamic表示改组为动态组,all表示所有进入球形内的原子都会被归入mobile组。

every 10表示每10步判断一次是否有原子进入或者离开球形区域,every命令可不写,不写的话默认为1步更新一次。

最后一句count()命令统计组内原子数,并把结果存储在number变量内。

统计结果如下图所示:

完整的in文件程序如下:

#气体粒子数量
variable npart equal 1000
#模拟基本参数设置
units lj
dimension 3
atom_style atomic
boundary p p p
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
#三维box尺寸
region box block -20 20 -20 20 -20 20
#生成box
create_box 1 box
#随机产生100个气体原子
create_atoms 1 random ${npart} 324523 box
#设置摩尔质量1
mass * 1
#力场设置,soft势
pair_style soft 1.0
pair_coeff * * 10.0
#温度初始化
velocity all create 2.0 34234123 dist gaussian
#能量最小化
minimize 1e-4 1e-4 1000 1000
reset_timestep 0
#保存轨迹文件
dump img all atom 100 gas.xyz
#模拟步长
timestep 0.001
#设置nve系综
fix 1 all nve
region ss sphere 0 0 0 15
group mobile dynamic all region ss every 10
variable number equal count(mobile)
thermo_style custom step v_number
thermo 100
run 10000

可以看一下这个讲解:https://mp.weixin.qq.com/s/Kl-DjmaQXa8TvP6SwniABQ%EF%BC%88%E4%B9%9F%E5%8F%AF%E5%85%B3%E6%B3%A8%E5%85%AC%E4%BC%97%E5%8F%B7%EF%BC%9A%E7%A0%94%E8%80%8C%E6%9C%89%E4%BF%A1er