本系列CP2K教程是《CP2K菜根谭》的升级版,在旧版基础上添加了如何结合Pymatflow工具简化计算流程的内容。话不多说,本文将为您带来CP2K系列教程中的静态计算部分。
静态计算设置
静态计算是大多数人接触第一性原理计算后第一次运行的计算类型。很多其它类型的计算的参数设置与静态计算参数的设置紧密相关,比如结构优化,AIMD,过渡态搜索等。
只有静态电子结构计算的参数设置合理才能够保证后续的结构优化等步骤有一个坚实的基础。比如有时候,很急冲冲地就想要对体系进行结构优化,但是忽略了电子步DFT参数的设置的合理性,就有可能无法得到好的优化结果。
可见掌握良好合理的单点能计算参数的设置对于进行后续的各种类型的模拟也是至关重要的。
单点能计算的核心也就是进行Kohn-Sham方程的一个自洽求解过程,通常又被称为自洽场(SCF)过程。在CP2K中,这部分的设置主要通过FORCE_EVAL输入模块进行。
完整输入文件
老传统,先给出完整输入文件,再一一进行解释。
&GLOBAL PROJECT NaCl-Static RUN_TYPE ENERGY_FORCE PRINT_LEVEL LOW FFTW_PLAN_TYPE ESTIMATE&END GLOBAL&FORCE_EVAL METHOD QS &SUBSYS &KIND Na BASIS_SET DZVP-MOLOPT-SR-GTH POTENTIAL GTH-PBE &END KIND &KIND Cl BASIS_SET DZVP-MOLOPT-SR-GTH POTENTIAL GTH-PBE &END KIND &CELL A 5.691694000 0.000000000 0.000000000 B 0.000000000 5.691694000 0.000000000 C 0.000000000 0.000000000 5.691694000 PERIODIC XYZ &END CELL &TOPOLOGY COORD_FILE_FORMAT xyz COORD_FILE_NAME nacl.xyz &END TOPOLOGY &END SUBSYS &DFT BASIS_SET_FILE_NAME BASIS_MOLOPT POTENTIAL_FILE_NAME GTH_POTENTIALS &QS METHOD gpw EPS_DEFAULT 1e-14 &END QS &POISSON PERIODIC XYZ POISSON_SOLVER PERIODIC &END POISSON &MGRID CUTOFF 100 REL_CUTOFF 60 NGRIDS 4 &END MGRID &XC &XC_FUNCTIONAL pbe &END XC_FUNCTIONAL &END XC &KPOINTS SCHEME monkhorst-pack 3 3 3 &END KPOINTS &SCF ADDED_MOS 0 SCF_GUESS ATOMIC EPS_SCF 1e-06 MAX_SCF 50 &DIAGONALIZATION TRUE ALGORITHM STANDARD &END DIAGONALIZATION &MIXING TRUE ALPHA 0.4 METHOD BROYDEN_MIXING &END MIXING &END SCF &PRINT &END PRINT &END DFT &PROPERTIES &END PROPERTIES&END FORCE_EVAL
其中nacl.xyz文件的内容为
8a comment lineNa 0.000000 0.000000 0.000000Na 0.000000 2.845847 2.845847Na 2.845847 0.000000 2.845847Na 2.845847 2.845847 0.000000Cl 0.000000 0.000000 2.845847Cl 0.000000 2.845847 0.000000Cl 2.845847 0.000000 0.000000Cl 2.845847 2.845847 2.845847
(将输入参数文件与坐标文件nacl.xyz放在同一个路径下就可以运行示例)
整个输入文件分为两个大的部分,即&GLOBAL与&FORCE_EVAL。其中GLOBAL比较简单,参数PROJECT用于指定项目名,其会被用来辅助cp2k输出文件的命名,这里不用过多关心。我们需要关心的是设置运行类型,即RUN_TYPE为ENERGY_FORCE,或者也可以设置为ENERGY,两者都是静态计算,不过后者不会计算原子受到的力。另外PRINT_LEVEL决定了程序输出内容的多少,可以为DEBUG、HIGH、LOW、MEDIUM、SILENT五个选项之一。
好了,该轮到重头戏&FORCE_EVAL部分了。下面我们按照出现的顺序依次进行解释。
首先就是&FORCE_EVAL模块的参数,常见的设置就是QS或者叫QUICKSTEP了。Quickstep是CP2K的DFT计算的核心方法实现。Quickstep基于高斯平面波(GPW)或高斯缀加平面波(GAPW)基组。关于这两种基组的优点可以见文章CP2K 菜根谭之简介。
然后就需要通过&SUBSYS模块来设置计算体系。通过&KIND &END_KIND组合来为体系中所有的类型的元素定义DFT计算中使用的贋势和基组类型,你可以进入你的CP2K安装目录下的data中查看贋势和基组文件。需要注意的是这里通过BASIS_SET和POTENTIAL定义的基组和贋势需要分别出现在后面的通过&DFT中的BASIS_SET_FILE_NAME和POTENTIAL_FILE_NAME定义的基组文件和贋势文件中。
&CELL是用来定义超胞的,而&TOPOLOG被用于定义体系的坐标几何。通过COORD_FILE_FORMAT定义坐标文件的格式,如这里的xyz格式,通过COORD_FILE_NAME定义坐标文件名。得到支持的文件格式包括: cif、crd、g96、pdb、xyz等常见格式。另外除了通过这种引入外部文件的方式来定义体系坐标外,也可以直接通过COORD来进行坐标的定义。比如可以将上面的&TOPOLOGY部分替换为下面的内容:
&COORDNa 0.000000 0.000000 0.000000Na 0.000000 2.845847 2.845847Na 2.845847 0.000000 2.845847Na 2.845847 2.845847 0.000000Cl 0.000000 0.000000 2.845847Cl 0.000000 2.845847 0.000000Cl 2.845847 0.000000 0.000000Cl 2.845847 2.845847 2.845847&END COORD
解析来就是定义DFT计算的一系列参数,其中BASIS_SET_FILE_NAME``和POTENTIAL_FILE_NAME在前面已经有提到过,用来定义基组和贋势文件名。
&QSMETHOD GPWEPS_DEFAULT 1.0E-10&END QS
这部分定义QS方法的一些参数,包括使用的方法,如这里的GPW。以及为所有的能量收敛阈值设置一个默认值EPS_DEFAULT。
&MGRID CUTOFF 100 REL_CUTOFF 60 NGRIDS 4&END MGRID
MGRID定义了实空间mutltigrid的一些参数,包括实空间网格的截断值CUTOFF(可以类比为截断能)。使用到的multigrid的数量NGRIDS
&XC &XC_FUNCTIONAL PBE &END XC_FUNCTIONAL&END XC
这部分定义了使用的交换关联泛函,如这里使用的是PBE泛函。
&SCF ADDED_MOS 0 SCF_GUESS ATOMIC EPS_SCF 1e-05 MAX_SCF 50 &DIAGONALIZATION TRUE ALGORITHM STANDARD &END DIAGONALIZATION &MIXING TRUE ALPHA 0.4 METHOD BROYDEN_MIXING &END MIXING &PRINT &END PRINT&END SCF
这里定义了SCF自洽过程的相关参数。如ADDED_MOS定义了额外添加到计算中的轨道的数量。SCF_GUESS定义了初始波函数的构造方案。EPS_SCF定义了SCF的收敛阈值。MAX_SCF定义了最大的自洽循环步数。
&DIAGONALIZATION部分表明使用常规的正交化求解KS矩阵。至于CP2K中替代传统正交化方法的OT方法,我们将在后面的文章中进行介绍。
&MIXING部分定义了SCF迭代过程中对密度矩阵进行混合的参数。ALPHA定义了密度矩阵混合的比例,METHOD定义了采取的混合方法,常见的有BROYDEN_MIXING和DIRECT_P_MIXING、PULAY_MIXING。
基本参数的解释到这里就结束了,至于偷偷潜入其中的&PRINT部分,后面在许多地方比如涉及到需要静态计算获取一些物理性质的时候需要用到它们。现在我们暂时忽略。
使用Pymatflow高效完成任务
为了完成上述计算任务,只需使用Pymatflow一条命令即可:
~$ matflow cp2k -r 0 --cutoff 100 --kpoints-scheme "monkhorst-pack 3 3 3" -d nacl-static
上述命令会在当前路径创建nacl-static目录,然后在其下自动生成输入文件并进行作业任务的提交。默认使用PBS作业调度器。
你也可以通过--server指定其它服务器类型,比如吕梁天河二号超算系统请使用--server llhpc参数。如果你只是想在本地单节点运行,请使用一下参数组合: --runopt genrun、--auto 0。
等待计算任务结束后,你可以通过postflow命令来进行部分计算结构的后处理:
~$ postflow cp2k -r 0 -d nacl-static
上图为在nacl-static/post-processing目录下得到的静态自洽过程能量的变化。
往期文章
Linux下无法挂载exfat格式的分区
Linux中那些我们赖以为生的Bash别名
如何实现更改Linux终端字体的种类和大小
Linux使用图形界面连接WiFi
Pymatflow是一个用于第一性原理模拟的工作流自动化管理软件,目前支持的计算程序有VASP、Qutum ESPRESSO、Abinit、SIESTA、CP2K。
项目文档地址:
http://pymatflow.readthedocs.org/
中文手册:
https://pymatflow.readthedocs.io/en/latest/manual_cn.html
欢迎关注以获取更多关于Pymatflow和第一性原理计算的精彩内容。