本文介绍lammps统计一个原子周围一定范围内其它原子数量的方法。
在之前的专栏中,曾介绍过动态统计某一个固定区域内原子数量的方法。
这种方法只能统计一个静态的区域内原子的数量变化,如果要统计某一个运动中的原子周围原子数量的变化,就需要根据该原子的运动状态,实时追踪原子的坐标并更新region区域的范围,然后再统计周围原子的数量。
以小球的随机碰撞为例,原子类型为1的红色小球(id也为1)周围分布原子类型为2、3的蓝色和黄色小球。
动态统计以红色小球为圆心,半径为15的球范围内的数量代码为:
#气体粒子数量
variable npart equal 200
#模拟基本参数设置
units lj
dimension 2
atom_style atomic
boundary p p p
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
atom_modify map yes
#三维box尺寸
region box block -20 20 -20 20 -0.1 0.1
#生成box
create_box 3 box
#随机产生100个气体原子
create_atoms 1 single 0 0 0
create_atoms 2 random ${npart} 324523 box
create_atoms 3 random ${npart} 3253 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
variable x1 equal x[1]
variable y1 equal y[1]
region ss sphere v_x1 v_y1 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
统计结果如下图所示
根据这个原理,也可以统计该原子周围不同原子类型的数量
报名一对一培训课程可领完整版《lammps中文教程》,配套学习更轻松!
扫码领取粉丝专属优惠券↓↓↓