CP2K实时传播输入与完整续算
从完整水分子输入出发,做10步加10步续算练习,再使用三方向24fs模板并分析自己的新结果。
阅读本篇目录
实时传播续算需要成对保存电子检查点和文字重启文件。本篇先用固定水分子做10步加10步的小练习,再说明完整24 fs三方向计算。它只传播电子,原子核保持不动;不是原子MD或非绝热轨迹。
1. 下载与短练习#
下载输入、原生续算脚本和实际响应数据,解压进入 cp2k-rt-tensor,在获分配的CPU作业内执行:
bash run.sh smoke
程序依次执行:水分子自洽基态 → x方向弱脉冲 → 传播10步 → 保存完整检查点 → 不再施加脉冲地续到第20步 → 检查连续偶极和能量 → 重画包内实际24 fs参考谱。
短练习总共 0.05 fs,只用于学习输入和续算,不能产生可分辨的吸收谱。最后的默认图仍来自包内24 fs真实数据,不能误称为刚刚20步算出的谱。
原生程序使用现有 cp2k/2026.2-8173m,oneAPI2024.2 CPU构建;单MPI、8个OpenMP线程。绘图使用 sisl/0.16.4。不需要安装新软件或修改公共模块。
2. 完整x方向输入#
cat native-inputs/rt-x.inp
以下是本例完整24 fs输入。运行脚本会从现有CP2K模块确定基组、赝势文件路径。
&GLOBAL
PROJECT excitation
RUN_TYPE RT_PROPAGATION
PRINT_LEVEL MEDIUM
&END GLOBAL
&FORCE_EVAL
METHOD QS
&DFT
&REAL_TIME_PROPAGATION
APPLY_DELTA_PULSE .TRUE.
DELTA_PULSE_DIRECTION 1 0 0
DELTA_PULSE_SCALE 0.0001
EPS_ITER 1.0E-9
EXP_ACCURACY 1.0E-10
INITIAL_WFN SCF_WFN
MAT_EXP PADE
MAX_ITER 50
PERIODIC .FALSE.
PROPAGATOR ETRS
&END REAL_TIME_PROPAGATION
&PRINT
&MOMENTS ON
PERIODIC .FALSE.
REFERENCE COM
&EACH
MD 1
&END EACH
&END MOMENTS
&END PRINT
BASIS_SET_FILE_NAME BASIS_MOLOPT
POTENTIAL_FILE_NAME GTH_POTENTIALS
&QS
EPS_DEFAULT 1.0E-12
&END QS
&MGRID
CUTOFF 600
REL_CUTOFF 50
&END MGRID
&SCF
EPS_SCF 1.0E-8
MAX_SCF 100
SCF_GUESS ATOMIC
&OT
MINIMIZER DIIS
PRECONDITIONER FULL_SINGLE_INVERSE
&END OT
&END SCF
&XC
&XC_FUNCTIONAL PBE
&END XC_FUNCTIONAL
&END XC
&POISSON
PERIODIC NONE
POISSON_SOLVER MT
&END POISSON
&END DFT
&SUBSYS
&CELL
ABC 12 12 12
PERIODIC NONE
&END CELL
&COORD
O 5.9999999937 6.0000000000 5.9993806921
H 5.9999999971 6.7653454490 6.5954871263
H 5.9999998457 5.2346546213 6.5954872165
&END COORD
&KIND O
BASIS_SET DZVP-MOLOPT-SR-GTH
POTENTIAL GTH-PBE-q6
&END KIND
&KIND H
BASIS_SET DZVP-MOLOPT-SR-GTH
POTENTIAL GTH-PBE-q1
&END KIND
&END SUBSYS
&PRINT
&FORCES ON
&END FORCES
&END PRINT
&END FORCE_EVAL
&MOTION
&MD
ENSEMBLE NVE
STEPS 9600
TIMESTEP [fs] 0.0025
&END MD
&END MOTION
CELL和POISSON都使用孤立边界,12 Å盒子;水使用PBE、DZVP-MOLOPT-SR-GTH与GTH-PBE。CUTOFF 600和REL_CUTOFF 50沿用本例,不应直接当作所有体系收敛值。
INITIAL_WFN SCF_WFN表示开始时先求基态;APPLY_DELTA_PULSE TRUE只在首次初始化施加脉冲。PERIODIC FALSE选择本例孤立分子的脉冲实现。ETRS为传播器、PADE用于矩阵指数;EPS_ITER控制每步传播迭代,EPS_SCF控制初始基态,两者作用不同。
STEPS 9600、TIMESTEP [fs] 0.0025对应24 fs;短练习由脚本将第一段改成10步。y和z输入只改变脉冲方向,结构、盒子、方法和时间参数保持相同。
3. 为什么不能只带一个restart文件#
ls native/smoke-x/start/excitation-1.restart
ls native/smoke-x/start/excitation-RESTART.rtpwfn
grep -E 'INITIAL_WFN|APPLY_DELTA_PULSE|STEP_START_VAL' native/smoke-x/continued/input.inp
文字 .restart保存已走到的步数及输入状态,.rtpwfn保存实时电子状态。脚本将同一次完成后产生的两份文件一起复制到新目录,再由文字重启输入继续。
续算输入应为 INITIAL_WFN RT_RESTART、APPLY_DELTA_PULSE F。STEPS 20指目标绝对步数,因此从第10步续到第20步;不是额外再运行20步。只带基态波函数、重新SCF或再次施加脉冲,都会改变这条连续电子轨迹。
grep 'Real time propagation step' native/smoke-x/continued/output.log
cat native/smoke-x/VALIDATION.json
这里应看到第11至20步。程序保留原生输出,检查全部偶极分量和能量,以及每步传播收敛、电子数和正交性。已有同名native目录时会拒绝覆盖;需要重做请另解压新目录。
4. 完整三方向计算#
提交完整三方向时执行 sbatch job.slurm。
CPU模板按56物理核整节点分配和计费,三方向依次运行,每方向实际使用8个OpenMP线程。请先确认对应CPU分区当前可用,按集群规则提交。若已在分配好的作业内,也可依次运行 bash run-native.sh x、y、z;不要在登录节点做生产模拟。
完整结果分别在 native/full24-x、full24-y、full24-z。三个方向均完成后,在相同环境中执行:
module load sisl/0.16.4
python -B analyze.py --native
python -B plot.py --native
带 --native时,脚本读取自己新算出的三份完整 FULL-FIELDS.npz,写入 results-native、plots-native;不带此参数则处理包内 inputs的原示例数据。两条路线的输出分开,便于确认图来自哪里。
5. 换成自己的体系#
本包固定此水结构和方法,并与对应参考数组比较。自己的结构、电荷、泛函、基组或盒子改变后,请另建目录,重新选择脉冲幅度、时间步、观察时长和检查目标;不要把水的固定参考当作其他体系的判断标准。
本例24 fs原始传播由既有P100构建开始,部分后续片段使用经过检查点连续性对照的CPU构建延续。这个事实只说明这组检查点的实际连续计算,不代表任意版本和后端之间都能混用检查点,也不用于宣称CPU/GPU加速比。频谱解释见实时传播与分子响应谱;CP2K官方实时传播说明可用于核对新体系的方法条件。