基于密度泛函理论的VASP第一性原理计算个人总结

基于密度泛函理论的VASP第一性原理计算个人总结利用 DeviceStudio 生成文件的 VASP 基础计算个人总结 vaspalgodamp

首先,我们在Device Studio里新建一个项目

import我们的初始结构,可以是本地,也可以是在线

本地一般会给出一些常见的0到3维材料和有机材料

如果本地没有,我们可以在线搜索我们想要的材料

以CrI3为例,Add

如果我们想要单层,那么将多余的原子删掉后,加上足够的真空层,进行居中

Simulator-VASP-Relaxation,设置合适的参数后,生成文件

你会得到四个基础文件:INCAR,POSCAR,KPOINTS,POTCAR

将它们导入你的服务器,然后打开INCAR,检查/修改里面的参数

一、不加磁性计算

1.结构优化(relaxation)

初始参数

# Basic setup: ISTART = 0 ICHARG = 2 ISPIN = 1 # Basis Set: # Accuracy controls: PREC = Normal # Electronic loop controls: ALGO = Normal EDIFF = 1E-04 NELM = 60 ISMEAR = 0 SIGMA = 0.05 # Structure control: ISIF = 2 IBRION = 2 NSW = 60 # Output control: LCHARG = .TRUE. LWAVE = .FALSE. LELF = .FALSE. LVTOT = .FALSE. LVHAR = .FALSE. 

设置完之后的参数(只是示例,具体根据自己要求设置):

# Basic setup: ISTART = 0 ICHARG = 2 ISPIN = 1 # Basis Set: # Accuracy controls: PREC = Normal # Electronic loop controls: ALGO = Normal EDIFF = 1E-05 EDIFFG = -0.02 NELM = 60 ISMEAR = 0 SIGMA = 0.05 ENCUT = 500 # Structure control: ISIF = 4 IBRION = 2 NSW = 500 # Output control: LCHARG = .FALSE. LWAVE = .FALSE. LELF = .FALSE. LVTOT = .FALSE. LVHAR = .FALSE. 

然后修改KPOINTS

一般取4 4 1(C方向为真空)左右就可以了。

然后是POSCAR

有选择性的动力学,选择可以移动的原子的维度设置成T,否则为F

至于POTCAR,在之前已经在DS里面生成了,不用修改

到此,这四个文件设置完毕,再加上你的服务器提交任务的脚本,就可以提交任务了

(更新:在这里一定要注意,保证你的初始结构大致是正确的,在收敛值附近,如果晶格常数相差太远或者结构太离谱,可能会跑散那或者收敛到一个错误的结果。因此,当我们不确定或者出现错误结果的情况下,可以先只对晶格常数进行一下初步的优化,根据精确程度选取一系列的值,固定晶格常数,进行优化,然后比较得到哪个能量最低,那么我们就可以选取那个结构作为我们的初始结构POSCAR,进行正常弛豫。采取这种方法,一般来说计算得到的结果是比较准确的)

计算完成之后,我们会得到一大堆文件,我们需要的是CONTCAR,也就是结构优化完成之后的结构文件,下一步我们需要进行自洽计算

建议你在上一步的基础上设置一个子文件夹scf,这是我们进行自洽计算的文件夹。

2.自洽计算(scf)

将上一步的INCAR,POTCAR,KPOINTS,CONTCAR拷入此文件夹,将CONTCAR重新命名为POSCAR。

对INCAR的参数进行修改,以下是我的参数设置,在这一步我们需要原子不动,只动电子,所以我们需要将# Structure control里面的参数修改一下,最后在# Output control里我们需要将LCHARG和LWAVE设置成为TRUE,从而输出电荷密度和波函数,以便进行后续的计算。

# Basic setup: ISTART = 0 ICHARG = 2 ISPIN = 1 # Basis Set: # Accuracy controls: PREC = Normal # Electronic loop controls: ALGO = Normal EDIFF = 1E-05 EDIFFG = -0.02 NELM = 500 ISMEAR = 0 SIGMA = 0.05 ENCUT = 500 # Structure control: #ISIF = 4 IBRION = -1 NSW = 0 # Output control: #LCHARG = .FALSE. #LWAVE = .FALSE. LELF = .FALSE. LVTOT = .FALSE. LVHAR = .FALSE. 

对于KPOINTS,由于原子不动,我们需要取更多的K点进行计算,根据你自己的体系,一般可以取17*17*1左右

对于POSCAR,就是上一步结构优化完成之后的CONTCAR

POTCAR不变

至此,我们已经完成了scf的参数设置,有了这四个文件,再加上脚本文件,我们就可以提交任务了。

前两步(结构优化和自洽计算)是非常重要的,自洽计算完成之后,我们得到了电荷密度(CHG,CHGCAR)和波函数(WAVECAR),就可以进行其他性质的计算了。

3.态密度计算(dos)

在scf的目录下建一个子文件夹dos,这是我们进行态密度计算的文件夹,将上一步自洽计算得到的INCAR,KPOINTS,POTCAR,CHG,CHGCAR,CONTCAR拷入此文件夹,再将CONTCAR重新命名为POSCAR,这六个文件使我们进行态密度计算需要的基本文件。

当然,跟之前一样,INCAR的设置还是最重要的,在之前的基础上INCAR需要有所修改。

将ICHARG=11,LORBIT=11,NEDOS=2408(根据具体情况设置,点数越多,曲线越平滑)

# Basic setup: ISTART = 0 ICHARG = 11 LORBIT = 11 ISPIN = 1 NEDOS = 2408 # Basis Set: # Accuracy controls: PREC = Normal # Electronic loop controls: ALGO = Normal EDIFF = 1E-05 EDIFFG = -0.02 NELM = 500 ISMEAR = 0 SIGMA = 0.05 ENCUT = 500 # Structure control: #ISIF = 4 IBRION = -1 NSW = 0 # Output control: LCHARG = .FALSE. LWAVE = .FALSE. LELF = .FALSE. LVTOT = .FALSE. LVHAR = .FALSE. 

对于KPOINTS,一般设置成跟自洽一样的就行,不用修改

对于这一步,我们只需要修改INCAR就行了,然后有了这六个文件加上脚本,我们就可以提交任务了。

计算完成之后,我们想要画出态密度图,在linux里面输入vaspkit,你会得到这个界面

选择11

按照提示,选择111是总态密度,其他的有些分态密度,按原子、素、轨道分的,一般用的比较多的是113,按素投影的分态密度。

完成之后,会生成一些DOS.dat文件,这个文件就可以作图了。

4.能带计算(band)

在scf的目录下建一个子文件夹band,这是我们进行能带计算的文件夹,将上一步自洽计算得到的INCAR,KPOINTS,POTCAR,CHG,CHGCAR,WAVECAR,CONTCAR拷入此文件夹,再将CONTCAR重新命名为POSCAR,这七个文件使我们进行态密度计算需要的基本文件。

INCAR将ISTART可以设置成1(默认如果WAVECAR存在则为1,否则为0),ICHARG=11,LORBIT=12,LCHARG=.TRUE.(根据具体情况设置)

# Basic setup: ISTART = 1 ICHARG = 11 LORBIT = 12 ISPIN = 1 # Basis Set: # Accuracy controls: PREC = Normal # Electronic loop controls: ALGO = Normal EDIFF = 1E-05 EDIFFG = -0.02 NELM = 500 ISMEAR = 0 SIGMA = 0.05 ENCUT = 500 # Structure control: #ISIF = 4 IBRION = -1 NSW = 0 # Output control: #LCHARG = .FALSE. LWAVE = .FALSE. LELF = .FALSE. LVTOT = .FALSE. LVHAR = .FALSE. 

其次是KPOINTS,需要输入对应的K路径,以及每条路径上的点数,点数一般设置成50,高对称点路径可以手动设置也可以使用DS产生。

有了这七个文件加上脚本,我们就可以提交任务进行计算了。

计算完成之后,跟之前一样,我们想要画出能带图,在linux里面输入vaspkit

选择21

然后选择211会得到总能带图,如果想得到其他类型的能带图可以选择对应的选项。

得到的BAND.dat就可以作图了。

注意,以上给出的都是最基础的PBE计算,不加磁性的例子。

如果要加上磁性,考虑自旋轨道耦合SOC,加U或者考虑HSE,那么需要对要对INCAR相应的参数进行修改。

二、考虑磁性计算及其他计算方法

1.如何给材料加上磁性

对于给材料加上磁性

1.1如果是线性自旋极化

在INCAR里将

ISPIN = 2 MAGMOM = 3 3*0 LMAXMIX = 4 LASPH = .TRUE. ISYM = 0 VOSKOWN = 1 

a、ISPIN改为2(默认值是1,对ISPIN=1进行非自旋极化计算,而对ISPIN=2进行自旋极化计算。)

b、加上MAGMOM(指定每个原子的初始磁矩,由于这里是线性自旋极化,只有一个方向,所以每个原子只需要设置一个磁矩值就行了,但需要注意按POSCAR和POTCAR里面的原子顺序。例如CrI3,如果Cr的初始磁矩是3的话,我们可以设置成3 0 0 0,或者简写为3 3*0)

c、LMAXMIX:默认值是2,对于d电子或f电子,我们需要分别设置成4或6。

另:建议设置LASPH = .TRUE.(考虑非球面贡献,当使用meta-GGA泛函时,因为这通常会导致非球面电荷密度),ISYM=0(个人偏好设置,因为考虑到了磁性作用,我习惯关掉对称性),VOSKOWN = 1(只有在使用PW91泛函时需要设置,在PBE泛函中忽略这个设置)。

1.2如果是非线性自旋极化

还需在INCAR里加上LNONCOLLINEAR = .TRUE.

另外,MAGMOM需要设置成三维的,即三个方向都要设置磁矩,例如CrI3,如果Cr的初始磁矩是3的话,如果是z方向,那么我们可以设置成0 0 3 0 0 0 0 0 0 0 0 0,x和y方向同理。(对于非磁性原子或者复杂的结构来说,有太多的数,例如有十个原子,那么就要设置30个磁矩,很容易出错,作者目前不清楚有没有更简便的设置方法,如果你有,欢迎分享)

加上非线性自旋极化之后,需要使用vasp_ncl进行提交

更新:好像是有的,如果是0 0 3 0 0 0 0 0 0 0 0 0,可以设置成0 0 3 9*0(即按照顺序将磁矩为0的原子合并,非0的原子单独拿出来就行)

2.DFT+U计算

对于加U的计算,在加上磁性的基础上,我们还需要加上几行

# Add U set: LDAU = .TRUE. LDAUTYPE = 2 LDAUL = 2 -1 LDAUU = 3 0 LDAUJ = 0 0

LDAU = .TRUE.(打开加U)

将LDAUTYPE设置成2的时候,只有U−J的值是有意义的。

关于LDAUL、LDAUU和LDAUJ,要按照POSCAR里的顺序来设置各类原子

LDAUL:-1=不加U,1= p,2= d,3= f电子,默认值: LDAUL=2

至于LDAUU和LDAUJ,按照具体情况设置,可以参照经验或者文献里的值。

从一开始的结构优化和自洽计算到后来的其他计算都需要加上U值。(更正:经过测试和收集其他人的经验,考虑到一是加U对结构和晶格常数影响较小,二是简便计算,故推荐在结构优化的时候可以先不加U,从自洽开始加U,而且一般情况下加U也是为了对能带有所调节)

3.HSE计算

(这种方法比较复杂,可以参照我的最新版本HSE计算,在另一篇博客,两篇结合起来看。)

采用HSE计算的带隙一般会比普通的计算方法(如LDA和GGA)高1-2电子伏特。

用vaspkit的101功能可以生成HSE06的INCAR

LHFCALC = .TRUE. HFSCREEN = 0.2 ALGO = Damped TIME = 0.4 NELMIN = 5 AEXX = 0.25 

主要是前四行

a、LHFCALC = .true.表示打开HF计算,采取杂化泛函方法。

b、HFSCREEN = 0.2采用HSE06计算,一般将它设置成0.2就可以了。HSE03一般设置成0.3。

c、ALGO = Damped注意需要将之前的ALGO修改一下,最后检查一下,不要像作者一样,刚开始加了两个ALGO,Damped表示这里采用的阻尼算法,带隙大半导体ALGO=ALL,带隙小或金属ALGO=Damped,用vaspkit的101功能可以生成HSE06的INCAR。

d、TIME = 0.4默认值是0.4,一般情况下就这样设置就好了,计算中如果收敛不好,可以适当减小TIME值。

e、NELMIN = 5表示电子SC的最小步数5步(NELM表示最大步数一般设置成60)。

f 、而AEXX = 0.25表示交换项的比例,可以调整带隙,通常情况下PBE会低估带隙,因此交换项设置越大,带隙越宽。

ALGO = Damped和TIME = 0.4是为了更好地收敛,有的时候DAV方法不收敛。值得注意的是,这种方法计算的本征矢量会有问题,即每个k点能带的顺序会乱七八糟。但电荷密度和波函数是没有问题的。

注:

在进行结构优化和电子自洽计算的时候,不需要加上HSE的参数,你首先进行正常的计算。

然再进行HSE的自洽计算,在之前的基础上加上这几行HSE的参数,跟正常的自洽计算一样,同样需要输出波函数和电荷密度,所以LWAVE和LCHARG同样要设置成TRUE。

然后再用HSE进行DAV算法计算,只需将ALGO = Damped和TIME = 0.4去掉即可(ALGO的默认值是Normal),使用DAV算法计算,好处是收敛较快,本征矢量没有任何问题。这一步的DOS是没有问题的。相应的自洽和态密度计算参照前面,再加上HSE即可。

最后是计算能带。跟上一步没有差别,能带的INCAR也只需加上HSE,将ALGO = Damped和TIME = 0.4去掉即可,其他能带设置参照前面。主要是k点的设置,由于HSE方法无法从电荷密度进行非自恰,所以只能用自恰的方法计算能带。

个人经验:使用ALGO = Damped进行计算可能会比较慢,有时候我们可以将第三步和第四步将行合并,即将HSE的自洽计算和能带计算一起进行,在自洽的同时完成能带的计算。

关键是能带计算的KPOINTS,大家可以参照这篇博客

VASP计算之HSE - 知乎 (zhihu.com)

4.SOC计算

对于考虑自旋轨道耦合(Spin-Orbit Coupling, SOC) 的计算

除了加上磁性参数外,建议修改以下参数

LSORBIT = .TRUE. GGA_COMPAT = .FALSE. LNONCOLLINEAR = .TRUE. ISYM = -1 LORBIT = 12

a、LSORBIT = .TRUE.表示打开自旋轨道耦合。

b、GGA _COMPAT = .FALSE.提高GGA计算的数值精度。。

c、LNONCOLLINEAR = .TRUE.表示允许执行完全非共线的磁性结构计算,在此设置下,还需修改MAGMOM(详见1.2)。

d、ISYM = -1建议完全关闭对称性。

e、LORBIT = 12使用仅适用于PAW方法的快速投影方案。

注:只要考虑到自旋轨道耦合的,从一开始的结构优化和自洽计算再到其他计算都需要加上SOC,而且在提交脚本的时候,要由vasp_std改为vasp_ncl,最后画出的能带图也是不区分自旋向上和自旋向下的。

(更正:是否同加U一样,结构优化的时候不用加,以及在什么时候需要加,待进一步考证,貌似对结构优化的影响较小)

5.vdW-DF functional

有时候你计算出来的能带可能存在色散比较大,与文献符合不上,那么你可以看看这种方法。

你肯定看到过有的文献里面采取了vdW-DF functional方法,它是由Dion等人提出的一个非局部相关函数,它近似地解释了色散相互作用。

我们用这种方法对材料进行结构优化,对于能带有一个很好的修正。

例如,对于optB86b-vdW泛函来说,我们需要加入这几行参数

GGA = MK PARAM1 = 0.1234 PARAM2 = 1.0000 LUSE_VDW = .TRUE. AGGAC = 0.0000

手册上的一点解释:相关泛函通过设置LUSE_VDW = .TRUE.来调用该方法。此外,由于泛函中只使用了LDA相关,因此需要去除PBE相关修正。这是通过设置AGGAC = 0.0000来实现的,上面的两个标记需要用于vdW-DF functional以下所有的功能。

除了这些设置,在计算的时候,在计算目录下还需要加上一个文件vdw_kernel.bindat。

具体的参数设置和计算方法可以参考vasp手册,上面有比较详细的说明。

今天的文章 基于密度泛函理论的VASP第一性原理计算个人总结分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-16 16:01
下一篇 2024-12-16 15:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/87927.html