前几天遇到一件糟心的事,在工作站上提交了一个模拟运算,预计30小时能够算好。
没想到的是,计算了大约25小时马上就能看到结果的时候停电了!
虽然每隔1000步保存了一次,但是没有计算完成,数据不完整,只能重开始,浪费了一整天的时间。
其实这种情况是完全可以避免的,如果随时保存restart文件,也能够在断电或者意外中止时,能够重启计算。
lammps提供了restart、write_restart命令保存模拟文件、read_restart命令读取模拟文件,利用好这三个命令能够最大程度地避免因断电、死机等意外造成的影响。
对于比较大的体系,驰豫时间也比较长,在模型驰豫之后保存restart文件,在后续的模拟过程中(比如不同应变速率的拉伸模拟),直接读取rstart文件进行拉伸即可,不需要再进行驰豫,提高了模拟效率。
1.基本原理
restart、write_restart命令能够把当前模拟的信息保存到一个二进制文件中,如原子的速度、体系的温度、原子的坐标等,下一次读取这个二进制文件可以延续之前的模拟过程继续进行模拟运算。
比如在第1000步保存了restart.1000文件,在运行到第1100步时断电,重新开机之后就可以直接读取restart.1000文件继续运算,结果和正常运算几乎没有差别。
保存restart文件有两种方式:周期性保存和一次性保存。
2.restart命令:周期性保存
restart命令可以每隔多少步保存一次restart文件,如每隔1000步保存一次:
restart 1000 restart.equil
生成文件有:restart.equil.0、restart.equil.1000、restart.equil.2000、……
3. write_restart命令:一次性保存
周期性保存文件,产生文件较多,在能量最小化或者驰豫阶段,一般只需要在驰豫结束保存一个restart文件即可。
这时候可以在驰豫代码后面使用write_restart命令,如:
write_restart restart.equil
4. read_restart命令:读取文件
重启模拟比较简单,使用方法和read_data命令类似:
read_restart restart.equil
需要注意的是,并不是所有的模拟信息都保存在restart.equil文件中。
比如fix命令就需要在新的模拟文件中重新设置,官方手册已经列举的很全面,有需要可以查查手册。
更多lammps案例教程,关注公众号:lammps加油站