5.1. LAMMPS 输入脚本

LAMMPS 通过逐行读取输入脚本(文本文件)中的命令来执行计算。当输入脚本结束时,LAMMPS 即退出运行。这与那些先读取并处理整个输入内容再开始计算的程序有所不同。

每条命令都会促使 LAMMPS 立即执行相应操作,而不考虑后续可能处理的命令。这些命令可能用于设置内部变量、读取文件或运行模拟。其操作可分为三大类别:

  1. 更改全局设置的命令(例如: 时间步长 牛顿算法 回显 日志 热力学输出 重启

  2. 在"运行"过程中执行添加、修改、删除或替换"样式"的命令(例如:pair_stylefixcomputedumpthermo_stylepair_modify),以及

  3. 执行"运行"或进行其他计算操作的命令(例如:printrunminimizetemperwrite_dumprerunread_dataread_restart

类别 a)中的命令具有默认设置,这意味着您只需要在希望更改默认设置时使用该命令。

在许多情况下,输入脚本中命令的顺序并不重要,但当全局状态在类别 c)的命令之间发生变化时可能会产生影响。适用以下规则:

  1. LAMMPS 不会读取整个输入脚本然后使用所有设置执行模拟。相反,输入脚本是逐行读取的,每个命令在被读取时立即生效。因此以下命令序列:

    timestep 0.5
    run      100
    run      100
    

    与这个序列的执行效果不同:

    run      100
    timestep 0.5
    run      100
    

    第一种情况下,指定的时间步长(0.5飞秒)会用于两次各100步的模拟运算。第二种情况下,首次100步模拟采用默认时间步长(1.0飞秒),第二次模拟则改用0.5飞秒步长。

  2. 某些命令必须紧随其他命令才能生效。例如在未定义原子且未使用 group 命令指定原子分组前,无法设置原子组的温度参数。

  3. 有时命令 B 会调用命令 A 设置的参数值。这意味着若需实现预期效果,输入脚本中命令 A 必须置于命令 B 之前。例如 read_data 命令会通过建立模拟箱体及分配原子处理器的方式初始化系统。若需修改默认设置,则需在 read_data 之前使用 processorsboundary 命令进行配置 告诉 LAMMPS 如何将处理器映射到模拟箱体。

LAMMPS 会检测到许多输入脚本错误,并打印 ERROR 或 WARNING 消息。 错误页面提供了关于错误含义的更多信息。每个命令的文档都列出了该命令使用方式的限制条件。

您可以使用 -skiprun 命令行标志让 LAMMPS 跳过任何 runminimize 或类似命令的执行,以检查整个输入的正确语法,避免在长时间运行中因拼写错误或语法错误导致崩溃。