网站排名怎么提升,南京模板建站定制网站,广州一共几个区,开发大型网站的流程5. 命令
本部分描述了 LAMMPS 输入脚本的格式以及其中的命令如何用于定义 LAMMPS 模拟。主要包括以下内容。
5.1. LAMMPS 输入脚本
5.2.输入脚本的解析规则
输入脚本中的每个非空行都被视为一条命令。 LAMMPS 命令区分大小写。命令名称是小写的#xff0c;指定的命令参数…5. 命令
本部分描述了 LAMMPS 输入脚本的格式以及其中的命令如何用于定义 LAMMPS 模拟。主要包括以下内容。
5.1. LAMMPS 输入脚本
5.2.输入脚本的解析规则
输入脚本中的每个非空行都被视为一条命令。 LAMMPS 命令区分大小写。命令名称是小写的指定的命令参数也是小写的。大写字母可用于文件名或用户选择的 ID 字符串。
以下是 LAMMPS 如何解析输入脚本中的每一行的 6 条规则
、如果该行的最后一个可打印字符是“”字符则假定该命令在下一行继续。通过删除“”字符和换行符下一行与上一行连接起来。这允许长命令跨两行或更多行继续。有关如何在不使用“”字符的情况下跨多行继续命令的信息请参阅第 6 节中对三引号的讨论。
、从第一个“#”字符开始的所有字符都被视为注释并被丢弃。此规则的例外情况在 6 中进行了描述。请注意尾随“”字符后的注释将阻止该命令在下一行继续。另请注意对于多行命令单个前导“#”将注释掉整个命令。
# this is a comment
timestep 1.0 # this is also a comment
、将在该行中重复搜索 $ 字符这些字符表示被文本字符串替换的变量。该规则的例外情况在第 6 条中进行了描述。
如果 $ 后面跟着大括号“{}”中的文本则变量名称就是大括号内的文本。如果 $ 后面没有大括号则变量名称是紧跟在 $ 后面的单个字符。因此${myTemp} 和 $x 引用名为“myTemp”和“x”的变量而“$xx”将被解释为名为“x”的变量后跟“x”字符。
变量如何转换为文本字符串取决于变量的样式有关详细信息请参阅变量页面。它可以是一个存储多个文本字符串的变量并返回其中之一。返回的文本字符串可以是多个“单词”空格分隔然后将其解释为输入命令中的多个参数。该变量还可以存储将被计算的数值公式并将其数值结果作为字符串返回。
作为一种特殊情况如果 $ 后面跟着括号“()”则括号内的文本将被视为“immediate”变量并被评估为 equal 样式变量。这是一种在输入脚本中使用数值公式而无需将它们分配给变量名称的方法。例如这 3 个输入脚本行
variable X equal (xloxhi)/2sqrt(v_area)
region 1 block $X 2 INF INF EDGE EDGE
variable X delete
可以替换为
region 1 block $((xloxhi)/2sqrt(v_area)) 2 INF INF EDGE EDGE
这样您就不必定义或丢弃临时变量在本例中为“X”。
此外整个“immediate”变量表达式后面可以跟一个冒号后面跟一个 C 风格的格式字符串例如“:%f”或“:%.10g”。格式字符串必须适合双精度浮点值。格式字符串用于输出变量表达式求值的结果。如果未指定格式字符串则使用高精度“%.20g”作为默认格式。
这对于将打印输出格式化为所需的精度很有用
print Final energy per atom: $(v_ke_per_atomv_pe_per_atom:%10.3f) eV/atom
请注意变量的大括号或直接形式都不能包含嵌套的 $ 字符以供其他变量替换。因此你不可以这样做
variable a equal 2
variable b2 equal 4
print B2 ${b$a}
您也不能为立即变量指定“$($x-1.0)”之类的表达式但可以使用 $(v_x-1.0)因为后者是 equal-style 变量的有效语法。
有关如何将字符串分配给变量并求值以及如何在输入脚本命令中使用它们的更多详细信息请参阅变量命令。
、该行被分成由空格制表符、空格分隔的“单词”。请注意单词可以包含字母、数字、下划线或标点符号。
、第一个单词是命令名称。该行中所有连续的单词都是参数。
、如果您希望将带有空格的文本视为单个参数则可以将其括在单引号 (’) 或双引号 () 或三引号 () 中。如果使用“”字符则用单引号或双引号括起来的长单个参数可以跨越多行如上面 1 中所述。当通过 LAMMPS 将行连接在一起并删除“”字符和换行符时组合的文本将成为单行。如果您希望参数的多行保留换行符则可以将文本括在三引号中在这种情况下不需要“”字符并且不能用作行继续字符。例如
print Volume $v
print Volume $v
if ${steps} 1000 then quit
variable a string red green blue purple orange cyan
print
System volume $v
System temperature $t在每种情况下单引号、双引号或三引号都会被删除并且所包含的文本将在内部存储为单个参数。
有关示例请参阅转储修改格式、打印、if 和 python 命令。
引号之间的“#”或“$”字符不会被视为 2 中的注释指示符也不会被替换为 3 中的变量。
注
如果参数本身是一个需要带引号的参数的命令例如使用 print 命令作为 if 或 run every 命令的一部分则可以按通常的方式嵌套单引号、双引号或三引号。有关示例请参阅这些命令的文档页面。仅允许一层嵌套但这对于大多数用例来说应该足够了。
ASCII 与 UTF-8
LAMMPS 在内部期望并处理 7 位 ASCII 格式文本。许多现代环境使用 UTF-8 编码它是 7 位 ASCII 字符表的超集因此大部分是兼容的。但是有一些非 ASCII 字符可能看起来与其 ASCII 等效字符非常相似或者是不可见的因此它们看起来像空白但编码方式不同。众所周知Web 浏览器、PDF 查看器、文档编辑器有时会用另一种来替换其中一种以获得更好看的输出。然而这可能会导致问题例如当使用网页中的输入文件示例剪切粘贴时或者使用文档编辑器不是专用的纯文本编辑器编写 LAMMPS 输入时。 LAMMPS 将尝试检测这一点并用已知的 ASCII 等效字符替换非 ASCII 字符。如果发生这种情况还会打印一条警告。建议在 LAMMPS 输入、数据和潜在文件中完全避免使用此类字符。替换表可能不完整并且依赖于报告正确处理包含 UTF-8 编码的非 ASCII 字符的输入的问题的用户。