Calorine专题

Calorine轨迹分析与GPUMD数据读取

实际NVE轨迹、相关性、八类输出解析及run.in读写,提供CSV与绘图操作。

更新于 2026-10-28约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载本专题结构、势文件、真实参考数据和全部Python脚本。以下命令在解压目录执行;CPU计算使用已分配的CPU资源,GPU通过Slurm分配。原始结果放在 reference/,复跑结果写入当前目录。

1 Si短NVE轨迹#

在NEP计算器上使用ASE积分器,64个Si、300 K初始速度、随机种子28、1 fs步长、1000步;去掉整体平动。温度未加恒温器持续控制。

import numpy as np
from ase.build import bulk
from ase.units import fs
from ase.md.verlet import VelocityVerlet
from ase.md.velocitydistribution import MaxwellBoltzmannDistribution, Stationary
from calorine.calculators import CPUNEP
a = bulk('Si','diamond',a=5.431,cubic=True).repeat((2,2,2))
a.calc = CPUNEP('si-nep.txt')
MaxwellBoltzmannDistribution(a, temperature_K=300,
                            rng=np.random.default_rng(28))
Stationary(a)
md = VelocityVerlet(a, timestep=fs, logfile='nve-new.log')
md.run(1000)
python cpu_workflows.py
python extra_workflows.py
python plot.py
head -n 5 nve.log

完整脚本保存101个结构帧,每10步一帧;热力学日志每一步记录。最大总能量漂移3.95E-5 eV/atom。本例用于理解接口与短时能量检查,不提供收敛扩散或热导率。

64原子Si短NVE总能量与温度

2 相关性与误差估计#

from calorine.tools import (analyze_data, get_autocorrelation_function,
                            get_correlation_length, get_error_estimate)
# E为单段日志中逐步总能量的一维数组
print(analyze_data(E, max_lag=50))
acf = get_autocorrelation_function(E, max_lag=50)
print(get_correlation_length(E), get_error_estimate(E))

函数按样本间隔给出相关长度;必须乘实际记录间隔才能换成时间。短NVE的振荡和守恒约束不同于平衡涨落采样,相关估计不应直接宣称为严格独立热力学误差。若相关函数未降到软件判据以内,返回None或NaN有明确含义,不能用0代替。

3 读取已有GPUMD真实输出#

包内real-gpumd/选自已发布的Si MD、液态Si输运和微型NEP训练原始输出,不额外编造曲线。脚本实际运行8类读取器:

文件/API 本例行数与用途
read_thermo 100行,温度、应力、晶胞及派生体积
read_hac 100行,本例文件提供累计热导率列
read_msd 1000行,MSD和相应积分
read_sdc 1000行,速度相关及积分
read_viscosity 1000行,剪切相关和累计黏度
read_kappa 200行,HNEMD各方向分量与总值
read_shc 返回两个表,399行时间相关、200行频率数据
read_loss 10行既有微型训练输出
from calorine.gpumd import read_thermo, read_msd, read_shc
thermo = read_thermo('real-gpumd/thermo.out')
msd = read_msd('real-gpumd/msd.out')
correlation, spectrum = read_shc('real-gpumd/shc.out')
print(thermo.columns)
print(msd.head())
correlation.to_csv('shc-time.csv', index=False)
spectrum.to_csv('shc-frequency.csv', index=False)

不同读取器的返回类型不完全一致;read_shc返回两个DataFrame,不能当成单表。GPUMD多段run会追加部分相关输出,读取器可能要求单段块,不能把不同段相关函数直接拼接解释。

4 读写run.in与重绘#

from calorine.gpumd import read_runfile, write_runfile
settings = read_runfile('real-gpumd/run.in')
write_runfile('new-run.in', settings)
print(settings)
python extra_workflows.py
ls parsed-*.csv parity-*.csv nve-acf.csv
python plot.py

真实数据读取后可使用CSV或Python重绘

本教程覆盖本次明确实跑的API;TNEP偶极/极化率、IR/Raman光谱及NEP89专用微调是另一些输入与模型条件,不能由能量型Si势自动获得。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗