Wannier90专题

Wannier90 k·p局部模型:GaAs两带示例

选择展开点与能带、读取0/1/2阶复矩阵,并避开遗漏简并态。

更新于 2026-11-12约 3 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载完整输入、参考数据和绘图程序,保存为example.zip:

python3 -m zipfile -e example.zip .
cd wannier-response-examples
bash results.sh
bash plot.sh

环境使用wannier90/4.0.3-serial,Intel ifx2024.2、AVX2、MKL顺序库;MPI构建使用Intel MPI2021.13。本文小例子用单线程即可。job.slurm申请CPU分区资源,再由run.py在新的work/算例名下运行。查看参考结果不需要重新计算;重复计算时换用新的解压目录。

1. 选择展开点和子空间#

本例用官方固定GaAs八带检查点,在一般k点(0.13,0.21,0.17)选择第4、5条插值带构造两带局部模型。不是新跑GW或DFT。

berry = true
berry_task = kdotp
kdotp_kpoint = .13 .21 .17
kdotp_num_bands = 2
kdotp_bands = 4,5
berry_kmesh = 1 1 1
geninterp = true
geninterp_alsofirstder = true
cat inputs/GaAs-kdotp-generic/gaas.win
sbatch job.slurm GaAs-kdotp-generic
cat reference-results/GaAs-kdotp-generic/gaas-kdotp_0.dat
head -n 12 reference-results/GaAs-kdotp-generic/gaas-kdotp_1.dat

kdotp_bands指保留Wannier子空间中对角化后的带序,不能直接照搬原始DFT包含排除带的总带号。

2. 三个输出文件#

_0.dat是2×2的零阶矩阵;_1.dat依次给x/y/z三个2×2一阶矩阵;_2.dat按xx、xy、xz、yx、yy、yz、zx、zy、zz顺序给九个2×2二阶系数。每行是实部、虚部,矩阵内部按Fortran列优先展开。

本例零阶本征值为7.2838961、9.4380964eV,与同点geninterp的第4、5带相差约3.9×10⁻⁸eV。零/一/二阶系数的单位依次为eV、eV·Å、eV·Å²;展开的位移使用笛卡尔Å⁻¹,不能直接代入分数k偏移。

实际两带零阶能量与一阶矩阵系数

3. 混合二阶项不必各自厄米#

零阶和每个一阶矩阵应厄米;二阶混合系数满足H_ab†=H_ba,所以实数q代入完整二阶多项式后才整体厄米。不能错误地要求xy单独也等于自己的共轭转置,或只保留xy而丢掉yx。

4. 避免在简并点漏选能带#

我们也试过L点附近直接选第4、5带,二阶系数出现异常大的数值。下折叠包含与被排除能带的能量分母;若选中带与被排除带简并或近简并,小子空间就可能不适用。

遇到这种情况,应检查展开点所有邻近能带并扩充简并子空间,或者像本例一样用一般k点学习输出。不要仅因为程序写出了文件就把巨大二阶系数当作有效质量。局部模型还要在很小的q范围与完整Wannier插值比较,不能用一个展开点替代整个布里渊区。

方法与矩阵需求见官方Berry模块。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗