CP2K Monte Carlo:水与氩的小体系实操
用真实27原子例子说明经典MC输入、拓扑、260次移动尝试和末端坐标能量读取。
阅读本篇目录
本系列用鸢算科技集群实际完成的三个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. 体系与一次“步”的含义#
本例是13.5 Å立方周期盒中的7个水分子加6个Ar,共27颗原子,采用输入内定义的经典FIST势。NSTEP=20为外层MC步,本例涉及13个分子/单原子对象,原生结果实际记录260次移动尝试;它们没有对应普通MD的260个物理时间步。
cat inputs/water-Ar-MC/input.inp
cat inputs/water-Ar-MC/topology_fist_WAT.psf
cat inputs/water-Ar-MC/topology_fist_ARG.psf
完整MC输入:展开查看力场、坐标与移动概率
&GLOBAL
PRINT_LEVEL LOW
PROJECT H2O_MC
RUN_TYPE MC
&END GLOBAL
&MOTION
&MC
BOX2_FILE_NAME MC_Fist_box2.inp
ENSEMBLE TRADITIONAL
ETA 0.0 0.0
IPRINT 1
LBIAS no
LSTOP no
NMOVES 1
NSTEP 20
PRESSURE 1.013
RESTART no
RESTART_FILE_NAME mc_restart_1
TEMPERATURE 298.0
VIRIAL_TEMPS 300.0
&AVBMC
AVBMC_ATOM 1 1
AVBMC_RMAX 5.0 5.0
AVBMC_RMIN 1.0 1.0
PBIAS 0.5 0.5
&END AVBMC
&MAX_DISPLACEMENTS
&BOX_DISPLACEMENTS
RMVOLUME 500.0
&END BOX_DISPLACEMENTS
&MOL_DISPLACEMENTS
RMANGLE 10.0 5.0
RMBOND 0.074 0.07
RMDIHEDRAL 3.0 1.0
RMROT 26.0 16.0
RMTRANS 0.58 0.55
&END MOL_DISPLACEMENTS
&END MAX_DISPLACEMENTS
&MOVE_PROBABILITIES
PMAVBMC 0.0
PMHMC 0.0
PMSWAP 0.0
PMTRAION 0.33
PMTRANS 0.67
PMVOLUME 0.0
&BOX_PROBABILITIES
PMHMC_BOX 1.0
PMVOL_BOX 1.0
&END BOX_PROBABILITIES
&MOL_PROBABILITIES
PMAVBMC_MOL 0.5 1.0
PMROT_MOL 1.0 1.0
PMSWAP_MOL 0.5 1.0
PMTRAION_MOL 1.0 1.0
PMTRANS_MOL 0.5 1.0
&END MOL_PROBABILITIES
&END MOVE_PROBABILITIES
&MOVE_UPDATES
IUPTRANS 100
IUPVOLUME 100
&END MOVE_UPDATES
&END MC
&END MOTION
#CPQA INCLUDE MC_Fist_box2.inp
#CPQA DEPENDS GEMC_swap_box1.inp
# this dependency rule is fake: the reason is that MC is the only module as of Today that writes
# hard-coded output files, which are then read in the subsequent steps. Once modernized, these
# dependencies for CPQA can be deleted.
&FORCE_EVAL
METHOD FIST
&MM
&FORCEFIELD
&BEND
ATOMS H O H
K 0.05
THETA0 1.82422
&END BEND
&BOND
ATOMS O H
K 0.05
R0 0.97572
&END BOND
&CHARGE
ATOM Ar
CHARGE 0.0
&END CHARGE
&CHARGE
ATOM O
CHARGE -0.8476
&END CHARGE
&CHARGE
ATOM H
CHARGE 0.4238
&END CHARGE
&NONBONDED
&LENNARD-JONES
ATOMS Ar Ar
EPSILON 60.0
RCUT 5.0
SIGMA 2.5
&END LENNARD-JONES
&LENNARD-JONES
ATOMS Ar O
EPSILON 70.0
RCUT 5.0
SIGMA 2.8
&END LENNARD-JONES
&LENNARD-JONES
ATOMS Ar H
EPSILON 0.0
RCUT 5.0
SIGMA 2.5
&END LENNARD-JONES
&LENNARD-JONES
ATOMS O O
EPSILON 78.19580
RCUT 5.0
SIGMA 3.1655
&END LENNARD-JONES
&LENNARD-JONES
ATOMS O H
EPSILON 0.0
RCUT 5.0
SIGMA 3.1655
&END LENNARD-JONES
&LENNARD-JONES
ATOMS H H
EPSILON 0.0
RCUT 5.0
SIGMA 3.1655
&END LENNARD-JONES
&END NONBONDED
&SPLINE
EMAX_SPLINE 1000000.0
&END SPLINE
&END FORCEFIELD
&POISSON
&EWALD
ALPHA .40
EWALD_ACCURACY 1.0E-2
EWALD_TYPE ewald
GMAX 11
&END EWALD
&END POISSON
&END MM
&SUBSYS
&CELL
ABC 13.5 13.5 13.5
&END CELL
&COORD
O 11.667599837210 7.964352234664 0.059453614019
H 10.873359634781 8.005423314626 0.665667823055
H 11.364979095795 7.770411108906 -0.873716837951
O 2.314161441602 5.011228167767 2.784706973673
H 1.663128370368 5.686998340596 3.130381117447
H 2.659721328394 5.306531429441 1.893985965664
O 10.262864742466 5.548805003571 11.360725453725
H 10.424041748648 4.666485986338 11.802918991113
H 9.436479204754 5.494708086386 10.800225647804
O 5.937092785694 12.752770338234 7.554822749656
H 6.459679552548 12.731874699056 8.407152758147
H 6.560379344025 12.890048310674 6.784973290144
O 1.052476316752 3.192494253568 0.284763135867
H 1.009686510209 3.892635795528 0.997483876183
H 1.385134340137 3.601676794269 -0.564888471374
O 11.621014134223 7.899470257763 6.835708666826
H 10.723243819476 8.290315257093 7.038806299646
H 12.107936378358 8.496446358905 6.198114886544
O 3.255054397643 5.532098285916 13.500752220167
H 3.169785700155 4.860242146843 12.764995074351
H 3.889107504717 6.253294143532 13.221731148935
Ar 1.43 3.54 6.24
Ar 4.43 10.54 9.24
Ar 11.43 3.54 6.24
Ar 11.43 3.54 2.24
Ar 2.43 5.54 6.24
Ar 10.43 5.54 5.24
&END COORD
&TOPOLOGY
CONNECTIVITY MOL_SET
&MOL_SET
&MOLECULE
CONN_FILE_NAME topology_fist_WAT.psf
NMOL 7
&END MOLECULE
&MOLECULE
CONN_FILE_NAME topology_fist_ARG.psf
NMOL 6
&END MOLECULE
&END MOL_SET
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL
ENSEMBLE TRADITIONAL与移动概率定义实际采样方式。平移、转动、内坐标和交换等移动需要相应分子拓扑;不能把不同组分的分子数、拓扑文件和坐标顺序拆开修改。
输入保留了官方示例的模型参数,用于学习如何组织文件;改变水模型或混合规则时应重新检查参数单位和物理适用范围,不把这套短例当成经过标定的混合溶液模型。
2. 单独运行一个目录#
配套总脚本会管理完整流程。若自己只做MC,可先将相应inputs/water-Ar-MC/复制到新的作业目录,并在已申请的CPU资源中运行:
module purge
module load cp2k/2026.2-8173m
export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1
mpirun -np 1 cp2k.psmp -i input.inp -o output.log
同一目录里的MC_Fist_box2.inp、两个PSF也需保留。程序会写出一些固定名字的MC文件,所以并行跑不同参数时必须用不同目录。
3. 看能量和坐标#
head reference-results/water-Ar-MC/mc_energies
tail reference-results/water-Ar-MC/mc_energies
head reference-results/water-Ar-MC/mc_coordinates
cat analysis-read/CP2K-sampler-endpoints.csv

mc_energies含初始值、逐次记录与最终值;mc_coordinates有初始、过程中写出的坐标和最后FINAL BOX 1。本例最终能量约0.471833537833 Hartree。配套程序另取最后接受构型做单点,差约2.79×10⁻¹¹ Hartree,核对坐标与能量的对应。
原生坐标文件把氩写作AR;make_endpoints.py接受这个大小写形式,转为标准的Ar后再生成新输入。读取多帧时必须按每帧的原子数取完整坐标,不能遇到不认识的元素就跨到下一帧继续凑数。
能量随尝试下降并不证明已达到平衡;正式采样需要热化、独立重复和目标观测量的统计。下一篇见Tree Monte Carlo。