LAMMPS入门

LAMMPS 真不好学(

lammps 的安装

从 apt 安装即可(或者从源码编译)

lammps 的输入文件

参考:https://lammpstutorials.github.io/tutorials

基本结构

  • 初始化
  • 体系的定义
  • 模拟设置
  • 执行

文件中使用行首#表示行注释。

初始化

主要设置全局描述使用的单位制、维度定义、原子类型、原子对类型和 cut、周期性等。
一个例子:

1
2
3
4
5
6
# -------------	Initialization
units lj
dimension 2
atom_style atomic
pair_style lj/cut 2.5
boundary p p p

定义体系

用以创建空间区域和定义体系

一个例子:

1
2
3
4
5
# ------------- System definition
region myreg block -30 30 -30 30 -0.5 0.5
create_box 2 myreg
create_atoms 1 random 1500 341341 myreg
create_atoms 2 random 100 127569 myreg

定义了:

  • 名为myreg的块(block),大小为x=-30~30,y=-30~30,z=-0.5~0.5
    • 详见region文档:region ID style args keyword arg ...
  • myreg块基础上建立box,其中有两种原子:
    • 详见create_box文档:create_box N region-ID [keyword value ...]
  • 通过create_atoms命令创建原子:
    • 详见create_atoms文档:`create_atoms type style args keyword values …

定义模拟计算的设置

用于分子动力学计算的参数配置

一个例子:

1
2
3
4
5
# ------------- Simulation settings
mass 1 1
mass 2 1
pair_coeff 1 1 1.0 1.0
pair_coeff 2 2 0.5 3.0

定义了:

  • 类型 1、2 原子的质量为 1
  • 原子之间的相互作用系数(pair_style lj)的系数。本例中是lj/cut势。参数 1.0 1.0 和 0.5 3.0 分别是 lj/cut 公式中的$\sigma$、$\varepsilon$、cutoff(此处没有设置,lj 会使用 pair_style 的值)。
  • 对于一般的pair_coeff I J args(https://docs.lammps.org/pair_coeff.html) ,参数的含义为原子类型(1 1 和 2 2),也可使用通配符*,这里一般 I<=J。而如果没有设置不同原子类型的 coeff,则会由同类型的 coeff 数值进行估算。

模拟运行的设置

执行的命令

一个例子:

1
2
3
# ------------- Run
thermo 10
minimize 1.0e-4 1.0e-6 1000 10000

定义了:

  • thermo 10即每 10 个时间步$\text{d} t$进行一次日志。
  • minimize是用于对系统能量进行最小化,参数是停止标准。
    • 详见minimize,参数分别是能量、力、最大 iter、最大能量/力计算次数

进行真正的模拟还需要配置一些模拟的限制,如:

1
2
3
4
5
6
fix		mynve all nve
fix mylgv all langevin 1.0 1.0 0.1 1530917
fix myefn all enforce2d
timestep 0.005
thermo 1000
run 10000

定义了:

  • 分子动力学模拟的系综、恒温方式、平面内的限制
  • 时间步长、日志记录 1000 步一次
  • 运行 10000 步

对于模拟的一些必要辅助命令

  1. Dangerous builds的处理:由neigh_modify命令配置更频繁的邻域列表。
1
2
# ------------- Simulation settings
neigh_modify every 1 delay 5 check yes
  1. 记录原子轨迹,通过dump命令 (https://docs.lammps.org/dump.html) 进行记录。
1
2
# ------------- Simulation settings
dump mydmp all atom 1000 dump.lammpstrj