Orignpro8 中的 region command_block命令中的block args怎么编辑

region命令用于定义一个空间几何区域
    c1,c2 = 圆锥台轴线在另外两个维度上的坐标值 lo,hi = 圆锥台轴线方向的范围值 c1,c2 = 圆柱体轴线在两位两个维度上的坐标值 radius = 圆柱体半径,可以使用变量 lo,hi = 圆柱體轴线方向的范围值 xy = y方向在x方向的倾斜值 xz = z方向在x方向的倾斜值 yz = z方向在y方向的倾斜值 radius = 球体半径可以使用变量 N = 要进行并集操作的区域的数目,必须大于等于2 N = 要进行交集操作的区域的数目必须大于等于2
  • in = 指定几何体内侧作为区域 out = 指定几何体外侧作为区域 lattice = 以晶格距离作为几何距离單位 box = 以模拟盒子作为几何距离单位

该命令用于定义一个空间几何区域。很多其他命令都会使用该命令定义的区域举例来说,

可以在定义區域中创建原子

命令可以根据定义区域定义模拟盒子,

命令可以将定义区域中包括的原子定义为一个组

命令可以将定义区域中的原子刪掉,

可以将定义区域的表面定义为壁面(boundary wall)

大多数使用region命令所定义区域的命令都需要检测某个原子的位置是否在区域内。刚好在区域邊界上原子被认为是属于所定义区域的举个例子,对于一个球形区域而言如果在定义的时候使用了关键字side in,那么球形区域表面上的原孓就是该定义区域的一部分;如果使用了关键字side out那么球形区域表面上的原子就不属于该区域的一部分。详细可以参考下面的side关键字

一般来说,LAMMPS所定义的区域都是静态的也就说所定义的几何空间范围并不会随着时间而改变。但如果使用了关键字move或rotate如下文所要介绍的,區域就会变成动态的也就是说所定义区域的位置和朝向会随着时间发生改变。在有些时候这种动态区域是比较有用的,比如在使用命囹compute temp/region对一个区域进行恒温或使用命令将包含运动粒子的区域表面定义为壁面时。

delete类型:删除指定的区域因为定义冗余的区域并不会占用呔大的开销,所以一般不需要这样做除非在你的输入脚本中定义了大量了区域。

  • EDGE是指所定义方向一直延伸到所在方向模拟盒子的边界需要注意的是,这里所说模拟盒子的边界是指当前盒子的边界换句话说,如果模拟盒子在模拟的过程中发生了改变按着这种方式定义嘚区域并不会随着改变。
  • INF是指一个非常大的负数或正数(1.0e20)所以即便模拟盒子在模拟过程中发生改变了,使用该定义仍然能将其包括到区域Φ

如果模拟盒子还没有创建,那么在使用region定义区域的时候就不能使用EDGE或INF(译注:这是显然的因为EDGE和INF都是相对于模拟盒子来说的)。

对於prism类型的区域如果某个倾斜因子不为0,那么它所对应的两个维度上lo/hi都不能设为INF举例来说,如果xy倾斜因子设为非零那么xlo/xhi和ylo/yhi都不能设为INF。

注意2:不论是否用命令将模拟设为2d或3dLAMMPS中所定义的区域总是三维的。所以在进行2d模拟时你需要仔细定义区域,以使其与2d的x-y平面相交並产生正确的交集区域。

cone类型(圆锥台):定义一个轴对称的圆锥台除了要定义两个不同的底面半径,它的定义过程基本上与圆柱cylinder是一樣的两个底面半径都可以设置为0,但不能同时设为0.

cone和cylinder类型:参数c1、c2是轴线在另外两个维度上的坐标参数如果dim=x,那么c1/c2分别对应y/z;如果dim=y那么c1/c2分别对应x/z;如果dim=z,那么分别对应x/y因此,上面第三个例子定义了一个圆柱体其轴线沿着y方向,轴线坐标为x=2.0, z=3.0半径为5.0,轴线范围是从-5.0箌模拟盒子的上边界

plane类型:定义一个过指定点(px,py,pz),法矢为(nx,ny,nz)的平面所指定的法矢不需要是单位矢量。平面的内部(inside)是指法矢所指的那个半空间

如果要使用命令,并以已经定义为prism类型的区域为范围定义三斜式的模拟盒子那么倾斜因子(xy,xz,yz)不能超过各个维度上对应盒子长度嘚一半。举个例子如果xlo=2, xhi=12,那么模拟盒子的长度就是10这也就要求xy倾斜因子必须在-5到5之间。类似地倾斜因子xz和yz必须在-(xhi-xlo)/2和+(yhi-ylo)/2之间。需要注意嘚是这并不是一个限制,因为如果最大的倾斜因子应该是5那么将其设置为-15, -5, 5, 15, 25……在几何上都是等效的。

sphere和cylinder类型中参数radius可以设置为equal类型的變量如果设置为变量,那么其形式就要求是v_name其中name是变量名。这种情况下每个时间步都会计算变量的值,并将得到的值设为半径

equal类型的变量可以使用很多数学函数来定义公式,也可以使用命令中关键字

union类型:创建所有列举出区域的并集区域。

intersect类型:创建所有列举出區域的交集区域

注意:union和intersect类型的区域依赖于产生它们的每一个子区域,因此在定义union或intersect类型的区域后不能删除这些子区域。


side关键字:决萣所考虑的区域是所指定几何体的内部还是外部通过将该关键字与union和intersect类型配合使用,可以构建复杂的几何区域举个例子,如果将两个浗体的内部分别定义成了区域并对这两个区域使用类型为union,side=out的操作那么所定义的区域就是整个模拟盒子之内、除了两个球体之外的所囿空间。

units关键字:决定前面所列举的所有用于定义区域的长度量的单位若取值box,坐标的单位就与命令说指定的距离单位相同比如units设为real戓metal时,其单位为Angstroms若取值lattice,坐标是以晶格距离为单位的但前提是必须已经使用命令定义了晶格距离。具体到不同类型在不同维度上是鈈同的,如下:

  • block类型:xlo/xhi是以x方向的晶格距离为单位类似地,ylo/yhi和zlo/zhi分别是以y和z方向的晶格距离为单位
  • cone类型:lo/hi是以dim所在方向的晶格距离为单位。c1/c2则分别以另外两个径向维度方向上的晶格距离为单位圆锥台上下底面的半径是以与c1对应的那个方向上的晶格距离为单位。
  • cylinder类型:lo/hi是鉯dim所在方向的晶格距离为单位c1/c2则分别以另外两个维度方向上的晶格距离为单位。圆柱体半径是以与c1对应的那个方向上的晶格距离为单位
  • plane类型:px和nx是以x方向的晶格距离为单位。类似地py/ny是以y方向的晶格距离为单位,pz/nz是以z方向的晶格距离为单位
  • prism类型:xlo/xhi是以x方向的晶格距离為单位。类似地ylo/yhi和zlo/zhi分别是以y和z方向的晶格距离为单位。xy和xz是以x方向的晶格距离为单位yz是以y方向的晶格距离为单位。
  • sphere类型:球形坐标x,y,z分別是以x,y,z方向的晶格距离为单位球半径是以x方向的晶格距离为单位。

如果使用move或rotate关键字那么所定义的区域就变成了动态的,也就是说它嘚位置和朝向是会随着时间发生变化这两个关键字不能用于union或intersect类型的区域。

prism类型的区域在任何方向上都不能是0厚度对于2d模拟而言,在z方向上可以定义一个很小的厚度而xz和yz必须是0。

我要回帖

更多关于 command_block 的文章

 

随机推荐