您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > Lammps语法规则及常用任务
Lammps语法输入脚本中的每个非空行被当作一个命令。LAMMPS命令是区分大小写的。命令名是小写的,如指定命令参数。大写字母可能用于文件名或用户选择的ID字符串。下面是LAMMPS每一行的输入脚本解析:(1)如果某行的最后一个可打印字符是“&”字符,则假定该命令在下一行继续。通过删除“&”字符和换行符,下一行将连接到上一行。这使长命令延续在两条或更多条的命令上。请参阅(6),如何在不使用“&”字符的情况下在多行上继续执行命令。(2)“#”字符后的所有字符都被视为注释并被丢弃,详见(6)。注意,“&”字符后面的注释将阻止命令在下一行继续。另外请注意,对于多行命令,单个“#”字符将注释整个命令。(3)某行重复搜索“$”字符,表示用文本字符串替换该变量,详见(6)。如果字符“$”后跟大括号,则变量名称是大括号内的文本。如果字符“$”后没有大括号跟随,则变量名称是紧跟在$之后的单个字符。如${myTemp}和$x的变量名分别为myTempandx。变量如何转换为文本字符串取决于变量的样式。它可以是一个存储多个文本字符串的变量,并返回其中的一个。返回的文本字符串可以是多个“单词”(空格分隔),然后将其解释为输入命令中的多个参数。该变量还可以存储为一个数学公式,该公式将被估算,其数值结果作为字符串返回。如果字符$后跟圆括号则是一种特殊情况,圆括号内的文本被视为“临时”变量,并被评估为等式样式的变量。这是在输入脚本中使用数字公式的方法,而不必给它们分配变量名称。variableXequal(xlo+xhi)/2+sqrt(v_area)region1block$X2INFINFEDGEEDGEvariableXdelete等价于:region1block$((xlo+xhi)/2+sqrt(v_area))2INFINFEDGEEDGE以便您不必定义(或丢弃)临时变量X.注意,变量的大括号或即时形式都不能包含嵌套的$字符以供其他变量替代。如下做法是错误的:variableaequal2variableb2equal4printB2=${b$a}不能为一个临时变量指定$($x-1.0),但可以使用$(v_x-1.0),因为后者是符合等效样式变量语法。有关字符串如何分配给变量和评估的详细信息,以及如何在输入脚本命令中使用,请参阅变量命令。(4)某行“单词”被空格分隔(制表符,空格)隔开。请注意,单词可以包含字母,数字,下划线或标点符号。(5)每行的第一个词是命令名。行中的所有连续词都是参数。(6)如果要将具有空格的文本视为单个参数,则可以将其包含在单引号或双引号或三引号中。如果使用“&”字符,则单引号或双引号的单个参数可以跨多个行。当行连接在一起(并删除“&”字符和换行符)时,文本将变为单行。如果希望多行参数保留换行符,则文本可以用三重引号括起来,在这种情况下不需要“&”字符。例如:printVolume=$vprint'Volume=$v'if${steps}1000thenquitvariableastringredgreenblue&purpleorangecyanprintSystemvolume=$vSystemtemperature=$t在每种情况下,单个,双引号或三引号在其内部存储的单个参数被删除。引号之间的“#”或“$”字符不会被视为(2)中的注释指示符,或在(3)中替换为变量。注意:如果参数本身是一个需要引用参数的命令(例如,使用print命令作为if或run命令的一部分),则单引号,双引号或三引号可以以通常的方式嵌套。Lammps常见任务介绍本节介绍如何使用LAMMPS执行常见任务。1.重启模拟通常有3种方法可以继续LAMMPS模拟。多个运行命令可以在同一个输入脚本中使用,每次运行将从上次离开时的运行位置开始。或者使用restart命令将二进制重启文件保存到磁盘。稍后,这些二进制文件可以通过新脚本中的read_restart命令读取。或者可以使用-r命令行切换将其转换为文本数据文件,并在新脚本中通过read_data命令读取。下面,给出读取二进制重新启动文件或转换后的数据文件的2个脚本的示例,然后发出一个新的运行命令以继续上次离开时的运行位置。示例说明了在新脚本中必须做出的设置。详细信息在read_restart和read_data命令的文档中讨论。如果脚本有如下一行:restart50tmp.restart添加该脚本,它运行时将生成2个二进制重新启动文件(tmp.restart.50和tmp.restart.100)。该脚本可用于读取第一次重新启动文件并继续运行最后50个时间步长:read_restarttmp.restart.50neighbor0.4binneigh_modifyevery1delay1fix1allnvefix2alllangevin1.01.010.0904297timestep0.012run50请注意,以下命令不需要重复,因为它们的设置包含在重新启动文件中:units,atom_style,special_bonds,pair_style,bond_style。但是,这些命令确实需要使用,因为它们的设置不在重新启动文件中:neighbor,fix,timestep。另一种方法是将重新启动文件转换为数据文件,如下所示:lmp_g++-rtmp.restart.50tmp.restart.data然后,该脚本可用于重新运行最后的50步:unitsljatom_stylebondpair_stylelj/cut1.12pair_modifyshiftyesbond_stylefenespecial_bonds0.01.01.0read_datatmp.restart.dataneighbor0.4binneigh_modifyevery1delay1fix1allnvefix2alllangevin1.01.010.0904297timestep0.012reset_timestep50run502.2d模拟使用dimension命令定义2d模拟。默认情况下,通过boundary命令设置z轴为周期边界。如果使用createbox命令来定义模拟边界,则将z轴设置为窄,但是有限,以便使用create_atoms命令将单个z平面的原子来平铺3d模拟边界。例如:createbox1-1010-1010-0.250.25如果使用readdata命令读取原子坐标文件,则将“zlozhi”值设置为有限但窄,类似于刚刚描述的create_box命令设置。对于文件中的每个原子,分配一个z坐标,使其位于z轴边界内。例如:0.0。使用fixenforce2d命令作为最后定义的修改,以确保z分量的速度和应力在每个时间步长都被清零。做这个最后修该的原因是,其他修补程序可能生成应力,这样能清除所引起的任何应力。注意:在LAMMPS的一些模型中,将粒子视为有限大小的球体,而不是点粒子。在2d中,粒子仍然是球体,而不是圆盘,这意味着它们的惯性矩将与3d相同。3.CHARMM,AMBER,DREIDING应力场应力场有两部分组成:定义它的公式和用于特定系统的系数。在这里,我们只讨论在LAMMPS中执行的公式,这些公式与CHARMM,AMBER和DREIDING应力场中常用的公式相对应。通过read_data命令或在输入脚本中使用命令(如pair_coefforbond_coeff)在输入数据文件中设置系数。有关可以使用CHARMM或AMBER分配应力场系数并将其输出转换为LAMMPS输入的其他工具,请参见第9节。有关CHARMM应力场的描述,请参阅(MacKerel)。有关AMBER应力场的描述,参见(Cornell)。这些样式选择计算的应力场公式与CHARMM或AMBER中常见选项一致。请参阅每个命令的文档中的计算公式。bond_styleharmonicangle_stylecharmmdihedral_stylecharmmpair_stylelj/charmm/coul/charmmpair_stylelj/charmm/coul/charmm/implicitpair_stylelj/charmm/coul/longspecial_bondscharmmspecial_bondsamberDREIDING是由戈达德集团在加利福尼亚理工学院开发的通用应力场,可用于预测有机,生物和主要无机分子的结构和动力学。DREIDING是基于简单的杂化考虑使用的一般应力常数和几何参数,而不是依赖于参与键,角或扭转项的原子的特定组合的单独力常数和几何参数。DREIDING具有明确的氢键术语,用于描述在非常电负性原子(N,O,F)上涉及氢原子的相互作用。有关DREIDING应力场的描述,请参阅(Mayo)。这些样式选择计算的应力场公式与DREIDING应力场一致。请参阅每个命令的文档中的计算公式。bond_styleharmonicbond_stylemorseangle_styleharmonicangle_stylecosineangle_stylecosine/periodicdihedral_stylecharmmimproper_styleumbrellapair_stylebuckpair_stylebuck/coul/cutpair_stylebuck/coul/longpair_stylelj/cutpair_stylelj/cut/coul/cutpair_stylelj/cut/coul/longpair_stylehbond/dreiding/ljpair_stylehbond/dreiding/morsespecial_bondsdreiding4.从一个输入脚本运行多个模拟从一个输入脚本运行多个模拟可以通过几种方式完成。若“多次模拟”是想继续先前的模拟以获得更多的时间步长,那么只需多次使用运行命令即可。例如:unitsljatom_styleatomicread_datadata.ljrun10000run10000run10000run10000run10000这是对相同的系统运行5次连续的模拟,总共50000个时间步长。如果想运行完全不同的模拟,一个接着另一个,可以使用清除命令在它们之间重新初始化LAMMPS。例如:unitsljatom_styleatomicread_datadata.ljrun10000clearunitsljatom_styleatomicread_datadata.lj.newrun10000该脚本是运行2个独立的模拟,一个接着另一个。对于大量的独立模拟,可以使用变量(variables)、下一个(next)和跳转(jump)命令多次使用不同的设置循环模拟相同的输入脚本。例如,脚本名称为in.polymervariabledindexrun1run2run3run4run5run6run7run8shellcd$dread_datadata.polymerrun10000shellcd..clearnextdjumpin.polymer该脚本将在不同的目录中运行8个模拟,在每个目录中使用一个data.polymer文件。可以使用上述方法在8个不同的温度下运行相同的系统,使用温度变量并将输出存储在不同的日志log和转储dump文件。例如:variablealoop8variabletindex0.80.850.90.951.01.051.11.15loglog.$areaddata.polymervelocityallcreate$t352839fix1allnvt$t$t100.0dump1allatom1000dump.$arun100000clearnexttnextajumpin.polymer5.颗粒模型颗粒体系由直径相对于点粒子的球形颗粒组成。这意味着其有一个角速
本文标题:Lammps语法规则及常用任务
链接地址:https://www.777doc.com/doc-5898483 .html