5A文VASP使用总结.docx
《5A文VASP使用总结.docx》由会员分享,可在线阅读,更多相关《5A文VASP使用总结.docx(14页珍藏版)》请在冰豆网上搜索。
5A文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下,可以看到该目录又包含五个子目录potpot_GGApotpawpotpaw_GGApotpaw_PBE,其中每一个子目录对应一种赝势形式。
赝势按产生方法可以分为PP(standardpesudopotential,其中大部分是USPP,ultrasoftpesudopotential)和PAW(projectoraugmentedwavemethod)。
按交换关联函数的不同又可以有LDA(localdensityapproGimation)和GGA(generalizedgradientapproGimation),其中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。
其中各个元素具体推荐哪种形式的赝势可以参考vaspworkshop中有关赝势部分的ppt。
当然自己能测试之后在选择是最好不过的了,以后再聊。
2.POTCAR的建立:
选好哪一种赝势之后,进入对应的目录,你会看到里边有这么几个文件,POTCAR.ZPSCTR.ZV_RHFIN.ZWS_FTP.LOG。
我们需要的是第一个。
把它解压,如zcatPOTCAR.Z>Ga。
对As元素我们也可以类似得到一个As文件。
用cp命令或者mv命令把这两个文件都移到我们的工作目录里。
然后再用cat命令把这两个文件合并在一起,如catGaAs>POTCAR,这样就得到了我们需要的POTCAR。
同理,有多个元素的POTCAR也可以这样产生。
这里需要注意的是,记住元素的排列顺序,以后在POSCAR里各个元素的排列就是按着这里来的。
二、收敛测试
1、VASP测试
计算的参数,比如k-points或cutoff,肯定是取的越多越准确,但相对的计算量就会增加,为了既保证计算的精确度,又尽可能的减少计算量,所以进行收敛测试,比较不同的参数,所得的两者的差值,差值符合误差的范围,就认为已经收敛。
VASP中收敛测试主要是测试截断能和K点,(注意:
按照经验,先优化K点,且根据manu,K<8时优先选用偶数。
)优化K点时,取ENCUT为POTCAR中的ENMIN就可以了,做完了K点测试之后,再做ENCUT的搜寻比较好。
VASP具有单点能计算的功能。
也就是说,对一个给定的固定不变的结构(包括原子、分子、表面或体材料)能够计算其总能,即静态计算功能。
计算单点能,一般都能得到结果,是否收敛是比较两个计算结果得到的结论,而能否出计算结果应该是对某个确定的计算而言
之所以采用计算单点能来测试,是因为单点能计算速度快,需要的参数最少,最多只要在KPOINTS文件中设置一下合适的K点或者在INCAR文件中给定一个截断能ENCUT就可以了。
而且其他参数取默认值就好了。
还有一个参数就是电子步的收敛标准的设置EDIFF,默认值为EDIFF=1E-4,一般不需要修改这个值。
具体来说要计算单点能,只要在INCAR中设置IBRION=-1(默认)也就是让离子不移动就可以了,单点能一般NSW都是0。
(其实就选用默认值就可以)
2、MS测试
(1).我所说的几何优化,具体到castep中为GeometryOptimization,几何优化时,castep通过微调原子坐标使能量最低,当然你可以选择是否优化晶格,但对于计算参数(主要是cutoffenergyandk-points)的收敛测试,主要是测试计算参数对能量计算的影响,因此不需要优化结构;
(2).参数收敛测试的目的是:
既能准确的计算能量,又使计算量最低。
从这个目的出发,在收敛测试时,根据相关文献,比如测试k-points,先选取一较大的cut-off,然后把k-points依次从低到高,将计算的结果与k-points最高的值进行比较(一般认为k-points等越高,越接近于真实情况,但计算量相对也增加),如果能量收敛了——符合收敛标准,那就认为测试完成;
三、结构弛豫
结构弛豫的判据一般有两种选择:
能量和力。
这两者是相关的,理想情况下,能量收敛到基态,力也应该是收敛到平衡态的。
但是数值计算过程上的差异导致以二者为判据的收敛速度差异很大,力收敛速度绝大部分情况下都慢于能量收敛速度。
这是因为力的计算是在能量的基础上进行的,能量对坐标的一阶导数得到力。
计算量的增大和误差的传递导致力收敛慢。
【结构优化又叫结构弛豫(structurerelaG),是指通过对体系的坐标进行调整,使得其能量或内力达到最小的过程,与动力学退火不同,它是一种在0K下用原子间静力进行优化的方法。
可以认为结构优化后的结构是相对稳定的基态结构,能够在实验之中获得的几率要大些(当然这只是理论计算的结果,必须由实验来验证)。
一般要做弛豫计算,需要设置弛豫收敛标准,也就是告诉系统收敛达成的判据(convergencebreakcondition),当系统检测到能量变化减小到一个确定值时例如EDIFFG=1E-3时视为收敛中断计算,移动离子位置尝试进行下一步计算。
EDIFFG这个值可以为负,例如EDIFFG=-0.02,这时的收敛标准是当系统发现所有离子间作用力都小于给定的数值,如0.02eV/A时视为收敛而中断。
弛豫计算主要有两种方式:
准牛顿方法(quasi-NewtonRMM-DIIS)和共轭梯度法(CG)两种。
准牛顿方法计算速度较快,适合于初始结构与平衡结构(势能面上全局最小值)比较接近的情况,而CG方法慢一些,找到全局最小的可能性也要大一些。
选择方法为IBRION=1时为准牛顿方法而IBRION=2时为CG方法。
具体来说要做弛豫计算,设置IBRION=1或者2就可以了,其它参数根据需要来设置。
NSW是进行弛豫的最大步数,例如设置NSW=100,当计算在100步之内达到收敛时计算自动中断,而100步内没有达到收敛的话系统将在第100步后强制中止(平常计算步数不会超过100步,超过100步可能是计算的体系出了问题)。
参数通常可以从文献中发现,例如收敛标准EDIFFG等。
有的时候我们需要一些带限制条件的弛豫计算,例如冻结部分原子、限制自旋的计算等等。
冻结部分原子可以在POSCAR文件中设置selectivedynamic来实现。
自旋多重度限制可以在INCAR中以NUPDOWN选项来设置。
另外ISIF选项可以控制弛豫时的晶胞变化情况,例如晶胞的形状和体积等。
四、VASP的使用流程(计算性质)
1、四个输入文件
使用VASP计算,首先要熟悉并设置好四个输入文件:
POSCAR、POTCAR、KPOINTS、INCAR。
(1)POSCAR:
要借助MS(materialstudios)软件,在MS中搭建好结构,选择
→→EGport→→保存在一个磁盘下,保存类型选为CrystallographicInformationFiles,即将结构图保存为.cif格式。
(如图所示)
先安装一个VESTA软件(windows系统下的就行),打开VESTA软件,并打开这个图标就是以下左图所示的窗口,然后将上一步保存的.cif格式的模型导入这个窗口,可以直接拖进来(或者通过fileopen)。
便出现右图。
在VESTA中点击
→→选择EGportDate→→将模型保存到一个文件下,并将保存类型选为如图所示的VASP的格式,
,坐标就选取分数坐标,点击OK,将文件名改为POSCAR就好了。
如下图:
打开→→点击NewSession→→输入用户名(如iap08)→→点击OK→→输入密码(6个1)→→点击OK。
如图所示,可以在界面上输入top(查看是否有任务在进行),退出同时按ctrl和C。
点击可以与后台连起来(同win32),在根目录下建立自己计算的文件夹,并将POSCAR拖入文件夹。
(2)POTCAR.
先将势库放入Gftp连接的后台文件夹下,然后在打开的界面中找到势库中计算所需要的势,然后解压并添加到POTCAR中,在界面中输入的具体步骤是:
第一步:
ls回车→→cd空hG回车→→ls回车→→cd势文件夹→→ls回车→→cd空paw_pbe回车→→ls回车→→cd空Ce→→ls回车→→zcat空POTCAR.Z空>Ce回车,ls就会发现已将所需的势解压出来了,
第二步:
就是将解压出来的各元素的势都添加到POTCAR中,步骤如下:
cat空Ce空Co空B空Si空>POTCAR回车(注意这里边各元素的添加顺序一定要与POSCAR中的一致,如图所示),ls发现已经出现了POTCAR这个文件夹。
(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空“TOTALELASTICMODULI”(将界面上出现的结果文件粘贴到这儿)回车(就会显示一些有代码的结果文件),如:
473711(矩阵行列起始)及文件名
第三步:
sed空-n空“473711,473731”(弹性常数所处的行数)空(就会显示出弹性常数)回车
3、计算单点能
计算单点能通常是用来测试ENCUT和K点的
(1)测试截断能
第一种方法:
POSCARPOTCAR都比较简单,就是按照前面所说的方法步骤弄就可以了(注意POTCAR中添加势的时候要与POSCAR中的元素顺序一致)。
最重要的是INCAR和KPOINTS中参数的设置:
SYSTEM=tetrNd_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
rmWAVECAR
foriin200250300350380400420440(此处需要设置截断能)
do
cat>INCAR<
SYSTEM=tetrPr-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"ENCUT=$ieV"
#qsubvasp.pbs
/opt/mpi/openmpi/1.6.5/bin/mpirun-np10vasp(运行指令,若在后面加上>vasp.out&就是在后台运行)
E=$(grep"TOTEN"OUTCAR|tail-1|awk'{printf"%12.6f\n",$5}')
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点来计算单点能(freeenergytoten),将所得的能量整理出来画成一条曲线.同样的道理测试截断能,选择合适的k点,改变不同的截断能来计算。
(2)测试K点
测试k点就比较容易了,POTCAR和POSCAR不变,将INCAR中参数进行修改,如下所示,将高亮部分进行修改,
SYSTEM=tetrNd_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点测试好之后,就可以进行结构优化了。
POTCARPOSCAR的设置不用变,KPOINTS中K点改为测试好的那个。
重要的是INCAR中的参数设置,如下所示,只需要将这一行的标注#去掉,并设为IBRION=2;ISIF=3,其他的取默认值即可。
SYSTEM=tetrNd_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=tetrNd3Co29Si4B10
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空“TOTALELASTICMODULI”(将界面上出现的结果文件粘贴到这儿)回车(就会显示一些有代码的结果文件),如:
473711(矩阵行列起始)及文件名
第三步:
sed空-n空“473711,473731”(弹性常数所处的行数)空(就会显示出弹性常数)回车
6、一些常用指令:
建立文件夹mkdir空文件夹名
建立文件touch空文件名
删除rm空-f要删除的东西
移动mv空文件名空文件夹名回车
解压tar空zGvf空被解压的东西回车
运行sh空文件
编辑vim空要编辑的文件
复制cp空文件空文件夹名
删除多个文件,采用脚本clear.sh,具体步骤如下:
第一步、vim空clear.sh回车
第二步、先按一个i,再输入rm空-f空要删除的文件,把不需要删除的文件,在此delete掉,然后保存并推出“:
wq”回车
第三步、sh空clear.sh回车即可
闭任务killall空VASP或者是qdel空地址(213)
查看地址qstat回车
在另一个节点下查看其中某一个节点是否