NepTrain调用GPUMD进行温度探索
300 K和600 K各1 ps的原生MD、轨迹输出与实际温压变化。
阅读本篇目录
下载输入、模型、真实数据和短命令脚本(ZIP)。本例用第一代NEP,在同一扰动Si8晶胞上做两个温度的NVT探索,轨迹供后续选样。
1 先分清时间和输出频率#
cat inputs/run.in
cat inputs/Si8.vasp
附件的2.2.0工作流模板沿用旧输出名。短入口会将其转换为GPUMD 5.9.1实际支持的 dump_xyz,原生300 K任务的关键输入为:
potential nep.txt
velocity 300
ensemble nvt_nhc 300 300 100
time_step 1.0
dump_thermo 50
dump_xyz 50 dump.xyz velocity force potential
run 1000
时间步1 fs,1000步合计1 ps;每50步输出一次,得到20帧,不含第0步。600 K分支把控温目标改成600/600,其初始速度仍来自300 K,随后由热浴调整。参数100是热浴耦合步数。
不要把附件旧模板单独交给新GPUMD执行;使用工作流短命令可完成版本间输出格式衔接,势、时间步、温度和采样频率保持原设定。
2 运行流程与寻找轨迹#
首次完整运行:
bash prepare.sh
bash workflow.sh
bash status.sh
已经开始后继续查看状态。输出汇集在项目的dispatcher与loop/cache下:
find dispatcher -name run.in
find dispatcher -name thermo.out
find dispatcher -name dump.xyz
每个温度一个独立Slurm任务,各用一张GPU。参考数据可以直接查看:
bash run.sh
head analysis/neptrain-MD.csv

3 图中最需要理解的三件事#
第一,NVT保持晶胞体积150.712473 ų,压力约9–11 GPa,是压缩初始结构的实际结果。设温度300 K并不等于设定了常压;若需要压强控制,应另选合适的系综、平衡流程和训练覆盖范围。
第二,八个原子的瞬时温度波动很大。控温目标不是每一帧必须等于目标值;1 ps也不足以证明平衡或统计收敛。不能把这条短轨迹用于宣称收敛扩散、热导率或相变温度。
第三,轨迹可用于选样不等于势在所有轨迹上准确。本例检查原子距离、有限能量与温度,并对选出的四帧做真实DFT补标;这些检查不能替代更广泛的独立DFT验证。
4 换成自己的结构#
在首次prepare之前修改 inputs/Si8.vasp 和 inputs/run.in,并使用元素、能量定义和结构范围匹配的训练数据。改变温度列表需要同步修改配置生成器中的温度项,不能只改标题。
cat inputs/run.in
cat inputs/nep.in
cat data/SPLIT.json
先确认势适用,再拉长轨迹。保存足够频率的结构供补标,避免只保留thermo而没有对应的原子构型。