示例 17-2:GaAs 在 Γ 点的有效质量(有限差分 / 抛物线拟合)¶
目的¶
- 在 Γ 点附近沿 [100]、[110]、[111] 三个方向取若干 k 点,做非自洽能带计算;
- 用抛物线拟合 E(k) = E0 + ħ²k²/2m* 得到导带底电子和价带顶空穴的有效质量;
- 理解单位换算(ħ²/2m0 = 3.80998 eV·Å²)和 PBE 带隙偏小对有效质量的影响。
对应教程:第17章 高级电子结构(§4)。
文件说明¶
| 文件 | 说明 |
|---|---|
POSCAR |
闪锌矿 GaAs 原胞,a = 5.653 Å(实验值) |
INCAR_scf / KPOINTS_scf |
自洽,Γ 中心 8×8×8,EDIFF = 1E-8 |
INCAR_nscf |
ICHARG = 11、NBANDS = 16 |
KPOINTS_fd |
显式 k 点表(Cartesian,单位 2π/a):Γ + 三个方向各 5 个点,步长 0.005·2π/a ≈ 0.0056 Å⁻¹ |
fit_effmass.py |
读 EIGENVAL + POSCAR,按方向分组拟合有效质量(numpy) |
job.slurm |
自洽 → 非自洽 → 拟合 |
POTCAR |
不提供:cat $VASP_PP_PATH/potpaw_PBE/{Ga_d,As}/POTCAR > POTCAR |
运行步骤¶
cd VASP/examples/17-effmass-gaas
cat $VASP_PP_PATH/potpaw_PBE/{Ga_d,As}/POTCAR > POTCAR
sbatch job.slurm
cat fd/effmass.txt
单独运行拟合脚本:
cd fd
python3 ../fit_effmass.py # 默认 CBM 与 VBM,k0 = Gamma
python3 ../fit_effmass.py --band 7 --band 8 # 价带顶简并的另外两条带
python3 ../fit_effmass.py --npoints 3 # 只用最靠近 Gamma 的 3 个点,检查非抛物线性
python3 ../fit_effmass.py -h
预期结果 / 如何检查¶
- 脚本输出每个方向的
m*_fit(全部点拟合)与m*_2pt(只用最小步长的两点差分),两者接近说明步长合适; - 导带底为正值且三个方向几乎相同(Γ 点导带近似各向同性);
- 不含 SOC 时价带顶在 Γ 三重简并(脚本会提示),按能量排序的三条带分别对应重空穴、轻空穴,不同方向的重空穴质量不同(翘曲);
- 实验电子有效质量约 0.067 m0(Vurgaftman 等, J. Appl. Phys. 89, 5815 (2001))。PBE 严重低估 GaAs 带隙,按 k·p 理论电子有效质量也会被明显低估,这是方法本身的误差而不是脚本错误;要定量比较请改用 HSE06 或 mBJ(见教程 §4.5)并考虑 SOC。
注意事项¶
- EIGENVAL 中的 k 点是倒格子分数坐标,脚本用 POSCAR 的晶格换算成 1/Å(含 2π),所以 POSCAR 必须与计算一致;
- 有效质量来自 meV 量级的能量差,
EDIFF要足够小;步长太小数值噪声大,太大则偏离抛物线; - 用 KPOINTS_OPT(VASP ≥ 6.3)一步完成时,把
KPOINTS_fd改名为KPOINTS_OPT放在自洽目录中,然后对EIGENVAL_OPT运行fit_effmass.py --eigenval EIGENVAL_OPT(若你的版本不写 EIGENVAL_OPT,可改用 vaspout.h5/py4vasp 读取kpoints_opt数据)。