CP2K PIMD完整检查点续算
用连续2000步与800加1200步实算对照,操作珠子坐标、速度和PILE随机状态的完整接续,说明步数与重复初帧。
阅读本篇目录
PIMD长任务接续时,需要保留每个珠子的坐标、速度和恒温器状态。完整原生检查点可以保存这些内容。本篇使用实际连续轨迹与分段轨迹,说明该从哪个文件接续、怎样设置新增步数,以及输出应按什么顺序整理。
1 下载并运行配套对照#
下载原生PIMD、珠数与完整续算操作包,保存为cp2k-pimd.zip。解压后可用sbatch job.slurm提交普通CPU作业;以下命令用于已经通过Slurm分配的CPU计算环境。
CPU分区按56核整节点申请与计费。包内job.slurm已设置单节点、1个Slurm任务、每任务56核;案例脚本在该分配中按各自所需的少量核心运行,每个CP2K进程仍为1线程。
python3 -m zipfile -e cp2k-pimd.zip .
cd cp2k-pimd
bash setup.sh
bash run.sh
bash verify.sh
bash plot.sh
操作包先运行14个珠数、质量与种子条件,再做连续2000步与800+1200步的完整续算对照。每个独立条件为1个MPI进程、1线程,外层按已分配的物理核心并行,最多12个条件同时运行。结果在results/,图片在plots/。同一输入已完成时会复用结果;修改物理设置后请建立新的工作目录。
环境为CP2K2026.2 CPU模块cp2k/2026.2-8173m,Intel ifx2024.2.1、IntelMPI2021.13、MKL2024.2,配套分析使用已有Python/NumPy环境。
续算对照在results/restart/continuous/、half/、resume/三个目录。它们采用同一个四珠子、300 K、质量1 u、K=0.05 Ha/Bohr²谐振模型,步长0.25 fs。
| 目录 | 实际操作 | 覆盖时间 |
|---|---|---|
continuous |
连续2000步 | 0–500 fs |
half |
先跑800步,保存完整检查点 | 0–200 fs |
resume |
从800步检查点再跑1200步 | 200–500 fs |
2 续算要保留什么#
half/half-1.restart中保留MOTION/PINT的迭代计数、珠子BEADS/COORD、BEADS/VELOCITY、PILE恒温信息及随机状态。配套脚本直接读取这一份完整文件,仅修改新任务名和本次新增步数。
本例关键计数如下:
&PINT
P 4
NUM_STEPS 1200
ITERATION 800
TEMP 300
DT 0.25
HARM_INT EXACT
TRANSFORMATION NORMAL
...
&END PINT
这里的NUM_STEPS=1200表示此次新增1200步;ITERATION=800保留已有计数,结束时应到2000步。上述省略部分应从完整检查点原样保留,尤其是珠子与PILE随机状态。
3 用终端检查步数与结果#
source env.sh
"$YS_PY" - <<'PYCODE'
import numpy as np
for name in ['continuous', 'half', 'resume']:
x = np.load('results/restart/'+name+'/fields.npz')
print(name, '首末步:', x['steps'][0], x['steps'][-1],
'帧数:', len(x['steps']), '末时间/fs:', x['time_fs'][-1])
PYCODE
连续轨迹含0–2000步,共2001帧;前半段含0–800步,共801帧;接续输出含初始检查点800步至2000步,共1201帧。拼接时应保留前半段全部帧,再追加续算的801–2000步,避免把800步重复计入统计。
4 实际续算对照#

本次同一版本、单MPI单线程设置下,连续轨迹与拼接轨迹的全部珠子坐标、力、物理能量、质心和回转半径在保存精度内一致。图中虚线标出200 fs接续位置。
5 完整实际续算输入#
下面文件来自本例800步检查点,含实际珠子状态,便于与自己的文件对照。迁移到自己的体系时,请使用自己计算产生的完整检查点。
展开本例实际执行的完整resume/input.inp
# Version information for this restart file
# current date 2026-11-09 11:07:57.343
# current working dir /public/.ys-full-function-20261027/wave440-source/half
# Program compiled at 2026-09-29 11:30:27
# Program compiled on ccn001-8173m
# Program compiled for x86_64
# Source code revision number git:c92cc08
&GLOBAL
PRINT_LEVEL MEDIUM
PROJECT_NAME resume
RUN_TYPE PINT
SEED 20261109
&END GLOBAL
&MOTION
&PINT
P 4
PROC_PER_REPLICA 1
NUM_STEPS 1200
ITERATION 800
TEMP 3.0000000000000000E+002
DT 2.4999999999999997E-001
HARM_INT EXACT
NRESPA 1
TRANSFORMATION NORMAL
&BEADS
&COORD
3.9008112757640989E-001 -8.8922583567263347E-002 1.1497416455432398E-001 7.2092344927247559E-002 \
-3.4564442535727644E-002 -2.8582619993573594E-001 -1.1161890441486118E-001 -1.4130549026633696E-001 -1.4697777653458699E-001 \
1.1336391409807695E-001 -1.5041878074277942E-001 -2.9265348416060016E-001
&END COORD
&VELOCITY
4.4984553591658887E-004 3.8536682460916486E-004 1.3393424500080548E-003 1.2036294950384975E-003 \
-4.1665112584068437E-004 -5.1141452344487227E-004 -1.2456977214899214E-005 -2.6372318569733001E-004 -1.1284622900374405E-003 \
-9.2262196426372723E-004 -1.1701581244994634E-003 -1.4696258926456564E-003
&END VELOCITY
&END BEADS
&PILE
TAU 9.9999999999999982E+000
THERMOSTAT_ENERGY 1.0353868587780916E-002
&RNG_INIT
pile_rng_gaussian 1 F T F -1.7902431288663626E-01 2116380639.0 1162215522.0 483657674.0 3356006243.0 3912206730.0 3043988786.0 101.0 101.0 101.0 101.0 101.0 101.0 101.0 101.0 101.0 101.0 101.0 101.0
&END RNG_INIT
&END PILE
&INIT
LEVY_POS_SAMPLE T
LEVY_SEED 101
THERMOSTAT_SEED 101
&END INIT
&PRINT
&ENERGY SILENT
FILENAME =pint-energy.dat
&EACH
PINT 1
&END EACH
&END ENERGY
&CENTROID_POS SILENT
FILENAME =centroid.xyz
UNIT "angstrom"
&EACH
PINT 1
&END EACH
&END CENTROID_POS
&CENTROID_GYR SILENT
FILENAME =gyration.xyz
UNIT "angstrom"
&EACH
PINT 1
&END EACH
&END CENTROID_GYR
&END PRINT
&END PINT
&PRINT
&TRAJECTORY SILENT
FILENAME bead-pos
FORMAT XMOL
&EACH
PINT 1
&END EACH
&END TRAJECTORY
&FORCES SILENT
FILENAME bead-force
UNIT "hartree/bohr"
FORMAT XMOL
&EACH
PINT 1
&END EACH
&END FORCES
&RESTART SILENT
BACKUP_COPIES 0
&EACH
PINT 800
&END EACH
&END RESTART
&RESTART_HISTORY OFF
&END RESTART_HISTORY
&END PRINT
&END MOTION
&FORCE_EVAL
METHOD FIST
&EXTERNAL_POTENTIAL
ATOMS_LIST 1
FUNCTION 0.5*K*(X^2+Y^2+Z^2)
PARAMETERS "K"
VALUES 5.0000000000000003E-002
&END EXTERNAL_POTENTIAL
&MM
&FORCEFIELD
DO_ELECTROSTATICS F
&NONBONDED
&LENNARD-JONES
ATOMS "H" "H"
EPSILON 0.0000000000000000E+000
SIGMA 1.0000000000000000E+000
RCUT 4.0000000000000000E+000
&END LENNARD-JONES
&END NONBONDED
&CHARGE
ATOM "H"
CHARGE 0.0000000000000000E+000
&END CHARGE
&END FORCEFIELD
&POISSON
PERIODIC NONE
&EWALD
EWALD_TYPE NONE
&END EWALD
&END POISSON
&END MM
&SUBSYS
&CELL
A 2.0000000000000004E+001 0.0000000000000000E+000 0.0000000000000000E+000
B 0.0000000000000000E+000 2.0000000000000004E+001 0.0000000000000000E+000
C 0.0000000000000000E+000 0.0000000000000000E+000 2.0000000000000004E+001
PERIODIC NONE
&END CELL
&COORD
H 0.1 0.1 0.1
&END COORD
&KIND "H"
ELEMENT "H"
MASS 1.0000000000000000E+000
&END KIND
&TOPOLOGY
NUMBER_OF_ATOMS 1
CONN_FILE_FORMAT OFF
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL
6 延长自己的PIMD任务#
先保存完整检查点与原输入,确认珠数、质量、温度、势能方法和步长;再按目标设置新增步数,使用新的输出目录运行。检查续算首帧、时间和珠子编号是否接得上,并根据实际步号整理输出。修改珠数或势能面应作为新的采样条件单独组织,重新平衡并检查统计量。
相关教程:PIMD珠数与完整输入、核量子与质量对照、i-PI温度副本交换。