LAMMPS的lattice命令的翻译与理解

发布者:admin 发布时间:2019-10-27 08:35 浏览次数:

  lattice命令,在lammps建模中具有举足轻重的地位,因为LAMMPS本身建模方面是比较薄弱的。Lattice 方便于我们建立大多数晶格模型,所在在金属,晶体,材料等相关领域的研究中,使用比较频繁。

  2. scale:晶格和模拟盒子之间的比例因子(LJ)/格点常数(其他单位)[units定义的距离单位乘上scale出来的是格点单位(或者基矢长度)]

  【功能介绍】Lattice命令定义了一个其他指令可以使用的晶格,在lammps中,一个晶格是空间中简单的点集,由基本原子构成的可在3D空间中无限复制的晶胞(反应晶体对称性的最小重复单元,也作单胞)所组成。Lattice命令可以灵活利用其参数来定义各种各样的晶格。

  【使用方式介绍】lattice命令在lammps中有两种实用方式,首先,create_atomscommand在模拟盒子内部的格点上创建原子。需要说明的是,create_atoms command可以为基本原子分配不同的原子类型。第二,3D晶格中的晶格间距,可以被其他命令,比如create_box, region, velocity,作为距离单元使用。一般来说,当处理格点模型的时候比较方便。(这个很重要,如果要建完整晶格的话,最好用晶格单位)

  【晶格参数的决定参数】一个晶格由晶胞、晶胞内部的基本原子和变换参数(密度、平移规则、取向)决定。矢量a1,a2,a3是晶胞的棱矢量【custom用的参数】,在固态物理学里面用术语基矢来表示。但是在lammps中不一定要用最小体积的原胞(最小的周期性重复单元,个人理解其实由基本原子决定的?)来定义晶胞:

  【原胞类型对应的维度】晶格类型必须要与模拟的维度(dimension)匹配。Sc(简单立方)or bcc(体心立方)or fcc(面心立方)or hcp(六角密堆积)or diamond(金刚石)类型用于三维建模。sq(四方)or sq2 or hex(六方)类型用于二维建模。custom类型既可以用于二维,也可以用于三维建模。

  Sc在晶胞左下角有一个基本原子,bcc有两个基本原子、一个在左下角,一个在立方盒子中心;fcc有四个基本原子一个在左下角,3个在立方面心上。hcp晶格有4个基本原子,有2个在z=0的平面上,另外2个在z = 0.5的平面上。diamond晶格有8个基本原子。【基本原子的计算方法要参考晶体学书籍,分在角,面,棱,内等几个部分贡献比例不同】

  sq and sq2类型的晶格是一个2D正交晶格。sq晶格在正方形左下角有一个基本的原子。Sq2晶格则有两个基本原子,一个在角落另一个在正方形的中心。类型hex定义的也是二维晶格,但单胞是长方形的,其单胞基矢为a1 = 1 0 0和a2 = 0 sqrt(3) 0。hex晶格有2个基本原子,分别在长方形的角上和中心的位置。

  类型custom允许你通过指定基矢a1, a2, a3和单胞中一系列基本原子的坐标来定义晶格。默认情况下,a1, a2, a3是正交的单位矢量,但你也可以将它们指定为非正交任意长度的矢量,从而描述平行六面体式的单胞。关键字basis是用来添加原子的,每使用一次添加一个。它的参数是分数坐标(0.0 = x,y,z 1.0)。一个basis原子在晶胞中的位置向量是三个基矢的线性组合:x=bx*a1+by*a2+bz*a3.(bx,by,bz是basis关键词给出的分数坐标)【按原胞的基矢定义位置】

  【scale参数】决定在模拟盒子中布置单胞时,它的实际尺寸。也就是说,将该参数作为倍增因子(factor)作用在单胞上,从而可以获得所需尺寸的晶格。

  【scale参数】的意义依赖于你在模拟过程中使用的单位类型。对于LJ之外的所有单位类型,参数scale都是由相应长度单位决定。举例来说,对于real或metal的单位类型,如果立方单胞的边长为1.0,指定scale=3.52,那么就会创建一个间距3.52A(一个格点单位是3.52)的立方晶格。【其实就是晶格单位和时间单位的对应关系:实际单位* scale=格点单位】

  对于LJ单元,scale是Lennard-Jones约化数密度(rho*)。Lammps通过公式factor^dim= rho/rho*将这个值转变为倍增因子(factor)。rho =N/V(数密度=数目/体积),v=晶格单元的体积,n=晶胞中基本原子的数量,dim根据模拟的维度等于2或者3。实际上这表明如果在模拟中使用的lj粒子的sigma=1.0,那么晶格中的粒子将会有预期的约化密度。【设置时要根据格点类型算出密度来】

  origin选项指定在将单胞布置在模拟盒子中的时候,如何对其进行上浮或者平移。参数x,y,z是分数值(0.0 =x,y,z 1.0),意思是说按着相应方向上的晶格间距的分数倍进行平移或者上浮。【也就是上浮或平移晶格的几分之几】

  orient选项指定在将单胞布置在模拟盒子中的时候,如何对其进行旋转。【其实是设置坐标轴放在哪个晶格方向上】参数dim是模拟盒子3个坐标轴中的一个。另外3个参数定义一个晶体学方向,你的单胞将会沿着那个方向摆放;需要指定为整数,比如orient x 2 1 0的意思就是说模拟盒子的x方向是沿着晶格的[210]方向。你所指定的三个晶格方向必须是相互正交的,并且满足右手定则,即X叉乘Y的方向与Z相同。需要注意的是,这里的介绍只对正交晶格是适用的。如果你要使用custom类型定义非正交的边矢量a1,a2,a3,那么你可以认为orient选项定义了3x3的旋转矩阵,并将其作用于a1,a2,a3对最初的单胞进行旋转,从而得到新的摆向。【非正交体系的旋转问题使用时要测试;或者源码解析下看看具体数学表达式,手册上说的含糊,不好理解,其实就是晶体结构都是定的,其实意思就是如何在晶体上切块,切一个什么样的块】

  LAMMPS命令可以使用沿着x,y,z三个方向的晶格距离作为距离的单位。比如使用命令region创建尺寸为10x20x20的方块,其中的10就是说沿着x方向的长度是10倍的晶格距离。

  spacing选项用来直接设置3个晶格间距。所有的参数都不能是0(如果是二维模拟,将dz设置为1.0)。【这个只是在特殊情况下使用】


上一篇:中核战略规划研究总院    下一篇:数学常识中什么是系数?