大家好,我是小马老师。
在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上部区域,不能移动到下部,也不能穿过边界。
效果如下图所示:
2. 移动墙
墙的位置可以设置为变量,随时间变化,比如下面的代码设置墙沿z方向移动,实现压缩效果。
variable linear equal vdisplace(8,0.5)
fix xwalls1 all wall/reflect zlo v_linear
反射墙向上移动,小球被压缩到一起,该命令可应用到聚合物的压缩,效果如图:
3. 振动墙
下面代码设置墙按正弦曲线运动,实现振动效果
variable wiggle equal swiggle(10,8.0,8.0)
fix zwalls1 all wall/reflect zlo v_wiggle
下部反射墙的位置沿z轴循环上下运动,效果如图:
下面给出振动墙的代码,其余类型替换以上设置代码即可。
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加油站。