Lammps语法规则及常用任务
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请注意, 以下命令不需要重复, 因为它们的设置包含在重新启动文件中: units, atom_style,special_bonds,pair_style,bond_style。 但是,这些命令确实需要使 用,因为它们的设置不在重新启动文件中:neighbor,fix,timestep。 另一种方法是将重新启动文件转换为数据文件,如下所示: lmp_g++ -r tmp.restart.50 tmp.restart.data 然后,该脚本可用于重新运行最后的 50 步: units lj atom_style bond pair_style lj/cut 1.12 pair_modify shift yes bond_style fene special_bonds 0.0 1.0 1.0 read_data tmp.restart.data neighbor 0.4 bin neigh_modify every 1 delay 1 fix 1 all nve fix 2 all langevin 1.0 1.0 10.0 904297 timestep 0.012 reset_timestep 50 run 50
DREIDING 是由戈达德集团在加利福尼亚理工学院开发的通用应力场, 可用 于预测有机, 生物和主要无机分子的结构和动力学。 DREIDING 是基于简单的杂 化考虑使用的一般应力常数和几何参数,而不是依赖于参与键,角或扭转项的原 子的特定组合的单独力常数和几何参数。 DREIDING 具有明确的氢键术语, 用于 描述在非常电负性原子(N,O,F)上涉及氢原子的相互作用。 有关 DREIDING 应力场的描述,请参阅(Mayo)。 这些样式选择计算的应力场公式与 DREIDING 应力场一致。 请参阅每个命 令的文档中的计算公式。
3. CHARMM, AMBER, DREIDING 应力场 应力场有两部分组成:定义它的公式和用于特定系统的系数。在这里,我们 只 讨 论 在 LAMMPS 中 执 行 的 公 式 , 这 些 公 式 与 CHARMM , AMBER 和 DREIDING 应力场中常用的公式相对应。通过 read_data 命令或在输入脚本中使 用命令(如 pair_coeff or bond_coeff)在输入数据文件中设置系数。有关可以使用 CHARMM 或 AMBER 分配应力场系数并将其输出转换为 LAMMPS 输入的其他 工具,请参见第 9 节。 有关 CHARMM 应力场的描述,请参阅(MacKerel) 。有关 AMBER 应力场 的描述,参见(Cornell) 。 这些样式选择计算的应力场公式与 CHARMM 或 AMBER 中常见选项一致。 请参阅每个命令的文档中的计算公式。
2. 2d 模拟 使用 dimension 命令定义 2d 模拟。 默认情况下,通过 boundary 命令设置 z 轴为周期边界。 如果使用 create box 命令来定义模拟边界,则将 z 轴设置为窄,但是有限, 以便使用 create_atoms 命令将单个 z 平面的原子来平铺 3d 模拟边界。例如: create box 1 -10 10 -10 10 -0.25 0.25
注意:如果参数本身是一个需要引用参数的命令(例如,使用 print 命令作 为 if 或 run 命令的一部分) ,则单引号,双引号或三引号可以以通常的方式 嵌套。
Lammps 常见任务介绍
本节介绍如何使用 LAMMPS 执行常见任务。 1. 重启模拟 通常有 3 种方法可以继续 LAMMPS 模拟。多个运行命令可以在同一个输入 脚本中使用,每次运行将从上次离开时的运行位置开始。或者使用 restart 命令将 二进制重启文件保存到磁盘。稍后,这些二进制文件可以通过新脚本中的 read_restart 命令读取。或者可以使用-r 命令行切换将其转换为文本数据文件,并 在新脚本中通过 read_data 命令读取。 下面,给出读取二进制重新启动文件或转换后的数据文件的 2 个脚本的示 例,然后发出一个新的运行命令以继续上次离开时的运行位置。示例说明了在新 脚本中必须做出的设置。 详细信息在 read_restart 和 read_data 命令的文档中讨论。 如果脚本有如下一行: restart 50 tmp.restart 添加该脚本,它运行时将生成 2 个二进制重新启动文件(tmp.restart.50 和 tmp.restart.100) 。 该脚本可用于读取第一次重新启动文件并继续运行最后 50 个时 间步长: read_restart tmp.restart.50 neighbor 0.4 bin neigh_modify every 1 delay 1 fix 1 all nve fix 2 all langevin 1.0 1.0 10.0 904297 timestep 0.012 run 50
Lammps 语法
输入脚本中的每个非空行被当作一个命令。 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.
4. 从一个输入脚本运行多个模拟 从一个输入脚本运行多个模拟可以通过几种方式完成。
若“多次模拟”是想继续先前的模拟以获得更多的时间步长,那么只需多次 使用运行命令即可。例如: units lj atom_style atomic read_data data.lj run 10000 run 10000 run 10000 run 10000 run 10000 这是对相同的系统运行 5 次连续的模拟,总共 50000 个时间步长。 如果想运行完全不同的模拟,一个接着另一个,可以使用清除命令在它们之 间重新初始化 LAMMPS。例如: units lj atom_style atomic read_data data.lj run 10000 clear units lj atom_style atomic read_data data.lj.new run 10000 该脚本是运行 2 个独立的模拟,一个接着另一个。 对于大量的独立模拟, 可以使用变量 (variables) 、 下一个 (next) 和跳转 (jump) 命令多次使用不同的设置循环模拟相同的输入脚本。 例如, 脚本名称为 in.polymer variable d index run1 run2 run3 run4 run5 run6 run7 run8 shell cd $d read_data data.polymer run 10000 shell cd ..
bond_style harmonic angle_style charmm dihedral_style charmm pair_style lj/charmm/coul/charmm pair_style lj/charmm/coul/charmm/implicit pair_style lj/charmm/coul/long special_bonds charmm special_bonds amber
如果使用 read data 命令读取原子坐标文件,则将“zlo zhi”值设置为有限但 窄,类似于刚刚描述的 create_box 命令设置。对于文件中的每个原子,分配一个 z 坐标,使其位于 z 轴边界内。例如:0.0。 使用 fix enforce2d 命令作为最后定义的修改,以确保 z 分量的速度和应力在 每个时间步长都被清零。 做这个最后修该的原因是, 其他修补程序可能生成应力, 这样能清除所引起的任何应力。 注意:在 LAMMPS 的一些模型中,将粒子视为有限大小的球体,而不是点 粒子。 在 2d 中,粒子仍然是球体,而不是圆盘,这意味着它们的惯性矩将与 3d 相同。
bond_style harmonic bond_style morse angle_style harmonic angle_style cosine angle_style cosine/periodic dihedral_style charmm imprwk.baidu.comper_style umbrella pair_style buck pair_style buck/coul/cut pair_style buck/coul/long pair_style lj/cut pair_style lj/cut/coul/cut pair_style lj/cut/coul/long pair_style hbond/dreiding/lj pair_style hbond/dreiding/morse special_bonds dreiding
注意, 变量的大括号或即时形式都不能包含嵌套的$字符以供其他变量替代。 如下做法是错误的: variable a equal 2 variable b2 equal 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)中替 换为变量。