Quick Start of CP2K
Quick Start of CP2K
本教程基于 HPC of zhenggroup 集群环境
一、CP2K介绍
关于CP2K
- CP2K是一种量子化学和固态物理第一性原理计算软件包,可以执行固态,液态,分子,和生物系统的计算模拟。
- CP2K是开源免费程序,使用混合高斯和平面波基组GPW和GAPW的DFT方法比平面波基组计算更快。
- CP2K用到好多非常新和前沿的算法
 OT(Orbital Transformation),
 ASPC(Always stable predictor corrector),
 ADMM(Auxiliary Density Matrix Methods),
 PIMD(pathintegral Molecular Dynamics),
 adaptive buffered QM/MM
- 相关文章 https://www.cp2k.org/science
- 催化:ACS Catal. 2019, 9 (9), 7876-7887
CP2K的应用和局限
应用: DFT,AIMD,(QM/MM),NEB,MD    https://www.cp2k.org/features
局限: 1. 对导体计算较慢,OT算法算有带隙的材料可以很快收敛。导体一般用较慢的对角化方法。
         2. 磁性体系提前指定自旋多重度。
         3. 高斯基组带来的基组重叠误差(Basis Set Superposition Error, BSSE),不适合计算结合能。VASP使用平面波基组不存在此问题。
         4. 能量计算使用VASP更准确
二、CP2K使用
输入文件+环境准备
*.inp,(coord.inc/xyz),CP2K.pbs
在提交脚本cp2k.pbs内添加以下内容
| 1 | source /public/software/gcc-9.3.0/gcc-9.3.0_env.sh | 
cp2k.inp 常用参数说明
CP2K手册https://manual.cp2k.org/trunk/index.html
关键词以section和subsection的形式套娃,每一个section都是以【§ion_name】开头的,以【&END section_name 】结尾的。(顺序随意,嵌套不能乱)每一行只写一个关键词,关键词后面写参数,大小写和空格不敏感。
通用参数GLOBAL
| 1 | &GLOBAL | 
体系的力和能量FORCE_EVAL
- SUBSYS(subsystem): coordinates, topology, molecules and cell其他输入原子坐标方式- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27- &FORCE_EVAL 
 METHOD Quickstep # 使用DFT的GPW方法进行计算原子受力
 &SUBSYS
 # --------------- Structure --------------- #
 &TOPOLOGY
 &CENTER_COORDINATES # 结构放在盒子中间
 &END CENTER_COORDINATES
 COORD_FILE_FORMAT xyz
 COORD_FILE_NAME ./coord.xyz
 &END TOPOLOGY
 # ------------ Lattice vectors ------------ #
 &CELL # 也可输入 `ABC 10 11 13` 代表正交晶系,单位埃
 A 8.42 0.00 0.00
 B 4.21 7.29 0.00
 C 0.00 0.00 19.32
 PERIODIC XYZ # NONE,X,XY,XYZ,XZ,Y,YZ,Z XYZ代表三个方向周期性计算
 &END CELL
 # ------------ Basis, Potential ----------- #
 &KIND Au # 元素种类
 ELEMENT Au
 BASIS_SET DZVP-MOLOPT-SR-GTH-q11 # 基组设置(对应文件里存在的条目)
 POTENTIAL GTH-PBE # 赝势设置
 &END KIND
 # ----------------------------------------- #
 &END SUBSYS
 ...
 &END FORCE_EVAL- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11- # Method 1:inc --------------------------- # 
 &COORD
 @INCLUDE 'coord.inc' #xyz文件去掉前两行
 &END COORD
 # Method 2:Cartesian coordinates --------- #
 &COORD
 C -3.36178719 11.43419295 1.72360000
 H 3.11299203 11.00326708 1.72360000
 ...
 &END COORD
- DFT: Parameter needed by LCAO DFT programs (Quickstep) 关于自洽循环(电子步)的计算参数1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44&FORCE_EVAL 
 &DFT
 BASIS_SET_FILE_NAME BASIS_MOLOPT # 基组文件路径
 POTENTIAL_FILE_NAME POTENTIAL # 赝势文件路径
 # --------------- Quickstep --------------- #
 &QS #
 EPS_DEFAULT 1.0E-12 # 高精度计算时,EPS_DEFAULT 1.0E-14
 &END QS
 # ----------------- Grid ------------------ #
 &MGRID #
 NGRIDS 4 # 多重网格叠加做FFT, 值越大,算得越快,越不精确
 CUTOFF 500 # 整体网格精度的最高值 https://manual.cp2k.org/trunk/methods/dft/cutoff.html,尽量>800
 REL_CUTOFF 50 # 控制有多少网格点落到最精细的级别
 &END MGRID
 # ----------------- SCF ------------------- #
 &SCF
 SCF_GUESS ATOMIC # 初猜/可以改成RESTART
 EPS_SCF 1.0E-6 # 能量收敛精度
 MAX_SCF 100 # SCF循环圈数
 # ------ OT, DIAGONALIZATION -------- #
 &OT T # 使用OT(Orbital Transformation)优化波函数
 MINIMIZER CG # 共轭梯度法(最可靠)(CG)/迭代子空间直接反演法(速度快)(DIIS)/布罗伊登法(BROYDEN)
 LINESEARCH 3PNT # 搜索算法
 PRECONDITIONER FULL_SINGLE_INVERSE # 适用于大型系统;难收敛改Full All
 &END OT
 # &DIAGONALIZATION ON # 对角化方法,不如OT快
 # ALGORITHM STANDARD
 # &END DIAGONALIZATION
 # ----------------------------------- #
 &END SCF
 # --- eXchange and Correlation potential -- #
 &XC # 交换-关联密度泛函,要与基组和赝势的选择一致。
 &XC_FUNCTIONAL PBE
 &END XC_FUNCTIONAL
 &END XC
 # ----------------- Print ----------------- #
 &PRINT # 输出参数 https://manual.cp2k.org/trunk/CP2K_INPUT/FORCE_EVAL/DFT/PRINT.html
 &FORCES ON # 输出力
 &END FORCES
 &END PRINT
 # ----------------------------------------- #
 &END DFT
 ...
 &END FORCE_EVAL
- 其他常用&DFT参数
| &DFT 参数 | 设置 | 含义 | 
|---|---|---|
| BASIS_SET_FILE_NAME | BASIS_MOLOPT, BASIS_MOLOPT_UCL | 基组文件,前面可加路径${DATAPATH} 需要@SET DATAPATH …. | 
| POTENTIAL_FILE_NAME | GTH_POTENTIALS | 赝势文件 | 
| UKS | T | 开壳层 | 
| ROK | T | 限制性开壳层 | 
| MULTIPLICITY | 整数 | 闭壳层1,开壳层双重态2,三重态3 | 
| WFN_RESTART_FILE_NAME | ./RESTART.wfn(波函数路径) | 需要同时开启 &DFT/&SCF中的SCF_GUESS RESTART | 
| PLUS_U_METHOD | 见手册 | DFT+U (U值在 &KIND 里控制) | 
| SURFACE_DIPOLE_CORRECTION | T | 表面,偶极校正 <=> IDIPOL = T | 
| SURF_DIP_DIR | Z | Z方向 <=> IDIPOL = 3 | 
- OT和Diagonalization比较 
 OT:速度快,没有高斯展宽,对于金属系统收敛性差,不支持DFT+U,以及KPOINTS
 Dia:计算量大,要设置高斯展宽,支持DFT+U和KPOINTS
- PIRNT - &FORCE_EVAL/中添加- &PRINT/&FORCES ON/&END FORCES,输出力。- &FORCE_EVAL/&DFT/&SCF中添加- &PRINT/&RESTART FILENAME =RESTART.wfn/&END RESTART,输出波函数。
- 基组 
 计算精度,SZV < DZVP < TZVP < TZV2P < TZV2PX
 VP(Valence Polarized同时添加极化函数)
 VASP平面波基组(PW),不同的体系设定相同的平面波截断能(ENCUT),那么用到的基组都是一样的。
 高斯基组计算AB体系和A体系使用的基组不一样,AB中B的部分基组也贡献于描述A原子。(基组重叠误差,基组越大,误差越小,SR相比与普通的基组,速度略有提升,BSSE误差增大)
 AB体系算出来的能量被低估。(计算吸附能、结合能等都会偏负,E(AB) – E(A) – E(B))
- 对角化K点设置 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12- &FORCE_EVAL 
 &DFT
 # ----------------KPOINTS------------------ #
 &KPOINTS
 SCHEME MONKHORST-PACK 3 3 3
 SYMMETRY T # 识别晶胞对称性
 VERBOSE T # 输出
 FULL_GRID T
 &END KPOINTS
 # ----------------------------------------- #
 &END DFT
 &END FORCE_EVAL
原子运动参数MOTION
结构和晶胞优化
- 几何结构优化: - GEO_OPT
 cp2k manual - geometry optimization
 ex:H2O- &GLOBAL中- RUN_TYPE设置- GEO_OPT- 1 
 2
 3
 4
 5
 6
 7
 8
 9- &MOTION 
 # ------------ Geometry Optimizer --------- #
 &GEO_OPT
 MAX_ITER 400
 OPTIMIZER BFGS # LBFGS大体系,BFGS针中小体系,CG更为Robust
 MAX_FORCE 6.0E-4
 &END GEO_OPT
 # ----------------------------------------- #
 &END MOTION- 输出文件:(以H2O为例) - H2O.out,- H2O-pos-1.xyz,- H2O-1.restart,- H2O-1.restart.bak-1,2,3- H2O-1.restart.bak-*代表计算结束前- *次迭代结果,- ..bak-1和- H2O-1.restart相同
 终止后续算:使用- H2O-1.restart作为input文件重新提交任务
- 晶胞优化: - CELL_OPT
 cp2k manual - cell optimization- &GLOBAL中- RUN_TYPE设置- CELL_OPT- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13- &MOTION 
 # -------------- Cell Optimizer ----------- #
 &CELL_OPT
 MAX_ITER 400
 OPTIMIZER CG # LBFGS大体系,BFGS针中小体系,CG更为Robust
 KEEP_ANGLES # 固定角度
 KEEP_SYMMETRY T # 固定对称性
 # CONSTRAINT Z # 固定Z方向
 TYPE DIRECT_CELL_OPT # 同时优化晶胞和里面的位置(默认)
 MAX_FORCE 6.0E-4
 &END GEO_OPT
 # ----------------------------------------- #
 &END MOTION
- 坐标固定: - CONSTRAINT- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12- &MOTION 
 # ------------- Constraints --------------- #
 &CONSTRAINT
 # ---------- Fixed atoms -------------- #
 &FIXED_ATOMS
 COMPONENTS_TO_FIX XYZ # 限制固定的方向,也可以设置X,XY等
 LIST 1..54
 LIST 289..324
 &END FIXED_ATOMS
 &END CONSTRAINT
 # ----------------------------------------- #
 &MOTION
频率计算
- &GLOBAL中- RUN_TYPE设置- VIBRATIONAL_ANALYSIS,输出信息精度调高
- SCF优化精度不变,同时添加&VIBRATIONAL_ANALYSIS1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18&VIBRATIONAL_ANALYSIS 
 NPROC_REP 48 # 总核数=节点数*核数
 DX 0.01 # 步长
 FULLY_PERIODIC F # 是否周期性
 # ----------------- Print ----------------- #
 &PRINT
 &MOLDEN_VIB # 生成振动模式的 MOLDEN 文件
 &END
 &CARTESIAN_EIGS # 输出输出频率计算中笛卡尔坐标系下的本征值和本征向量
 &END
 &PROGRAM_RUN_INFO # 记录程序运行的详细信息
 &EACH
 REPLICA_EVAL 1
 &END
 &END
 &END PRINT
 # ----------------------------------------- #
 &END VIBRATIONAL_ANALYSIS
- 自由能计算
 http://sobereva.com/552
 使用卢天的~/software/Shermo_2.6/Shermo计算ZPE,需要引用10.1016/j.comptc.2021.113249
过渡态计算
- DIMER
 在势能放置两个相邻的点 Dimer 来寻找 TS,通过不断重复旋转移动dimer,直到找到能量最高点。
- CINEB
 在 IS 到 FS 之间插入一系列结构,共插入P-1个,反应为0,产物为P。优化不是对每个点孤立地优化,优化过程所有点一起运动。插点结构受到
 1.来自势能面的力(保留平行分量);2.chain方向上的弹簧力(保留垂直分量)
CP2K-CINEB过程&GLOBAL中RUN_TYPE设置BAND
| 1 | &MOTION | 
CP2K-DIMER过程
http://bbs.keinsci.com/thread-23516-1-1.html
- 初猜选取dimer结构,得到coord.inc文件
- 设置优化方向 sed -i '1,2d' coord.inc
| 1 | METHOD DIMER | 
杂化泛函(待更新)
单点计算(待更新)
AIMD
| 1 | &QS | 
- EXTRAPOLATION 控制波函数外推,在做结构优化/MD的时候,下一离子步的波函数用前几个离子步的波函数组合可以得到非常快的SCF收敛。建议用ASPC(Always stable predictor corrector),注:不能和K点设置同时使用。
- EXTRAPOLATION_ORDER是ASPC extrapolation order。一般用默认值3。
这两个参数可以促进AIMD的时候的每一离子步的SCF收敛,默认打开。这也是cp2k算AIMD比较快的一个原因。
输出文件
(mermaid 模块还在测试)
graph TD
A[cp2k输入文件]-->B[GLOBAL]
A-->C[FORCE_EVAL]
A-->D[MOTION]
    C-->E[SUBSYS]
    C-->H[PRINT]
    C-->F[DFT]
        E-->G[CELL]
        E-->I[COORD]
        E-->J[TOPOLOGY]
        E-->K[KIND]
        F-->O[QS]
        F-->L[SCF]
        F-->N[MGRID]
        F-->P[XC]
        F-->T[PRINT]
            L-->M[OT]
            L-->Q[DIAGONALIZATION]
三、数据处理
脚本使用
*.out,(*.wfn.bak-*)wfn会不断覆盖,记录最后三步的波函数
四、学习资料
- CP2K的tutorials:
 https://www.cp2k.org/exercises
 https://www.cp2k.org/howto
- CP2K手册:http://manual.cp2k.org/trunk/
- CP2K的google group:https://groups.google.com/group/cp2k
- Zevan的博客:http://kenshin325.lofter.com/tag/cp2k
- 兰一的知乎专栏:https://zhuanlan.zhihu.com/cp2k-tutorial
- CP2K有用的工具: https://www.cp2k.org/tools
- python编写的cp2k输入文件生成器(最高支持5.1):
 https://github.com/avishart/CP2K_Editor
- 难收敛http://sobereva.com/665
- http://wiki.cheng-group.net/wiki/software_usage/cp2k/cp2k/
