1. CP2k简介
CP2K是一个开源的计算化学和物理软件包,主要用于原子和分子模拟。它提供了广泛的功能,包括量子力学计算、分子动力学模拟以及混合量子力学/分子力学(QM/MM)方法。CP2K特别适用于大型生物分子和复杂材料系统的模拟,因为它采用了高效的高斯和平面波(GAPW)方法来处理电子结构。
CP2K的主要特点和功能包括:
-
量子力学计算:CP2K可以进行广泛的量子力学计算,包括密度泛函理论(DFT)和哈特里-福克(Hartree-Fock)方法。
-
高效算法:CP2K采用了多种高效算法来加速计算,例如线性缩放方法和混合高斯和平面波方法。
-
分子动力学模拟:CP2K支持各种分子动力学模拟,包括经典MD和量子MD。
-
QM/MM模拟:CP2K能够执行混合量子力学/分子力学模拟,这对于研究生物大分子系统特别有用。
-
灵活性:CP2K的输入文件格式非常灵活,允许用户精确控制计算的各个方面。
-
并行计算:CP2K为高性能计算环境设计,支持多种并行化策略。
CP2K常用于材料科学、化学、生物化学和物理学等领域的研究,尤其是在需要处理大型复杂系统时。由于其广泛的应用和强大的功能,CP2K成为了计算化学和物理研究者们广泛使用的重要工具之一。
2. 版本
集群当前编译psmp版本 (2024.1 version),支持MPI+OpenMP混合加速及跨节点运行:
其中Elites分区机器使用cp2k_20141_openmpi_zenver3_psmp_5950x.sif,node2使用cp2k_20141_openmpi_zenver1_psmp_7601.sif,node3使用cp2k_20141_openmpi_zenver2_psmp_7542.sif (具体文件名会有变化,登陆集群后使用sifs | grep cp2k命令查看)。
使用:
apptainer run /mnt/softs/singularity_sifs/cp2k_20141_openmpi_zenver3_psmp_5950x.sif \
mpirun -np 8 \
- mpi参数
-x openmp变量
cp2k
apptainer run /mnt/softs/singularity_sifs/cp2k_20141_openmpi_zenver3_psmp_5950x.sif cp2k -v
CP2K version 2024.1
Source code revision git:b4a17a5
cp2kflags: omp libint fftw3 libxc libgrpp pexsi elpa parallel mpi_f08 scalapack cosma quip xsmm plumed2 spglib sirius libvori libbqb libtorch libvdwxc hdf5
compiler: GCC version 11.4.0
compiler options:
-cpp -I /opt/cp2k/tools/toolchain/install/openmpi-4.1.5/include -I /
opt/cp2k/tools/toolchain/install/openblas-0.3.25/include -I /opt/cp2
k/tools/toolchain/install/fftw-3.3.10/include -I /opt/cp2k/tools/too
lchain/install/libint-v2.6.0-cp2k-lmax-5/include -I /opt/cp2k/tools/
toolchain/install/libxc-6.2.2/include -I /opt/cp2k/tools/toolchain/i
nstall/libgrpp-main-20231215/include -I /opt/cp2k/tools/toolchain/in
stall/libxsmm-1.17/include -I /opt/cp2k/tools/toolchain/install/COSM
A-2.6.6/include -I /opt/cp2k/tools/toolchain/install/elpa-2023.05.00
1/cpu/include/elpa_openmp-2023.05.001/modules -I /opt/cp2k/tools/too
lchain/install/elpa-2023.05.001/cpu/include/elpa_openmp-2023.05.001/
elpa -I /opt/cp2k/tools/toolchain/install/scotch-6.0.0/include -I /o
pt/cp2k/tools/toolchain/install/superlu_dist-6.1.0/include -I /opt/c
p2k/tools/toolchain/install/pexsi-1.2.0/include -I /opt/cp2k/tools/t
oolchain/install/quip-0.9.10/include -I /opt/cp2k/tools/toolchain/in
stall/gsl-2.7/include -I /opt/cp2k/tools/toolchain/install/hdf5-1.14
.2/include -I /opt/cp2k/tools/toolchain/install/libvdwxc-0.4.0/inclu
de -I /opt/cp2k/tools/toolchain/install/spglib-1.16.2/include -I /op
t/cp2k/tools/toolchain/install/SpFFT-1.0.6/include -I /opt/cp2k/tool
s/toolchain/install/SpLA-1.5.5/include/spla -I /opt/cp2k/tools/toolc
hain/install/sirius-7.4.3/include -I /opt/cp2k/src/start/ -I /opt/cp
2k/obj/local/psmp/exts/dbcsr -I /opt/cp2k/tools/toolchain/install/op
enmpi-4.1.5/include -I /opt/cp2k/tools/toolchain/install/openmpi-4.1
.5/lib -imultiarch x86_64-linux-gnu -D_REENTRANT -D __LIBXSMM -D __p
arallel -D __MPI_F08 -D __FFTW3 -D __LIBINT -D __LIBXC -D __LIBGRPP
-D __SCALAPACK -D __COSMA -D __ELPA -D __LIBPEXSI -D __QUIP -D __GSL
-D __PLUMED2 -D __HDF5 -D __LIBVDWXC -D __SPGLIB -D __LIBVORI -D __
LIBTORCH -D __SPFFT -D __SPLA -D __SIRIUS -D __COMPILE_ARCH="local"
-D __COMPILE_DATE="Wed Jan 17 04:58:53 UTC 2024" -D __COMPILE_HOST="
node7" -D __COMPILE_REVISION="git:b4a17a5" -D __DATA_DIR="/opt/cp2k/
data" -D __SHORT_FILE__="start/cp2k.F" -march=znver3 -mmmx -mpopcnt
-msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -msse4a -
mno-fma4 -mno-xop -mfma -mno-avx512f -mbmi -mbmi2 -maes -mpclmul -mn
o-avx512vl -mno-avx512bw -mno-avx512dq -mno-avx512cd -mno-avx512er -
mno-avx512pf -mno-avx512vbmi -mno-avx512ifma -mno-avx5124vnniw -mno-
avx5124fmaps -mno-avx512vpopcntdq -mno-avx512vbmi2 -mno-gfni -mvpclm
ulqdq -mno-avx512vnni -mno-avx512bitalg -mno-avx512bf16 -mno-avx512v
p2intersect -mno-3dnow -madx -mabm -mno-cldemote -mclflushopt -mclwb
-mclzero -mcx16 -mno-enqcmd -mf16c -mfsgsbase -mfxsr -mno-hle -msah
f -mno-lwp -mlzcnt -mmovbe -mno-movdir64b -mno-movdiri -mmwaitx -mno
-pconfig -mpku -mno-prefetchwt1 -mprfchw -mno-ptwrite -mrdpid -mrdrn
d -mrdseed -mno-rtm -mno-serialize -mno-sgx -msha -mshstk -mno-tbm -
mno-tsxldtrk -mvaes -mno-waitpkg -mwbnoinvd -mxsave -mxsavec -mxsave
opt -mxsaves -mno-amx-tile -mno-amx-int8 -mno-amx-bf16 -mno-uintr -m
no-hreset -mno-kl -mno-widekl -mno-avxvnni --param=l1-cache-size=32
--param=l1-cache-line-size=64 --param=l2-cache-size=512 -mtune=znver
3 -g -O3 -Werror=aliasing -Werror=ampersand -Werror=c-binding-type -
Werror=intrinsic-shadow -Werror=intrinsics-std -Werror=line-truncati
on -Werror=tabs -Werror=target-lifetime -Werror=underflow -Werror=un
used-but-set-variable -Werror=unused-variable -Werror=unused-dummy-a
rgument -Werror=unused-parameter -Werror=unused-label -Werror=conver
sion -Werror=zerotrip -Wno-maybe-uninitialized -Wuninitialized -Wuse
-without-only -std=f2008 -fno-omit-frame-pointer -fopenmp -funroll-l
oops -fbacktrace -ffree-form -fimplicit-none -fallow-argument-mismat
ch -fpre-include=/usr/include/finclude/math-vector-fortran.h
3. 提交作业
3.1 准备CP2K输入文件
CP2K输入文件较为复杂灵活,此处则以PBE泛函为例,提供Al2O3纳米氧化铝颗粒在30个O2分子环境中结构的单点能计算为例,抛砖引玉,供大家参考。
Part 1 坐标文件: xyz.coord
Al -1.29400 -1.74900 -6.61700
Al -3.35800 -1.05200 -4.29900
O -3.40900 0.38100 -5.50200
O -6.00300 -2.02300 -2.53300
O -2.72100 -2.27000 -5.66200
Al -2.64000 1.92700 -5.19800
Al 0.53900 2.86600 -5.29300
O -0.52600 -0.20300 -6.31300
O -2.10600 1.89600 -3.52700
Al 0.46500 -3.00600 -4.67400
Al -4.77800 -3.24900 -2.25900
Al -1.59900 -2.30800 -2.35500
Al -2.71400 -3.94500 -4.57700
O -2.66400 -5.37800 -3.37500
O -1.64900 -0.87600 -3.55700
O -4.24400 -3.27900 -0.58900
O -3.35100 -2.72800 -3.21400
O -0.96200 -3.52600 -3.71800
Al -0.88000 0.67000 -3.25300
Al 2.29800 1.61000 -3.34900
Al 1.18300 -0.02700 -5.57100
O 1.23300 -1.45900 -4.36900
O -0.34700 0.63900 -1.58300
O 0.54700 1.19000 -4.20900
O 2.93500 0.39300 -4.71200
Al 2.22400 -4.26200 -2.72900
Al -3.01900 -4.50500 -0.31600
Al 0.16100 -3.56500 -0.41100
Al -0.95500 -5.20200 -2.63300
O 0.11000 -2.13200 -1.61400
O -2.48400 -4.53600 1.35500
O 1.69000 -4.23100 -4.40000
O -1.59200 -3.98500 -1.27100
O 0.79700 -4.78300 -1.77400
Al 0.87900 -0.58600 -1.31000
Al 4.05800 0.35400 -1.40500
Al 2.94200 -1.28300 -3.62700
O 2.99200 -2.71600 -2.42400
O 4.00700 1.78600 -2.60800
O 1.41300 -0.61700 0.36100
O 2.30600 -0.06600 -2.26500
O 4.69400 -0.86400 -2.76700
Al -1.25900 -5.76200 1.62900
Al 1.92000 -4.82100 1.53300
O 1.87000 -3.38900 0.33100
O 0.16800 -5.24100 0.67400
Al 2.63800 -1.84300 0.63500
O 3.17200 -1.87400 2.30500
O 4.06500 -1.32300 -0.32000
Al -5.40000 1.14600 -3.20500
Al -6.82000 -1.05100 -1.16500
O -5.75400 2.01900 -0.14600
O -4.17500 -0.08000 -2.93100
Al -4.98700 3.56500 0.15900
Al -2.92300 2.86800 -2.15900
O -4.63200 2.69200 -2.90100
O -0.27800 3.83900 -3.92500
O -3.56000 4.08600 -0.79600
Al -3.64100 -0.11100 -1.26000
Al -5.70400 0.58600 1.05700
Al -5.06100 -2.30700 0.77900
O -3.99500 0.76200 1.79800
O -2.41600 -1.33600 -0.98700
O -5.69700 -1.09000 2.14100
O -5.06800 -0.63100 -0.30500
Al 0.25700 3.80800 -2.25400
Al -3.22700 2.30900 2.10300
Al -1.80700 4.50500 0.06300
Al -1.16400 1.61200 -0.21500
O -2.87200 1.43500 -0.95600
O -0.09900 4.68200 0.80500
O 1.48100 2.58300 -1.98100
O -1.80100 2.82900 1.14800
O -1.17000 3.28800 -1.29900
Al -1.88200 -1.36700 0.68300
Al -3.94500 -0.67000 3.00100
Al -3.30100 -3.56400 2.72300
O -5.01000 -3.74000 1.98200
O -2.23600 -0.49400 3.74300
O -0.65600 -2.59300 0.95700
O -3.93800 -2.34700 4.08600
O -3.30900 -1.88700 1.63900
Al 2.01600 2.55200 -0.31100
Al -1.46800 1.05200 4.04700
Al -0.04800 3.24800 2.00700
Al 0.59600 0.35500 1.72900
O -1.11300 0.17900 0.98700
O -2.69300 2.27800 3.77400
O 3.24100 1.32600 -0.03700
O -0.04100 1.57300 3.09200
O 0.58900 2.03100 0.64400
Al -0.12200 -2.62400 2.62800
O 1.10300 -3.84900 2.90100
O -1.54900 -3.14400 3.58300
Al 3.77500 1.29500 1.63400
Al 2.35500 -0.90100 3.67300
O 0.64600 -1.07800 2.93200
O 2.34800 0.77500 2.58900
O 14.77700 -8.76500 -12.32000
O 14.29800 -7.71900 -12.73300
O 16.45300 13.97600 1.19500
O 16.39200 15.06700 1.74400
O 2.80100 -11.34100 -16.43100
O 2.45300 -10.17500 -16.54900
O -9.91100 -2.24800 9.85500
O -9.70800 -3.45300 9.88900
O -16.57900 16.14800 3.35000
O -16.89600 17.09700 2.64700
O 0.45300 -2.76100 -17.85700
O -0.49700 -2.04300 -17.57900
O 8.14700 18.66800 11.73300
O 7.60100 17.58700 11.90200
O -11.93300 10.14100 -0.24000
O -12.48100 9.54100 -1.15300
O -15.97500 17.87800 -5.50700
O -15.09700 17.03200 -5.59500
O 19.18400 7.90500 1.28000
O 18.75000 7.05600 0.51500
O 8.14600 -8.66400 0.26100
O 7.68800 -8.54100 1.38800
O 7.86800 -6.09600 -16.36900
O 8.19300 -5.66700 -15.27100
O 8.14700 -18.39200 14.80800
O 8.57700 -17.88000 15.83100
O 17.18700 -7.12400 16.79300
O 17.16700 -5.97400 17.20500
O 0.68500 -18.10300 -15.19900
O -0.08300 -17.60800 -14.38700
O 2.62500 1.83700 10.61400
O 1.93400 2.03400 9.62400
O 8.08900 -5.28700 14.24100
O 9.15100 -5.83800 14.49300
O 12.05700 14.25700 6.79200
O 10.91400 14.65200 6.97500
O -9.78700 -10.21700 -14.33300
O -9.18800 -11.15500 -13.82400
O 4.43200 8.95000 -2.48700
O 4.79100 8.53500 -1.39500
O -15.14700 17.40300 10.18600
O -15.83400 18.23100 10.76600
O -7.75600 16.06000 16.22600
O -8.23600 16.44000 15.16800
O -13.09700 -6.59600 14.70100
O -13.32200 -6.53600 15.90100
O -2.02700 2.92600 15.39500
O -3.06800 3.15900 15.99400
O 13.64700 17.37100 17.55800
O 14.03900 17.87500 18.60100
O -3.40100 -13.27500 -1.83000
O -3.96400 -12.46300 -2.55100
O 14.80900 19.13900 -7.50100
O 14.27900 18.87300 -6.43100
O -13.29700 -14.52600 13.97900
O -13.47900 -13.32800 14.14100
O -15.33600 9.37300 -17.92200
O -16.31200 9.24000 -18.64600
O 5.31700 12.15900 4.37400
O 5.73100 11.07900 4.76900
Part 2 cp2k 输入文件: pbe_EF.inp
#Basis setting
@SET NREPA 1
@SET NREPB 1
@SET NREPC 1
@SET CELL_A 45
@SET CELL_B 45
@SET CELL_C 45
@SET ANGLE_A 90.0
@SET ANGLE_B 90.0
@SET ANGLE_C 90.0
@SET COORDFILE xyz.coord
@SET RUNTYPE ENERGY_FORCE
@SET CUTOFF 400
@SET JOBNAME Al2O3O2
&MOTION
&PRINT
&RESTART
BACKUP_COPIES 3
&EACH
MD 1
&END EACH
&END RESTART
&RESTART_HISTORY
&EACH
MD 1
&END EACH
&END RESTART_HISTORY
&TRAJECTORY
&EACH
MD 1
&END EACH
&END TRAJECTORY
&END PRINT
&END MOTION
&GLOBAL
PROJECT_NAME ${JOBNAME}
RUN_TYPE ${RUNTYPE}
PRINT_LEVEL MEDIUM
&END GLOBAL
&FORCE_EVAL
METHOD QS
STRESS_TENSOR ANALYTICAL
&SUBSYS
&KIND O
BASIS_SET ORB DZVP-MOLOPT-SR-GTH
POTENTIAL GTH-PBE-q6
&END KIND
&KIND Al
BASIS_SET ORB DZVP-MOLOPT-SR-GTH
POTENTIAL GTH-PBE-q3
&END KIND
&COORD
@include ${COORDFILE}
&END COORD
&TOPOLOGY
MULTIPLE_UNIT_CELL ${NREPA} ${NREPB} ${NREPC}
&END TOPOLOGY
&CELL
ABC ${CELL_A} ${CELL_B} ${CELL_C}
ALPHA_BETA_GAMMA ${ANGLE_A} ${ANGLE_B} ${ANGLE_C}
MULTIPLE_UNIT_CELL ${NREPA} ${NREPB} ${NREPC}
PERIODIC XYZ
&END CELL
&END SUBSYS
&DFT
BASIS_SET_FILE_NAME BASIS_MOLOPT
POTENTIAL_FILE_NAME GTH_POTENTIALS
&XC
&XC_FUNCTIONAL
&PBE
SCALE_X 1.0 ! correlation part
SCALE_C 1.0 ! exchange part
&END PBE
&END XC_FUNCTIONAL
&END XC
&SCF
SCF_GUESS RESTART
EPS_SCF 1e-05
MAX_SCF 200
&OT
MINIMIZER DIIS
PRECONDITIONER FULL_ALL ! FULL_SINGLE_INVERSE
&END OT
&OUTER_SCF
EPS_SCF 1e-05
MAX_SCF 15
&END OUTER_SCF
&END SCF
&QS
EPS_DEFAULT 1e-13
! EPS_PGF_ORB 1E-12
! MIN_PAIR_LIST_RADIUS -1
&END QS
&MGRID
CUTOFF ${CUTOFF}
REL_CUTOFF 60.0
&END MGRID
&END DFT
&PRINT
&STRESS_TENSOR ON
&END STRESS_TENSOR
&FORCES ON
&END FORCES
&END PRINT
&END FORCE_EVAL
3.2 SBATCH脚本
#!/bin/bash
##SBATCH --partition=Nebula_Chubby
#SBATCH --partition=Nebula_Elites
#SBATCH --nodelist=node4,node5,node6,node7
#SBATCH -N 1
#SBATCH --ntasks-per-node=16
#SBATCH --cpus-per-task=1 #目前集群已关闭超线程,cpus-per-task=1!!!!
#SBATCH --time=9999:00:00
# method 1: Run CP2K with srun
#srun --mpi=pmix -n 16 --cpu-bind cores singularity exec /mnt/softs/singularity_sifs/cp2k_master20231204_openmpi_native_psmp.sif cp2k -in pbe_EF.inp > log.log
# method 2: Run CP2K with mpirun (openmpi)
apptainer run /mnt/softs/singularity_sifs/cp2k_master20231204_openmpi_native_psmp.sif \
mpirun -n 16 \
-map-by core \
-bind-to core \
-x OMP_PROC_BIND=True \
-x OMP_PLACES=cores \
-x OMP_NUM_THREADS=1 \
-x OMP_STACKSIZE=512m \
cp2k -in pbe_EF.inp > log.log
4. 线上学习资源 (部分)
- CP2K官网
https://www.cp2k.org/ - GitHUB官方仓库
https://github.com/cp2k/cp2k - Google Group
https://groups.google.com/g/cp2k - 厦门大学程俊课题组wiki
https://wiki.cheng-group.net/wiki/software_usage/cp2k/cp2k/
5. 附:CP2K: ZPE(Zero-point energy)
摘自厦门大学程俊课题组wiki
5.1 学习目标
-
ZPE基本原理
-
CP2K Frequence设置
-
CP2K Frequency计算结果检查
-
ZPE求解
-
注意事项
5.2 ZPE基本原理
零点能(ZPE)是量子力学系统可能具有的最低可能能量,此时系统所处的态称为基态;所有量子力学系统都有零点能。与经典力学不同,量子系统在Heisenberg不确定性原理所描述的最低能量状态下不断波动。
我们在计算吉布斯自由能时会涉及到零点振动能,零点振动能的计算公式为:
因此我们需借助CP2K计算得到振动频率。
Boyer, T. H. Quantum Energy and Long-Range Forces. Ann. Phys 1970, 56, 474–503.
Girod, M.; Grammaticos, B. The Zero-Point Energy Correction and Its Effect on Nuclear Dynamics. Nucl. Physics, Sect. A 1979, 330 (1), 40–52.
5.3 CP2K Frequence设置
- 设置CP2K INPUT / GLOBAL / RUN_TYPE
RUN_TYPE VIBRATIONAL_ANALYSIS
&VIBRATIONAL_ANALYSIS
NPROC_REP 192 # 总核数=节点数*核数(通常与提交作业cp2k.lsf文件中的核数一致)
DX 0.02
FULLY_PERIODIC
&PRINT
&MOLDEN_VIB
&END
&CARTESIAN_EIGS
&END
&PROGRAM_RUN_INFO
&EACH
REPLICA_EVAL 1
&END
&END
&END PRINT
&END VIBRATIONAL_ANALYSIS
- 在CP2K INPUT / MOTION下
&MOTION
&CONSTRAINT
&FIXED_ATOMS
LIST 1..320 # 计算时需要固定的无关原子对应的序号
&END
&END
&END MOTION
5.4 CP2K Frequency计算结果检查
正常计算结束会输出project-VIBRATIONS-1.mol文件,里面[FREQ]模块即为计算得到的frequence
[FREQ]
204.783042
296.784083
379.892297
414.559665
913.554709
3650.225071
在CP2K计算NEB的过程中寻找过度态时,过渡态的Frequence中会有虚频,对应负值:
[FREQ]
-150.004617
76.011787
90.652110
105.659737
114.363774
118.342870
125.738357
……
5.5 注意事项
(1) 由于PBC条件的限制,CP2K的Frequence计算结果中不包含平动频率,是否包含转动频率取决于体系的状态(CONSTRAINT),通常振动频率远大于转动频率。
(2) 计算真空中一个分子的Frequence时,要去除盒子所有方向的周期性,通常可以用 20Å x 20Å x 20Å 的盒子进行测试。
(3) 使用CP2K计算一个稳定结构式的频率时,也常会出现多个虚频。这是CP2K计算使用GTH赝势时存在的一个问题。
详细内容请参考(https://groups.google.com/forum/?fromgroups#!topic/cp2k/DVCV0epl7Wo)
解决方案有四种:
a. 使用NLCC赝势(http://arxiv.org/abs/1212.6011)。不过NLCC赝势很不完整,只有B-Cl的元素有,且只提供了PBE泛函的赝势。
b. 增大CUTOFF,使用600 Ry以上的CUTOFF。
c. 在XC_GRID部分使用平滑参数SMOOTING,不推荐使用。
d. 在XC_GRID部分使用USE_FINER_GRID,XC部分的格点的精度提高为4*CUTOFF。