10. 辅助工具
10.1.预处理工具
10.2.后处理工具
10.3.各种工具
10.4.工具说明
10.4.17. LAMMPS shell
2020 年 10 月 9 日版本中的新增内容。
概述
LAMMPS Shell, lammps-shell
是一个程序,其功能与常规 LAMMPS 可执行文件非常相似,但进行了一些修改和添加,使其对于交互式会话更加强大,即从提示符中键入 LAMMPS 命令而不是阅读它们来自一个文件。
-
它使用 readline 和历史库来提供命令行编辑和上下文感知 TAB 扩展(详细信息如下)。
-
当从命令行处理带有“-in”或“-i”标志的输入文件时,它不会在该输入文件末尾退出,而是在提示符处停止,以便可以发出其他命令
-
错误不会中止 shell,而是返回到提示符。
-
它具有旨在交互式使用的附加命令(详细信息如下)。
-
使用 CTRL-C 中断计算不会终止会话,而是强制执行超时以彻底停止正在进行的运行(有关超时的更多信息请参阅计时器命令文档)。
这些增强功能使 LAMMPS shell 成为图形桌面环境(例如 Gnome、KDE、Cinnamon、XFCE、Windows)中交互式 LAMMPS 会话的有吸引力的选择。
TAB 扩展
在 shell 提示符下以交互方式编写命令时,您可以随时按 TAB 键来尝试完成文本。此完成是上下文感知的,并且将仅将任何第一个单词扩展为该可执行文件中可用的命令。
-
对于样式命令,它将扩展到相应类别的可用样式(例如,pair_style 命令后的配对样式)。
-
对于 compute_modify, fix_modify, 或者 dump_modify等命令,它将仅扩展到已知的计算/修复/转储ID。
-
当分别输入带有“c_”、“f_”或“v_”前缀的计算、修复或变量的引用时,扩展将是已知的计算/修复 ID 和变量名称。变量名称扩展也可用于 ${name} 变量语法。
-
在所有其他情况下,TAB 扩展将完成文件和目录的名称。
命令行编辑和历史记录
输入命令时,可以使用类似于 BASH 提供的命令行编辑。因此,可以在当前行周围移动并执行各种剪切、插入和编辑操作。可以通过向上(和向下)滚动或搜索(例如使用 CTRL-r)来检索以前的命令。
还可以通过使用感叹号“!”来执行历史扩展。示例:“!!”将替换为上一个命令,“!-2”将重复之前的命令,“!30”将替换为命令历史列表中的事件号 30,“!run”将替换为最后一个以“run”开头的命令行。在这样的历史扩展中添加“:p”将导致扩展被打印并添加到历史列表中,但不会被执行。退出时,LAMMPS shell 会将历史列表写入当前工作目录中的文件“.lammps_history”。如果启动 LAMMPS shell 时存在这样的文件,则会读取该文件以填充历史列表。
这是通过 readline 库实现的,因此可以使用主目录中的 .inputrc
文件进行自定义。对于特定于应用程序的自定义,LAMMPS shell 使用名称“lammps-shell”。有关使用 readline 来使用和自定义应用程序的更多信息,请参阅以下位置的可用文档:https://www.gnu.org/software/readline/
附加命令
在常规 LAMMPS 命令之上,将以下命令添加到 LAMMPS shell:
help (or ?) print a brief help message
history display the current command history list
clear_history wipe out the current command history list
save_history <range> <file>
write commands from the history to file.
The range is given as <from>-<to>, where <from> and <to>
may be empty. Example: save_history 100- in.recent
source <file> read commands from file (same as "include")
pwd print current working directory
cd <directory> change current working directory (same as pwd if no directory)
mem print current and maximum memory usage
|<command> execute <command> as a shell command and return to the command prompt
exit exit the LAMMPS shell cleanly (unlike the "quit" command)
请注意,一些已知的 shell 操作是以平台无关的方式在 LAMMPS shell 命令中实现的,而使用“|”字符将始终将以下文本传递给操作系统的 shell 命令。
编译
在使用常规 make 过程构建 LAMMPS 后,可以通过将 CMake 变量 BUILD_LAMMPS_SHELL
设置为“on”或使用 tools/lammps-shell
文件夹中的 makefile 进行编译来启用 LAMMPS shell 的编译。 makefile 可能需要根据用于编译 LAMMPS 的功能和设置进行自定义。
局限性
LAMMPS shell 并非设计用于通过 mpirun
或 mpiexec
或 srun
进行 MPI 并行化。
Readline 自定义
可以在 ${HOME}/.inputrc
文件中自定义 readline 功能的行为。这可用于更改默认设置或更改键绑定。 LAMMPS Shell 设置应用程序名称 lammps-shell
,因此设置可以全局应用,也可以通过将它们括在 $if lammps-shell
和 $endif
之间来仅应用于 LAMMPS shell,如以下示例:
$if lammps-shell
# disable "beep" or "screen flash"
set bell-style none
# bind the "Insert" key to toggle overwrite mode
"\e[2~": overwrite-mode
$endif
有关此内容的更多详细信息,请参阅 readline 文档。
LAMMPS Shell 提示和技巧
以下是有关如何使用和自定义 LAMMPS shell 的一些建议。
启用波波浪符扩展
建议将 set expand-tilde on
添加到 ${HOME}/.inputrc
,因为这将更改文件名扩展行为,以将任何以“~”开头的文本替换为相应用户主目录的完整路径。虽然文件名扩展将发生在上下文未知的所有参数上(例如 ~/compile/lamm<TAB>
将扩展为 ~/compile/lammps/
),但默认情况下它不会替换波形符。但由于 LAMMPS 本身不进行波形符扩展(与 shell 不同),因此这会导致错误。相反,波形符表达式应该扩展为有效路径,其中简单的“~/”代表当前用户的主目录,“~someuser/”代表“/home/someuser”或该用户主目录的完整路径目录是。
文件扩展名关联
由于当使用“-in”或“-i”标志在命令行上传递输入文件时,LAMMPS shell(与常规 LAMMPS 可执行文件不同)不会退出(行为类似于 python -i <filename>
) ,它使 LAMMPS shell 适合根据输入文件的文件扩展名(例如“.lmp”)将其与输入文件相关联。由于 lammps-shell
是一个控制台应用程序,因此您必须使用如下命令行在终端程序中运行它:
xterm -title "LAMMPS Shell" -e /path/to/lammps-shell -i in.file.lmp
使用历史记录创建输入文件
当以交互方式试验命令以找出合适的设置选择或简单的正确语法时,您可能希望将部分命令记录到文件中以供以后使用。这可以通过 save_history
命令来完成,它允许有选择地将命令历史记录的一部分写入文件(示例: save_history 25-30 in.run
)。可以进一步编辑该文件(示例: |vim in.run
),然后读回该文件并进行尝试(示例: source in.run
)。如果输入还创建了系统框,则首先需要使用 clear command 命令。