PLUMED OPES状态复用:读取STATE与静态偏置
实际读取四份STATE,冻结核更新并计算坐标扫描、偏置能量和原子力,说明与完整MD续算的区别。
阅读本篇目录
希望复用已经建立的OPES偏置时,应保留STATE和相应参数。本篇读取四组真实模型动力学生成的状态,在给定坐标上重算静态偏置,并检查力。
1. 找到状态文件#
下载OPES运行、重加权与STATE资料包,保存为example.zip:
python3 -m zipfile -e example.zip .
cd plumed-opes-complete
bash results.sh
bash read.sh
bash plot.sh
这几条命令读取已保存的实际结果,生成analysis-read/与figures/,不重跑MD。
head reference-results/opes_metad-797101/STATE
cat reference-results/extra-checks/opes_metad-797101-state/plumed.dat
STATE包含压缩核及内部统计,KERNELS是核的历史更新记录。按OPES官方说明,要求准确恢复偏置时使用STATE_RFILE;从KERNELS恢复可能受输出精度及自适应宽度影响。
2. 完整静态偏置输入#
UNITS NATURAL
d: DISTANCE ATOMS=1,2 COMPONENTS NOPBC
b: OPES_METAD ARG=d.x TEMP=1 PACE=100 SIGMA=0.1 BARRIER=8 KERNEL_CUTOFF=8 BIASFACTOR=5 STATE_RFILE=STATE RESTART=YES UPDATE_UNTIL=0
PRINT ARG=d.x,b.bias,b.neff,b.nker STRIDE=1 FILE=STATIC FMT=%24.16e
STATE_RFILE=STATE读取偏置,RESTART=YES明确重启语义,UPDATE_UNTIL=0使本例扫描中不继续加入新核。方法名、温度、偏置参数和KERNEL_CUTOFF与生成状态时保持一致。
本例在7个中心坐标及其微小左右扰动上计算,另重复3个坐标检查静态结果,共24帧。XYZ里的两个点只是解析模型坐标载体。
3. 终端运行与输出#
在相应状态后处理目录中,核心命令为:
"$plumed_prefix/bin/plumed" driver --plumed plumed.dat --ixyz scan.xyz --box 10,10,10 --dump-forces forces.xyz --dump-forces-fmt %.12e --debug-forces derivative-check.dat
完整的sbatch run.slurm流程已自动执行四份状态读取。完成后查看:
head work/extra-checks/opes_metad-797101-state/STATIC
head -8 work/extra-checks/opes_metad-797101-state/forces.xyz
bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work
4. 偏置与力的实际检查#

四份状态在扫描中均保持neff与nker不变,重复坐标得到相同偏置,输入STATE文件内容保持不变。28个中心点的原子2 x方向力与独立能量差分最大差为3.098e-09个自然力单位;原生--debug-forces还逐帧核对了每份状态的144个原子力分量。
本例显式使用KERNEL_CUTOFF=8。该版本的截断核函数在能量与原生解析力中存在有限尾项差别;扩大范围后,这组参数下的差异降到上述水平。默认截断范围下的结果不能直接套用本图误差,也不要仅为复用现成状态在重启时任意改截断参数。实际算法可核对对应版本源代码。
5. 完整MD续算还需要什么#
这次演示恢复的是偏置状态,尚未恢复动力学引擎的坐标、速度或随机数状态。真正继续一个材料MD任务,需要同时保留引擎自身的重启文件、结构、步数及对应PLUMED参数;仅复制STATE不能保证轨迹逐步连续。
若要让恢复后的OPES继续学习新核,不应照搬本篇静态演示的UPDATE_UNTIL=0。先根据引擎的正式续算方式准备重启,再确认PLUMED参数、状态文件和单位一致。