lammps的restart重启动相关命令
这是我以前写过的一篇博文,发表在新浪博客上,转载过来,并做适当修正。
restart作用
restart命令是lammps提供的重启动命令,用于重启lammps计算。这样可以省去一些共有的计算,从而节省计算时间,特别是对于比较大的体系。
比如原子弛豫一般是各种计算都必须要做的,那么就可以先单独弛豫一下,生成restart文件,供其他计算直接调用,从而避免每一个计算都进行弛豫。
restart原理
重启动的原理很简单,就是写一个中间restart文件,在这个文件中记录某个状态的绝大部分信息,在重启动时,只需要读入这个文件,接着完成剩下的计算即可。restart文件是二进制文件。
restart命令
restart相关的命令有三个:restart, write_restart, read_restart。还有一个相关的脚本在lammps的tools目录下restart2data,可以用来将二进制的restart文件转换成可识别的文文文件,即data file文件,可以由read_data读入。
restart命令和write_restart命令是用来写重启动文件的,区别是前者用来周期性地将系统状态写入不同的restart文件,而后者则是写出该命令使用前的系统状态。
read_restart命名是用来读入restart文件,开始新的计算。
tools目录下的restart2data工具提供的是cpp源文件,需要编译后才可使用。
下面以lammps/bench目录下的输入文件为例进行简要介绍。
写restart文件
# FENE beadspring benchmark units lj atom_style bond special_bonds fene read_data data.chain neighbor 0.4 bin neigh_modify every 1 delay 1 bond_style fene bond_coeff 1 30.0 1.5 1.0 1.0 pair_style lj/cut 1.12 pair_modify shift yes pair_coeff 1 1 1.0 1.0 1.12 fix 1 all nve fix 2 all langevin 1.0 1.0 10.0 904297 thermo 100 timestep 0.012 restart 50 tmp.restart # write restart file periodiclly run 100 #write_restart tmp*.restart # write restart file of the current state
注意restart和write_restart命令的使用位置是不同的。这里使用restart命令,会产生两个文件tmp.restart.50, tmp.restart.100.
转换restart文件
首先编译restar2data.cpp,如下:
$ g++ restart2data.cpp -o restart2data
这时就会在当前目录下产生可执行的restart2data文件,cp到bench目录下,转换上面例子产生的tmp50.restart文件。
restart2data tmp50.restart data.tmp50
这时就会在bench目录下产生data.tmp50文件,它是可直接辨识的文本文件。
读入restart文件
把in.chain文件拷贝成in.chain.restart文件,用来测试restart。由于restart文件中包含了很多的命令,所以需要重新设置的命令不多,这里如下:
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
这里实际就是接着timestep等于50的那个状态重启计算的。
参考:restart, write_restart, read_restart, restart2data, Restarting a simulation
已有 4 条评论
博主你好 请问tmp.restart.50, tmp.restart.100中的50和100分别表示run50步生成restart文件和run100步生成restart文件吗?
是的。manual里有介绍。
楼主,请问restart2data.cpp在哪里可以找到?我15年8月10日版本的lammps的tool文件夹中有binary2txt.cpp这个文件,生成可执行文件binary2txt后,cp到bench 目录下,输入binary2txt relax.restart data.20000后linux系统说command not found, 请问这是怎么回事呢?如果直接read_restart就会报错:Restart file byte ordering is not recognized,我想应该是要把二进制文件转换成数据文件的,但是应该怎么做呢?
我记不清了,15年以前的版本里有这个工具。你可以下载以前的老版本看看。