fix命令简述及列表总结

LAMMPS中对模拟原子和盒子的操作基本上都需要利用fix命令来实现。fix本义为修理,该命令除了实现基本的NVE,NPT等系综的求解,而且还可以实现改变原子受力,增加约束,沉积原子和模拟盒子变形等操作,掌握fix命令对利用LAMMPS进行分子动力学模拟是非常重要的。

 fix 命令介绍

基本语法

fix ID group-ID style args

ID:用户指定的fix的的名字

group-ID:fix命令应用到一组原子的名字

style:fix命令的类型,根据需要选择

args:特定类型的参数

举例

fix 1 all nve
fix 3 all nvt temp 300.0 300.0 0.01
fix mine top setforce 0.0 0.0 0.0

说明

  1. 设置一个fix命令并应用到一组原子上。在LAMMPS中,fix可以是任何在最小化或时间步中应用到系统上的一个“操作”。例如,利用fix命令可以按照系综分布对原子的位置和速度进行更新,控制系统的温度,给特定的原子施加力,计算诊断等等。在LAMMPS中目前有上百个fix的类型,并且新的fix类型也在不断增加。

  2. fix在一个时间步中可能在不同的阶段起作用,如果两个fix在时间步的同一个阶段起作用,这两个fix会按照in文件中的顺序依次执行。

  3. fix的名字ID只能包括字母,数字和下划线。

  4. 利用unfix命令可以删除一个fix。unfix是唯一关闭fix命令的方法。指定一个新的相似类型的fix并不会使第一个fix命令失去效果。例如,在一个in文件中,同时使用了fix nve命令和fix nvt命令,系统中的原子将进行两次速度和位置的更新。

  5. 再次指定一个与原有fix的类型和ID完全相同的fix会把第一个fix删除。这样编程就相当于使用了unfix命令之后,再使用fix命令。注意,如果这样编程,新的fix也将不具备原有fix的由fix_modify指定的其他变化。

  6. 利用fix_modify可以改变某些fix中的参数设置。

  7. 某些fix命令会把系统当前的状态放到restart文件中,这样用户就可以使用restart命令或write_restart命令以当前状态重启仿真。

  8. fix命令会在时间步中的不同过程中执行相关的操作。如果有2个或多个fix命令作用于时间步中的同一过程,它们会按着在输入脚本中定义的顺序依次被激活。
  9. fix命令也会产生一些计算变量,用户可以访问这些计算变量。fix产生的变量有三种类型,全局的(global),每个原子(per-atom)的或局部的(local),每种类型的变量都有可能是标量,向量或矩阵。其访问方法如下表所示:

f_ID

标量,或整个向量和矩阵

f_ID[I]

向量中的第I个元素或矩阵中的第I列

f_ID[I][J]

矩阵中的一个元素

fix 命令列表

在LAMMPS官方文件中,每一种fix都有专门的介绍,以下表格仅简单列出每种fix的作用,在具体使用时,需要参考manual文件进行使用。

fix命令类型

简要说明

adapt

在模拟进行时改变模拟的参数

addforce

给每个原子施加一个力

append/atoms

模拟中在晶格点上增加原子

atom/swap

按蒙特卡洛算法交换原子

aveforce

为每个原子施加一个平均力

ave/atom

计算单原子的时间平均量

ave/chunk

计算一块体系的时间平均量

ave/correlate

计算输出时间相关性

ave/histo

计算输出时间平均的直方图

ave/time

计算输出全局量的时间平均

balance

进行动态平衡各个核的原子数

bond/break

在模拟中打断键合

bond/create

在模拟中创建键合

bond/swap 

蒙特卡洛算法交换键合

box/relax

在能量最小化过程中驰豫盒子

deform

在模拟中改变盒子的大小和形状

deposit 

在体系表面沉积新的原子

drag

按设定的方向拖动一组原子

dt/reset

基于速度和力重置时间步

efield

为体系引入一个电场

ehex

增加热量传递的算法

enforce2d

为每个原子施加一个平均力

evaporate

周期性的移出模拟中的原子

external

返回外部调用程序

freeze

粗粒化模拟时冻结一组原子

gcmc

巨正则蒙特卡模拟

gld

广义郎之万几积分器

gravity

粗粒化模拟中施加重力

halt 

按照设定的条件终止模拟

heat 

不改变系统动量增加系统的热量

indent

纳米压痕模拟

latte

密度泛函程序LATTE的调用

langevin

郎之万热浴控温

lineforce

限制原子按照直线运动

momentum

使一组原子的(角)动量为零

move

按照预先设定的方式移动原子

msst

多尺度振动积分

neb

扭结弹性带计算最小能垒路径

nph

Nose/hoover恒NPH系统积分

nphug

恒压Hugoniostat积分

npt 

恒温恒压系综模拟

nve

微正则系综模拟

nvt 

正则系综模拟

oneway

限制原子按一个方向移动

orient/bcc

移动BCC晶格的晶界

orient/fcc

移动FCC晶格的晶界

planeforce

限制原子在一个平面上移动

poems

限制一团原子按照相互耦合的刚体运动

pour

在粗粒化模拟中添加原子或分子

press/berendsen

Berendsen恒压模拟

print 

在模拟中打印文字或变量

property/atom

自定义每个原子的属性

qeq/comb

利用库伦势平衡电荷

reax/bonds

导出Reaxff势函数的键合信息

restrain

限制键长,键角和二面角

rigid

限制一组原子像刚体一样运动

setforce

设定每个原子的力

shake 

键长键角的摇动约束

spring

在一组原子上施加简谐力

srd

多粒子碰撞动力学模拟

store/force

储存每个原子的受力

store/state

储存每个原子的运动状态

temp/berendsen

Berendsen热浴温度控制

temp/csld 

郎之万正则采样热浴温控

temp/csvr 

哈密顿正则采样温控

temp/rescale

按比例缩放速度温控

tfmc

力偏蒙特卡洛算法

thermal/conductivity

热传导率计算

tmd

定向的分子动力学模拟

ttm 

电子原子耦合的双温度模型

tune/kspace

自动调节倒易空间的参数

vector

每N步累积全局的向量

viscosity 

粘度计算

viscous

粗粒化模拟的粘滞阻尼

wall/lj126

设置以L-J势作用的墙

wall/lj126

设置反射墙

 

 

注意: fix命令的ID只能包含字母、数字和下划线。

fix命令所施加的约束可以被unfix命令删去。

注意:使用unfix命令是唯一用来关闭fix命令所施加的约束的方法。如果只是指定一种新的类似的fix命令并不会关闭之前的fix命令。这对于进行积分的fix命令特别重要。举例来说,如果你先定义了fix nvt命令,然后又定义了fix nve命令,这样做并不会将先定义的NVT时间积分取消掉,而是这两个时间积分同时进行。

如果你在定义一个新的fix命令时,所使用的ID和类型名与某个已经定义的fix命令完全相同,那么先前定义的那个fix命令就会被删除掉,而新的fix命令会被创建,所使用的参数也是重新定义的。这样做就好像是在定义这个新的fix命令之前,先使用unfix命令取消了旧fix命令,除了说它们所作用的顺序会因着定义的位置不同而有所差异。另外需要注意的是,这种重新定义fix命令也会将先前使用fix_modify命令定义的,与旧fix命令相关的其他任何改变都清除掉。

fix_modify命令可以用来重置fix命令定义的某些设置。具体细节可以参考特定类型的fix命令。

有些fix命令会在写二进制重启动文件(restart命令或write_restart命令)时保存其内部状态。这些fix命令会在重启动该模拟时继续对计算过程起作用。参考read_restart命令,了解在读入重启动文件的输入脚本中,如何重新指定fix命令。参考具体类型的fix命令,了解哪些命令会被写入到重启动文件中。

 

posted on 2020-12-31 10:00  孤芳自赏*  阅读(1556)  评论(0)    收藏  举报

导航