Way to the science

CP2K使用手册

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. 线上学习资源 (部分)

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设置

  1. 设置CP2K INPUT / GLOBAL / RUN_TYPE
RUN_TYPE  VIBRATIONAL_ANALYSIS
  1. CP2K INPUT / 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
  1. 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。

Leave a comment

Your email address will not be published. Required fields are marked *