【LAMMPS学习】八、基本知识的讨论(1.1)重启LAMMPS模拟

时间:2024-04-09 20:09:57

8. 基本知识的讨论

此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。

 8.1.通用基础知识

8.1.1.重新启动模拟 

有 3 种方法可以继续进行长时间的 LAMMPS 模拟。可以在同一输入脚本中使用多个运行命令。每次运行将从上一次运行停止的地方继续。或者可以使用 restart 命令将二进制重启文件保存到磁盘。稍后,可以通过新脚本中的 read_restart 命令读取这些二进制文件。或者可以使用 -r 命令行开关将它们转换为文本数据文件,并通过新脚本中的 read_data 命令读取。

在这里,我们给出了 2 个脚本的示例,这些脚本读取二进制重新启动文件或转换后的数据文件,然后发出新的运行命令以从上一次运行停止的位置继续。它们说明了必须在新脚本中进行哪些设置。 read_restart 和 read_data 命令的文档中讨论了详细信息。

查看 LAMMPS 发行版的 bench 目录中提供的 in.chain 输入脚本,了解这两个脚本所基于的原始脚本。如果该脚本有以下行

restart         50 tmp.restart

添加到它后,它将在运行时生成 2 个二进制重启文件(tmp.restart.50 和 tmp.restart.100)。

此脚本可用于读取第一个重新启动文件并重新运行最后 50 个时间步:

read_restart    tmp.restart.50

neighbor        0.4 bin
neigh_modify    every 1 delay 1

fix             1 all nve
fix             2 all langevin 1.0 1.0 10.0 904297

timestep        0.012

run             50

请注意,不需要重复以下命令,因为它们的设置已包含在重新启动文件中:units、atom_style、special_bonds、pair_style、bond_style。但是,确实需要使用这些命令,因为它们的设置不在重新启动文件中:neighbor、fix、timestep。

如果您实际使用此脚本执行重新启动的运行,您会注意到热力学数据在第 50 步匹配(如果您还在原始脚本中放置了“thermo 50”命令),但在第 100 步不匹配。这是因为 fix langevin 命令使用随机数的方式不允许完美重新启动。

作为替代方法,可以将重新启动文件转换为数据文件,如下所示:

lmp_g++ -r tmp.restart.50 tmp.restart.data
然后,该脚本可用于重新运行最后 50 个步骤:
units           lj
atom_style      bond
pair_style      lj/cut 1.12
pair_modify     shift yes
bond_style      fene
special_bonds   0.0 1.0 1.0

read_data       tmp.restart.data

neighbor        0.4 bin
neigh_modify    every 1 delay 1

fix             1 all nve
fix             2 all langevin 1.0 1.0 10.0 904297

timestep        0.012

reset_timestep  50
run             50

请注意,除了pair_coeff 和bond_coeff 命令之外,几乎所有在原始in.chain 脚本中指定的设置都必须重复,因为新数据文件列出了力场系数。此外,reset_timestep 命令用于告知 LAMMPS 当前时间步长。该值存储在重新启动文件中,但不存储在数据文件中。