VASP使用总结 下载本文

VASP计算的理论及实践总结

一、赝势的选取 二、收敛测试

1、VASP测试截断能和K 点 2、MS测试

三、结构弛豫

四、VASP的使用流程(计算性质)

1、VASP的四个输入文件的设置 2、输出文件的查看及指令 3、计算单电能

(1) 测试截断能 (2) 测试K点 4、进行结构优化 5、计算弹性常数 6、一些常用指令

一、赝势的选取

VASP赝势库中分为:PP和PAW两种势,PP又分为SP(标准)和USPP(超软)。

交换关联函数分为:LDA(局域密度近似)和GGA(广义梯度近似)。GGA又分为PW91和PBE。

在VASP中,其中pot ,pot-gga是属于超软势(使用较少)。Paw, paw-pbe ,和paw-gga是属于PAW。采用较多的是PAW-pbe 和PAW-gga。

此外vasp 中的赝势分为几种,包扩标准赝势(没有下标的)、还有硬(harder)赝势(_h)、软(softer)赝势(_s), 所谓的硬(难以赝化),就是指该元素原子的截断动能比较大,假想的势能与实际比较接近,计算得到的结果准确,但比较耗时,难以收敛。软(容易赝化),表示该元素原子的截断动能比较小,赝势模型比较粗糙,但相对简单,可以使计算很快收敛(比如VASP开发的超软赝势)。即硬的赝势精度高,但计算耗时。软的精度低,容易收敛,但节省计算时间。

另一种情况:如Gd_3,这是把f电子放入核内处理,对于Gd来说,f电子恰好半满。所以把f电子作为价电子处理的赝势还是蛮好的(类似还有Lu,全满)。(相对其他的4f元素来说,至于把f电子作为芯内处理,是以前对4f元素的通用做法。计算结果挺好)

常用的做法是:用两种赝势测试一下对自己所关心的问题的影响情况。在影响不大的情况下,选用不含4f电子的赝势(即后缀是3),一来减少计算量,二来避免DFT对4f电子的处理。 【1.赝势的选择:

vasp的赝势文件放在目录 ~/vasp/potentials 下,可以看到该目录又包含五个子目录 pot pot_GGA potpaw potpaw_GGA potpaw_PBE ,其中每一个子目录对应一种赝势形式。

赝势按产生方法可以分为PP (standard pesudopotential,其中大部分是USPP, ultrasoft pesudopotential) 和 PAW (projector augmented wave method)。按交换关联函数的不同又可以有 LDA (local density approximation) 和 GGA (generalized gradient approximation),其中GGA之下又可以再分为PW91和PBE。

以上各个目录对应起来分别是 pot ==> PP, LDA ; pot_GGA ==> PP, GGA ; potpaw ==> PAW, LDA ; potpaw_GGA ==> PAW, GGA, PW91 ; potpaw_PBE ==> PAW , GGA, PBE。选择某个目录进去,我们还会发现对应每种元素往往还会有多种赝势存在。这是因为根据对截断能量的选取不同还可以分为 Ga,Ga_s,Ga_h,或者根据半芯态的不同还可以分为Ga,Ga_sv,Ga_pv的不同。

一般推荐选取PAW_PBE。其中各个元素具体推荐哪种形式的赝势可以参考vasp workshop中有关赝势部分的ppt。当然自己能测试之后在选择是最好不过的了,以后再聊。

2.POTCAR的建立:

选好哪一种赝势之后,进入对应的目录,你会看到里边有这么几个文件,POTCAR.Z PSCTR.Z V_RHFIN.Z WS_FTP.LOG 。我们需要的是第一个。把它解压,如 zcat POTCAR.Z > Ga 。对As元素我们也可以类似得到一个As文件。用 cp 命令或者 mv 命令把这两个文件都移到我们的工作目录里。然后再用 cat 命令把这两个文件合并在一起,如 cat Ga As > POTCAR ,这样就得到了我们需要的POTCAR。同理,有多个元素的POTCAR也可以这样产生。这里需要注意的是,记住元素的排列顺序,以后在POSCAR里各个元素的排列就是按着这里来的。http://emuch.net/html/201108/3452012.html】

二、收敛测试

1、VASP测试

计算的参数,比如k-points或cutoff,肯定是取的越多越准确,但相对的计算量就会增加,为了既保证计算的精确度,又尽可能的减少计算量,所以进行收敛测试,比较不同的参数,所得的两者的差值,差值符合误差的范围,就认为已经收敛。

VASP中收敛测试主要是测试截断能和K点,(注意:按照经验,先优化K点,且根据manu,K<8时优先选用偶数。)优化K点时,取ENCUT为POTCAR中的ENMIN就可以了,做完了K点测试之后,再做ENCUT的搜寻比较好。

VASP具有单点能计算的功能。也就是说,对一个给定的固定不变的结构(包括原子、分子、表面或体材料)能够计算其总能,即静态计算功能。计算单点能,一般都能得到结果,是否收敛是比较两个计算结果得到的结论,而能否出计算结

果应该是对某个确定的计算而言http://emuch.net/html/201008/2271875.html。 本人就是通过计算单点能来测试截断能和K点的,先设置一个K点,然后改变截断能来计算单点能(总能即free energy toten,也可以说是自由能);同样的道理,设置一个截断能然后,改变K(K点网格)点,计算单点能。将不同参数下获得的能量整理出来,画成曲线,当能量趋于平稳,即接近收敛时(最小能),此时的结构达到了稳定状态,也就是处于基态。在能量趋于稳定状态的前提下,来看相邻两个参数对应的能量的差值,当两者之差值在误差允许的范围内(一般差值在0.001eV左右,除非结构比较大),此时对应的参数就是我们所需要的。

之所以采用计算单点能来测试,是因为单点能计算速度快,需要的参数最少,最多只要在KPOINTS文件中设置一下合适的K点或者在INCAR文件中给定一个截断能ENCUT就可以了。而且其他参数取默认值就好了。还有一个参数就是电子步的收敛标准的设置EDIFF,默认值为EDIFF=1E-4,一般不需要修改这个值。

具体来说要计算单点能,只要在INCAR中设置IBRION=-1(默认)也就是让离子不移动就可以了,单点能一般NSW都是0。(其实就选用默认值就可以)http://emuch.net/html/200907/1428501.html点计算就是将所有的迟豫参数去掉,原子已经位于理想的位置。此时得到的能量为点能量。总能计算推荐使用ISMEAR=-5, 尤其是对于半导体和绝缘体。除非你的原胞非常大,K点很少,才采用ISMEAR=0,SIGMA=0.05

2、MS测试

(1). 我所说的几何优化,具体到castep中为Geometry Optimization,几何优化时,castep通过微调原子坐标使能量最低,当然你可以选择是否优化晶格,但对于计算参数(主要是cut off energy and k-points)的收敛测试,主要是测试计算参数对能量计算的影响,因此不需要优化结构;

(2).参数收敛测试的目的是:既能准确的计算能量,又使计算量最低。从这个目的出发,在收敛测试时,根据相关文献,比如测试k-points,先选取一较大的cut-off,然后把k-points依次从低到高,将计算的结果与k-points最高的值进行比较(一般认为k-points等越高,越接近于真实情况,但计算量相对也增加),如果能量收敛了——符合收敛标准,那就认为测试完成;

三、结构弛豫

结构弛豫的判据一般有两种选择:能量和力。这两者是相关的,理想情况下,能量收敛到基态,力也应该是收敛到平衡态的。但是数值计算过程上的差异导致以二者为判据的收敛速度差异很大,力收敛速度绝大部分情况下都慢于能量收敛速度。这是因为力的计算是在能量的基础上进行的,能量对坐标的一阶导数得到力。计算量的增大和误差的传递导致力收敛慢。

【结构优化又叫结构弛豫(structure relax),是指通过对体系的坐标进行调整,使得其能量或内力达到最小的过程,与动力学退火不同,它是一种在0K下用原子间静力进行优化的方法。可以认为结构优化后的结构是相对稳定的基态结构,能够在实验之中获得的几率要大些(当然这只是理论计算的结果,必须由实验来验证)。

一般要做弛豫计算,需要设置弛豫收敛标准,也就是告诉系统收敛达成的判据(convergence break condition),当系统检测到能量变化减小到一个确定值时例如EDIFFG=1E-3时视为收敛中断计算,移动离子位置尝试进行下一步计算。EDIFFG这个值可以为负,例如EDIFFG=-0.02,这时的收敛标准是当系统发现所有离子间作用力都小于给定的数值,如0.02eV/A时视为收敛而中断。 弛豫计算主要有两种方式:准牛顿方法(quasi-Newton RMM-DIIS)和共轭梯度法(CG)两种。准牛顿方法计算速度较快,适合于初始结构与平衡结构(势能面上全局最小值)比较接近的情况,而CG方法慢一些,找到全局最小的可能性也要大一些。选择方法为IBRION=1时为准牛顿方法而IBRION=2时为CG方法。 具体来说要做弛豫计算,设置IBRION=1或者2就可以了,其它参数根据需要来设置。NSW是进行弛豫的最大步数,例如设置NSW=100,当计算在100步之内达到收敛时计算自动中断,而100步内没有达到收敛的话系统将在第100步后强制中止(平常计算步数不会超过100步,超过100步可能是计算的体系出了问题)。参数通常可以从文献中发现,例如收敛标准EDIFFG等。 有的时候我们需要一些带限制条件的弛豫计算,例如冻结部分原子、限制自旋的计算等等。冻结部分原子可以在POSCAR文件中设置selective dynamic来实现。自旋多重度限制可以在INCAR中以NUPDOWN选项来设置。另外ISIF选项可以控制弛豫时的晶胞变化情况,例如晶胞的形状和体积等。http://emuch.net/html/200907/1428501.html)】 四、VASP的使用流程(计算性质)

1、四个输入文件

使用VASP计算,首先要熟悉并设置好四个输入文件:POSCAR、POTCAR 、 KPOINTS 、INCAR。

(1)POSCAR: 要借助MS(material studios)软件,在MS中搭建好结构,选择

→→ Export →→ 保存在一个磁盘下,保存类型选为Crystallographic

Information Files,即将结构图保存为.cif格式。(如图所示)

先安装一个VESTA软件(windows系统下的就行),打开VESTA 软件,并打开

这个图标就是以下左图所示的窗口,然后将上一步保存的.cif格

式的模型导入这个窗口,可以直接拖进来(或者通过file open)。便出现右图。

在VESTA中点击→→ 选择Export Date →→ 将模型保存到一个文件下,

并将保存类型选为如图所示的VASP的格式,

,坐标就选取分数坐标,点击OK,将文件名改为POSCAR就好了。如下图:

打开

→→ 点击New Session →→ 输入用户名(如iap08) →→ 点

击 OK→→ 输入密码(6个1)→→ 点击OK。如图所示,可以在界面上输入top(查看是否有任务在进行),退出同时按ctrl和C。点击

可以与后台连

起来(同win32),在根目录下建立自己计算的文件夹,并将POSCAR拖入文件夹。

(2) POTCAR.

先将势库放入Xftp连接的后台文件夹下,然后在打开的界面中找到势库中计算所需要的势,然后解压并添加到POTCAR中,在界面中输入的具体步骤是:

第一步:ls回车→→ cd空 hx回车→→ls回车→→cd 势文件夹→→ ls 回车→→ cd 空paw_pbe 回车→→ ls 回车→→ cd空Ce →→ ls回车 →→zcat空POTCAR.Z

空> Ce回车, ls 就会发现已将所需的势解压出来了,

第二步:就是将解压出来的各元素的势都添加到POTCAR中,步骤如下: cat空Ce空Co空B空Si空>POTCAR回车(注意这里边各元素的添加顺序一定要与POSCAR中的一致,POTCAR这个文件夹。

如图所示),ls发现已经出现了

(3)KPOINTS

KPOINTS是设置最简单的,只需要在原来的文件中修改K点网格数就可以了,这个根据计算的实际情况而定。(一般可以依据MS中的调整来设置不同的K点)如下为该文件:

(4)INCAR

INCAR是一个非常重要的输入文件,也是最难设置的。如图所示,第一行不System不重要,只是一个名称。

ISTART =0是指开始新的计算;ICHARG =2是指从原子的电荷密度重叠构造初始电荷密度

ISMEAR =0是指采用高斯方法;SGIMA=0.1是指展宽为0.1eV ECUT =380 是指平面波的截断能为380

IBRION =6; (等于6时是计算弹性性质;等于2时是在优化);ISIF=3是有化参数(大于等于3时是计算弹性性质);NSW=15是计算的步数

EDIFF和 EDIFFG是电子和离子收敛精度

PREC= Accurate是计算精度(对应MS中coarse、medium、fine等) 因次,INCAR 中的参数需要根据实际情况来设置,在这里也不便多说。

2、输出文件的查看和指令

输出文件有CONTCAR、OUTCAR、comment等。

查看输出文件less(不在界面显示结果,看完了输入:wq或者:q回车就退出了)

用cat查看时(会将结果显示在界面)

CONTCAR文件主要是优化完的结果文件(就是将CONTCAR文件改为POSCAR文件进行下一步计算)

Comment文件主要是查看一次性测试完截断能的结果文件。 OUTCAR文件包含VASP计算的绝大部分结果文件。

查看所计算体系的体积时,使用命令:grep 空”volume” 空OUTCAR回车 查看所计算体系的总能时,使用命令:grep 空“TOTEN” 空OUTCAR空|tail空-n空1回车,如图所示

若是是用脚本测试截断能,则在comment中查看结果,即:

cat空comment回车,如下图所示 查看弹性常数时:

第一种:可以用脚本来提取(即在计算的文件夹下放入提取弹性常数的脚本get-elastics.sh ,待计算完毕的时候,输入sh空get-elastics.sh ,在界面上就出现结果了。

第二种:第一步:grep空ELA空OUTCAR回车

第二步:cat空-n空OUTCAR空|grep空“TOTAL ELASTIC

MODULI”(将界面上出现的结果文件粘贴到这儿)回车(就会显示一些有代码的结果文件),如:473711(矩阵行列起始)及文件名

第三步:sed空-n空“473711,473731”(弹性常数所处的行数)

空 (就会显示出弹性常数)回车

3、计算单点能

计算单点能通常是用来测试ENCUT 和K点的 (1)测试截断能

第一种方法:POSCAR POTCAR 都比较简单,就是按照前面所说的方法步骤弄就可以了(注意POTCAR中添加势的时候要与POSCAR中的元素顺序一致)。

最重要的是INCAR和 KPOINTS中参数的设置: SYSTEM = tetr Nd_Si ENCUT = 300

ISTART = 0; ICHARG = 2 ISMEAR = 0; SIGMA = 0.1 #IBRION = 2; ISIF=3 ; NSW=15 EDIFF = 0.1E-04 EDIFFG = -1E-3 PREC = Accurate

以上是INCAR中的参数设置,对于计算单点能时,只需要将ENCUT设置一下,#IBRION = 2; ISIF=3 ; NSW=15(这一行标注了意思就是取默认值),对于KPOINTS则只需要设置K点网格就可以了。

设置好之后,先按退出键ESC →→ 输入:wq回车,就是保存并退出 运行指令:/opt/mpi/openmpi/1.6.5/bin/mpirun空 –n空10空vasp空>vasp.out空&

或者也可以采用脚本进行后台运行,即在计算文件夹中放入vasp.pbs脚本,然后直接输入qsub 空vasp.pbs回车就可以了

计算完毕查看结果的时候,使用命令:grep 空“TOTEN” 空OUTCAR空|tail空-n空1回车,此时出来的就是最后一个的能量值,若想看倒数5个的能量值,可以输入:grep 空“TOTEN” 空OUTCAR空|tail空-n空5回车,就可以看到了。如果想看开始几行 的只需要将命令改为:grep 空“TOTEN” 空OUTCAR空|head空-n空5回车,即可。

第二种方法:若采用 脚本来一次型测试的话,POTCAR 和POSCAR不变,KPOINTS选好一个K点,然后使用脚本run-cut来进行优化,以下为该脚本内容。测

试之前要进行修改,vim空run-cut回车,输入i ,按上下左右键进行修改设置。

#!/bin/bash rm WAVECAR

for i in 200 250 300 350 380 400 420 440(此处需要设置截断能) do

cat >INCAR<

SYSTEM = tetr Pr-Si(修改名称) ENCUT = $i

ISTART = 0; ICHARG = 2 ISMEAR = 0; SIGMA = 0.1 #IBRION=6; ISIF=3 ; NSW=15 EDIFF = 0.1E-04 EDIFFG = -1E-3)

PREC = Accurate (中间高亮这部分其实就是INCAR中的内容,注意若这部分中有原来的内容要先将其删掉,还有要将原INCAR中的ENCUT=380删掉,已经不需要了,并且后面的”!”号不能删)

!

echo \#qsub vasp.pbs

/opt/mpi/openmpi/1.6.5/bin/mpirun -np 10 vasp(运行指令,若在后面加上>vasp.out &就是在后台运行)

E=$(grep \echo $i $E >> comment done

设置好之后,先按退出键ESC →→ 输入:wq回车,就是保存并退出 将KPOINTS也设置好之后然后输入sh空run-cut回车就开始运行了 注意用脚本来测试截断能的时候,不再需要INCAR文件,文件夹中只需要POTCAR 、POSCAR 、KPOINTS、 run-cut就可以了,run-cut中已经包含了INCAR,计算完后,结果文件中会出现一个INCAR文件。然后输入less空comment就可以查看计算结果了。

通常是用计算单点能来测试截断能和K点,主要是先选取一个合适的截断能(可以选取POTCAR中的截断能),然后设置不同的K点来计算单点能(free energy toten),将所得的能量整理出来画成一条曲线.同样的道理测试截断能,选择合适的k点,改变不同的截断能来计算。

(2)测试K点

测试k点就比较容易了,POTCAR 和POSCAR 不变,将INCAR中参数进行修改,如下所示,将高亮部分进行修改,

SYSTEM = tetr Nd_Si ENCUT = 300

ISTART = 0; ICHARG = 2 ISMEAR = 0; SIGMA = 0.1

#IBRION = 2; ISIF=3 ; NSW=15(要用#号标注,意思是采用默认值) EDIFF = 0.1E-04 EDIFFG = -1E-3 PREC = Accurate

然后就设置不同的k点网格,设置好之后,先按退出键ESC →→ 输入:wq回车,就是保存并退出

然后进行计算就OK了,运行指令:/opt/mpi/openmpi/1.6.5/bin/mpirun空 –n

空10空vasp空>vasp.out空&

或者也可以采用脚本进行后台运行,即在计算文件夹中放入vasp.pbs脚本,然后直接输入qsub 空vasp.pbs回车就可以了

4、进行结构优化

待把e-cut和K点测试好之后,就可以进行结构优化了。POTCAR POSCAR的设置不用变,KPOINTS中K点改为测试好的那个。重要的是INCAR中的参数设置,如下所示,只需要将这一行的标注#去掉,并设为IBRION = 2; ISIF=3 ,其他的取默认值即可。

SYSTEM = tetr Nd_Si

ENCUT = 300(改为测试出来的) ISTART = 0; ICHARG = 2 ISMEAR = 0; SIGMA = 0.1

IBRION = 2; ISIF=3 ; NSW=15(将这一行的标注#去掉,并设为IBRION = 2; ISIF=3 ,)

EDIFF = 0.1E-04 EDIFFG = -1E-3

设置好之后,先按退出键ESC →→ 输入:wq回车,就是保存并退出 然后就可以运行了,运行指令:/opt/mpi/openmpi/1.6.5/bin/mpirun空 –n空10空vasp空>vasp.out空&

或者也可以采用脚本进行后台运行,即在计算文件夹中放入vasp.pbs脚本,然后直接输入qsub 空vasp.pbs回车就可以了

5、计算弹性常数

将进行优化后的结果进行分析,即将优化出的晶格常数跟实验值进行比较,若误差小于2%,(如果能更小最好),则优化结果合理,即所选参数恰当。

计算弹性常数步骤:

第一步:将优化后得到的结果文件CONTCAR改为POSCAR作为下一步计算所需的POSCAR, KPOINTS就选择测试出来的参数,POTCAR不变。重要的是INCAR,如下为INCAR的内容,其他的保持不变。

general:

System = tetr Nd3Co29Si4B10 ISTART = 0; ICHARG = 2 ISMEAR = 0; SIGMA = 0.1 ENCUT = 380

IBRION = 6; ISIF = 3; NSW = 15(算弹性常数时,IBRION = 6; ISIF = 3) EDIFF = 0.1E-04 EDIFFG = -1E-3 PREC = Accurate

设置好之后,先按退出键ESC →→ 输入:wq回车,就是保存并退出。若是不保存只是退出为”:q”,强制退出“ :q! ”.

此时就可以进行运算了,运行指令:/opt/mpi/openmpi/1.6.5/bin/mpirun空 –n空10空vasp空>vasp.out空&

或者也可以采用脚本进行后台运行,即在计算文件夹中放入vasp.pbs脚本,然后直接输入qsub 空vasp.pbs回车就可以了

待计算结果完毕后,查看结果指令

第一种方法:可以用脚本来提取(即在计算的文件夹下放入提取弹性常数的脚本get-elastics.sh ,待计算完毕的时候,输入sh空get-elastics.sh ,在界面上就出现结果了。 第二种方法:

第一步:grep空ELA空OUTCAR回车

第二步:cat空-n空OUTCAR空|grep空“TOTAL ELASTIC MODULI”(将界面

上出现的结果文件粘贴到这儿)回车(就会显示一些有代码的结果文件),如:473711(矩阵行列起始)及文件名

第三步:sed空-n空“473711,473731”(弹性常数所处的行数)空 (就

会显示出弹性常数)回车

6、一些常用指令:

建立文件夹 mkdir空文件夹名 建立文件 touch空文件名 删除 rm 空-f 要删除的东西 移动 mv空文件名空文件夹名 回车 解压 tar空zxvf空被解压的东西回车 运行 sh空文件

编辑 vim空要编辑的文件 复制 cp空文件空文件夹名 删除多个文件,采用脚本clear.sh,具体步骤如下: 第一步、vim空clear.sh回车

第二步、先按一个i,再输入rm 空-f 空要删除的文件,把不需要删除的文件,在此delete掉,然后保存并推出“:wq”回车

第三步、sh空clear.sh回车即可

闭任务 killall空VASP或者是qdel空地址(213) 查看地址 qstat回车 在另一个节点下查看其中某一个节点是否有任务: ssh空192.9.200.212(IP地址)回车

输入password,回车 top就可以了 心得体会:

在对材料进行其他性质的计算之前,要对结构先进行优化包括能量最小化和结构稳定性优化。

Castep进行计算可包括三步:第一步,搭建结构,建立周期性晶胞;第二步,对建立的结构进行优化,其中包括电子能量最小化和几何结构稳定化(其实就是用能量最小化的方法来测试E-CUT和K 点,然后用测试出的良好参数进行几何优化);第三步,进行计算其他的性质。

这就是第一性原理的方法,VASP计算也是同样的步骤。