lammps处理计算结果

  1. 5. 计算结束后的处理
    1. 1.检验能量、温度、压力
    2. 2.计算斜率k

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