【LAMMPS翻译系列】create_atoms命令

create_atoms命令用来在晶格阵点上创建原子,或创建一个单独的原子,或创建一些列随机原子。

使用语法

create_atoms type style args keyword values ...
  • type:要创建的原子类型(用1到N的数字代替)
  • style:box or region or single or random
    • box: args = none
    • region: args = region-ID
      • 只有在region内的原子才会被创建
    • single: args = x y z
      • x,y,z为要创建原子的坐标(以原胞为单位)
    • random: args = N seed region-ID
      • N:要创建的原子数
      • seed:随机数,用作种子(正整数)
      • region-ID:在region内创建原子,如果设置为NULL,则在整个模拟盒子内创建。
  • keyword:basis or remap or units
    • basis values = M itype
      • M:哪个基本原子
      • itype:该基本原子的类型(从1到N)
    • remap value = yes or no
    • units value = lattice or box
      • lattice:以晶格距离作为单位
      • box:以模拟盒子作为单位

使用举例

create_atoms 1 box
create_atoms 3 region regsphere basis 2 3
create_atoms 3 single 0 0 5

使用介绍

该命令用来在晶格阵点上创建原子,或创建一个单独的原子,或创建一些列随机原子。也可以用命令read_dataread_restart通过直接给出原子坐标的方式创建原子。在使用该命令之前,模拟盒子必须是存在的(使用create_box命令创建),同时晶格也必须已经被定义(使用lattice命令)。但对于创建single类型且以box为单位的原子,或创建random类型的原子时,不需要先定义晶格。

box类型:该命令在整个模拟盒子中所有的晶格阵点上创建原子。如果你的模拟盒子是周期性的,你应该确保其尺寸是晶格距离的整数倍,从而避免在盒子边界处可能存在的原子重叠。如果你的盒子是周期性的,并且在某个方向上盒子的尺寸是晶格距离的整数倍,那么LAMMPS会在边界上只放置一个原子(译注:边界上的原子不会丢失或在两个面同时出现)。

region类型:该命令会在region-ID所指定的区域与模拟盒子相交的公共区域内创建原子。参考命令region,可以了解更多细节。需要注意的是,这里定义的区域可以在模拟盒子内,也可以在模拟盒子外。还需要注意,即便你在这里定义的区域与周期性模拟盒子的尺寸是一样的,LAMMPS所执行的逻辑跟box类型也不一样,就是说并不能像box类型那样确保在边界上只有一个原子。所以如果你希望达成像box类型那样的效果,你最好使用box类型,或者就是非常精确的调整region的尺寸来获得你想要的原子。

single类型:将指定坐标的原子添加到系统中。这对于调试或者创建一些列手动添加的原子会比较有用。

random类型:在系统中按着随机坐标产生N各原子,这对于产生无定形系统会比较有用。根据指定的随机种子数seed,程序会依次创建N个随机原子。这N个随机原子的坐标与所使用处理器的个数没有关系。另外,如果region-ID设置为NULL,那么创建的原子会随机填充模拟盒子的任何位置;如果指定了特定的region-ID,那么原子就只会随机填充在模拟盒子与region-ID所共同指定的区域。

注意:使用random类型产生的原子很有可能是相互重叠的(译注:或者是距离较近,不太符合实际物理),从而导致计算出较大的力或能量。因此,在你开始进行正常的动力学计算时,最好先使用minimize对体系进行能量最小化,或先使用fix nve/limit进行动力学计算。

该命令是向已经存在的体系中继续添加原子。换句话说,该命令可以多次使用,从而可以在模拟盒子中创建多组原子。举例来说,通过交错地使用create_atoms命令和lattice命令(配置为不同晶向orientations),就可以创建晶界;联合使用create_atoms命令和delete_atoms命令,可以创建非常复杂的体系。create_atoms命令也可以在已经读入的体系中继续创建原子。在所有列举的这些情况中,都需要注意不要让新创建的原子与已经存在的原子重叠。可以使用delete_atoms命令来处理重叠原子的问题。


basis关键字:用来为要创建的特定的基本原子指定原子类型。参考lattice命令,了解如何为原胞定义基本原子。默认情况下,所有创建的原子都被指定为参数type说指定的原子类型。

remap关键字:仅仅在single类型下使用。如果将其设置为yes,那么当指定的位置在模拟盒子外面时,它会将其挪到盒子里面,就好像在相应的方向上设置了周期性边界条件一样。如果将其设置为no,就不会进行类似上面的调整,就是说如果创建原子的位置在模拟盒子外面,那么就不会创建原子。

units关键字:用来设定要创建的single类型的那个原子的坐标的单位。若取值box,坐标的单位就与命令units说指定的距离单位相同,比如units设为real或metal时,其单位为Angstroms。若取值lattice,坐标是以晶格距离为单位的。


所创建的原子的ID是遵从如下规律:所有待创建原子的ID是连续的,其中第一个被创建原子的ID是紧接着体系中已经存在原子的最大的ID。使用不同数目的处理器进行计算时,不能保证某个特定的原子会分配到同样的ID。

除了原子的ID之外,原子类型、坐标以及其他性质都设为默认值。具体到有哪些性质,是由atom style决定的。参考setvelocity命令,了解如何改变这些默认值。

  • charge = 0.0
  • dipole moment magnitude = 0.0
  • diameter = 1.0
  • shape = 0.0 0.0 0.0
  • density = 1.0
  • volume = 1.0
  • velocity = 0.0 0.0 0.0
  • angular velocity = 0.0 0.0 0.0
  • angular momentum = 0.0 0.0 0.0
  • quaternion = (1,0,0,0)
  • bonds, angles, dihedrals, impropers = none
sphere类型会将默认的粒子直径和密度设置为1.0,那么粒子对应的质量就不是1.0,而是PI/6 * diameter^3 = 0.5236.

ellipsoid类型会将默认的粒子形状设置为(0.0 0.0 0.0),密度设置为1.0,也就是一个点粒子,而不是真正的ellipsoid,并且质量为1.0。

peri类型会将默认的体积和密度设置为1.0,因此粒子的质量也就是1.0。

可以使用set命令来重写这些默认设置。

使用限制

在使用该命令之前,必须已经定了atom_style

相关命令

lattice, region, create_box, read_data, read_restart

默认设置

  • basis的默认值是所有创建的原子都分配参数type所指定的原子类型。
  • remap的默认值是no。
  • units的默认值是lattice。

标签: lammps, lammps翻译

相关文章推荐

添加新评论 (无需注册,可直接评论)

已有 8 条评论

  1. 懒姆噗四号

    博主您好:
    您翻译过create_atoms命令的,在最新版LAMMPS的此命令中,377-378页
    有关于create_atoms 1 box var v set x xpos set y ypos的描述
    是关于建立 var set 建立sin函数原子边界的
    还配了图和相关代码
    但是把代码运行的时候会报错:
    ERROR: Variable for create_atoms is invalid style (../create_atoms.cpp:251)
    我认为create atoms命令中定义的几个变量已经是equal类型的变量了,不知道为什么会报错?
    诚心求教

    1. justaccident

      variable xx internal 0
      variable yy internal 0
      即可

    2. 抱歉,我还没用过这个命令的新功能,你自己再在网络上找找看。

  2. cxt

    还有pair_style相关几个好像看看您的翻译

  3. cxt

    翻译的很不错哦

  4. THX

    偶然发现这个网站,好有用!谢谢!

  5. 很好的翻译,比起只看英语来的更加准确,希望有对Orient的翻译,自己看过了,但是翻译下来有点吃力啊!

    1. 我爱搜集网博主

      我后面会翻译的,但没有时间表。:)