大家好,我是小马老师。
本文以一篇论文为例,介绍lammps粗糙界面建模方法。粗糙界面在流体、摩擦和吸附模拟中用的较多,建模方法也多种多样。本文参考Xin He发表的一篇论文《The evolution of configuration and final state of graphene on rough iron surface》。论文下载地址:
https://doi.org/10.1016/j.apsusc. 2020.147084
论文中模拟了四种粗糙界面:一维正弦粗糙面、二维正弦粗糙面、伪随机高斯粗糙面、随机粗糙面。
本文主要介绍一维正弦粗糙面的建模方法,后面陆续推出其它粗糙面建模。一维正弦粗糙面如上图(a)所示,在xz面内,模型的上表面轮廓是一条正弦曲线。建模原理是使用create_atoms var和set命令,具体步骤:(1)创建曲面方程本文中,粗糙界面是一个规则的正弦曲面,因此,曲面方程为:
z=Asin(ωx)+k
A为振幅,控制曲面起伏的高度
ω控制正弦的周期,控制曲面起伏的个数
k为偏距,控制曲面的上下位置
在本例中,曲面方程为:
z = (8 * sin(x * 2.0*PI/30) +30 )
参数可根据课题需要自己调整。(2)根据曲面方程填充原子create_atoms var v命令根据v的取值判断是否创建原子。如果v的取值为0,不创建原子,如果v的取值为非0,则创建原子。因此,如果v的取值和曲面方程联系起来,当原子的坐标位于曲面下方时创建原子,位于曲面上方时不创建原子,这样就可以生成具有特定曲面的结构。具体语法为:
variable v equal "v_zz < (8 * sin(v_xx * 2.0*PI/30) +30 ) "
最终效果为:
完整in文件代码为:
dimension 3
units metal
atom_style atomic
variable x equal 40
variable y equal 25
lattice fcc 3.61
region box block 0 $x 0 $y 0 20
create_box 1 box
variable xx internal 0.0
variable zz internal 0.0
variable v equal "v_zz < (8 * sin(v_xx * 2.0*PI/30) +30 ) "
create_atoms 1 box var v set x xx set z zz
write_dump all atom all.xyz
怎么样,是不是很简单?有兴趣的可以尝试二维正弦曲面建模,后面的推文会给出对应的代码:
公众号:lammps加油站