CP2K副本交换结果按温度整理
实际调用i-pi-remdsort,区分walker文件与固定温度文件,读取重排后的能量、坐标和力并画图。
阅读本篇目录
副本交换完成后,某个物理walker会先后属于不同温度。直接把它整条轨迹平均,就混合了多个系综。正确的后处理是保留原始文件,按交换历史把每一个时刻的数据归入对应温度,再计算所需统计量。
1 准备已完成的轨迹#
下载CP2K与i-PI温度交换完整操作包,保存为cp2k-replica-exchange.zip。普通作业可解压后用sbatch job.slurm提交;下面短命令用于已经通过Slurm分配的CPU计算环境。
CPU分区按56核整节点申请与计费。包内job.slurm已设置单节点、1个Slurm任务、每任务56核;案例脚本在该分配中按各自所需的少量核心运行,每个CP2K进程仍为1线程。
python3 -m zipfile -e cp2k-replica-exchange.zip .
cd cp2k-replica-exchange
bash setup.sh
bash run.sh
bash verify.sh
bash plot.sh
脚本依次启动一个i-PI服务进程和两个CP2K力计算进程,运行4000步,关闭本地连接后调用原生i-pi-remdsort,再提取数据画图。每个进程用一个物理核心,CP2K为1个MPI进程、1线程。结果在results/,本次运行的图在plots/;reference-plots/复现的是操作包内实际参考算例的图片。
CP2K为cp2k/2026.2-8173m,Intel ifx2024.2.1、IntelMPI2021.13、MKL2024.2。操作包携带原版i-PI3.3.1纯Python程序及许可证,setup.sh仅在当前工作目录展开,NumPy使用集群已有环境。
2 先认清原始文件#
results/中有以下数据:
| 文件 | 含义 |
|---|---|
replica-0_remd.out、replica-1_remd.out |
两个walker的步数、时间、势能、动能、瞬时温度与目标温度 |
replica-*_remd.pos_0.xyz |
相应walker的坐标,Å |
replica-*_remd.force_0.xyz |
相应walker的原子力,原子单位 |
remd.exchange.dat |
原生工具记录的已接受交换及系综排列 |
input.xml |
该次计算的实际输入,含输出定义和初始温度对应关系 |
每条完整输出含初态第0步,至4000步共4001行/帧。普通MD时间步长是0.5 fs;交换日志中的步号按i-PI内部步序记录,整理时应交给匹配版本的工具处理,避免自己移动一行后错配。
3 调用原生排序工具#
在工作目录执行:
bash sort.sh
bash verify.sh
head -n 10 results/SRT_replica-0_remd.out
head -n 10 results/SRT_replica-1_remd.out
sort.sh读取已有结果,调用原生i-pi-remdsort input.xml,再检查能量、坐标和力的重排。该操作产生SRT_文件。脚本内实际工具调用为:
cd results
$YS_PY ../vendor/ipi-3.3.1.data/scripts/i-pi-remdsort input.xml
在此例中,初始系综0对应300 K、系综1对应600 K,因此SRT_replica-0_remd.out是300 K,另一个是600 K。判断时始终查看输入中的初始系综顺序和输出的ensemble_temperature列,不能只凭文件名猜温度。
4 怎么阅读结果#
属性文件各列依次为:步数、时间fs、势能Ha、经典MD动能Ha、瞬时温度K、目标温度K、守恒量Ha。目标温度应在排序后的单个文件中保持300或600 K;瞬时温度会有热涨落。

图中采用实际2 ps轨迹,分布图略去前0.5 ps。这个三维谐振模型的经典势能分布可与已知解析分布对照,平均势能期望为3kBT/2。不同时间块仍有起伏,曲线展示采样结果的尺度,正式统计应使用更长时间和独立轨迹。
5 整理自己的任务#
保留同一任务的实际input.xml、完整交换日志、各walker属性和结构文件。先确认它们来自同一次运行、步数完整、输出频率一致,再运行排序工具。不要把不同任务的交换日志拼接后直接套给另一组结构文件。更换温度数、输出频率或文件前缀后,也应按实际输入重新组织后处理。
操作包同时提供plots/中的本次复跑图片和reference-plots/中的实际参考算例图片;并行随机调用会使两次新轨迹的细节不同。它们都应分别检查完整物理结果和重排对应关系。
相关教程:温度副本交换输入与启动、原生PIMD珠数、路径积分完整续算。