大家好,我是小马老师。

在lammps模拟中,有些时候不希望原子飞出边界,这时候可以通过添加反射墙的方式实现。

在lammps中,“墙”的类型有很多,本文介绍的是一种“硬”的反射墙。

这种墙设置方法比较简单,不需要设置墙与原子之间的作用力大小。

使用的lammps命令为fix wall/reflect

1. 固定墙

fix xwalls all wall/reflect xlo EDGE xhi EDGE
fix ywalls all wall/reflect ylo EDGE yhi EDGE
fix zwalls all wall/reflect zlo 10 zhi EDGE

小球向下移动碰到墙会反射到上面,球的运动范围被限定在box上部区域,不能移动到下部,也不能穿过边界。

效果如下图所示:

fix wall/reflect命令实现“振动墙”效果_微信公众号

2. 移动墙

墙的位置可以设置为变量,随时间变化,比如下面的代码设置墙沿z方向移动,实现压缩效果。


variable linear equal vdisplace(8,0.5)
fix xwalls1 all wall/reflect zlo v_linear

反射墙向上移动,小球被压缩到一起,该命令可应用到聚合物的压缩,效果如图:

fix wall/reflect命令实现“振动墙”效果_公众号_02

3. 振动墙

下面代码设置墙按正弦曲线运动,实现振动效果


variable wiggle equal swiggle(10,8.0,8.0)
fix zwalls1 all wall/reflect zlo v_wiggle

下部反射墙的位置沿z轴循环上下运动,效果如图:

fix wall/reflect命令实现“振动墙”效果_公众号_03

下面给出振动墙的代码,其余类型替换以上设置代码即可。


units       lj
atom_style atomic
boundary f f f
region box block 0 30 0 30 0 30 units box
create_box 1 box
region top block INF INF INF INF 10 INF units box
create_atoms 1 random 150 8989 top
mass 1 1
velocity all create 1 9898
variable wiggle equal swiggle(10,8.0,8.0)
fix zwalls1 all wall/reflect zlo v_wiggle
dump 1 all atom 100 dump.xyz
fix 1 all nve
run 10000

fix wall/reflect功能很强大,多加练习才能灵活使用,详细了解参数设置请查看官方手册。

Lammp学习交流、案例下载,请加QQ群236862503、754749935。

END



公众号案例代码以及学习交流,请加QQ群:236862503


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