大家好,我是小马老师。

使用lammps自带命令建模时,有时候会用delete_atoms命令删除部分原子,但是在删除原子后,lammps并不一定会重新分配原子的ID,造成data文件中的原子ID序号不连续

使用velocity命令进行温度初始化时,会提示“Atom IDs must be consecutive for velocity create ...”错误

错误的主要原因就是因为删除原子后,原子ID序号不连续。

针对这个问题,下面给出两种解决方案。

lammps教程:delete_atoms删除原子后原子ID不连续的两种解决方案_一对一

1. 对于纯原子体系,保持compress属性为yes

对于不含有键、角的纯原子体系,在使用delete_atoms命令时保compress属性为yes

Compress yes对删除部分原子后的剩余原子进行编号压缩,保证ID连续不间断。

这个属性默认是yes状态,所以下面的两句命令效果是一样的:



delete_atoms region del compress yes



delete_atoms region del

Compress发挥作用的前提是atom_style不为full类型。

对于金属体系来说,一般原子类型为atomic,在使用delete_atoms会默认进行ID重新排列,因此,不会出现velocity错误提示。

lammps教程:delete_atoms删除原子后原子ID不连续的两种解决方案_一对一

以下代码,原子类型为atomic,删除Cu底部原子


units  metal
atom_style atomic
lattice fcc 3.61
region box block 0 2 0 2 0 2
create_box 1 box
create_atoms 1 box
region del block INF INF INF INF INF 1
mass 1 64
write_data Cu.data

打开Cu.data文件可以看到:剩余8个原子编号仍然为1-8,不会影响后续的操作。

lammps教程:delete_atoms删除原子后原子ID不连续的两种解决方案_建模_03

lammps教程:delete_atoms删除原子后原子ID不连续的两种解决方案_一对一

2. 对于含键角体系,使用reset_atom_ids命令

对于包含键、角的体系,如atom_style full类型,compress yes不起作用

这时候就需要用到reset_atom_ids命令。

下面对full类型下,使用以及不使用reset_atom_ids命令的建模结果进行对比




units               metal
boundary p p f
atom_style full
lattice fcc 3.61
region box block 0 2 0 2 0 2
create_box 1 box
create_atoms 1 box
#删除下部Cu原子
region del block INF INF INF INF INF 1
delete_atoms region del
mass 1 64
write_data Cu.data

打开Cu.data文件后会发现,data文件包含8个原子,原子的ID是19-32,并且也不连续。

lammps教程:delete_atoms删除原子后原子ID不连续的两种解决方案_建模_05

lammps教程:delete_atoms删除原子后原子ID不连续的两种解决方案_一对一

添加reset_atom_ids命令后,代码如下:




units  metal
boundary p p f
atom_style full
lattice fcc 3.61
region box block 0 2 0 2 0 2
create_box 1 box
create_atoms 1 box
region del block INF INF INF INF INF 1
delete_atoms region del
mass 1 64
reset_atom_ids
write_data Cu.data

再次打开Cu.data文件,此时原子ID已经重新进行了编号,ID编号1-8,完美解决这个难题。

lammps教程:delete_atoms删除原子后原子ID不连续的两种解决方案_一对一_07

lammps教程:delete_atoms删除原子后原子ID不连续的两种解决方案_一对一

总之,如果体系不包含键、角信息,使用delete_atoms compress yes命令不会造成原子ID不连续。

如果体系为包含键角的full类型,在删除原子后,需要使用reset_atom_ids命令对原子ID进行重新编号。


END



扫描关注微信公众号:lammps加油站

lammps教程:delete_atoms删除原子后原子ID不连续的两种解决方案_一对一_09