【LAMMPS翻译系列】jump命令
jump命令关闭当前输入脚本文件,打开命令中文件名所指定的文件,并从那个文件开始读入LAMMPS命令。
使用语法
jump file label
- file: 要跳转到的输入脚本的文件名
- label:[可选]要跳转到的输入脚本中的标签
使用举例
jump newfile jump in.run2 runloop jump SELF runloop
使用介绍
该命令关闭当前输入脚本文件,打开命令中文件名所指定的文件,并从那个文件开始读入LAMMPS命令。与命令include不同的是,LAMMPS不会再返回到之前的输入文件了。当然,你也可以在这些输入脚本中使用多个jump命令,让LAMMPS再返回到之前的输入脚本。
如果文件名被指定为SELF,那么LAMMPS会重新打开当前的输入脚本并读入命令。
注意:如果使用标准输入读入当前输入脚本文件,SELF选项不一定会起作用。标准输入即是指使用重定向符号,如下所示:
lmp_g++ < in.script
因为SELF选项会调用C库函数rewind(),而在某些系统中,标准输入并不支持这个。但还有两位两种方法可以让SELF选项起作用:一个是使用命令行参数-in读入输入脚本文件;另一个是使用命令行参数-var读入输入脚本文件,如下所示:
lmp_g++ -in in.script lmp_g++ -var fname n.script < in.script
命令jump中的第二个参数是可选的。如果指定了,就相当于在输入脚本中定义了一个标签,LAMMPS会扫描跳转到的输入文件(不会执行),从标签的位置开始向下执行。这种方式可以用来执行输入脚本的一部分。在下面的例子中,这些命令会被执行10次,每次会运行10000个时间步,并创建10个dump文件。在程序运行了10次之后,变量a取了其定义中的最后一个值,命令next就会使脚本跳出循环,而不会再执行命令jump。
variable a loop 10 label loop dump 1 all atom 100 file.$a run 10000 undump 1 next a jump in.lj loop
如果参数file被指定为一个变量,命令jump可以跳转到不同的处理器分区而执行不同的输入脚本。下面的例子中,LAMMPS在40个处理器上运行,分为4个分区,每个分区有10个处理器。其中的命令jump中使用了变量,这样做就会让不同的分区跳到不同的输入文件。
mpirun -np 40 lmp_ibm -partition 4x10 -in in.file variable f world script.1 script.2 script.3 script.4 jump $f
下面的例子是使用命令if和jump实现的双重循环。if条件满足时,跳出内层循环,开始执行外层循环。
label loopa variable a loop 5 label loopb variable b loop 5 print "A,B = $a,$b" run 10000 if $b > 2 then "jump in.script break" next b jump in.script loopb label break variable b delete next a jump in.script loopa
使用限制
如果命令jump跳转到文件中不包括指定的标签,LAMMPS会自动跳到最后并退出。
相关命令
variable, include, label, next