请问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