收敛问题
在电子自洽计算和结构弛豫过程中,pw.x有时迭代到最大步数或者报错退出,这主要是因为计算不收敛,即
1 | End of self-consistent calculation |
收敛问题常见原因包括两方面:
1)物理原因(计算不符合实际)
A.所建模型不符合实际:输入的原子坐标、元素种类出错;对称性的计算设置
B.使用的近似不符合实际:挑选合适的赝势;金属k-mesh的选择;磁性和SOC的考虑;Hubbard U;Van der waals问题(这一类问题需要结合实际具体分析)
2)计算原因(算法不合适,收敛标准过高)
收敛的条件:初始电荷(自旋)密度分布接近于电子-离子体系能量极小值状态的电荷(自旋)密度状态
如果出现不收敛的情况,应该首先考虑原因A即检查结构是否合理(比如,原子位置,晶格常数,甚至元素种类等),A原因无误后再检查B原因的合理性
有时在scf或nscf计算会出现类似以下情况:
1 | iteration # 1 ecut= 70.00 Ry beta=0.80 |
这是一个warning,是指对角化迭代过程中,最高的1-4个本征值计算没有收敛(阈值由diago_thr_int控制),超过5个本征值不收敛(或nbnd/4)则会报错退出。
对总能和能级有一定影响,如果不是最后一步,通常可以忽略。
实现自洽计算收敛的原则与方法
实现收敛的原则:
自洽计算收敛是在电荷自洽计算过程中,总能不再明显变化,判据是pw.x输出的estimated scf accuracy小于定值conv_thr,默认值1.0e-6相对宽松,根据物理量有时还需要适当提高精度
实现收敛的方法:
方法一:
修改电荷混合参数:
1)降低mixing_beta,默认值是0.7,将默认值降低到0.3~0.1(slab 0.05)mixing_beta的值越低,混合新的电荷越少,混合后的电荷与原电荷越接近,有利于保证收敛
2)增大mixing_ndim,即上述几个步骤中电荷会考虑到mixing中,默认是8,同时计算所需内存会增大mixing_ndim=12
方法二:
提高ecutwfc和ecutrho
USPP:ecutrho是ecutwfc的四倍,增加到10倍
NCPP:ecutrho是ecutwfc的四倍
方法三:
金属体系(或金属,半金属):
1)加一些空带,增加nbnd,具体取值根据的电子总数,默认最少4个空带,增加到足够空带,让最上面空带的电子占据数逐渐趋于0
- 增加K点网格密度,以消除半满带对总能收敛的影响
3)增加展宽degauss
方法四:
对角化出错的体系,检查结构是否合理的基础上,尝试使用diagonalization=’cg’,默认值是’david’,
同时设置startingwfc=’random’。减小初始迭代时的对角化阈值diago_thr_init=1.0d-6(scf默认1.0d-2,这一选项也是nscf计算阈值)