本帖最后由 啦啦黑还黑 于 2019-5-1 00:52 编辑
达到NELM步数上限时SCF仍没有收敛是实际研究中极为容易碰见的问题,VASP中经常会碰到电子步不收敛的情况,也叫做SCF不收敛。经常会在电子结构比较复杂的体系中碰到。
SCF不收敛尝试以下方法:#(1)先检查初始几何结构是不是合理,非常离谱的初始结构会导致SCF难收敛。 (2)检查初始磁矩设置(MAGMOM)是否合理,对于无磁性体系给与默认的磁矩或者高初始磁矩可能会出现Error EDDDAV: Call to ZHEGV failed报错。特殊的磁性排列的体系(AFM, FM),MAGMOM要设置合理。 (3)对于DFT+U和ICHARGE=11的任务,添加LMAXMIN=4 (对于d区体系),添加LMAXMIN=6 (对于f区体系)。 (4)检查是不是ISTART=1 或 ICHARG = 1读取了不合理的波函数,如果是,rm WAVECAR CHGCAR重新跑。 (5)更换ALGO,Fast或VeryFast,或Normal。 (6)对于杂化泛函计算使用ALGO=All,或ALGO=Damped。(此法也可用于 非杂化泛函的计算,SCF收敛以后要读取WAVECAR再用ALGO=Fast或Normal重新收敛一遍) (7)尝试使用更大的SIGMA值,如SIGMA=0.5,先粗略收敛,再读取WAVECAR用小的SIGMA计算。(此方法经常奏效,但是读波函数再次用小SIGMA优化有可能碰到仍不收敛的情况。) (8)对于非磁性体系(闭壳层ISPIN=1)添加:(注意AMIX和BMIX对收敛有很大影响,可以自己调试) AMIX = 0.2
BMIX = 0.0001 #almost zero, but 0 will crash some versions (9)对于磁性体系(自旋极化,ISPIN=2)添加: AMIX = 0.2
BMIX = 0.0001 #almost zero, but 0 will crash some versions
AMIX MAG = 0.8
BMIX MAG = 0.0001 #almost zero, but 0 will crash some versions (10) 尝试更换不同的ISMEAR。(金属等导体用ISMEAR >= 1,半导体用ISMEAR = 0) (11) 提高积分精度,PREC=Accurate,提高辅助格点精度,ADDGRID = .TRUE. 。 (12) 换用不同K点计算收敛,再读取CHGCAR,用高K点计算。 (13) 如果在结构优化或者MD过程中,某一步突然不收敛,使用MAXMIX = 50 (14) 尝试用更小的ENCUT或者更大的ENCUT的预收敛。 (15) 换更小的赝势或者更soft的赝势。
几何结构优化不收敛尝试以下方法:#(1)如果力在接近收敛的区域震荡,很有可能是电子步精度不够高,尝试EDIFF=1E-6或者EDIFF = 1E-7 (2)如果力在接近收敛的区域震荡尝试IBRION=1 (3)如果初始结构不好,或者在优化的前几步结构就崩了,IBRION=2,步长POTIM缩小到0.2或0.1。(尤其是对双原子分子的优化,要限制步长)。如果在极小点附近出现震荡,POTIM可以缩小到0.05。 (4)调整初始结构。过渡态优化失败不收敛最大的原因就是初始结构不合理。 (5)如果体系结构复杂,原子多导致结构收敛慢,力收敛趋势和能量收敛趋势向下,尝试增加收敛步数,NSW=1000。尤其是对于加了vdW校正的,优化收敛会变得非常慢。 (6)尝试IBRION=3,阻尼md的方法往往对超大体系收敛效果好。 (7)调整晶体的对称性,或先使用ISYM=0优化,如果优化一开始的初猜结构具有较高对称性,那么优化过程中这个对称性多数情况下会一直保持。如果实际上体系本身势能面极小点的结构并没有那么高的对称性,则很容易造成优化不能收敛,而且即便收敛了也会有虚频。 (8)改变收敛标准:几何优化的收敛标准一般为EDIFFG= -0.02, 对于体系较大难以收敛的体系,见到文献里有用EDIFFG= -0.05的。但是不建议使用更大的收敛标准了。 (9)使用更精确的积分格点精度,PREC=Accurate等。
过渡态优化不收敛依次尝试以下方法:#过渡态收敛要比几何优化困难的多,经常会碰到各种问题导致过渡态优化不收敛,原因非常多,再另外的博文中具体分析,所有用来解决几何优化不收敛的方法同样使用与过渡态。 (1)用nebmake.pl产生的初始点是线性插值的,很可能不合理。用idpp.py脚本非线型插点,可以避免不合理的初始结构。 (2)CI-NEB插点的数目不合理,(NEB是插点越多越精确,但是CI-NEB不是越多越精确!!!因为能量最高的点会自动climb到鞍点,如果CI-NEB计算正确结束,用1个点和用10个点找出来的过渡态是一样的。) 用dist.pl ini/CONTCAR fin/CONTCAR的返回值除以0.8大概就是要插的点的数目。 (3)先用NEB或者CINEB进行粗收敛: EDIFF = 1E-5;EDIFFG = -0.5;IBRION = 3;POTIM = 0 ;IOPT = 7;ICHAIN = 0;LCLIMB = .TRUE. 再用DIMER或者更高精度NEB精收敛 (4)再用DIMER精收敛的方法: 在NEB文件夹依次运行nebresults.pl和neb2dim.pl产生新的dim文件夹下进行Dimer运算,修改INCAR: EDIFF = 1E-7;EDIFFG = -0.03;IBRION = 3;POTIM = 0;ICHAIN = 2;IOPT = 2 注意:这里新生成的POSCAR使用的原NEB文件夹里的两个能量最高的结构的中点,如果粗收敛用的NEB是没问题的,但是粗收敛用的CINEB则需要把原CI-NEB文件夹里能量最高的点所对应的结构复制过来,
比如:cp ../03/CONTCAR ./POSCAR MODECAR可以用neb2dim.pl自动产生的,
也可以先给新POSCAR算个频率,看一下振动方向,把自己认为最可能是过渡态的虚频的振动模复制出来做成MODECAR的格式。(该振动一般是频率最高的一个虚频)
也可以直接把所有原子的振动模都写成0,只把最关键的一个或几个原子(发生转移的)的模手动设置。(该方法只适用于发生转移的原子明显,且其他原子几乎不动的情况) (5)再用CI-NEB精收敛的方法: 运行vfin.pl保存粗收敛的计算结果,再把所有CONTCAR复制成POSCAR重新计算,修改INCAR: EDIFF = 1E-7;EDIFFG = -0.03;IBRION = 3;POTIM = 0 ;IOPT = 1或2;ICHAIN = 0;LCLIMB = .TRUE. 或者用VASP自带的DIIS收敛方法(此法往往比vtst自带的收敛算法更易收敛): EDIFF = 1E-7;EDIFFG = -0.03;IBRION = 1;POTIM = 0.1 ;IOPT = 0;ICHAIN = 0;LCLIMB = .TRUE.
|