WannierTools专题

WannierTools:二维平面与三维网格能量

实操BulkBand_plane_calc与BulkBand_cube_calc,读取81点和729点真实输出并正确识别坐标列。

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

已有紧束缚哈密顿量后,可以直接在二维k平面或三维k网格求本征能量,不必只沿高对称路径画线。本例用能量可独立核对的小模型学习两个入口。

下载完整输入、原生输出和读取绘图脚本,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd wanniertools-grids-slabstates
bash read.sh
bash plot.sh

默认读取真实计算结果,不重新提交任务。使用WannierTools 2.7.0 CPU模块 wanniertools/2.7.0-8173m,Intel MPI/oneAPI运行环境;读取和绘图使用NumPy、Matplotlib。模型为晶格常数3Å的简单立方格子,每个格点一个轨道,最近邻跃迁为−1eV,没有进行新的DFT计算,不对应一种真实材料的拟合参数。

实际9×9平面能量,以及9×9×9三维网格中的一条切片

本模块使用oneAPI 2023.2构建:ifort 2021.10.0、Intel MPI 2021.10、MKL 2023.2.0,配合ARPACK-NG 3.9.1;本例使用CPU MPI程序。

1. 完整平面输入#

&TB_FILE
 Hrfile='model_hr.dat'
/
&CONTROL
 BulkBand_plane_calc=T
/
&SYSTEM
 NumOccupied=1, SOC=0, E_FERMI=0, Nslab=8
/
&PARAMETERS
 Nk1=9,Nk2=9,Nk3=9
/
LATTICE
Angstrom
3 0 0
0 3 0
0 0 3
ATOM_POSITIONS
1
Direct
X 0 0 0
PROJECTORS
1
X s
SURFACE
1 0 0
0 1 0
KPLANE_BULK
0 0 0
1 0 0
0 1 0
KCUBE_BULK
0 0 0
1 0 0
0 1 0
0 0 1
SINGLEKPOINT_2D
Direct
0.125 0.25
SELECTEDBANDS
3
1 4 8

模型文件可直接查看:

cat inputs/bulk-plane/model_hr.dat

KPLANE_BULK 给出平面中心及两条跨度向量;本例覆盖分数坐标−0.5到0.5,固定k3=0。Nk1=Nk2=9 得到81点,包含两端。两个边界在周期意义下等价,做布里渊区积分时不能不加处理地重复计权。

2. 改成三维网格#

三维例子使用相同模型,在CONTROL中改为:

&CONTROL
 BulkBand_cube_calc=T
/

保留 KCUBE_BULK 中心和三条跨度向量,Nk1=Nk2=Nk3=9 得到729点。不要同时打开不需要的计算开关。

cat inputs/bulk-cube/wt.in
head reference-results/bulk-plane/bulkek_plane.dat
head reference-results/bulk-cube/bulkek_cube.txt

3. 输出的坐标和能量#

两种文件各有7个实际数值列,因为本模型只有1条能带。通用表头可能列出4个能带标签,但这不代表真的写了4条带。

文件 前3列 第4–6列 最后一列
bulkek_plane.dat 三维笛卡尔k,Å⁻¹ 旋转到平面坐标的笛卡尔k,Å⁻¹ 能量,eV
bulkek_cube.txt 三维笛卡尔k,Å⁻¹ 分数坐标 能量,eV

平面文件中第4–6列虽然标为k1/k2/k3,实际不是分数坐标。 本例立方晶格可以用前3列乘 3/(2π) 转成分数坐标,配套读取器已处理;一般晶胞应使用完整倒格矩阵。

本例解析关系为 E=-2[cos(2πk1)+cos(2πk2)+cos(2πk3)] eV。实际平面能量范围−6到2eV,三维网格为−6到6eV,逐点与解析关系差低于 1E-7 eV。

4. 重新提交与画图#

python3 prepare.py
cd work-new
sbatch ../submit.sh
squeue -u "$USER"
# 完成后
cd ..
bash read.sh work-new
bash plot.sh
cat analysis-read/DATA-VALIDATION.json

模板依次计算平面、立方体和薄膜波函数三个小例,实际1个MPI进程、OMP线程1,按本站规则申请56核整节点并整节点计费。无需POTCAR。

换自己的模型时替换 model_hr.dat,同步LATTICE、ATOM_POSITIONS、PROJECTORS、NumOccupied及k区域。网格数越大输出越多,应按需要选择切片或等能面,不能把本教学模型的带宽直接用于材料解释。

下载:平面数据、三维网格数据。

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

查看配图

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

100%查看原图 ↗