WannierTools:三维Berry曲率扫描
用自建Weyl模型在两个节点附近实际扫描三维k区域,读取能带与Berry曲率分量。
阅读本篇目录
想看Berry曲率在一个三维k区域内怎样变化,可以使用 BerryCurvature_Cube_calc。本例用自建二带Weyl模型,分别扫描两个节点附近的小立方体,再比较晶格长度与整体能量尺度的变化。
本例是紧束缚模型操作演示,没有进行材料DFT计算,也没有用立方体内部采样直接宣称得到量子化拓扑电荷。
1. 查看实际切片#
下载完整输入、实际结果与读取绘图程序,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd wanniertools-Berry-cube
bash read.sh
bash plot.sh
默认读取附带结果,生成 analysis-read 和 figures,不重新计算。

每组12³=1728个k点、2条能带,共4组。图中取qy=+0.005的切片;它不是qy=0平面。全部13824条能带-网格记录见能量与曲率CSV。
2. 模型与节点#
H(k) = t [sin(kx) σx + sin(ky) σy
+ (2-cos(kx)-cos(ky)-cos(kz)) σz]
式中k为无量纲晶格相位。t=1 eV、晶格常数3 Å时,模型节点位于分数坐标 (0,0,+1/4)、(0,0,−1/4)。
本例的三维网格作半格偏移,避开节点上的严格简并。跨过简并点时,单带曲率的计算与解释需要额外注意;改变网格数量后,也应重新核对采样是否落到简并点。
3. 完整wt.in#
正节点附近的输入为:
&TB_FILE
Hrfile='model_hr.dat'
Package='VASP'
/
&CONTROL
BerryCurvature_Cube_calc=T
/
&SYSTEM
NumOccupied=1, SOC=0, E_FERMI=0
/
&PARAMETERS
Nk1=12, Nk2=12, Nk3=12
E_arc=0
/
LATTICE
Angstrom
3.0 0 0
0 3.0 0
0 0 3.0
ATOM_POSITIONS
1
Direct
X 0 0 0
PROJECTORS
2
X s pz
KCUBE_BULK
-0.05500000000000 -0.05500000000000 0.19500000000000
0.12 0 0
0 0.12 0
0 0 0.12
KCUBE_BULK 第一行为起点,接下来3行为区域方向向量。这个路径按各方向 Nk 等分采样,不包含上边界。本例起点已加入半格偏移,配合12×12×12网格使用。
模型矩阵元在同目录的 model_hr.dat。四组输入分别改变节点附近区域、晶格长度和整体t,其余模型定义保持可对应。
4. 提交与绘图#
采用 wanniertools/2.7.0-8173m,oneAPI 2023.2、MKL、ARPACK 3.9.1编译。CPU模板申请56核整节点,实际1个MPI进程、1线程:
bash submit.sh
# 计算结束后
bash read.sh work-new analysis-read
bash plot.sh
单目录的实际核心命令为:
module load wanniertools/2.7.0-8173m
mpiexec.hydra -n 1 wt.x > native.log
ls Berrycurvature_*.frmsf
5. 本次提取了什么#
本篇读取两带能量,以及 Berrycurvature_x.frmsf、Berrycurvature_z.frmsf、Berrycurvature_norm.frmsf 中的曲率x、z分量和模长。每个采样点均与本模型的解析二带表达式核对,最大绝对差约 4.1×10⁻⁷ Ų。
能量、倒格矢与小区域坐标需要按实际文件约定处理。详细读取方式见FRMSF单位与子区域。