输入文件结构

在使用LAMMPS进行分子动力学仿真时,输入文件的结构至关重要。输入文件是LAMMPS读取并执行仿真任务的指令集。一个典型的LAMMPS输入文件包含多个命令,这些命令可以分为几个部分:初始化、定义系统、设置模拟参数、运行模拟和输出结果。本节将详细介绍LAMMPS输入文件的各个部分及其功能。

初始化

初始化部分是输入文件的起始部分,用于设置LAMMPS的基本运行环境。这些命令包括指定输入文件的格式、定义计算资源、初始化随机数生成器等。

命令示例


# 初始化LAMMPS

units lj                # 设置单位制为Lennard-Jones

dimension 3            # 设置维度为3D

newton on             # 开启牛顿第三定律

boundary p p p        # 设置周期性边界条件

atom_style atomic     # 设置原子风格为原子

详细解释

  • units lj: 设置单位制为Lennard-Jones单位制,这是一种常用的无量纲单位制。

  • dimension 3: 设置模拟维度为3D,LAMMPS支持1D、2D和3D模拟。

  • newton on: 开启牛顿第三定律,即作用力和反作用力相等且方向相反。这对于提高计算效率和稳定性很有帮助。

  • boundary p p p: 设置周期性边界条件,这里的p表示周期性,即在所有三个维度上都启用周期性边界条件。LAMMPS还支持其他边界条件,如固定边界(f)和混合边界(pf的组合)。

  • atom_style atomic: 设置原子风格为原子风格,这是最常见的原子风格,表示每个原子只包含位置和类型信息。LAMMPS还支持其他原子风格,如分子风格(molecular)、电荷风格(charge)等。

定义系统

定义系统部分用于指定模拟系统的几何结构、原子类型、初始位置等信息。这些命令通常包括读取数据文件、定义原子类型和交互势等。

读取数据文件


# 读取数据文件

read_data data.lj

详细解释

  • read_data data.lj: 读取名为data.lj的数据文件,该文件包含了模拟系统的初始配置,包括原子的位置、类型、边界条件等信息。

数据文件示例

数据文件通常包含以下部分:

  • Header Section: 文件头部,描述系统的基本信息。

  • Atoms Section: 原子位置部分,列出每个原子的ID、分子ID、类型、位置等信息。

  • Bonds Section: 键部分,列出每个键的ID、类型、连接的原子ID等信息(仅在使用分子风格时需要)。

  • Angles Section: 角部分,列出每个角的ID、类型、连接的原子ID等信息(仅在使用分子风格时需要)。

  • Dihedrals Section: 二面角部分,列出每个二面角的ID、类型、连接的原子ID等信息(仅在使用分子风格时需要)。

  • Improper Section: 不当二面角部分,列出每个不当二面角的ID、类型、连接的原子ID等信息(仅在使用分子风格时需要)。

示例数据文件 data.lj

# LAMMPS data file for a simple LJ system

# Header

3840 atoms

1 atom types



0.0 38.4 xlo xhi

0.0 38.4 ylo yhi

0.0 38.4 zlo zhi



# Atoms

Atoms



1 1 1 0.0 0.0 0.0

2 1 1 1.0 0.0 0.0

3 1 1 2.0 0.0 0.0

# ... 3840 atoms in total

定义原子类型和交互势


# 定义原子类型和交互势

mass 1 1.0            # 设置原子质量

pair_style lj 1.0 1.0 # 设置Lennard-Jones势

pair_coeff 1 1 1.0 1.0 # 设置Lennard-Jones势的参数

详细解释

  • mass 1 1.0: 设置原子类型1的质量为1.0。

  • pair_style lj 1.0 1.0: 设置相互作用势为Lennard-Jones势,截断距离为1.0,光滑距离为1.0。

  • pair_coeff 1 1 1.0 1.0: 设置Lennard-Jones势的参数,其中1.0和1.0分别是ε和σ。

设置模拟参数

设置模拟参数部分用于定义模拟的具体条件,如时间步长、温度、压力等。这些命令通常包括设置模拟器、定义模拟条件、设定输出频率等。

设置时间步长


# 设置时间步长

timestep 0.005

详细解释

  • timestep 0.005: 设置每个时间步的时间步长为0.005时间单位。时间步长的选择取决于系统的特性,一般需要根据模拟的精度和稳定性来确定。

设置模拟器


# 设置模拟器

compute temp all temp

thermo 100

thermo_style custom step temp

详细解释

  • compute temp all temp: 计算所有原子的温度,并将结果存储在名为temp的计算变量中。

  • thermo 100: 每100个时间步输出一次热力学信息。

  • thermo_style custom step temp: 指定输出的热力学信息格式,包括时间步和温度。

设置初始条件


# 设置初始条件

velocity all create 1.0 87287

详细解释

  • velocity all create 1.0 87287: 为所有原子生成初始速度,温度为1.0,随机数种子为87287。

设置恒温器


# 设置恒温器

fix 1 all nvt temp 1.0 1.0 0.1

详细解释

  • fix 1 all nvt temp 1.0 1.0 0.1: 使用NVT系综(恒温恒体积)设置恒温器,目标温度为1.0,温度弛豫时间为0.1。

运行模拟

运行模拟部分是输入文件的核心部分,用于指定模拟的具体运行步骤。这些命令通常包括定义模拟的总时间、执行模拟、保存快照等。

运行模拟


# 运行模拟

run 10000

详细解释

  • run 10000: 运行10000个时间步的模拟。

保存快照


# 保存快照

dump 1 all atom 1000 dump.lj

详细解释

  • dump 1 all atom 1000 dump.lj: 每1000个时间步保存一次快照,保存到名为dump.lj的文件中,快照格式为原子格式。

输出结果

输出结果部分用于指定模拟结果的保存和输出方式。这些命令通常包括定义输出文件、计算特定量等。

定义输出文件


# 定义输出文件

restart 10000 restart.*.lj

详细解释

  • restart 10000 restart.*.lj: 每10000个时间步保存一次重启文件,文件名格式为restart.*.lj

计算特定量


# 计算特定量

compute msd all msd

variable msd equal c_msd[1]

fix 2 all ave/time 100 1 100 v_msd file msd.dat

详细解释

  • compute msd all msd: 计算所有原子的均方位移(MSD)。

  • variable msd equal c_msd[1]: 将MSD的计算结果存储在名为msd的变量中。

  • fix 2 all ave/time 100 1 100 v_msd file msd.dat: 每100个时间步计算一次MSD的平均值,并将结果保存到msd.dat文件中。

综合示例

以下是一个综合的LAMMPS输入文件示例,展示了如何从初始化到输出结果的完整流程。

输入文件 in.lj


# LAMMPS input file for a simple LJ system



# 初始化

units lj

dimension 3

newton on

boundary p p p

atom_style atomic



# 读取数据文件

read_data data.lj



# 定义原子类型和交互势

mass 1 1.0

pair_style lj 1.0 1.0

pair_coeff 1 1 1.0 1.0



# 设置模拟参数

compute temp all temp

thermo 100

thermo_style custom step temp



# 设置初始条件

velocity all create 1.0 87287



# 设置恒温器

fix 1 all nvt temp 1.0 1.0 0.1



# 运行模拟

run 10000



# 保存快照

dump 1 all atom 1000 dump.lj



# 定义输出文件

restart 10000 restart.*.lj



# 计算特定量

compute msd all msd

variable msd equal c_msd[1]

fix 2 all ave/time 100 1 100 v_msd file msd.dat

数据文件 data.lj


# LAMMPS data file for a simple LJ system

# Header

3840 atoms

1 atom types



0.0 38.4 xlo xhi

0.0 38.4 ylo yhi

0.0 38.4 zlo zhi



# Atoms

Atoms



1 1 0.0 0.0 0.0

2 1 1.0 0.0 0.0

3 1 2.0 0.0 0.0

# ... 3840 atoms in total

说明

  1. 初始化部分:设置了单位制、维度、边界条件和原子风格。

  2. 定义系统部分:读取了数据文件data.lj,定义了原子类型和Lennard-Jones势。

  3. 设置模拟参数部分:设置了时间步长、热力学输出频率和格式,生成了初始速度,并设置了NVT恒温器。

  4. 运行模拟部分:运行了10000个时间步的模拟,并每1000个时间步保存一次快照。

  5. 输出结果部分:每10000个时间步保存一次重启文件,并计算了MSD的平均值,将结果保存到msd.dat文件中。

通过以上示例,您可以了解LAMMPS输入文件的基本结构和常用命令。在实际应用中,根据具体的模拟需求,您可能需要添加更多的命令和参数设置。希望这些内容对您在LAMMPS二次开发领域的学习和工作有所帮助。在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐