Learn VASP The Hard Way (Ex37):DOS计算(一)

2017-09-05


Ex-37 DOS计算(一)

 



使用VASP计算,很多时候都逃不掉DOS,能带计算的相关问题,尤其是对于计算材料的童鞋们,更是家常便饭一般。群里很多人,很多新手们都时常在讨论DOS的计算。这里我们通过VASP官网的说明,解释一下算DOS的具体步骤。前面我们学会了如何拟合或者优化稳定的晶胞结构。在此基础上,我们可以计算一下相关的DOS信息。

 

1 KPOINTS:

 

1.1 K点数目

 

与结构优化相比,算DOS的时候,需要用到更多的K点数目,这是因为K点越多,画出来的DOS图质量越高。

 

引用官网的话:

A high quality DOS requires usually very fine k-meshes.

 



1.2 K点数目的选取

 

K点数目越多越好,我们该如何设置K点数目呢?

 

还记的前面我们讲到的K点选择的经验规则吗?那一个规则可以认为是我们平时计算时K点选择的标配。对于DOS计算,我们就需要把配置提高一个档次了。



一般来说,K * a = 45 左右之间完全可以满足你的要求,大伙可以根据这个经验来选择K点。 

 



2 ISMEAR的选择:

 

2.1 看官网的话:

 

For the calculation of the total energy in bulk materials we recommend thetetrahedron method with Blöchl corrections (ISMEAR=-5). This method also givesa smooth nice electronic density of states (DOS).

 

也就是说 ISMEAR = -5 的时候(Blöchl修正的四面体方法),我们可以得到一个非常平滑的DOS图。很多人问怎么才能获得平滑的DOS图,这就是答案!!ISMEAR = -5 并且使用较多的K点。

 



2.2 注意部分

 

1)不能使用ISMEAR= -5 的情况:

 

如果你的模型很大,只用了一个gamma点,或者K点的数目小于等于3 的时候,使用ISMEAR = -5 会导致计算出错。(the tetrahedron method is not applicable, if less than three k-points are used.)很多人只用了gamma点,然后用修正的四面体方法计算能带,最后到群里咨询出错的原因!!!

 

2)对于金属体系来说,算DOS的时候,结构保持不动(这是关键),可以放心使用ISMEAR= -5。但是,结构优化的时候不能使用ISMEAR= -5(注意:是优化结构的时候不能用!),这是因为四面体方法不能很好地处理费米能级处的电子占据情况,导致算出来的力会有一定百分比的误差。参考:

https://cms.mpi.univie.ac.at/vasp/vasp/Partial_occupancies_different_methods.html

 

3)半导体和绝缘体的体系可以尽情使用ISMEAR= -5,但绝对不能在这两个体系中使用 ISMEAR>0。等于0 则可以。


4)注意:四面体方法(ISMEAR = -5)不适合计算能带(对所有的体系来说的)。多谢wuli8老师帮忙完善!


5)使用ISMEAR= -5 的时候,SIGMA的取值没有影响。

 

6)总结:算DOS,只要K点不少于3,其他情况都用ISMEAR=-5。

 



2.3 不能使用ISMEAR = -5 的情况怎么办?

 

两个解决办法:

 

1) 既然K点不够,那么我就增加K点,然后再使用ISMEAR= -5 (简单粗暴,强烈推荐使用);

 

2)服务器不给力,不能增加K点的时候,怎么办?又分两种情况:(少许有些绕弯)

2.1)半导体和绝缘体,使用ISMEAR= 0 (Gaussian Smearing,高斯展宽,后面统一简称GS方法) ;(再次注意:此时绝对不能大于0!!!)

2.2)金属,可以使用ISMEAR = 0,也可以使用Methfessel-Paxton (MP)方法:后面统一简称:MP方法。 ISMEAR = 1, 2….N,一般来说,ISMEAR =0和 1 基本就可以了。(注意:金属可以等于0,也可大于0)

 



2.4 SIGMA

 

既然选择了ISMEAR,就逃不开SIGMA的取值。

 

MP方法(ISMEAR=1..N):

SIGMA取值太大,计算出来的能量可能不正确;SIGMA取值越小,计算越精确,需要的时间也就越多。http://cms.mpi.univie.ac.at/vasp/guide/node124.html


 



SIGMA的取值和KPOINTS密切相关,Kpoints确定之后,使用多大的SIGMA值,大家最好测试一下。原则如下:

 

SIGMA取值在保证OUTCAR中' entropy T*S' 这项的能量平均到每个原子上小于 1 meV的前提下:尽可能地大。这样做可以保证准确度的同时加快收敛速度。

记住: VASP学习最快的途径就是不停地看官网,然后亲自上手去测试,测试,测试!并观察分析结果。

 



高斯展宽,Gaussian Smearing (ISMEAR = 0):

1) 对于大部分的体系都能得到理想的结果;

2) SIGMA取值比较大的时候会得到与MP方法相近的误差;但是误差多大,GS方法不可以得到,而MP方法可以。从这一点上来说,MP要比GS好些;

3) 从经验上来说:对于金属体系,使用MP方法(ISMEAR=1..N)时,SIGMA= 0.10 足够了,官网给的参考值是0.20。

4) 使用GS方法的时候(ISMEAR=0),SIGMA的数值要测试下,保证'entropy T*S'这一项平均到每个原子上小于0.001 eV也就是1meV。5)不想测试,对于金属体系:SIGMA=0.05是一个很安全的选择。

对于半导体和绝缘体,SIGMA取值要小,SIGMA = 0.01 – 0.05 之间也是很安全的。

 



3 测试:

3.1 体系选取

以下是本人的一个例子: 84个Ni原子,17个C,20个H,6个O,共127个原子。(只是一个例子,不具有代表性,大家对于自己的体系,要亲自测试一番。)

KPOINTS的选择如下:

GS (ISMEAR=0)和 MP(ISMEAR=1)方法均选择了SIGMA=0.03 和0.10 两个参数。四个测试文件,命名为: gs-0.03,gs-0.10, mp-0.03,和 mp-0.10

 



3.2 结果分析:



图中列出来的是单点计算的能量。

 



3.2.1 GS方法分析:

GS中 0.03 和 0.10 比较:

1) Without entropy 后面的能量差别很大, sigma ->0 后面的能量差别很小;这也是大师兄为什么推荐使用sigma 后面能量的原因。

2)使用ISMEAR = 0.03,最后电子步的结果:



entropy T*S 后面的能量为:-0.078, 平均到每个原子上为:

-0.078/127 = 0.000614 eV/atom = 0.614 meV/atom < 1 meV/atom。

说明取值没啥问题。

 



使用ISMEAR= 0.10 的结果:


-0.9234/127 = 0.00727 eV/atom =7.27 meV/atom > 1meV/atom。

此时,我们的取值就有问题了。说明是不可靠的,需要用一个更小的sigma值。

 

如果使用ISMEAR=0,会有两个能量,without entropy 和 sigma –> 0。

SIGMA越小,二者之间的的差别越小!一般来说,不同的SIGMA值,Sigma –> 0 的结果差别不大,而withoutentropy后面的能量则差别有时候会很大。在你的计算中,只能用一个能量,不可以混用。建议使用Sigma –> 0后面的能量,且体系中所有的计算都用这个。如果使用了without entropy 后面的能量,那么所有的计算都用这个能量。

 

对于A和B之间的能量差:ΔE = EA-EB,使用without entropy 后面的能量计算出来的ΔE 和使用 sigma –> 0 的出来的ΔE,结果是一样的,差别很小。

 



3.2.2 MP方法的结果分析:

SIGMA = 0.03 的结果



SIGMA = 0.10 的结果



分析方式如GS的测试。

使用小的SIGMA值,同样可以得到更小的 entropy T*S的数值。也就是计算的越精确。 without entropy和sigma->0 后的能量差也越小。注意,当ISMEAR = 0.10 的时候,entropy T*S 值为0.0168 eV,比之前高斯展宽时ISMEAR=0.10的数值要小很多。这表明对于当前测试的体系,SIGMA= 0.10 的时候,使用MP比GS方法的效果要好。当SIGMA数值很小的时候(SIGMA= 0.03),两者不相上下。

 



3.2.3小结一下:

 

SIMGA小的时候,ISMEAR = 0 和 ISMEAR = 1 效果基本一样;

SIMGA数值大的时候,ISMEAR= 1 效果更好。

所以,如果你首先设置一个很小的SIMGA数值,不用太担心ISMEAR的选取。但反过来,如果你首先设置了ISMEAR这一项,就需要考虑SIGMA的大小了。懒得考虑就设置一个比较小的SIGMA值,比如0.05,即可。

 



3.3 ISMEAR 和SIGMA对计算时间的影响。

 

官网里面说了 SIGMA的选择对计算的收敛会产生影响。我们分析下测试所花费的时间。



前面均是单点计算,计算所需的总时间用grep LOOP+ OUTCAR查询

如果你想查询一个电子步需要的时间用: grep LOOP+ OUTCAR (去掉+号)。

Grep RMM OSZICAR | tail –n 1 获取计算了多少电子步。

 



计算时间不是看Elapsed后面的那项吗?

 

是的,Elapsed的时间是总的计算时间。对于我们这个单点计算,LOOP+后面的能量和 Elapsed 的能量差别不大。我们这里只考虑SCF收敛过程中所花费的时间。

 

从前面的计算分析看,平均到每一个电子步上面,使用同一个ISMEAR的时候,小的SIGMA值对应的单个电子步时间略大一些。使用ISMEAR=0时,两个SIGMA值对应的单电子步时间差别更大。

但是官网说,if σ is too small the convergence speed with the number of k-points will deteriorate. 这里我们并没有明显观测到,反而在使用ISMEAR= 0 + SIGMA = 0.03 的时候,收敛步数减少了一些,从而略微节省了时间。

 

但是官网说,if σ is too small the convergence speed with the number of k-points will deteriorate.这里我们并没有明显观测到,反而在使用ISMEAR=0 和 SIGMA = 0.03 的时候,收敛步数减少了一些,从而略微节省了时间。原因在于 too small 是多么地小,什么程度才算too small,官网没有明确说清楚。为此,专门设置了一下 SIGMA = 0.001来测试一番。



从这里可以看出来,SIGMA= 0.001的时候,计算时间明显增加了不少,为6112.84 s。而SIGMA = 0.1 的时候,同样计算了 93步,但花费的时间为:5913.63 s。平均到每一个电子步上,也有所增加。

 

但是,对于大伙来说,SIGMA=0.01就已经很小了,too small 的时候并不常见。所以,不想测试的话,ISMEAR的选择可以在0.1-0.01之间。

 

注意:通过SIGMA的测试,我们可以发现,它对计算时间的影响完全没有KPOINTS,ENCUT等的影响大。大家在选择的时候,不要太过焦虑和纠结。大师兄建议大家最好还是要测试一下,选择一个合适的SIGMA数值。原因如下: 

 

ISMEAR = 0 的时候, SIGMA = 0.03 和 0.10 ,单个电子步的计算时间为: 

64.337 和 64.222s。 假设我们优化一个结构花了200个离子步,每个离子步有20个电子步,总共需要 200*20 = 40000个电子步。与0.03相比,使用0.10节省的时间为: 40000*(64.337-64.222)/3600= 1.3 h。 也就是一个任务省出来 1.3小时的时间。当你有10个任务的时候,就能省出来13个小时的时间.....

 



4 扩展练习:

 

4.1 阅读VASP官网关于ISMEAR和SIGMA的所有说明:

4.2 下载VASP的pdf说明书,搜索书中所有的ISMEAR和SIGMA关键词,阅读所有相关的内容;

4.3 思考SMEAR方法的意义?SIGMA的意义?

4.4 查看VASP说明书,查阅相关文献,了解MP和GS方法

4.5 分析下为什么算DOS的时候,要算两步: selfconsistent  和 none-selfconsistent calculations? 

 



5 总结:

 

看完本节:你应该知道计算DOS的时候,KPOINTS设置的要大一些。

 

ISMEAR要用-5。 Kpoints因计算硬件限制不能设置的很大,数目小于3的时候,对于金属,非金属体系均可以使用ISMEAR=0,SIGMA的数值需要测试一下,一般来说在0.01-0.05之间足够了。

 

此外,金属体系还可以用ISMEAR=1..N,官网建议SIGMA为0.20,太小的SIGMA值对收敛会产生影响。使用0.01-0.10的数值都是很安全的选择。具体对收敛时间的影响大家要测试一下。本节的测试例子中,只有SIGMA=0.001的时候少许增加了计算时间,且SIGMA的影响不如KPOINTS和ENCUT等的影响作用大。

 

非DOS计算的时候,对于金属来说ISMEAR不能等于 -5,优先使用ISMEAR= 1。非金属来说(半导体和绝缘体),不能 > 0 。对于所有的体系, ISMEAR= 0 则是一个很安全的选择,但SIGMA的数值要测试一下。说了这么多废话,还是官网简单明了:


 

For further considerations on the choice for the smearing method see sections 9.4,10.6. To summarize, use the following guidelines:

·         For semiconductors or insulators use always tetrahedron method (ISMEAR=-5), if the cell is too large (or if you use only 1 or two k-points) use ISMEAR=0.

·         For relaxations in metals always use ISMEAR=1 and an appropriated SIGMA value (the entropy term should less than 1 meV per atom). Mind: Avoid to use ISMEAR>0 for semiconductors and insulators, it might result in problems.

For metals a sensible value is usually SIGMA= 0.2 (that's the value we use for most transition metal surfaces).

·         For the DOS and very accurate total energy calculations (no relaxation in metals) use the tetrahedron method (ISMEAR=-5).

 


如有错误,疑问,或者建议,请发邮件联系大师兄: qli@bigbrosci.com

给大师兄留言:QQ号(2674006510)  微信: BigBroSci

加入大师兄QQ群:遇见大师兄 217821116 (先根据群公告修改群名片,若不修改,一经发现,立即踢出。

如果你有自己的科研经验和心得,也欢迎分享给大家!

此外,QQ群专注于科研思维的碰撞与科研生活的分享,本书中已经详细解释或者指明的易出错部分,不建议在群中继续咨询,请大家认真学习并主动积极地去思考和练习。


如果喜欢大师兄的文章,欢迎关注我们,转载,转发。

打赏一下,鼓励大师兄们写出更好的文章!





本网站由阿里云提供云计算及安全服务