计算化学公社

 找回密码 Forget password
 注册 Register
Views: 21130|回复 Reply: 3
打印 Print 上一主题 Last thread 下一主题 Next thread

[Lammps] 【转】LAMMPS中fix ave spatial空间平均命令中文版

[复制链接 Copy URL]

60

帖子

0

威望

490

eV
积分
550

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
LAMMPS命令:fix ave/spatial
【转】fix ave/spatial command
(空间平均命令)
limey@kyxk
2008-11-30
(这个命令是看到lammps论坛有人翻译了一点,于是心血来潮也开始翻译这条命令,可是后来搁置了很长时间,今日突然想不能老这样搁着,于是就翻译完了。)
语法:
fix ID group-id ave/spatial Nevery Nrepeat Nfreq dim origin delta value1 value2 ... keyword args ...
例子:
fix 1 all ave/spatial 10000 1 10000 z lower 0.02 c_myCentro units reduced
fix 1 flow ave/spatial 100 10 1000 y 0.0 1.0 vx vz norm sample file vel.profile
fix 1 flow ave/spatial 100 5 1000 y 0.0 2.5 density/mass ave running
命令描述:
用于计算几个时间步的瞬态单原子属性(per-atom quantities),并在选定的维度上按“层”平均,再将“层属性”(layer values)在较长时间尺度上平均。平均值可以被用于其他的输出命令(比如thermo_style custom),或者写入文件。
每个列出的属性值是独立计算其平均值得。group-id用于指定本命令作用的原子,这意味着只有在指定组(group)里的原子才对层平均有贡献。
每个列出的属性值可以原子的位置、速度、力场分量、质量密度、原子密度或者compute、fix等命令计算的单原子属性变量。对于后者(limey:指compute、fix计算的变量),必须是单原子属性值而不能是全局的值。如果你想对compute、fix等命令计算的全局值做时间平均,请参考fix ave/time命令。
产生单原子属性的compute命令是在类型中指明atom属性的命令;产生单原子属性的fix命令请参考相应的fix命令的手册;atom类型的变量是唯一可以用于本命令的变量,因为其他类型的变量都产生全局量。
Nevery,Nrepeat和Nfreq参数指明用于平均的层属性在哪些时间步计算。最终的平均值每Nfreq步产生一次。由相隔Nevery个时间步的Nrepeat个值平均得到。因此,Nfreq必须是Nevery的整数倍,Nevery必须非零(即使Nrepeat为1,Nevery也必须非零)。同时,用于计算两个相邻平均值的时间步不能重叠,即必须满足Nfreq > (Nrepeat-1)*Nevery。
例如,如果Nevery=2, Nrepeat=6, Nfreq=100,这意味着时间步100的值由时间步90, 92, 94, 96, 98, 100做平均得到。同样地,时间步200的值由时间步190, 192, 194, 196, 198, 200做平均得到。如果Nrepeat=1, Nfreq=100,则不做时间平均,命令产生的值仅仅是时间步100, 200的值。
每个单原子属性的平均是在一层原子中进行的。层是指在特定的维度dim上厚度为delta的区域。每隔Nfreq时间步,当平均开始执行,也就是单原子属性第一次计算的时候,层的数目和边界(limey:按照层的定义,一个box中有很多层)被计算出来。因此,如果模拟的过程中simulation box的大小发生改变,层的数目和边界也会发生改变。层的位置定义到相对于一个指定的原点(origin),原点可以是box在dim维度的上/下边界(upper/lower)、中心点(center)或者一个指定的坐标值。从原点(origin)开始,创建足够多的层用以充满整个box。在接下来的计算中,每个原子映射到一个层,超过最低/最高层的原子被计入最低/最高层。(limey:既然层已经充满了整个box,怎么会有超出的原子呢?——或者解释就是创建层就像搭积木一样,边界上的层不超出box,这样边界总可能有原子不在层里,如果box不能被划分为整数个层的话。另外,从描述上看,每个平均原子的层信息是不被记录的。)
对于立方simulation box,层是沿xyz坐标轴排列的切片。对于非立方(三斜)box,层是平行于box的斜面的斜切片。参见LAMMPS手册的region prism命令关于非立方box的讨论。设非立方box的边矢量为a,b,c。则x维层的层面与bXc(limey:向量叉乘)垂直;y维层的层面与aXc垂直;z维层的层面与aXb垂直。注意:为了准确定义层的位置和厚度,对于非立方box,units选项必须设成reduced。
原子属性(x,y,z,vx,vy,vz,fx,fy,fz)跟这些符号表示的意思相同。
density/number意味着计算每一层的原子密度,即每个原子的权重为1。density/mass意味着计算每一层的质量密度,即每个原子的权重为原子的质量。密度的结果用层的体积标准化,输出的单位是1/体积和质量/体积。
如 果属性值以“c_”开头,后面必须跟一个compute ID,且该compute必须在之前定义过。如果compute ID后面没有跟[],则计算出单原子标量;如果后面跟了[N],则计算单原子矢量的第N个分量。用户可以添加自己的compute类型到LAMMPS里。
如 果属性值以“f_”开头,后面必须跟一个fix ID,且该fix必须在之前定义过。如果后面没有跟[],则计算出单原子标量;如果跟了[N],则计算单原子矢量的第N个分量。注意一些fix命令只在特 定的时间步产生数值,这种情况必须与Nevery相容,否则会给出错误。用户可以添加自己的fix类型到LAMMPS里。
如果属性值以“v_”开头,后面跟的变量名必须在之前定义过。atom类型的变量可以引用热力学参数,或者调用其他的compute、fix或变量。这是产生空间平均单原子属性值的一般方法。
________________________________________

本命令的附加选项对命令执行有影响。

units关键字指定层厚delta以及origin(如果origin是坐标值的话)的单位。对于立方simulation box,units的三个选项都可以使用,对于三斜box,只能使用reduced选项。

box 选项将使长度单位与units命令(limey:注意不是units选项)指定的长度单位相同。比如对于units real/metal的情况,长度的单位是Angstrom。lattice选项使长度单位与晶格长度相同,这个选项需要之前有lattice命令指定。 reduced选项指归一化的长度,从0到1分别表示box的底面到顶面,这种情况下origin为0.5即表示在box三个方向的中点。 delta=0.1表示将box一个维度分成10层。

考虑一个非正方box,在x方向分层。不管box有多斜,origin为0.0表示起始层为box的bXc平面,origin为1.0表示起始层为box的bXc上表面。不管box现在的大小和形状,delta为0.1表示从0.0到1.0分10层。

norm关键字影响到每Nfreq步的输出结果如何平均出来。对于all选项,层属性对所有Nrepeat个采样点的所有原子进行平均,输出值是总量和/总原子数。或者说是对整个Nfreq步做平均。

指 定sample选项,层属性是对单个样本点进行平均(limey:空间平均),然后计算样本点的平均值(limey:时间平均,样本是由Nrepeat、 Nfreq指定的一个时间序列)。输出的值是该层对Nrepeat个样本平均值(limey:空间平均值)的平均。换言之就是平均值的平均 值。(limey:这么看来,all选项是把一个层内原子在所有时间序列上的属性值做平均。不过,如前所述,每个样本上指定层内原子会发生变化,似乎 sample选项的物理意义更明显一些。)

file关键字允许指定一个文件名。每Nfreq时间步,层的信息按照下列格式以文本的形式写入文件。第一行记下时间步和层数,下面写下层的信息,一行一层,包括层号(1-N),层中心点的坐标,层内原子数,一个或多个计 算值。每行有多少个数值取决于fix ave/spatial命令行中指定的值的数目。层内原子数和计算值是平均值。如果units关键字是box或lattice,输出的坐标值的单位为 units命令指定的单位。如果units关键字是reduced,输出的坐标值是归一化的。
ave关键字指明在将计算出的平均值打印到文件之 前,当前步计算出的ave/spatial平均值如何用前面输出的平均值求平均。(limey:每Nfreq步输出平均值,如果时间步是Nfreq的倍 数,则该时间步是输出结果的时间步,暂且叫它输出步。lammps在每个输出步将计算结果写入文件,ave关键字表明lammps不仅能对(n-1)*Nfreq时间步到n*Nfreq时间步的状态量进行平均,还可以调出以前的计算结果进行平均。)
如果ave设为one,则每个“输出步”都是独立输出结果的(这样的输出步没有记忆)。
如果ave设为running,则输出步的计算值还要与以前输出的计算值进行平均。这个时候每个层属性是之前写入文件的所有输出步的同一层的属性值。running平均从fix定义的那个时刻开始,要想从新开始平均,只能用unfix命令删掉这个fix,或者重新定义这个fix。
如果ave设为window,则输出步的计算值还要与指定的window时间窗中的计算值平均,因此需要重读M个值才能生成当前输出步的层属性。例如:如果M=3、Nfreq=1000,第10000步是一个输出步,这个输出步的输出结果是8000、9000、10000步各层的平均值。如果输出步太早(limey:没有足够的输出步在窗口里),则平均将在少于M个值上进行。
________________________________________

restart, fix_modify, output, run start/stop, minimize信息:本fix的信息不会写入二进制的restart文件,fix_modify的选项与本fix没有关系。
本fix计算一个全局向量用来存储属性值,这个向量能被多种输出命令访问。向量的值只能在输出步(Nfreq的倍数的时间步)被访问,因为只有这个时刻才执行平均。全局向量的长度为N=nlayer*nvalues,其中nlayer是层数,nvalues是fix计算的平均值的数目。被其他的输出命令访问时,只需要指定一个指数M,M会被映射到层id:I=M/nvalues+1,值id:J=M%nvalues+1。如果I(层号)超出现有的层数(即指数越界),则引用的该向量的第M个值将被置0.0(不会返回一个错误,因为层数是可变的,与simulation box的大小有关)。本向量的值是“强度量”,也就是说他们与模拟的原子数无关,因为计算过程中已经用原子数正则化了。(limey:1、就是说写入文件的那些值选都是可以引用的。2、不要用这个fix做广延量的平均。)
本fix的参数不会用在run命令的start/stop关键字中。本fix不会被能量最小化(minimize?)唤起。
限制:
如果ave关键字设为running或window,模拟过程中层数必须保持不变,这样指定的平均才可以完成。这是指simulation box不变或者units关键字设为reduced的情况。
相关命令:
compute, fix_ave/time
缺省值:
units=lattice, norm=all, ave=one, 没有文件输出

fix_ave_spatial空间平均命令.docx

20.59 KB, 下载次数 Times of downloads: 54

评分 Rate

参与人数
Participants 3
eV +14 收起 理由
Reason
出太阳了 + 4 赞!
Poly_Maohua + 5 GJ!
sobereva + 5

查看全部评分 View all ratings

19

帖子

0

威望

248

eV
积分
267

Level 3 能力者

2#
发表于 Post on 2020-2-4 18:29:12 | 只看该作者 Only view this author
感谢您的工作!另外想问一下,现在Lammps官网上,fix词条下查不到这个命令的介绍了,这个命令现在还能用么?

155

帖子

0

威望

2876

eV
积分
3031

Level 5 (御坂)

3#
发表于 Post on 2020-2-4 21:40:00 | 只看该作者 Only view this author
Poly_Maohua 发表于 2020-2-4 18:29
感谢您的工作!另外想问一下,现在Lammps官网上,fix词条下查不到这个命令的介绍了,这个命令现在还能用么 ...

可以试试fix ave/chunk

19

帖子

0

威望

248

eV
积分
267

Level 3 能力者

4#
发表于 Post on 2020-2-6 10:57:45 | 只看该作者 Only view this author
dark_cosmos 发表于 2020-2-4 21:40
可以试试fix ave/chunk

好的,谢谢!!

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-12 17:22 , Processed in 0.160582 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list