CP2K实时耦合计算:时间步和结果怎么检查
同一H₂脉冲计算将0.5 au减为0.25 au,保持总时间,提取键长、能量及逐步电子迭代残差。
阅读本篇目录
实时电子传播的时间步往往比普通BOMD更短。减半时间步时,应把步数加倍,比较相同最终物理时刻;否则混入不同传播时长的差别。
1. 实际半步长对照#
下载实际输入、原生结果与数据绘图包,保存为example.zip:
python3 -m zipfile -e example.zip .
cd cp2k-ehrenfest-H2
bash results.sh
bash read.sh
bash plot.sh
上述命令先读随包真实结果;CSV在data/,原生输出在reference-results/,图在figures/。默认使用集群ASE环境中的Python,可用YS_ANALYSIS_PYTHON指定含NumPy、ASE和Matplotlib的解释器。

2. 输入只改变步数和时间步#
diff -u inputs/H2-pulse/input.inp inputs/H2-pulse-halfstep/input.inp
| 条件 | TIMESTEP [au_t] |
STEPS |
末时刻/fs |
|---|---|---|---|
| 原步长 | 0.5 | 40 | 0.483777 |
| 半步长 | 0.25 | 80 | 0.483777 |
1原子时间单位约0.02418884 fs;0.5 au约0.01209442 fs,不是0.5 fs。脉冲高斯中心和宽度显式使用[au_t],两组保持不变;不要按步数重新定义一个不等长的场包络。
3. 提交与提取#
本例使用cp2k/2026.2-8173m,Intel Fortran2024.2.1与Intel MPI构建。新解压目录提交:
sbatch run.slurm
脚本申请56核整节点,以2个MPI进程、每进程1线程顺序运行三个小条件。真正电子结构与动力学计算放到Slurm任务,不在登录节点直接运行。结束后提取自己的输出:
bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work
cat data/CP2K-Ehrenfest-H2-time-series.csv
cat data/CP2K-Ehrenfest-H2-conditions.csv
逐帧表同时给出时间、键长、动能、势能、两者之和、温度和最后一次实时迭代残差。原生.ener只有9位能量小数,读数时保留其精度限制。
4. 本次实际差别#
两个有场任务在相同末时刻的键长差为1.031×10⁻⁶ Å,总能差为2.81×10⁻⁷ Eh。这支持本例短时间窗口中的步长一致性,不能当作长时间传播、高能激发、其他分子或其他基组的通用误差上限。
grep 'Convergence:' reference-results/H2-pulse/native.log | tail -n 8
grep 'Convergence:' reference-results/H2-pulse-halfstep/native.log | tail -n 8
每个核步内部有多次电子迭代,应该看该步最后一次是否达到EPS_ITER,不能因第一条残差较大就直接判为未收敛;也不能只看最后一个核步,忽略前面的步骤。随包读取器检查了全部160个实际核步。
5. 换成自己的体系#
先保证初始电子态合理、原子位置和速度有明确来源,再逐项测试时间步、实时残差、网格、基组和传播总时长。不要为了“让任务结束”而忽略电子迭代不收敛。若目标是光谱,要使用适当固定核/动态核方法、足够时间窗和线性响应场强;若目标是光化学反应,还需要更完整的电子态、系综和统计处理。
本包未实施实时轨迹续算,也未计算反应产物或寿命;NMR响应续算属于另一种计算,见核磁响应续算。