lammps計(jì)算的應(yīng)力有兩種:
一是體系整體的應(yīng)力狀態(tài),通過(guò)在thermo_style custom里加上pxx pyy pzz pxy pxz pyz字段可將給定時(shí)間步(由thermo N命令所指定)的體系應(yīng)力值輸出脖母,再求時(shí)間平均即可(實(shí)際上求出的是壓強(qiáng)張量士鸥,即負(fù)的應(yīng)力值);該應(yīng)力的計(jì)算用的是統(tǒng)計(jì)力學(xué)里的Virial定理(參見(jiàn)<<Computer simulation of liquid>> by Allen & Tildesley)谆级,所算出來(lái)的應(yīng)力與宏觀應(yīng)力是一致的(強(qiáng)調(diào)一下烤礁,用于平衡態(tài));
compute 1 all pressure thermo_temp virial
二是單個(gè)原子的應(yīng)力肥照,也就是樓主所討論的脚仔,通過(guò)compute stress/atom命令所計(jì)算出來(lái)的六個(gè)值;這個(gè)應(yīng)力的計(jì)算則是通過(guò)對(duì)上述Virial定理所定義的體系應(yīng)力按原子分解建峭,即將公式中的按原子求和的算符拿掉(同時(shí)應(yīng)將體系的體積換為單個(gè)原子的體積)玻侥,不過(guò)决摧,正如樓主所指出的亿蒸,由于單個(gè)原子的體積計(jì)算太麻煩,lammps在計(jì)算時(shí)干脆去掉了體積項(xiàng)掌桩,這就是為什么用compute stress/atom命令所算出來(lái)的“應(yīng)力”具有能量的單位的原因边锁。
可以看出,在lammps里波岛,如果要計(jì)算體系中某個(gè)區(qū)域(由region定義茅坛,可以是整個(gè)模擬盒)所圍成的“塊”的應(yīng)力,只需將該區(qū)域里的所有原子的單原子應(yīng)力值加起來(lái)则拷,再除以這個(gè)區(qū)域的體積即可贡蓖,無(wú)須進(jìn)行單個(gè)原子體積的計(jì)算。
對(duì)原子應(yīng)力進(jìn)行Voronoi體積加權(quán)平均即可得到系統(tǒng)瞬時(shí)應(yīng)力煌茬;系統(tǒng)瞬時(shí)應(yīng)力的系綜平均值為宏觀測(cè)量的系統(tǒng)應(yīng)力值斥铺。
compute s all stress/atom
compute p all reduce sum c_s[1] c_s[2] c_s[3]
variable Press equal -(c_p[1]+c_p[2]+c_p[3])/(3*vol)
thermo_style custom step temp etotal press v_Press
如果要求X方向的應(yīng)力,就把所有原子用compute stress/atom得到的sigma(xx)加起來(lái),去除掉"所有原子佔(zhàn)有的體積",就可以得到系統(tǒng)宏觀的sigma(xx).得到的值與別人發(fā)表的計(jì)算paper相差無(wú)幾(與試驗(yàn)值相差大約10%)。