5. 命令
本部分描述了 LAMMPS 输入脚本的格式以及其中的命令如何用于定义 LAMMPS 模拟。主要包括以下内容。
5.1. LAMMPS 输入脚本
LAMMPS 通过从输入脚本(文本文件)读取命令来执行计算,一次一行。当输入脚本结束时,LAMMPS 退出。这与在开始计算之前读取并处理整个输入的程序不同。
每个命令都会导致 LAMMPS 立即采取某些操作,而不考虑稍后可能处理的任何命令。命令可以设置内部变量、读入文件或运行模拟。这些操作可以分为三类:
- a、更改全局设置的命令(示例:timestep、newton、echo、log、thermo、restart),
- b、添加、修改、删除或替换"运行"期间执行的"样式"的命令(示例:pair_style、fix、compute、dump、thermo_style、pair_modify),以及
- c、执行"运行"或执行某些其他计算或操作的命令(示例:print、run、minimum、temper、write_dump、rerun、read_data、read_restart)
a) 类中的命令具有默认设置,这意味着如果您想更改默认设置,只需使用该命令即可。
在许多情况下,输入脚本中命令的顺序并不重要,但当 c) 类别中的命令之间的全局状态发生更改时,可能会产生后果。以下规则适用:
1、LAMMPS 不会读取整个输入脚本,然后使用所有设置执行模拟。相反,输入脚本一次读取一行,并且每个命令在读取时生效。因此这个命令序列:
timestep 0.5
run 100
run 100
执行与此序列不同的操作:
run 100
timestep 0.5
run 100
在第一种情况下,指定的时间步长 (0.5 fs) 用于两次模拟,每次模拟 100 个时间步长。在第二种情况下,默认时间步长 (1.0 fs) 用于第一个 100 步模拟,而 0.5 fs 时间步长用于第二个模拟。
2、有些命令只有在跟随其他命令时才有效。例如,在定义原子并使用组命令定义哪些原子属于该组之前,您无法设置原子组的温度。
3、有时,命令 B 会使用命令 A 可以设置的值。这意味着,如果要获得所需的效果,在输入脚本中命令 A 必须位于命令 B 之前。例如,read_data 命令通过设置模拟盒并将原子分配给处理器来初始化系统。如果不需要默认值,则需要在 read_data 之前使用处理器和边界命令来告诉 LAMMPS 如何将处理器映射到模拟框。
LAMMPS 检测到许多输入脚本错误,并打印错误或警告消息。错误页面提供了有关错误含义的更多信息。每个命令的文档列出了如何使用该命令的限制。
您可以使用 -skiprun 命令行标志让 LAMMPS 跳过任何"运行"、"最小化"或类似命令的执行,以检查整个输入的语法是否正确,以避免长时间运行时因拼写错误或语法错误而崩溃。