CP2K专题

CP2K实时传播输入与完整续算

从完整水分子输入出发,做10步加10步续算练习,再使用三方向24fs模板并分析自己的新结果。

更新于 2026-11-09约 6 分钟阅读按任务与环境选择适用配置
阅读本篇目录

实时传播续算需要成对保存电子检查点和文字重启文件。本篇先用固定水分子做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官方实时传播说明可用于核对新体系的方法条件。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗