【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翻译

相关文章推荐

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

已有 12 条评论

  1. [...]create_atoms命令设置为默认值,还可以通过set mass或set density命令设置为新值。(译注:类原子质量是值一类原子具有相同的质量,而单原子质量是指不同原子有不同的质量。)[...]

  2. [...]dimension, create_atoms, region[...]

  3. [...]create_atoms,[...]

  4. [...]下表中列出了每种类型所包括的属性以及会用到这种类型的典型物理体系。所有的类型都包括坐标、速度、原子ID和原子类型。参考命令read_data、create_atoms和set,了解关于如何设置这些性质。[...]

  5. 懒姆噗四号

    博主您好:
    您翻译过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. 抱歉,我还没用过这个命令的新功能,你自己再在网络上找找看。

  6. cxt

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

  7. cxt

    翻译的很不错哦

  8. THX

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

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

    1. 我爱搜集网博主

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