大家好,我是小马老师。
lammps自带建模命令,对于一些常用的晶格如fcc、bcc等可以很方便地构建晶体模型。
但是,对于hcp类型的晶体,lammps在细节上处理的不够完美。
虽然都是hcp结构,不同元素的hcp晶格常数差别较大,如:
确定hcp结构,需要两个参数:a和c/a,或者a和c。
在lammps中,hcp类型的晶格只能设置一个参数a,另一个参数c/a默认为一个定值:sqrt(8/3),显然不能满足要求。
sqrt(8/3)接近Mg的参数,因此,使用lammps建立Mg的结构基本没问题:
lattice hcp 3.2
建其它类型的hcp晶体模型误差就会比较大。
解决的方法方案有两种,一是使用atomsk建模,atomsk可以设置hcp晶格的两个参数,二是自定义晶格常数。
下面给出第二种解决方法,自定义不同类型的hcp晶格:
variable a1 equal 3.2
variable a3 equal 1.6235
lattice custom ${a1} a1 1.0 0.0 0.0 a2 0.0 1.732 0.0 a3 0.0 0.0 ${a3} &
basis 0.0 0.0 0.0 &
basis 0.5 0.5 0.0 &
basis 0.5 0.83333 0.5 &
basis 0.0 0.33333 0.5
在使用时,只需要输入a1(a)和a3(c/a)的值即可。
下面以Mg为例:
#hcp自定义晶格演示,公众号:lammps加油站
units metal
dimension 3
boundary p p p
#自定义hcp晶格
#a1:c
#a3:c/a
variable a equal 3.2
variable c equal 1.6235
lattice custom ${a} a1 1.0 0.0 0.0 a2 0.0 1.732 0.0 a3 0.0 0.0 ${c} &
basis 0.0 0.0 0.0 &
basis 0.5 0.5 0.0 &
basis 0.5 0.83333 0.5 &
basis 0.0 0.33333 0.5
region box block 0 10 0 10 0 10
create_box 1 box
create_atoms 1 box
mass 1 24
write_data Mg.data
公众号:lammps加油站