CP2K温度加速Monte Carlo:辅助变量与接受率
使用真实水二聚体TAMC,区分物理与辅助温度,比较原子步长并读取SCF、接受率和广义力。
阅读本篇目录
本系列用鸢算科技集群实际完成的三个CP2K入口,说明传统Monte Carlo、Tree Monte Carlo和温度加速Monte Carlo的输入、提交与结果读取。它们解决的问题和计数方式不同,不能只改RUN_TYPE名字就互换。
下载完整输入、实际输出与绘图工具,保存为example.zip:
python3 -m zipfile -e example.zip .
cd cp2k-special-sampling-examples
bash results.sh
bash read.sh
bash plot.sh
以上只读已经完成的结果,不启动新计算。程序为cp2k/2026.2-8173m,Intel oneAPI 2024.2/ifx、Intel MPI 2021.13、MKL构建。原始方法输入改编自固定CP2K 2026.2官方示例,附GPL许可;三种例子均为小规模操作参考,不据此报告相平衡、扩散时间或收敛自由能。
要重算整套小例子,在新的解压目录提交:
sbatch run.slurm
squeue -u "$USER"
# 完成后
bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work
CPU入口按集群规则申请整节点56核,实际按每个步骤分别用1、4或2个MPI进程,OpenMP为1;这不是56核性能测试。work/已经存在时脚本会保留它,避免覆盖结果。
1. 物理温度与辅助温度分开#
Temperature Accelerated Monte Carlo引入辅助集体变量,以耦合势连接原子坐标和辅助变量。本例是六原子水二聚体,HCTH120/DZVP-GTH、300 Ry、电子SCF阈值1E−6;物理系统温度25 K,辅助变量温度3000 K。这是沿用官方小例的算法演示,不表示水真的同时具有两种物理温度,也不是通用推荐参数。
集体变量用原版输入的HBP定义,ATOMS 4 5 1中的编号对应水二聚体文件;它不是一个可以直接标成Å的普通键长。辅助坐标z、原子构型给出的Θ和广义力要按该定义解释。
cat inputs/water-dimer-TAMC-small-step/dimer.xyz
cat inputs/water-dimer-TAMC-small-step/input.inp
完整TAMC输入:展开查看DFT、HBP、辅助变量和MC/MD控制
#CPQA INCLUDE dimer.xyz
#CPQA INCLUDE topology_atoms.psf
!!cp2k!!
!! inp file by Alin M Elena
!! alinm.elena@gmail.com
!! http://alin.elenaworld.net
#global section sets what kind of calculations you want to do an general
! settings
@SET pfreq 100 ! the frequency for printing .cube properties and restart files
@SET name dimer
@SET period T
@SET method GPW ! use GAPW/ GPW for dft
@SET zk 10.0 ! coupling constant for collective variables and atoms
@SET zmass 100.0 ! mass for collective variables
@SET zgamma 0.001 ! friction coefficient for lagrange equations for cvs
@SET Tz 3000.0 ! temperature
@SET Nz 1 ! number of steps to integrate z
@SET dtz 0.5 ! time step to integrate the z
@SET dt 0.1 ! time steps to integrate atoms
@SET N 1 ! the length of the mini-trajectory
@SET M 2 ! number of cycles/steps for the HMC part
@SET Temp 25 ! physical system temperature
&GLOBAL
ECHO_INPUT yes
PREFERRED_FFT_LIBRARY FFTSG
! Run_type MD
! Run_type GEOMETRY_OPTIMIZATION
PRINT_LEVEL low
PROJECT ${name}
! Run_type ENERGY_Force
RUN_TYPE TAMC
WALLTIME 3600
&PRINT
FILENAME =./${name}
&END PRINT
&END GLOBAL
#defines how forces are evaluated
&FORCE_EVAL
METHOD QS ! what is the method used for computing the energy
STRESS_TENSOR analytical
&DFT ! dft settings
BASIS_SET_FILE_NAME BASIS_SET
CHARGE 0
POTENTIAL_FILE_NAME POTENTIAL
&LOCALIZE True
EPS_LOCALIZATION 1.0e-4
EPS_OCCUPATION 1.0e-6
MIN_OR_MAX SpreadMin
RESTART false
STATES Occupied
USE_HISTORY true
&PRINT
&MOLECULAR_DIPOLES Off
ADD_LAST numeric
PERIODIC ${period}
REFERENCE zero
REFERENCE_POINT 0.0 0.0 0.0
&EACH
MD 10
&END EACH
&END MOLECULAR_DIPOLES
&MOLECULAR_STATES off
ADD_LAST numeric
&EACH
MD 10
&END EACH
&END MOLECULAR_STATES
&TOTAL_DIPOLE On
ADD_LAST numeric
PERIODIC ${period}
REFERENCE zero
REFERENCE_POINT 0.0 0.0 0.0
&EACH
MD 10
&END EACH
&END TOTAL_DIPOLE
&WANNIER_CENTERS
ADD_LAST numeric
FORMAT xyz
IONS+CENTERS true
&EACH
MD 1
&END EACH
&END WANNIER_CENTERS
&WANNIER_STATES on
ADD_LAST numeric
&EACH
MD 1
&END EACH
&END WANNIER_STATES
&END PRINT
&END LOCALIZE
&MGRID
CUTOFF 300
&END MGRID
&POISSON
PERIODIC None
POISSON_SOLVER MT
&MT
&END MT
&END POISSON
&PRINT
&EFIELD_CUBE Medium
ADD_LAST Numeric
&EACH
MD ${pfreq}
&END EACH
&END EFIELD_CUBE
&E_DENSITY_CUBE Medium
ADD_LAST Numeric
&EACH
MD ${pfreq}
&END EACH
&END E_DENSITY_CUBE
&MO_CUBES Medium
ADD_LAST Numeric
&EACH
MD 1
&END EACH
&END MO_CUBES
&TOT_DENSITY_CUBE Medium
ADD_LAST Numeric
&EACH
MD ${pfreq}
&END EACH
&END TOT_DENSITY_CUBE
&V_HARTREE_CUBE Medium
ADD_LAST Numeric
&EACH
MD ${pfreq}
&END EACH
&END V_HARTREE_CUBE
&END PRINT
&QS
EPS_DEFAULT 1.0e-12
EXTRAPOLATION ASPC
EXTRAPOLATION_ORDER 3
METHOD ${method}
&DFTB
DISPERSION T
DO_EWALD T
ORTHOGONAL_BASIS F
SELF_CONSISTENT T
&PARAMETER
PARAM_FILE_NAME scc_parameter
PARAM_FILE_PATH params_scc
UFF_FORCE_FIELD uff_table
&END PARAMETER
&END DFTB
&END QS
&SCF ! the scf settings...
EPS_SCF 1.e-6
MAX_SCF 100
SCF_GUESS Atomic
&MIXING
METHOD Pulay_Mixing
NBUFFER 5
NMIXING 1
PULAY_ALPHA 0.3
PULAY_BETA 0.5
&END MIXING
&OT T ! orbital transformation settings
MINIMIZER CG
PRECONDITIONER Full_single_inverse
&END OT
&OUTER_SCF On
EPS_SCF 1.0E-6
MAX_SCF 10
&END OUTER_SCF
&PRINT
&RESTART
ADD_LAST Numeric
&EACH
GEO_OPT 1
MD ${pfreq}
QS_SCF 0
&END EACH
&END RESTART
&END PRINT
&END SCF
&XC ! exchange and correlation functionals
&XC_FUNCTIONAL HCTH120
&HCTH T
PARAMETER_SET 120
&END HCTH
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
ABC [angstrom] 6.0 6.0 6.0
ALPHA_BETA_GAMMA 90.0 90.0 90.0
PERIODIC xyz
&END CELL
&COLVAR
&HBP
ATOMS 4 5 1
NPOINTS 1
&END HBP
&END COLVAR
&KIND O
BASIS_SET DZVP-GTH-PADE
POTENTIAL GTH-HCTH120-q6
&END KIND
&KIND H
BASIS_SET DZVP-GTH-PADE
POTENTIAL GTH-HCTH120-q1
&END KIND
&TOPOLOGY
CONNECTIVITY MOL_SET
COORD_FILE_FORMAT xyz
COORD_FILE_NAME dimer.xyz
&CENTER_COORDINATES off
&END CENTER_COORDINATES
&MOL_SET
&MOLECULE
CONN_FILE_NAME topology_atoms.psf
NMOL 1
&END MOLECULE
&END MOL_SET
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL
&MOTION
&FREE_ENERGY Metadyn
&METADYN
LAGRANGE true
LANGEVIN true
TAMCSTEPS ${Nz}
TEMPERATURE ${Tz}
TEMP_TOL 2000.0
TIMESTEP ${dtz}
&EXT_LAGRANGE_SS0
0.44025202
&END EXT_LAGRANGE_SS0
&METAVAR
COLVAR 1
GAMMA ${zgamma}
LAMBDA ${zk}
MASS ${zmass}
SCALE 1.0
&END METAVAR
&PRINT
&COLVAR
&EACH
MD 1
&END EACH
&END COLVAR
&END PRINT
&END METADYN
&END FREE_ENERGY
&GEO_OPT
MAX_DR 3.0e-3
MAX_FORCE 4.5e-4
MAX_ITER 1000
OPTIMIZER LBFGS
&END GEO_OPT
&MC
ENSEMBLE Traditional
IPRINT 1
NSTEP ${M}
RANDOMTOSKIP 0
&END MC
&MD
ENSEMBLE NVE
STEPS ${N}
TEMPERATURE ${Temp}
TIMESTEP ${dt}
TIME_START_VAL 0.0
&THERMOSTAT
&NOSE
LENGTH 3
MTS 2
TIMECON 1000.0
YOSHIDA 3
&END NOSE
&END THERMOSTAT
&END MD
&PRINT
&TRAJECTORY
FILENAME trajectory.xyz
FORMAT xyz
&EACH
MD 10
&END EACH
&END TRAJECTORY
&VELOCITIES
FILENAME velocity.xyz
FORMAT xyz
&EACH
MD 10
&END EACH
&END VELOCITIES
&END PRINT
&END MOTION
关键变量中,dt=0.1是原子小轨迹的时间步,dtz=0.5是辅助变量积分步;M=2为每个阶段的MC循环数,Nz=1只推进一个辅助步。初始平均阶段还要执行两次小轨迹,所以本次共尝试四条小轨迹。不要把四条尝试直接当作四个接受状态或一条常规MD轨迹。
2. 运行并观察电子收敛#
在新的目录保留input.inp、dimer.xyz与topology_atoms.psf,并在已申请的CPU资源中运行:
module purge
module load cp2k/2026.2-8173m
export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1
mpirun -np 2 cp2k.psmp -i input.inp -o output.log
grep 'SCF run converged' output.log
grep 'HMC| global acceptance ratio' output.log
本次每个TAMC条件各完成9次SCF受力评估。它们是采样内部的电子求解,不是9个已经热化的独立材料样本。
3. 为什么比较两个原子时间步#
附件保留原子时间步1 fs和0.1 fs的两组实际结果,其他模型与温度参数一致。1 fs例四条小轨迹均拒绝;仅把原子步长改为0.1 fs后,初始两条接受,后两条拒绝,累计2/4。
cat analysis-read/CP2K-TAMC-step-comparison.csv
cat analysis-read/CP2K-TAMC-native-forces.csv

在初始固定z平均阶段,耦合广义力与−10(z−Θ)对应,配套读取器核对实际数值与运行平均。后续辅助变量更新阶段涉及算法中的平均力和状态更新,不把每一列都机械当作同一时刻的瞬时原子力。
这个对照说明需要关注积分误差和接受率;四次尝试太少,2/4不是可靠的长期接受率估计,更不能据此给出自由能曲线或反应速率。
4. 改成自己的研究前#
先定义物理体系、集体变量、耦合强度、辅助质量和两种温度的角色,再检查电子求解、积分步、热化和足够长的统计。需要材料自由能时,要按方法定义进行重构并检查收敛,不能将本例两行辅助变量输出直接画成PMF。
下载时间步对照表 · 下载原生广义力记录。更多参数见CP2K 2026.2 MC输入、TMC输入及辅助变量METADYN设置。