内部建模
内部建模,即使用LAMMPS提供的命令建立模型。这种方法主要用于构建比较简单和标准的体系。
相关命令主要有4个:
- lattice:定义晶格类型;
- region:定义模拟盒子的大小;
- create_box:创建模拟盒子;
- create_atoms:在模拟盒子中创建原子。
当然,创建模型不仅限于这些命令,还有一些其他的命令,比如delete_atoms等。事实上,我看到有些大牛仅仅使用LAMMPS的内置命令,就建立了很复杂的模型。
下面简单举一例:构建6x6x6的FCC-Cu的晶胞。
输入脚本:in.fcc-Cu
# model of FCC-Cu, 6x6x6 boundary p p p units metal atom_style atomic ###################################### lattice fcc 3.61 region box block 0 6 0 6 0 6 create_box 1 box create_atoms 1 box ###################################### pair_style eam pair_coeff * * /home/xbduan/lammps/potentials/Cu_u3.eam dump 1 all cfg 1 a*.cfg id type xs ys zs dump_modify 1 element Cu run 0
第8~11行即为建模部分。这里使用的命令参数很简单,不做过多介绍。
外部建模
外部建模主要是通过数据文件 data file实现的,即只要你将你需要的构型以data file所要求的格式保存成文件,就能够被LAMMPS读入,而建立模型。
假如已经有了能够反映模型的data file后,就可以直接使用read_data命令完成建模了。
data file基本格式
如下图所示,这给出的是data file最基本的格式,只包含原子坐标,而不包含键能键角等参数,一般的合金体系是这种类型。
上面的注释已经比较明确了,不多解释。更多可以参考LAMMPS文档。
data file获取方式
实际上,只要你最后得到的data file的格式类似于上面(不包括注释),就可以被LAMMPS读入,而不管你是采用什么途径。
目前来说,比较遗憾的是还没有任何一种软件支持直接导出data file的文件格式,但是因为data file文件格式还比较简单,所以还是比较容易获得的。
1. 软件导出+手动编辑
很多软件,如Material Studio,具有强大的建模功能,而且支持很多种文件格式的导出。遗憾的是,目前还不支持直接导出data file格式。
(1)使用建模软件完成建模后,导出xyz文件格式(因为xyz文件格式与data file格式比较相近,比较容易修改);
(2)使用文本编辑器,参考上图所示的data file的文件格式编辑xyz文件,主要是增加模拟盒子的参数。
这种方法适用于构型相对简单、原子数不多的情况下,否则编辑的工作量会很大。
我写过一个matlab脚本,可以完成这种格式转换:【xyz2lmp: 将xyz格式转成lammps的data file】
2. 程序产生
使用程序建模是最自由的方式,因为它几乎不受任何限制。不论你的模型多么复杂,总能够使用一定的算法完成建模。
但,这要求你对你要建立的模型由深入的理解和有一定的编程能力来实现你的算法。
对于一些复杂的模型,如位错、多晶等缺陷,几乎只能用这种方法实现(如果你能够在网上找到现成的代码,You are lucky!)。
因为这种方法因模型差异很大,所以这里也不做过多介绍了。