精华内容
下载资源
问答
  • lammps建模

    2020-12-21 23:29:01
    大家都清楚,在用lammps进行模拟计算前,建模这个步骤是必不少的。...lammps命令建模的主要步骤可以描述为:用units 命令定义单位lattice 命令定义单胞region以及create_box命令定义区域和创建盒子create_ato...

    大家都清楚,在用lammps进行模拟计算前,建模这个步骤是必不少的。

    总的来讲,我们可以通过两种方法来完成建模操作。一是通过lammps的命令建模;二是通过外部的程序建模,然后用lammps的read_data 命令将模型读入。

    lammps命令建模的主要步骤可以描述为:用units 命令定义单位

    lattice 命令定义单胞

    region以及create_box命令定义区域和创建盒子

    create_atoms 命令创建原子

    今天我主要详细讲解lattice命令的语法:

    latticestylescalekeywordvalues ...

    style可以是 none, sc, bcc, fcc, hcp, diamond, sq,sq2, hex 或者 custom

    scale是style选项下的参数,比如(当units ≠ lj 时)style填bcc, 那么scale就填体心立方的晶格常数a0的值(当 units 为lj 时,这里的scale就是电子密度值,使用其他units时,scale都是晶格常数)。

    需要注意的是,当指定了 lattice的scale之后,位于lammps输入脚本中关于长度的值,其单位就是scale(表示几倍scale长)。

    零个或更多个 keyword/value 键值对可以被添加

    keyword可指定为 origin, orient, spacing, a1, a2, a3或者 basis

    对于所建立的晶胞,我们都可以进行平移origin和旋转orient操作

    origin 配对的值是三个数字 (x y z) 意思是对单位晶胞里的所有原子的整体平移量,单位晶胞的楞长默认为1,x,y,z的值为偏移量和棱长的比值(0 <= x,y,z <1),缺省值为(0 0 0)。为了便于后续分析,以及避免建模边界原子重合,我们一般会给一个比较小的偏移量(0.1 0.1 0.1).

    orient 作用是旋转晶胞方向。盒子默认方向为(x 0 0 1) (y 0 1 0) (z 0 0 1),可以认为orient命令将晶胞的指定晶向旋转至模拟盒子的三条坐标轴,然后将晶胞在盒子里重新排布。orient配对的值格式为 dim i j k,其中dim的值是字母 ‘x’ , ‘y’ 或者’z’,表示空间的三条轴。i j k 为该轴指向向的晶向,其值为整数,例如“orient x 2 1 0” 意思是旋转过后模拟盒子的x轴将会指向 [210] 晶向。三个方向要求满足正交以及右手定则。做旋转处理时,盒子原本的周期性不能被保证,如果仍然要保持其周期性,则先建模运行,然后看lammps的屏幕输出lattice spacing in x,y,z后的值,记为sx,sy,sz。然后将建立的模型放到ovito中切片观察,计算出xyz各个方向上的最小排布周期长度,记为slx,sly,slz。他们必须满足如下关系:

    sx*m1=slx*n1

    sy*m2=sly*n2

    sz*m3=slz*n3

    其中m1,2,3以及n1,2,3均为整数,于是取盒子大小为(sx*m1 sy*m2 sz*m3)

    旋转操作一般被用来建立不同方向的界面。

    spacing配对的值是 dx dy dz,为两个单胞之间的间距

    如果我们的style取的是custom,那么我们可以通过a1,a2,a3 和 basis 这两个关键词来指定基矢和单胞里的原子在基矢中的定位

    a1,a2,a3 各自配对的值为(x y z)意思是a1 a2 a3这三个基矢的值,用来定义单胞的基矢。缺省值对于三维的sc、fcc、bcc和diamond类型的原子,他们的棱长默认为1个单位,默认的基矢为a1 (1 0 0);a2 (0 1 0);a3 (0 0 1)。hpc类型a1 = 1 0 0;a2 =0 sqrt(3) 0;a3 = 0 0 sqrt(8/3)。

    basis 配对的值是(x y z),表示在基矢定义的空间的一个位置,如有多个位置,则定义多个basis

    对于三维的sc、fcc、bcc和diamond类型的原子,这些已有的类型不需要指定基矢和basis,但是我们可以用custom的style加上基矢和basis的参数来建立同样的模型。bcc, fcc, sc的基矢为a1 = 1 0 0;a2 = 0 1 0;a3 = 0 0 1,bcc默认basis原子(0 0 0)(0.5 0.5 0.5),fcc的basis (0 0 0)(0 0.5 0.5)(0.5 0.5 0)(0.5 0 0.5), sc 的basis(0 0 0)。hpc类型的基矢a1 = 1 0 0;a2= 0 sqrt(3) 0;a3 = 0 0 sqrt(8/3)。

    展开全文
  • 内部建模内部建模,即使用LAMMPS提供的命令建立模型。这种方法主要用于构建比较简单和标准的体系。相关命令主要有4个:lattice:定义晶格类型;region:定义模拟盒子的大小;create_box:创建模拟盒子;create_atoms...

    建模是进行材料模拟的第一步,这里对LAMMPS常用的建模方法进行总结(我平时用到的,难免不全面)。

    概况来说,建模方法有两种:内部建模和外部建模。

    内部建模

    内部建模,即使用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最基本的格式,只包含原子坐标,而不包含键能键角等参数,一般的合金体系是这种类型。

    5627dc76ce7a2bbc2a403922cfc7ef59.png

    上面的注释已经比较明确了,不多解释。更多可以参考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!)。

    因为这种方法因模型差异很大,所以这里也不做过多介绍了。

    展开全文
  • 我想问几个关于LAMMPS建模的基本问题。我知道可能有点简单,但我真的是认真查看过Manual中相关的命令说明之后,仍有一些疑问。我自己想了很久,也问过很多人,但是还是没有解决。命令来自一个很基础的LAMMPS例子,该...

    各位版主、大神:

    你们好。我想问几个关于LAMMPS建模的基本问题。我知道可能有点简单,但我真的是认真查看过Manual中相关的命令说明之后,仍有一些疑问。我自己想了很久,也问过很多人,但是还是没有解决。

    命令来自一个很基础的LAMMPS例子,该例子的全部命令如下:

    # Find minimum energy fcc configuration

    # Mark Tschopp, 2010

    # ---------- Initialize Simulation ---------------------

    clear

    units metal

    dimension 3

    boundary p p p

    atom_style atomic

    atom_modify map array

    # ---------- Create Atoms ---------------------

    lattice  fcc 4

    region box block 0 1 0 1 0 1 units lattice

    create_box 1 box

    lattice fcc 4 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1

    create_atoms 1 box

    replicate 1 1 1

    # ---------- Define Interatomic Potential ---------------------

    pair_style eam/alloy

    pair_coeff * * Al99.eam.alloy Al

    neighbor 2.0 bin

    neigh_modify delay 10 check yes

    # ---------- Define Settings ---------------------

    compute eng all pe/atom

    compute eatoms all reduce sum c_eng

    # ---------- Run Minimization ---------------------

    reset_timestep 0

    fix 1 all box/relax iso 0.0 vmax 0.001

    thermo 10

    thermo_style custom step pe lx ly lz press pxx pyy pzz c_eatoms

    min_style cg

    minimize 1e-25 1e-25 5000 10000

    variable natoms equal "count(all)"

    variable teng equal "c_eatoms"

    variable length equal "lx"

    variable ecoh equal "v_teng/v_natoms"

    print "Total energy (eV) = ${teng};"

    print "Number of atoms = ${natoms};"

    print "Lattice constant (Angstoms) = ${length};"

    print "Cohesive energy (eV) = ${ecoh};"

    print "All done!"

    我的问题是:

    (1)lattice fcc 4 和 lattice fcc 4 orient x 100 orient y 0 1 0 orient z 0 0 1这两句有什么区别?效果不是一样的么?为什么在lattice fcc 4建立格子之后,还要有lattice fcc 4 orient x 100 orient y 0 1 0 orient z 0 0 1这句?意义何在?

    (2)replicate 1 1 1这句不相当于没有复制么?为什么要写这条命令呢?意义何在?

    (3)如果我只想建模,不进行任何计算,然后想在LAMMPS中导出该模型,最后在VMD中查看该模型。那么在整个代码的最后一行需要添加一个怎样的dump语句?(我查过手册中的dump语句,也试过很多次自己写,但是都不对。)

    跪求各路大神帮助。小弟在此谢过!

    展开全文
  • region命令lammps建模中的作用非常大,既可以用来建模,也可以用来选择特定区域的原子。 region命令主要功能是划定一个特定区域,形状可以为长方体、圆柱体、球体等。 lammps提供了一个region union命令,可把多个...

    大家好,我是小马老师。
    本文介绍lammps基础知识:region union的使用方法。
    region命令在lammps建模中的作用非常大,既可以用来建模,也可以用来选择特定区域的原子。
    region命令主要功能是划定一个特定区域,形状可以为长方体、圆柱体、球体等。
    lammps提供了一个region union命令,可把多个region区域合并为一个区域。
    使用这个命令,可以创建复杂形状的区域,语法命令格式为:

    region ID union N reg-ID1 reg-ID2 ...
    

    N为合并区域的数量,后面为合并区域的ID。
    如下图模型,可分别建出三个区域,通过union合并为一个区域,然后再生成原子。
    在这里插入图片描述

    代码为:

    region Cu1 block INF -15 INF INF INF INF units box
    region Cu2 block -15 15 INF 0 0 INF units box
    region Cu3 block -15 15 0 INF INF 0 units box
    region Cu union 3 Cu1 Cu2 Cu3 
    create_atoms 1 region Cu
    

    使用region union命令,配合replicate可创建复杂的模型:
    在这里插入图片描述

    参考代码:

    lattice fcc 3.61
    region Cu11 block INF -10 INF INF INF INF units box
    region Cu12 block -10 10 INF 0 0 INF units box
    region Cu13 block -10 10 0 INF INF 0 units box
    region Cu1 union 3 Cu11 Cu12 Cu13 
    create_atoms 1 region Cu1
    region Cu21 block 10 INF INF INF INF INF units box
    region Cu22 block -10 10 0 INF 0 INF units box
    region Cu23 block -10 10 INF 0 INF 0 units box
    region Cu2 union 3 Cu21 Cu22 Cu23 
    create_atoms 2 region Cu2
    replicate 1 4 4
    

    公众号案例代码以及学习交流,请加QQ群:754749935
    在这里插入图片描述

    扫描关注微信公众号:lammps加油站。
    在这里插入图片描述

    展开全文
  • lammps建模方法,即生成data文件

    千次阅读 2020-12-21 23:28:55
    本帖最后由 Kangtor 于 2020-7-20 21:22 编辑本文目的:汇总生成lammps data文件的方法,并“持续”对其进行更新解释。本文说明:(1)看完了公社中有着各种零零碎碎的方法,我希望能够将其汇总起来。这样利于本人之后...
  • 其实,lammps也可以进行分子建模,对于一些比较简单的分子模型,使用lammps建模也比较方便。 本文以水球模型为例,介绍lammps分子类结构建模方法。 lammps创建分子的原理是把分子当做一个原子添加到体系中,和添加...
  • 本文介绍使用lammps建立球壳模型的方法,如下图所示: 内核为Al球体,外面包裹一层Al球壳。 主要使用region sphere命令。 1.内核建模 使用region sphere命令生成一个球体区域 region ball_in sphere 0 0 0 60 units ...
  • 这种管道类模型,可以使用lammps自带的region cylinder命令构建,命令相对复杂,对新手来说并不友好。 本文介绍一种相对简单的管道类模型建模方法,用到的软件为Atomsk。 在Atomsk中,命令roll可将模型“卷”成一定...
  • 在前面的教程中,我们已经知道,lammps建模方法有两种,可以使用lammps自带的建模命令建模,也可以使用第三方软件建模。 如果使用第三方软件建模,必须将模型文件转换为lammps可以识别的data文件,不同的建模方式...
  • 无论是对于新手还是有经验的操作者,LAMMPS输入文件的构建都是很费...它是一个通用的分子构建器和力场数据库系统,适用于LAMMPS建模。该程序创建了一种简单的文件格式来存储分子定义和力场,即模板LT。LT文件包含...
  • 本文以倾斜的圆锥刀具建模为例,介绍rotate命令的用法,模型如下图所示: 圆锥刀具由两部分组成:底部圆锥+上部圆柱,因此,可分两个区域单独建模建模完成后旋转一定的角度即可。 具体建模方法如下: (1)建立...
  • lammps模拟中,常用的建模方法有两种,一种是完全使用lammps自带命令建模,另一种是使用read_data命令读入其它软件模型。 在lammps模拟中,有时候也会同时使用以上两种方法:使用read_data读入模型文件后,再用...
  • 使用lammps建模,首先要确定xyz坐标轴对应的晶向指数。 以面心立方晶体[11-2]孪晶面为例,孪晶面上下两侧的xyz轴对应的指数可以设为[11-2][111][1-10]和[-1-12][111][-110]。 设置方法并不是唯一的,根据需要xyz可以...
  • 本文将介绍一种球壳分子模型的lammps建立过程,本教程适合于新手,同时希望专业前辈提出不足。 如下图为本文建立的球壳结构模型。 内核为Al原子,外层包覆着一定厚度的Al原子。 (这里以Al原子为例,读者可自定义...
  • 原创公众号:LAMMPS交流站javascript:void(0); 纳米管比人的头发丝还要细1万倍,而它的硬度要比钢材坚硬100倍。它可以耐受6500°F(3593℃)的高温,并且具有卓越的导热性能。纳米管既可以用作金属导电体,比金的...
  • 核壳结构在先进复合材料的发展中具有特殊...首先我们要理清建立核壳结构的基本思路,若采用region命令的,则需创建两个区域。 1.内核区域 2.壳层区域 接着就需要在两个区域内使用create_atoms命令填充原子。 ...
  • 今天给大家介绍一种比较有意思的lammps建模方法。 如下图所示: 用到的软件有:Atomsk、python、Ovito。 建模原理:Atomsk可根据掩码文件(mask.txt)对模型进行处理,类似于photoshop中的蒙版。 掩码文件是一个包含...
  • 对于一般的模型,使用lammps自带的region、lattice custom等命令就可以完成建模。 对于一些重复单元,lammps提供了一个复制命令,如果灵活使用可大大节省建模时间。 这个命名就是今天要介绍的replicate命令。 ...
  • 力场(命令:pair style, bond style, angle style, dihedral style, improper style, kspace style)对相互作用势: Lennard-Jones, Buckingham, Morse, Born-Mayer-Huggins, Yukawa, soft, class 2 (COMPASS), 氢...
  • 使用lammps进行合金模拟,有多种建模方式,比较常见的是替换原子法。 替换原子法是指先生成一种合金元素,然后以一定的比例替换为其他合金元素,这种方法在之前文章中已有详细介绍。 当合金元素较多,在进行原子替换...
  • lammps教程:group命令详解

    千次阅读 2021-01-30 08:28:33
    lammps教程:group命令详解(1)配合region使用,把某一区域的原子归入到一个组中。(2)配合type命令,可以将多种类型的原子归为一组(3)配合原子id可将特定的原子归入到一组 在lammps模拟过程中,group基本上是...
  • lammps中建立高熵合金模型主要流程为: (1)确定大体的晶格结构,是fcc还是bcc,这些可通过查文献获得。 (2)确定晶格常数,以合金元素中最大的晶格常数即可,也不是必须选择最大晶格常数,选择其它数也可以。...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 124
精华内容 49
关键字:

lammps建模命令