一个用Lammps导出热流计算体系导热系数的C++串行小程序
前言:C++菜鸡第一个C++后处理程序,希望能对大家有所帮助。同时,大家发现问题也可以直接指出,极其欢迎文明、友善的交流讨论。

程序目的:利用lammps通过EMD计算体系的导热系数时,将lammps计算的热流导出,利用此程序可以对导出的热流进行处理得到热流相关函数以及导热系数。

程序动机:lammps软件有计算自相关函数的命令(fix ave/correlate),如果只求整体导热系数可以使用此命令。但是,对导热系数进行分解的过程中需要求部分热流与整体热流的相关函数[1],此时可根据需要对本文程序进行修改来处理导出的热流获得分解的导热系数。

程序运行所需文件:lammps产生的热流文件(提供热流),lammps运行的日志文件(提供运温度、体积等参数)

生成热流文件的Lammps命令:
compute J all heat/flux ke pe ss
fix heatflux all ave/time 1 1 5 c_J[1] c_J[2] c_J[3] c_J[4] c_J[5] c_J[6] file heatflux.txt

程序内容:
注:经测试,此程序与lammps的fix ave/correlate计算结果有差异,其原因是lammps计算不同关联时间的hac时采用了不同数量的数据用以平均。同时,本程序基于个人的case,请大家使用前结合自己的case仔细修改程序。

参考文献:
[1] H. Matsubara, G. Kikugawa, M. Ishikiriyama, S. Yamashita, T. Ohara, Equivalence of the EMD-and NEMD-based decomposition of thermal conductivity into microscopic building blocks, The Journal of chemical physics, 147 (2017) 114104.