【LAMMPS学习】十、LAMMPS辅助工具(2)LAMMPS shell使用

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 命令后的配对样式)。

  • 对于  computefix, 或者 dump ,它也只会扩展到已为 group-ID 关键字定义的组。

  • 对于  compute_modifyfix_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 命令。

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值