初始模型构建
对于初始模型构建这一部分,大家可以各显神通,会编程的可以自己编程建模,不会编程的可以利用建模软件进行建模,例如用的最多的Materials Studio (MS)(虽然这是个收费软件,但是其中建模工具是免费的,相关教程百度很多),将MS得到的模型文件导入OVITO软件,再利用OVITO软件可以导出LAMMPS软件可读的格式(简化版):
其中491为总原子数,2 为原子种类数目,xlo=0.0,xhi=25.7975998,分别为x方向的起始和终止坐标位点。1 1 0.0 0.0 0.0 分别表示原子id,原子类型,原子的x,y,z坐标。
通用版格式(包含键角之类的信息):
再利用read_data 命令直接读取这个模型文件即可
read_data file.dat
除了借用其它软件建模外,LAMMPS也提供了一些命令帮助构建简单模型:
lattice
region
create_box
create_atoms
group
delete_atoms
由于这些命令的用法在LAMMPS中很灵性(特别是region 和group),一篇推文肯定讲不完,只能先讲一些重要的用法,然后在往后的例子讲解中带各位慢慢体会,所以这些命令就不给各位截图看手册了,有兴趣的可以自行去看~
lattice 命令
这个命令的功能很多,主要是用来定义晶格类型,晶格常数,以及晶向方向的,例如:
lattice bcc 3.168 orient x 1 0 0 orient y 0 1 0orient z 0 0 1
表示为构建一个晶格常数为3.168,晶格类型为bcc的模型,其x方向的矢量为 [100]。。。。。
orient x 1 0 0 orienty 0 1 0 orient z 0 0 1这个是默认值,所以可以不用去写,但是要改变晶向的话就要在满足右手(还是左手,我忘了~)定则的前提下去书写。
region命令
此命令主要是用来构建模拟盒子大小以及划分模拟区域,例如(前提是定义了lattice命令):
region box block 0 10 0 10 0 10 units lattice
表示构建一个10a*10a*10a大小的模拟盒子(a为晶格常数),无论模拟的构型有多么复杂,一般都是选择先构建一个矩形盒子,让模型在盒子中进行模拟。unitslattice为默认值,可以换成units box[那么这个盒子的大小就是10*10*10(埃)]
region 1 block 1 9 1 9 1 9
表示将盒子中x(1a-9a),y(1a-9a),z(1a-9a)的区域选中,定义为区域1,用于后续模拟。
注:一般box这个单词只用于与盒子相关的地方,只选取部分区域时,不要将其定义为box。
create_box命令:
这个命令一般是告诉LAMMPS模型中有几类原子,几类键等等,例如
create_box 2 box
表示盒子中有2种原子。
create_box 2 box bond/type 2
表示盒子中有2种原子以及2种键长。
create_atoms命令:
表示往盒子中添加原子,例如:
create_atoms 1 box
表示将类型1的原子按照lattice命令的设定填满盒子。
create_atoms 2 single 5 5 5
表示在坐标为(5a, 5a, 5a)的地方添加一个类型为2的原子。
group 命令
表示将选中的原子定义为一个组,用于后续模拟,例如:
group 1 type 1
表示将所有类型为1的原子设置为1组;
group 2 region 2
表示将处于区域2中的所有原子设置为2组;
group 3 union 1 2
表示将1,2组合并为3组。
delete_atoms命令:
表示删除不需要的原子,例如
delete_atoms group1
表示将1组的原子删掉;
delete_atomsregion 2
表示将区域2中的原子删掉;
最后将这几个命令结合使用一下
构建一个bcc的W圆柱
法一:
lattice bcc 3.168
region box block 0 10 0 10 0 10
region wire cylinder z 5 5 3 0 10
create_box 1 box
create_atoms 1 region wire
法二:
lattice box 3.168
region box block 0 10 0 10 0 10
region wire cylinder z 5 5 3 0 10
create_box 1 box
create_atoms 1 box
group wire region wire
group outer subtract all wire
delete_atoms group outer
注:建议自己尝试着按照手册理解下region cylinder 以及group subtract的用法
对于region 和group,这里只是介绍了其建模的小作用,其主要作用还是在模拟过程的使用,这个用法往后咱们可以结合例子慢慢说。