CP2K专题

CP2K PIMD完整检查点续算

用连续2000步与800加1200步实算对照,操作珠子坐标、速度和PILE随机状态的完整接续,说明步数与重复初帧。

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

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 实际续算对照#

真实连续与分段PIMD轨迹的第一珠子坐标、全部珠子差值、virial动能及物理势能差

本次同一版本、单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温度副本交换。

参考:CP2K PINT计数参数、BEADS状态、PILE随机状态。

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

查看配图

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

100%查看原图 ↗