- 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 benchmarkunits ljatom_style bondspecial_bonds feneread_data data.chainneighbor 0.4 binneigh_modify every 1 delay 1bond_style fenebond_coeff 1 30.0 1.5 1.0 1.0pair_style lj/cut 1.12pair_modify shift yespair_coeff 1 1 1.0 1.0 1.12fix 1 all nvefix 2 all langevin 1.0 1.0 10.0 904297thermo 100timestep 0.012restart 50 tmp.restart # write restart file periodicllyrun 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.50neighbor 0.4 binneigh_modify every 1 delay 1fix 1 all nvefix 2 all langevin 1.0 1.0 10.0 904297timestep 0.012run 50 这里实际就是接着timestep等于50的那个状态重启计算的。 |