VASP计算电场,很多人的第一反应是往INCAR里加个EFIELD=0.1就完事——但实际跑出来的极化值和文献对不上,或者不同真空层厚度下结果飘得很厉害。根本原因在于VASP处理外加电场有至少三种不同的机制,选错方式或者用错单位,结果直接报废。

EFIELD是最直接的加法:在指定方向(由EFIELD_PEAD或LCALCEPS相关设置配合)加一个均匀静电场。单位是eV/Å per electron charge,这个换算关系经常被搞错。
实际经验:对二维材料(比如MoS₂单层)加垂直于平面方向的电场,EFIELD取0.01-0.05 eV/Å(约0.16-0.8 V/nm)是常见范围。如果设到0.1 eV/Å以上,能带结构会被拉得很厉害,甚至出现非物理的能带交叉——这时候要先检查k点采样是否还够密(电场下能带色散会变得更敏感)。
如果体系本身有固有偶极矩(比如铁电材料、自发极化的二维卤化物),只加EFIELD而不开偶极校正,计算结果会强烈依赖真空层厚度——这是周期性边界条件下电场-偶极相互作用的人为效应。
正确姿势是同时设置:
LDIPOL = .TRUE.
EFIELD = 0.03
IDIPOL = 3 (沿z方向的偶极校正)
开了LDIPOL之后,VASP会在Hamiltionian里加上偶极校正项,抵消周期性镜像偶极之间的长程相互作用。对于厚度<5Å的二维材料,这项校正能改变极化值10-20%,绝对不能忽略。
如果只是想知道外加电场下的电极化响应(比如压电常数e_ij、非线性光学系数χ^(2)),用Berry Phase方法比直接解读波函数更可靠。
VASP里开Berry Phase计算的设置:
LBERRY = .TRUE.
IGPAR = 1 (沿a轴方向积分)
NPPSTR = 8 (k点串数目,越大越精确)
DIPOL = 0.5 0.5 0.5 (偶极中心,通常设Wigner-Seitz中心)
Berry Phase算出来的极化是模掉的极化(polarization modulo eR),遇到极性翻转(比如从+P到-P)需要用”极化跳跃”方法(Modern Theory of Polarization)来恢复连续的极化路径。这部分理论比较绕,但VASP的LBERRY框架已经把核心计算封装好了,用户主要需要关注的是k点采样是否足够——通常要比自洽计算的k点密度再加密一倍。
很多人不知道EFIELD本身只是电场强度,方向由EFIELD_PEAD这个三维向量来控制。默认是(0, 0, 1),即沿z方向。如果你研究的体系电场沿x方向(比如一维链状材料),必须显式设置:
EFIELD_PEAD = 1 0 0
漏设这个导致电场方向错误,在INCAR没有报错的情况下,VASP会默默地沿z方向加场——这种bug不仔细看OUTCAR根本发现不了。
电场计算对计算参数比普通DFT敏感得多。三个必须测收敛的量:
VASP计算电场不是”加个标签”的事。EFIELD的单位、方向的设定、偶极校正的开闭、Berry Phase的k点收敛——每个环节都需要对体系物理有基本判断,否则出来的极化值只能当”数字”看,没有物理意义。