CP2K核磁续算:复用基态、局域轨道与响应文件
实际读回wfn和lr文件的NMR续算,完整操作顺序、文件名和新旧张量比较。
阅读本篇目录
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个求解器又各跑了一遍。
改变原子顺序、基组、电子数、晶胞或方法后,旧响应通常不再对应同一个问题;不要为了省时间强行套用。保留原结果,重新生成适当基态与响应文件。