run:
语法:
run N keyword values
N步数
可以添加一个或多个关键字。
keyword为upto、start、stop、pre、every
upto没有值
start的值为N1
N1为第一步开始的时间步。
stop的值为N2
N2为运算结束的时间步。
pre的值为yes或no
post的值为yes 或no
every的值为M、c1、c2
M为将动力学过程分为M步长的几段,在每段之间引入一个或多个命令
c1、c2、、、、、cN是LAMMPS的命令,放到引号内。
当c1为NULL时,表示没有引用命令。
描述:
运行或继续特定数量的步数的动力学过程。
当run style是respa时,N表示的是外循环的步数。
N的值可以为0,这时仅体系的热动力学性质,且输出文件没有步数。
Upto表示从当前的时间步开始运行到特定的时间步。例如当前步数为10000,且使用了run 100000 upto命令时,就会运行剩下的90000步。当运行长时间的模拟时,这是非常有用了。因为当分配的时间用完时,你的模拟将被停止。如果你想重启你的script multiple times (reading in the last restart file), 你可以继续重新开始你的脚本利用相同的run命令。
Start和stop用来进行多个run动力学,且你可以使用fix命令改变某些值来改变单过或一系列run的参数。详见fix命令。
例如:fix命令后面跟了10个run命令
fix 1 all nvt 200.0 300.0 1.0
run 1000 start 0 stop 10000
run 1000 start 0 stop 10000
..
..
..
..
run 1000 start 0 stop 10000
NVTfix将会从200跳跃到300K温度。如果run命令没有start和stop命令,只是run 1000,那么温度将会在每个run中的1000步内从200跳到300K。当加上start和stop关键字时,跳转将发生在所有run组成的整个10000内。
Pre和post用来简化setup、clean-up和运行之前或之后把输出显示于屏幕。当你想要连续进行多个运行时,这会非常有用(例如LAMMPS被叫做图书馆,在进行连续的短计算时,可以进行其他计算)
默认pre和post的值为yes,LAMMPS在每个Run之前,自动创建neighbor list,计算力,并时间fix 限制。在每个run之后都会收集输出时间相关的统计。如果某个run是之前一个run的继续(所有的设置都没变),那么不需要原始的计算,原来的neighbor list继续适用,force也是这样。所以,当pre设置为no时,初始设置将被忽略,除了打印动力学信息除外。注意:当每一个run的pre设置为no时,它将是优先的,因为首先做的是初始设置计算。
注意:如果在输入脚本中,你改变了两个run的模拟体系,那么初始设置必须执行,来保证代码的所有部分都知道了这个改变。例如,增加了fix或dump或compute命令,改变了neighbor list参数,或者写了restart的文件转移了不同processors之间的原子。LAMMPS不容易检查体系是否发生了变化,但是这种情况下当pre是no时会出错。
当post为no时,全部的时间总结将被忽略,只有一行被打印。
Every提供将LAMMPS分成一系列短的模拟的方法。可选的,在每个短模拟之间可以加入一个或多个LAMMPS命令。Every必须是最后一个关键字,因为它包含很多不同的arguments。每一个添加的arguments是LAMMPS的一个单独命令,每个命令需要用引号引起来,这样整个命令被当作一个argument。This will also prevent any variables in the command from being evaluated until it is executed multiple times during the run. 注意:如果这些命令需要arguments(例如print),那么你需要结合双引号和单引号。
Every命令使用时,会进行N步总的模拟,其中多个M步短模拟。在M步之后,特定的命令会被引用。如果为NULL那么,不会执行命令,下面的例子:
Variable q equal x[100]
Run 6000 every 2000 “print ‘Coord = $q’”
等价于
Variable q equal x[100]
Run 2000
print “Coord = $q”
Run 2000
print “Coord = $q”
Run 2000
print “Coord = $q”
运行了3次2000步,并打印特定原子的x坐标。注意变量$q每次输出时都会被重新计算。
注意利用行连接符&,可以将run的每个命令跨行书写,仍然是一个命令:
Run 100000 every 1000 &
“print ‘Minimum value = $a’” &
“print ‘Maximum vale = $b’”&
“print ‘Tem = $c’”
如果pre和post选项设为no时,并使用了every关键字,那么第一次运行时会进行全部的设置,在运行结束时打印所有的时间统计,但在中间的Run中这些操作均不进行。
注意:你可能希望通过设定一个命令导出循环。例如
variable t equal temp
run 10000 every 100 “if ‘$t < 300.0’ then ‘jump SELF afterrun'”
但这不能实现。Run命令一次值运行一个命令,然后继续运行。你可以利用quit命令代替jump命令,使LAMMPS退出运行。
Restrictions:
When not using the upto keyword, the number of specified timesteps N must fit in a signed 32-bit integer, so you are limited to slightly more than 2 billion steps (2^31) in a single run. When usingupto, N can be larger than a signed 32-bit integer, however the difference between N and the current timestep must still be no larger than 2^31 steps.
However, with or without the upto keyword, you can perform successive runs to run a simulation for any number of steps (ok, up to 2^63 total steps). I.e. the timestep counter within LAMMPS is a 64-bit signed integer.