0%

LAMMPS 笔记(3)

LAMMPS命令

1. fix 命令

fix用于一组原子。在LAMMPS中,fix命令可认为是在某一时间段或能量最小化中对系统的任何操作。包括

  • 原子的位置、速度的更新
  • 控制温度
  • 对原子团施加限制
  • 更新边界条件等

若重新设置一个具有相同ID和设置的fix ,则在这之后旧的fix会被覆盖,对unfix也是如此。

某些fix 可计算三种量:全局变量;原子变量;局部变量。

2. unfix命令

删除先前设置的fix命令,同时也删除通过fix_modify 更新的任何设置

unfix 方法是删除fix的唯一方法,在一个fix之后新增一个fix 不会删除前一个。

3. variable命令

该命令将一个或多个字符串定义为变量,以用于在input文件和模拟中调用。变量名在variable后定义,只能包含字母数字和下划线。

4. boundary命令

在三个维度的方向上设置所模拟盒子的边界性质。使用一个字母则可对盒子三个方向的前后进行统一设置。若为两个字母,则分别表示一个方向的前后两面。

可选的选项包括:

  • p, 周期性,必须对一个维度的两个方向同时应用
  • f,非周期性,固定的,若原子超出这个边界,则被删除
  • s,非周期性,可收缩的(?shrink-wrapped),原子若超出边界,不会被删除,边界可适应原子的位置
  • m,非周期性,具有最小值的可收缩性

5. lattice 命令

定义一个模拟的盒子。在LAMMPS中,一个点阵是由空间中的晶胞边界上的原子构成的点阵,在多个方向上都可重复。lattice在LAMMPS中有两种用法。

  • create_atoms 命令可根据点阵上的点创建原子
  • 在x, y, z方向上定义的晶格间距可被其他命令所使用

6. units命令

定义模拟中使用的单位,包括inputdata文件中的单位。此处设置的单位仅仅设置物理量在LAMMPS内部的转换方式。

常用的单位选项包括lj, real, metal, si, cgs, electron, micro, nano

lj中的单位均为无量纲的或简化的, 默认使用这种单位。

单位制 lj real metal
mass mass grams/mol grams/mol
distance $ \sigma$ $ \AA $ $\AA $
time $\tau$ fs ps
energy $\epsilon$ Kcal/mol eV
velocity $\sigma / \tau$ $fs/ \rm \AA$ $\AA / ps$
force $\epsilon / \sigma$ $Kcal\cdot mol^{-1} \cdot \AA^{-1}$ $eV /\AA$
temperature 约化的lj温度 K K
pressure 约化的lj压力 101.325 kPa 100 kPa

7. change_box 命令

改变模拟盒子的体积、形状或者边界条件。对于正交的盒子,可以改变x, y, z 三个参数。对于三斜盒子,可改变的参数包括x, y, z, xy, xz, yz

8. velocity命令

改变或设置一组原子的速度。

9. run 命令

运行一定时间步长的分子动力学模拟。可运行0次,这种情况下,只计算体系的热力学并将其输出。

10. thermo 命令

在模拟的开始、结尾、以及中间N个时间步长时间点上计算热力学数据。计算输出的内容和格式由thermo_style以及thermo_modify命令控制。

11. thermo_style命令

控制输出到屏幕或者日志文件中的热力学数据。

部分可输出的数据包括:

  • ke, 动能
  • pe, 总势能
  • etotal, 总能量,动能+势能
  • enthalpy, 焓, 总能量+压力*体积
  • ……

12. read_data命令

从外部数据文件中读取可供LAMMPS模拟计算的数据。通常可读取的数据为使用ACSII编码的文件,或者使用gzip压缩的文件。

  • 文件格式

    通常一个数据文件包含一个文件头和主体。文件头的第一行通常跳过不读。以#开头的注释忽略。

  • 文件头格式

    文件头中各个关键字出现的顺序可以打乱。所有的关键字的初始值都为0,除了lo/hi box size分别为-0.5和0.5。

    • atoms, 体系中原子个数
    • bonds,体系中键的个数
    • angles, 体系中键角个数
    • dihedrals,体系中二面角个数
    • impropers,体系中不当二面角的个数
    • atom types, 体系中原子种类
    • bond types, 体系中键的种类
    • angle types, 体系中键角种类
    • dihedral types, 体系中二面角种类
    • improper types, 体系中不当二面角个数
    • xlo xhi, 模拟盒子x方向的边界
    • ylo yhi, 模拟盒子y方向的边界
    • zlo zhi, 模拟盒子z方向的边界
    • xy xz yz, 三斜盒子的倾斜系数

13. print命令

输出指定的变量或字符串到文件或日志中。字符串使用引号以囊括尽可能多的信息。如果使用了file关键字,则输出的信息将写入到文件中。

14. minimize命令

通过调整原子的坐标使体系的能量最小化。当达到指定的收敛容差时,停止迭代,在这时体系的能量可能达到局部最小。能量最小化的算法通过min_style指定。

一般来说,能量最小化的目标函数为包含N个原子的体系的总能量,以下式表示

最后一项为fix命令对体系施加的限制所造成的能量。

15. dielectric 命令

设置静电相互作用下的介电常数,该值用于减少静电作用的强度,是无量纲的,用于静电作用公式的分母上,即若该值为4.0,则静电作用强度下降到原来的25%,默认值为1.0

16. dump 命令

每隔一定时间步长导出当前状态下所有原子信息的一份快照到一个或多个文件去,只有指定的某个组的原子才会被导出

17. reset_timestep 命令

将时间步长计数器设置到指定数值,通常用于在读取一个restart 文件之后用于重置时间步长。read_datacreatebox命令也会将时间步长重置为0。若设置了任何fix来跟踪持续的时间来执行某些与时间有关的操作时,则不能使用该命令。

18. box命令

box命令有一个关键词:tile,可以设置为small或者large,对于三斜模拟盒子来说,这个关键词允许创建任意倾斜因子的模拟盒子。倾斜因子决定了这个三斜盒子有多倾斜。

一般情况下,LAMMPS允许设置不超过盒子长度一半的倾斜因子。如果设置为small,则当模拟设置超过这个限制时,程序会报错。若设置为large,则可以设置任意大小的倾斜角度。

需要注意的是,当盒子的倾斜因子过大时,LAMMPS的运行效率会下降。对于极端程度的倾斜,LAMMPS可能会由于丢失原子而报错。

19. neighbor命令

设置影响最近邻列表的参数。

20. write_coeff命令

将当前定义的力场参数导出为文本格式,以供include命令读取。搭配write_datanocoeff选项,可将参数项与数据文件分离。

21. write_data命令

将包含当前模拟状态的数据文件导出为文本格式。导出的数据文件可以使用read_data 命令读取。导出的文件名中可使用通配符*来表示模拟当前的时间步。由于该命令是使用文本格式导出数据的,因此新的模拟的初始态可能和导出前的终态有些许不同,若将终态导出为二进制文件,则可以避免这种情况,使用restart, write_restart, read_restart等命令可以做到。

nocoeff选项表示在导出的数据文件中不包含力场参数。

22. log 命令

该命令将LAMMPS的标准输出重定向到另一log文件中去。如果指定的文件名为空,则不新建log文件。若指定append参数,则在原有的log文件之后加上log内容,而非覆盖原有内容。文件名为log.lammps的文件为LAMMPS的log标准输出文件。