首页/文章/ 详情

lammps脚本语法小结

4年前浏览10608

输入脚本中的每个非空行被当作一个命令。LAMMPS命令是区分大小写的。命令名是小写的,如指定命令参数。大写字母可能用于文件名或用户选择的ID字符串。

    下面是LAMMPS每一行的输入脚本解析:

(1)如果某行的最后一个可打印字符是“&”字符,则假定该命令在下一行继续。通过删除“&”字符和换行符,下一行将连接到上一行。这使长命令延续在两条或更多条的命令上。请参阅(6),如何在不使用“&”字符的情况下在多行上继续执行命令。

(2) “#”字符后的所有字符都被视为注释并被丢弃,详见(6)。注意,“&”字符后面的注释将阻止命令在下一行继续。另外请注意,对于多行命令,单个“#”字符将注释整个命令。

(3)某行重复搜索“$”字符,表示用文本字符串替换该变量,详见(6)。如果字符“$”后跟大括号,则变量名称是大括号内的文本。

如果字符“$”后没有大括号跟随,则变量名称是紧跟在$之后的单个字符。如${myTemp}和$x的变量名分别为"myTemp" and "x"。

变量如何转换为文本字符串取决于变量的样式。它可以是一个存储多个文本字符串的变量,并返回其中的一个。返回的文本字符串可以是多个“单词”(空格分隔),然后将其解释为输入命令中的多个参数。该变量还可以存储为一个数学公式,该公式将被估算,其数值结果作为字符串返回。

如果字符$后跟圆括号则是一种特殊情况,圆括号内的文本被视为“临时”变量,并被评估为等式样式的变量。这是在输入脚本中使用数字公式的方法,而不必给它们分配变量名称。

variable X equal (xlo+xhi)/2+sqrt(v_area)

region 1 block $X 2 INF INF EDGE EDGE

variable X delete

等价于:

region 1 block $((xlo+xhi)/2+sqrt(v_area)) 2 INF INF EDGE EDGE

以便您不必定义(或丢弃)临时变量X.

注意,变量的大括号或即时形式都不能包含嵌套的$字符以供其他变量替代。

如下做法是错误的:

variable a equal 2

variable b2equal 4

print "B2 = ${b$a}"

不能为一个临时变量指定$($ x-1.0),但可以使用$(v_x-1.0),因为后者是符合等效样式变量语法。

有关字符串如何分配给变量和评估的详细信息,以及如何在输入脚本命令中使用,请参阅变量命令。

(4)某行“单词”被空格分隔(制表符,空格)隔开。请注意,单词可以包含字母,数字,下划线或标点符号。

(5)每行的第一个词是命令名。行中的所有连续词都是参数。

(6)如果要将具有空格的文本视为单个参数,则可以将其包含在单引号或双引号或三引号中。如果使用“&”字符,则单引号或双引号的单个参数可以跨多个行。当行连接在一起(并删除“&”字符和换行符)时,文本将变为单行。如果希望多行参数保留换行符,则文本可以用三重引号括起来,在这种情况下不需要“&”字符。

例如:

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"""

在每种情况下,单个,双引号或三引号在其内部存储的单个参数被删除。引号之间的“#”或“$”字符不会被视为(2)中的注释指示符,或在)(3)中替换为变量。

注意:如果参数本身是一个需要引用参数的命令(例如,使用print命令作为if或run命令的一部分),则单引号,双引号或三引号可以以通常的方式嵌套。

最后,有需求欢迎通过微信公众号联系我们。

微信公众号:320科技工作室。


LAMMPS分子动力学
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2020-09-26
最近编辑:4年前
320科技工作室
硕士 | 结构工程师 lammps/ms/vasp/
获赞 221粉丝 342文章 301课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈