5. 计算结束后的处理
1.检验能量、温度、压力
alias check='head -n -30 log.lammps | tail -n +100 > log.dat; cp /work/home/liz/script/check/plot.py ./;conda activate liz;python plot.py'
plot.py
import matplotlib
matplotlib.use('Agg') # 使用非图形化的Agg后端
import matplotlib.pyplot as plt
import numpy as np
# 从.dat文件中读取数据
data = np.genfromtxt('log.dat', delimiter=None, skip_header=1)
x = data[:, 1] # 第二列作为x轴
y1 = data[:, 2] # 第三列作为第一组y值
y2 = data[:, 3] # 第四列作为第二组y值
y3 = data[:, 4] # 第五列作为第三组y值
# 创建三个子图
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
# 绘制第一个图
axes[0].plot(x, y1, label='Column 3')
axes[0].set_title('Plot 1')
axes[0].set_xlabel('X-axis')
axes[0].set_ylabel('Y-axis')
axes[0].legend()
# 绘制第二个图
axes[1].plot(x, y2, label='Column 4')
axes[1].set_title('Plot 2')
axes[1].set_xlabel('X-axis')
axes[1].set_ylabel('Y-axis')
axes[1].legend()
# 绘制第三个图
axes[2].plot(x, y3, label='Column 5')
axes[2].set_title('Plot 3')
axes[2].set_xlabel('X-axis')
axes[2].set_ylabel('Y-axis')
axes[2].legend()
# 保存为all.png
plt.tight_layout()
plt.savefig('all.png')
2.计算斜率k
alias calk='cp /work/home/liz/script/check/k.py ./;conda activate liz;python k.py > k.dat'
k.py
import numpy as np
from scipy import stats
import math
# 读取数据文件并存储数据
data = np.loadtxt('msd.dat')
# 定义不同的百分比值
percentages = range(1,101)
print(percentages)
# 针对每个百分比执行线性拟合
for percent_to_select in percentages:
print (percent_to_select,end=' ')
# 计算要选择的数据点数量
num_points_to_select = int(len(data) * percent_to_select / 100)
# 根据百分比选择数据点
selected_data = data[:num_points_to_select]
# 线性拟合并计算斜率
x = selected_data[:, 0] # 假设第一列是 x 值
y = selected_data[:, 4] # 假设第二列是 y 值
# 执行线性回归拟合
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
# 输出斜率
print (slope,end=' ')
D= slope*1000/60000
print(D,end=' ')
logD = math.log10(D)
print(logD)
转载请注明来源 有问题可通过github提交issue