Wannier90专题

Wannier90 任意k点插值与能量导数

Si的七个采样点、笛卡尔导数单位与分数坐标有限差分检查。

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

下载完整输入、参考数据和绘图程序,保存为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. 在现有检查点上插值#

本例使用官方固定Si八带Wannier检查点,DFT原始均匀网格4³。在集群运行的是检查点导入与postw90,没有重新跑DFT或局域化。

cat inputs/Si-interpolation-step5e-5/silicon_geninterp.kpt
cat inputs/Si-interpolation-step5e-5/silicon.win
sbatch job.slurm Si-interpolation-step5e-5

主开关为:

geninterp = true
geninterp_alsofirstder = true

点文件前三行依次是注释、坐标制、点数。crystal表示分数倒格坐标,点编号只是标签。第一个点是(0.13,0.21,0.17),另外六个点分别沿三个分数轴加减5×10⁻⁵,用于中心差分。

Slurm内部执行:

w90chk2chk.x -import silicon
postw90.x silicon

chk.fmt和相应win必须匹配,不能改成另一套晶胞或另一组Wannier函数后继续复用。

2. 看懂输出的八列#

head -n 14 reference-results/Si-interpolation-step5e-5/silicon_geninterp.dat
bash plot.sh

输出依次为点编号、三个笛卡尔k分量(Å⁻¹)、能量(eV)、三个笛卡尔能量导数(eV·Å)。每个采样点连续给8条保留能带,共56行。

点文件是分数坐标,导数却是笛卡尔坐标;不能直接把输出导数与分数坐标差分相减。若晶胞按行排列为A,倒格矢按行排列为B=2πA⁻ᵀ,沿第i个分数轴的导数为grad_cart·B_i。

本例中心差分与解析导数达到10⁻⁴eV/分数坐标的比较精度。原始结果只打印有限位数,差分步长过小时会放大舍入误差;选择步长要同时考虑截断与打印精度,不是越小越好。

八条Si插值能量及笛卡尔导数

输出导数不是直接以m/s给出的群速度。若需要群速度,还要按v=(1/ℏ)∇kE换算单位,并确认能带简并处的带序与物理定义。

完整接口见官方Generic Band interpolation。

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

查看配图

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

100%查看原图 ↗