注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

zevan的博客

悟以往之不谏,知来者之可追

 
 
 

日志

 
 
关于我

Debian GNU/Linux user Vegetarian Seventh-Day Adventist

网易考拉推荐

CP2K入门教程-4:使用CP2K进行DFT计算  

2014-11-14 20:15:43|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

很多参数都可以影响CP2K的计算精度。下面我将介绍我所知道的参数。

3.1.1 晶胞的大小

CP2K只支持Gamma点的计算,没有K点。因此,计算中必须使用足够大的晶胞。如果晶胞太小,部分基组函数就会超过晶胞的边界,导致重叠矩阵求逆过程出现问题,计算就会不可靠。不能直接使用VASP中的小晶胞来进行CP2K的计算。

3.1.2 CUTOFF以及REL_CUTOFF

CUTOFFREL_CUTOFF两个参数用来控制网格的精度。CP2K中的网格从粗糙到精细分为4个级别。CUTOFF参数控制整体网格精度的最高值,REL_CUTOFF参数控制有多少网格点落到最精细的级别。CUTOFF的设置取决于体系中元素的种类,默认值为280 Ry,但对有些原子需要设置到500 Ry甚至更高。

CP2K论坛中建议给不同的原子使用不同的CUTOFF。下图给出了对不同原子建议使用的CUTOFF大小。可见,对包含NaNOFNeNiGa等元素的计算,需要设置高达1000 RyCUTOFF来确保计算精度。在计算中包含这些元素时,需要额外小心。


REL_CUTOFF默认值为50 Ry,一般设置到60 Ry时精度就已经足够了。

除此以外,还有USE_FINER_GRID参数等,用于提高网格的精细程度。

3.1.3 基组和泛函

CP2K中可以使用的泛函很多,但并非每个基组都为相应的泛函进行了优化。经常使用的泛函有LDAPADE),BLYP以及PBE,在CP2Ktests目录中有相应的优化基组。此外,CP2K中也可以使用B3LYPHSE等杂化泛函,可以使用DFT-D3等色散校正。在CP2K中使用B3LYP泛函时,关键输入文件如下:


&DFT

BASIS_SET_FILE_NAME ./BASIS_MOLOPT

POTENTIAL_FILE_NAME ./POTENTIAL

CHARGE 0

MULTIPLICITY 1

&SCF

SCF_GUESS ATOMIC

EPS_SCF 1.0E-6

MAX_SCF 50

&OUTER_SCF

MAX_SCF 10

&END OUTER_SCF

&OT

# My scheme

PRECONDITIONER FULL_SINGLE_INVERSE

MINIMIZER DIIS

N_DIIS 7

&END OT

&PRINT

&RESTART

&EACH

MD 20

&END EACH

&END RESTART

&RESTART_HISTORY OFF

&END RESTART_HISTORY

&END PRINT

&END SCF


&QS

METHOD GAPW

# My scheme

EPS_DEFAULT 1.0E-12

EPS_PGF_ORB 1.0E-32

EPS_FILTER_MATRIX 0.0E+0

&END QS

&MGRID

COMMENSURATE

CUTOFF 300

&END MGRID

&POISSON

POISSON_SOLVER MULTIPOLE

PERIODIC NONE

&MULTIPOLE

RCUT 40

&END MULTIPOLE

&END POISSON

&XC

#&XC_FUNCTIONAL BLYP

#&END XC_FUNCTIONAL

&XC_FUNCTIONAL

&LYP

SCALE_C 0.81

&END

&BECKE88

SCALE_X 0.72

&END

&VWN

FUNCTIONAL_TYPE VWN3

SCALE_C 0.19

&END

&XALPHA

SCALE_X 0.08

&END

&END XC_FUNCTIONAL

&HF

&SCREENING

EPS_SCHWARZ 1.0E-10

&END

&MEMORY

MAX_MEMORY 512

EPS_STORAGE_SCALING 1.0E-1

&END

FRACTION 0.20

&END

&XC_GRID

XC_SMOOTH_RHO NN10

XC_DERIV SPLINE2_SMOOTH

&END XC_GRID

&END XC

&END DFT


完整的输入文件可以在Google Group中找到

https://groups.google.com/forum/?fromgroups#!searchin/cp2k/XC_SMOOTH_RHO|sort:date/cp2k/v32E3xXmgaY/-TygNY7t2msJ

使用HSE泛函的输入文件例子:

&XC_FUNCTIONAL

&XWPBE

SCALE_X -0.25

SCALE_X0 1.0

OMEGA 0.11

&END

&PBE

SCALE_X 0.0

SCALE_C 1.0

&END PBE

&END XC_FUNCTIONAL

&HF

EPS_SCHWARZ 1.0E-10

MAX_MEMORY 10

FRACTION 0.25

SCREENING_TYPE SHORTRANGE

OMEGA 0.11

&END



基组的大小也有很多种,如SZDZVP以及TZVP。一般计算中使用DZVP基组就足够了。

3.1.4 SCF收敛精度

对于一般的测试性结算,SCF收敛到1E-5就可以得到相对准确的结果。如果要进行比较高精度的计算,可以将SCF收敛精度设置为1E-6。对于频率计算等精度要求更高的计算,SCF收敛精度可以设置为1E-7

3.1.5 收敛算法的选择

CP2K中主要有两种SCF的收敛算法,一种是基于轨道变换(OT)的算法,一种是基于对角化(DIAG)的算法。如果体系有较大带隙的,如为半导体或者绝缘体等,推荐使用OT算法,收敛速度比较快。如果体系中HOMO-LUMO 带隙很小或者几乎没有,如金属体系,则建议使用对角化的方法进行计算,并使用smear方法。

下面是一个对Rh(1 1 1)表面进行计算使用的输入文件的例子:

&SCF

SCF_GUESS RESTART

EPS_SCF 5.0E-7

MAX_SCF 500

ADDED_MOS 500

CHOLESKY INVERSE

&SMEAR ON

METHOD FERMI_DIRAC

ELECTRONIC_TEMPERATURE [K] 300

&END SMEAR

&DIAGONALIZATION

ALGORITHM STANDARD

&END DIAGONALIZATION

&MIXING

METHOD BROYDEN_MIXING

ALPHA 0.1

BETA 1.5

NBROYDEN 8

&END MIXING

&PRINT

&RESTART

&EACH

QS_SCF 50

&END

ADD_LAST NUMERIC

&END RESTART

&END PRINT

&END SCF

注意使用对角化方法必须使用ADDED_MOS 关键词。另外,设置正确的MIXING方案也是加速收敛的关键。

实际上,即使是对于非金属体系,有时候对角化方法也会比OT算法速度更快。

所以,在进行大规模的计算之前最好进行充分的测试。

使用OT算法时,优化算法也有多重选择。常用的有CGDIIS以及BROYDEN。其中,CG算法是最为稳定的算法,一般的计算都可以使用CG算法。DIIS算法速度比较快,但不够稳定。如果CG算法和DIIS算法收敛都有问题时,可以尝试使用BROYDEN算法。下面是使用BROYDEN算法的输入文件例子。

&OT T

MINIMIZER BROYDEN

N_HISTORY_VEC 4

BROYDEN_BETA 6.9999999999999996E-01

BROYDEN_SIGMA 1.4999999999999999E-01

LINESEARCH 2PNT

PRECONDITIONER FULL_SINGLE_INVERSE

&END OT


3.1.6 EPS_DEFAULT的设置

QS部分使用的EPS_DEFAULT1.0E-10。根据Google Group中的建议,在进行比较高精度计算时,需要将EPS_DEFAULT设为1.0E-14

CP2K中有多个参数依赖EPS_DEFAULT,包括EPS_CORE_CHARGEEPS_GVG_RSPACEEPS_PGF_ORBEPS_KG_ORB。各个参数的精度以及含义如下:

名称

含义

默认精度

EPS_CORE_CHARGE

核电荷映射精度

EPS_DEFAULT/100.0

EPS_GVG_RSPACE

实空间KS矩阵元积分精度

SQRT(EPS_DEFAULT)

EPS_PGF_ORB

重叠矩阵元精度

SQRT(EPS_DEFAULT)

EPS_KG_ORB

使用Kim-Gordon方法时的精度

SQRT(EPS_DEFAULT)


更多信息,可以参考:

http://developer.berlios.de/forum/message.php?msg_id=35587

https://groups.google.com/forum/?fromgroups#!topic/cp2k/IIp-D6AA7ME

3.2 使用CP2K进行能量计算

3.2.1 OUTER_SCF

计算能量,需要设置RUN_TYPEENERGY;如果还要进行梯度(受力)计算,则设置为ENERGY_FORCE

使用DFT方法进行能量计算,使用OT算法,并开启OUTER_SCF,示例如下:

&SCF

EPS_SCF 1.0E-6

SCF_GUESS RESTART

MAX_SCF 100

&OT T

PRECONDITIONER FULL_ALL

MINIMIZER DIIS

LINESEARCH 3PNT

&END OT

&OUTER_SCF ON

MAX_SCF 5

EPS_SCF 5.0E-6

&END OUTER_SCF

&END SCF

其中,OUTER_SCF为加速收敛的一种方法。以上面的输入文件为例,计算过程中,如果SCF经过100次优化依然没有收敛,则进入OUTER_SCF过程,对前一次计算的波函数进行调整,重新进行SCF迭代。每次OUTER_SCF中优化的次数依然是100次,最多可以进行5OUTER_SCF。所以,最多可以进行500SCF计算。

更多的细节请参考:

https://groups.google.com/forum/?fromgroups=#!topic/cp2k/6cikFLKeN34

3.2.2 输出每个原子上的受力

要输出每个原子上的受力,GLOBAL部分的RUN_TYPE必须设置为ENERGY_FORCE或者GEO_OPT。要输出受力,需要在FORCE_EVAL部分开启选项:

&PRINT

&FORCES ON

Filename ForceFileName

&END FORCES

&END PRINT

如果要将受力信息存储到文件中,则需要设定文件的名称;否则受力信息将会打印到out文件中。输出的受力格式如下:

ATOMIC FORCES in [a.u.]


# Atom Kind Element X Y Z

1 1 O 0.08722700 -0.04704030 0.08194080

2 2 H -0.07829459 0.00721899 -0.00996929

3 2 H -0.01049003 0.03981616 -0.06774948

SUM OF ATOMIC FORCES -0.00155761 -0.00000516 0.00422203 0.00450019


  评论这张
 
阅读(4690)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018