天天看点

lammps数据后处理:Python绘制rdf曲线

大家好,我是小马老师。

本文继续介绍使用python编程处理lammps模拟数据。

在前面文章已经介绍python绘制应力应变曲线的程序。

本文介绍python绘制rdf曲线的方法,并且是多条曲线绘制到一起。

演示案例为官方自带案例,水分子的rdf计算,rdf计算代码为:

compute gofr all rdf 100  1 1  2 2  1 2  # O-O, H-H, O-H
fix rdf all ave/time 100 10 1000 c_gofr[*] file rdf.dat mode vector      

rdf计算结果保存在rdf.dat文件中,如下图所示:

lammps数据后处理:Python绘制rdf曲线

计算了三组rdf,因此会得到8列数据,并且前4行数据为注释。

因此,绘图时从第5行开始分别提取第2、3、5、7列数据,第2列为公共x轴,3、5、7列分别为y轴。

结果如下图所示:

lammps数据后处理:Python绘制rdf曲线
import matplotlib.pyplot as plt
#设置数组
x = []
rdf1 = []
rdf2 = []
rdf3 = []
#读取文件
filename = "rdf.dat"
f = open(filename,'r')
#读取前4行注释
for i in range(0,4):
    line1 = f.readline()
#读取数据、提取数据存入数组
for line in f.readlines():
    x.append(float(line.split()[1]))
    rdf1.append(float(line.split()[2]))
    rdf2.append(float(line.split()[4]))
    rdf3.append(float(line.split()[6]))
f.close()
#绘图
plt.figure(figsize=(8,5))
plt.plot(x,rdf1,linewidth=1.5,marker='o',markersize=3,color='C2',label='O-O')
plt.plot(x,rdf2,linewidth=1.5,marker='o',markersize=3,color='C3',label='H-H')
plt.plot(x,rdf3,linewidth=1.5,marker='o',markersize=3,color='C5',label='O-H')
plt.xlabel('$r$/$\AA$')
plt.ylabel('$g(r)$')
plt.legend()
plt.show()