Simulation World(模拟小窝)分享 http://blog.sciencenet.cn/u/WTianSD Motivation, Persistence, Focus, Imagination; Life and Research;

博文

LAMMPS的lattice命令的翻译与理解

已有 17080 次阅读 2016-11-30 15:21 |个人分类:模拟技术|系统分类:科研笔记| LAMMPS

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


下面是对Lattice命令的介绍:


1. style none or scor bcc or fcc or hcp or diamond or sq or sq2 or hex or custom 【格点类型】

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

3. (可以不添加或添加多个keyword/value

keywordorigin[平移规则] / orient[取向规则] / spacing[晶格间距,不常用]  ---设置原胞在盒子中的平移或取向规则

Keyworda1 - a2 - a3– basis [只有custom类型可用] ---【复杂格点设置】

默认:格点是间距为一个单位的立方格子组成。



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


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


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


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


【几种原胞类型的特点】:

简单立方(sc,面心立方(fcc,体心立方(bcc,金刚石(diamond)是3D晶格,晶格间距为1晶格单位。六方密排晶格(hcp图片请百度)的基矢为a1=1 0 0, a2= 0 sqrt(3) 0, a3= 0 0 sqrt(8/3).

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 0a2 = 0 sqrt(3) 0hex晶格有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,bzbasis关键词给出的分数坐标) 【按原胞的基矢定义位置】


【原胞在模拟盒子中如何放置?】


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


scale参数】的意义依赖于你在模拟过程中使用的单位类型。对于LJ之外的所有单位类型,参数scale都是由相应长度单位决定。举例来说,对于realmetal的单位类型,如果立方单胞的边长为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)。【这个只是在特殊情况下使用】




https://wap.sciencenet.cn/blog-798373-1017682.html

上一篇:模拟小窝(SimulationWorld)网络课堂介绍
下一篇:计算•模拟论坛(分子模拟论坛)建站啦
收藏 IP: 218.4.189.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-20 03:47

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部