Lammps報錯:Error: compute used in variable between runs is not cur
——作者水平有限,僅供學(xué)習(xí)交流使用,如有不足還請指出
本文將以計算Al的平衡晶格常數(shù)和結(jié)合能為例說明該報錯解決方法。
運(yùn)行該in文件后,會報錯Error: compute used in variable between runs is not current,報錯截圖如下:

在查閱手冊之后,發(fā)現(xiàn)(手冊截圖如下)
具體位置在手冊variable這一節(jié)下面的variable accuracy

翻譯過來大概意思就是:
?
如果變量需要一個來自當(dāng)前時間步前未調(diào)用的compute的量,LAMMPS將產(chǎn)生錯誤。這意味著在第一次運(yùn)行之前不能對這樣的變量求值。同樣地,在兩次運(yùn)行之間,包含compute的變量不能被求值。
更直白一點(diǎn)就是:報錯原因就在于 lammps中要獲取compute的量、或要調(diào)用compute值,而這個調(diào)用的過程是不能在run中調(diào)用。
而該段話緊跟著的就是解決方法:
1. 除非compute在前一次運(yùn)行的最后一個時間步上被調(diào)用過,例如通過熱力學(xué)輸出。
?
在我們這個例子中,雖沒有明顯的run,但在minimize暗含運(yùn)行時間步,錯誤原因就是我在minimize(run)后調(diào)用之前時間步的compute量,所以根據(jù)手冊的第一個解決方法就是在minimize之前可以將變量通過熱力學(xué)輸出。修改如下,運(yùn)行,運(yùn)行正常。
所以,給我們的啟示是,在今后書寫in文件時若存在一些compute量,在計算之后便將其存儲在一個變量中(當(dāng)然也可以直接輸出c_{name},本人習(xí)慣先存儲在變量中),然后在run之前便通過thermo輸出(說白了就是通過thermo輸出compute量并放在run前面)??梢员苊庠擃悎箦e。
?
2. lammps手冊中還給了一種解決方法就是,perform a 0-timestep run before using the variable。即在該變量調(diào)用之前執(zhí)行run 0 。
修改如下
運(yùn)行正常,修改完成。