|||
fix ID group-ID style args
ID : 用户指定的fix命令编号,当使用unfix取消时被用到
group-ID : 原子编号
style : 实现的功能
ave/time 对时间平均
fix 是整个lammps中最复杂最核心的指令,一切场景的设置都需要通过其来实现。比如说改变原子的速度、位置,控制温度的变化,施加取向力,改变边界条件,选择系综等等。lammps本身已经包含了相当多的功能,同样,也可以自己增加新的需求。
fix可以在脚本的设置的任意位置使用,也可以添加多个fix来实现想要的效果。如果stage和timestep都相同,将会按顺序执行每个fix指令。
unfix是唯一的取消fix设置的方法,哪怕是相似的方法也不会去取消上一个。比如说我先设定fix nve再fix nvt,此时两个并存。但是,如果设定了一个新方法,ID和style和上一个一样,可能参数不一样,这时候上一个就会被删除了。(老老实实的fix然后unfix吧,因为这些trick其实不是很靠谱)
一个比较特殊的情况是,很多fix style将会被隐式地储存在restart的文件里,再次载入的时候就可以非常方便地继续了。当然需要在载入restart文件后改变fix的话,需要参考read_restart命令文档中。
######################################################################################
fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2...keyword args..
Nevery : 每隔多少步取一次值
Nrepeat : 取多少次
Nfreq : 多少timestep算一次平均值
首先我们先需要认识到这个命令是干什么的。假如我计算径向分布函数,那么对于每一个timestep,那么都会有一个径向分布函数产生。意味着假如我run 100000,timestep 0.05的话,会输出100000×N bin的数据(bin是compute rdf里一个参数,意思是每增加bin的直径,在这个球内统计原子的数目。bin越多,相当于球壳越多)。第一是,讲道理出这么多数据没什么用,所以最好每隔多少时间输出一个数据;第二是,由于原子的涨落太大,所以精确到一个时刻去研究问题反倒是不准确的。我们必须去用统计的角度看待微观构象,因此取平均就是最简单的处理方法。
那么以一个什么样的规则取平均去计算rdf呢,这里就用到了fix ave/time command。
这里面最难懂的三个参数是N开头的。Nfreq意思是,每隔多少个timestep去计算一次平均,这是对于compute命令来说最关键的。比如说我run 100000,timestep 0.05,Nfreq = 100,那么,就会有(100000*0.05/100)个径向分布函数输出。
Nrepeat和Nevery联合起来指明怎样取平均。还是看上例,对于Nfreq的间隔中难道我们要对每一个时刻都取平均么?当这个过程中体系未平衡的话,显然没有意义。这样的话,我们只需要对最后几个时刻取平均就行。Nrepeat是说取最后几个时刻的值,Nevery是取得这几个值间隔是多少。假如说我Nrepeat = 5,Nevery = 3,Nfreq = 100,对于第一次计算rdf,那就是意味着我要对倒数五个数取平均,哪五个呢,100,97, 94,91, 88 。懂了吧,那么下一次计算取哪几个值呢,200,197, 194,191,188 。至于计算的时候是先平均原子坐标再计算还是先计算在平均函数值,那就暂时不知道了。(Nevery×Nrepeat<=Nfreq)
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-27 06:16
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社