换算方法如下:1.应变的输出
假如在Z方向上进行拉伸,应变strain可以这样计算:
variable tmp equal "lz"
variable L0 equal ${tmp}
variable strain equal "(lz - v_L0)/v_L0"
2. 应力的输出
对于全部原子体系的应力,可通过在thermo_style custom
里加上pxx pyy pzz pxy pxz pyz字段讲体系应力值输出。注意:pxx pyy pzz这些值为负值。
可以使用下面的公式进行转换,在units metal下,除以10000将应力单位转换为GPa:
streesx=-pxx/10000
streesy=-pyy/10000
streesz=-pzz/10000
thermo 100
thermo_style custom step temp stressx stressy stressz
如果输出某个原子组的应力,需要使用compute计算单个原子的应力,将这个组内的所有原子应力求和,然后除以体积。
compute s mobile stress/atom
compute 2 mobile reduce sum c_s[1] c_s[2] c_s[3]
variable stressx equal c_2[1]/(v_Vol)
variable stressy equal c_2[2]/(v_Vol)
variable stressz equal c_2[3]/(v_Vol)
thermo_style custom step temp v_stressx v_stressy v_stressz
3.将应力-应变数值输出为文件
以上代码中,应力、应变数据输出到log文件中,后期处理稍微麻烦,也可以单独把应力、应变数据存储到一个单独文件中。
#--------------------------应力应变----------------------------------
variable tmp equal "lz"
variable L0 equal ${tmp}
variable strain equal "(lz - v_L0)/v_L0"
variable stressz equal "-pzz/10000"
#-------------------------应力应变保存到文件---------------------------
fix def3 all print 100 "${strain} ${stressz}" file stress-strain.dat screen no