|
- restart作用restart命令是lammps提供的重啟動命令,用于重啟lammps計算。這樣可以省去一些共有的計算,從而節(jié)省計算時間,特別是對于比較大的體系。 比如原子弛豫一般是各種計算都必須要做的,那么就可以先單獨弛豫一下,生成restart文件,供其他計算直接調(diào)用,從而避免每一個計算都進(jìn)行弛豫。 restart原理重啟動的原理很簡單,就是寫一個中間restart文件,在這個文件中記錄某個狀態(tài)的絕大部分信息,在重啟動時,只需要讀入這個文件,接著完成剩下的計算即可。restart文件是二進(jìn)制文件。 restart命令restart相關(guān)的命令有三個:restart, write_restart, read_restart。還有一個相關(guān)的腳本在lammps的tools目錄下restart2data,可以用來將二進(jìn)制的restart文件轉(zhuǎn)換成可識別的文文文件,即data file文件,可以由read_data讀入。 restart命令和write_restart命令是用來寫重啟動文件的,區(qū)別是前者用來周期性地將系統(tǒng)狀態(tài)寫入不同的restart文件,而后者則是寫出該命令使用前的系統(tǒng)狀態(tài)。 read_restart命名是用來讀入restart文件,開始新的計算。 tools目錄下的restart2data工具提供的是cpp源文件,需要編譯后才可使用。 下面以lammps/bench目錄下的輸入文件為例進(jìn)行簡要介紹。 寫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命令,會產(chǎn)生兩個文件tmp.restart.50, tmp.restart.100. 轉(zhuǎn)換restart文件首先編譯restar2data.cpp,如下: $ g++ restart2data.cpp -o restart2data 這時就會在當(dāng)前目錄下產(chǎn)生可執(zhí)行的restart2data文件,cp到bench目錄下,轉(zhuǎn)換上面例子產(chǎn)生的tmp50.restart文件。 restart2data tmp50.restart data.tmp50 這時就會在bench目錄下產(chǎn)生data.tmp50文件,它是可直接辨識的文本文件。 讀入restart文件把in.chain文件拷貝成in.chain.restart文件,用來測試restart。由于restart文件中包含了很多的命令,所以需要重新設(shè)置的命令不多,這里如下: 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的那個狀態(tài)重啟計算的。 |





