CP2K专题

CP2K核磁续算:复用基态、局域轨道与响应文件

实际读回wfn和lr文件的NMR续算,完整操作顺序、文件名和新旧张量比较。

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

NMR线性响应除了基态波函数,还可能保存局域轨道与不同扰动的响应波函数。本篇接着水分子例子,演示如何一起读回这些文件。

1. 看实际续算结果#

下载完整输入、原生结果和绘图包,保存为example.zip:

python3 -m zipfile -e example.zip .
cd cp2k-linear-response-nmr
bash results.sh
bash read.sh
bash plot.sh

这些命令直接读取随包实算结果;reference-results/存原生输出,data/存CSV,figures/存图片。read.sh和plot.sh默认使用集群ASE环境的Python,无需重新计算。自己的Python须安装NumPy、ASE和Matplotlib,可用YS_ANALYSIS_PYTHON指定解释器。

原计算和真实读回响应文件后的迭代比较

本例水分子原基态12步SCF,续算1步SCF;实际执行响应迭代由108次变为6次,并直接读回3个dxp响应块。最终屏蔽张量在原生四位小数打印精度内一致。这是很小任务的复用演示,不用几秒墙钟差宣称普遍加速倍数。

2. 保留哪些文件#

ls reference-results/water-GPW/*.wfn
ls reference-results/water-GPW/*.lr

本例包含基态.wfn、局域轨道文件和nmr_p、nmr_rxp、nmr_dxp-*响应文件。保留同一PROJECT H2O-NMR-1,避免程序按另一项目前缀寻找文件。

3. 在新目录准备续算#

mkdir -p manual/water-restart
cp inputs/water-restart/input.inp manual/water-restart/
cp reference-results/water-GPW/*.wfn manual/water-restart/
cp reference-results/water-GPW/*.lr manual/water-restart/

输入中三处复用分别为:

&SCF
  SCF_GUESS RESTART
  EPS_SCF 1E-6
  MAX_SCF 100
&END SCF
&LINRES
  EPS 1E-6
  MAX_ITER 100
  RESTART
  &LOCALIZE
    RESTART
    MAX_ITER 100
  &END LOCALIZE
  &NMR
  &END NMR
&END LINRES

实际完整输入仍需保留原CURRENT、PRINT、基组等内容,见:

cat inputs/water-restart/input.inp
展开完整续算输入
&GLOBAL
  PRINT_LEVEL LOW
  PROJECT H2O-NMR-1
  RUN_TYPE LINEAR_RESPONSE
&END GLOBAL

&FORCE_EVAL
  &DFT
    BASIS_SET_FILE_NAME GTH_BASIS_SETS
    POTENTIAL_FILE_NAME GTH_POTENTIALS
    &MGRID
      CUTOFF 150
    &END MGRID
    &QS
    &END QS
    &SCF
      EPS_SCF 1E-6
      MAX_SCF 100
      SCF_GUESS RESTART
    &END SCF
    &XC
      &XC_FUNCTIONAL BLYP
      &END XC_FUNCTIONAL
    &END XC
  &END DFT
  &PROPERTIES
    &LINRES
      EPS 1E-6
      MAX_ITER 100
      PRECONDITIONER FULL_ALL
      RESTART
      RESTART_EVERY 5
      &CURRENT
        GAUGE R_AND_STEP_FUNCTION
      &END CURRENT
      ##       RESTART
      &LOCALIZE
        RESTART
        MAX_ITER 100
        &PRINT
          &LOC_RESTART
          &END LOC_RESTART
        &END PRINT
        ##           RESTART
      &END LOCALIZE
      &NMR
      &END NMR
      &PRINT
        &RESTART
        &END RESTART
      &END PRINT
    &END LINRES
  &END PROPERTIES
  &SUBSYS
    &CELL
      ABC 5.0 5.0 5.0
    &END CELL
    &COORD
      H       .000689482500      -.765854689700      1.551514984100
      H       .000592940100       .767987328300      1.553204324000
      O       .046239583400       .001896697900      0.9564530746
    &END COORD
    &KIND H
      BASIS_SET DZVP-GTH
      POTENTIAL GTH-BLYP-q1
    &END KIND
    &KIND O
      BASIS_SET DZVP-GTH
      POTENTIAL GTH-BLYP-q6
    &END KIND
  &END SUBSYS
&END FORCE_EVAL

4. 提交#

本例使用cp2k/2026.2-8173m CPU版,Intel oneAPI2024.2/Intel MPI构建。新计算通过Slurm提交:

sbatch run.slurm

脚本申请56核整节点,实际2个MPI进程、每进程1线程,顺序运行5个小条件;不要直接在登录节点进行这些电子结构计算。结束后:

bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work

整包脚本自动在原水分子完成后复制文件并执行续算。若只做手工续算,把单项mpirun命令放入自己的Slurm脚本,先cd manual/water-restart,再运行同一模块的CP2K。

5. 确认程序真的读回#

grep 'SCF run converged' reference-results/water-restart/native.log
grep 'read from localization restart' reference-results/water-restart/native.log
grep 'Reading response wavefunctions' reference-results/water-restart/native.log
grep 'have been read from restart' reference-results/water-restart/native.log
cat data/CP2K-NMR-runtime-and-restart.csv

只有输入写了RESTART还不够,还要看实际日志。此例3个dxp块直接读回,因此续算日志中只有6个实际线性求解器记录,不能误数为原来的18个求解器又各跑了一遍。

改变原子顺序、基组、电子数、晶胞或方法后,旧响应通常不再对应同一个问题;不要为了省时间强行套用。保留原结果,重新生成适当基态与响应文件。

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

查看配图

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

100%查看原图 ↗