WannierTools稀疏投影能带实操
用六轨道实际小模型认识稀疏HR、移位选根和轨道投影,给出简单选能量命令与完整输入。
阅读本篇目录
稀疏能带只求指定能量附近的部分本征值,投影能带再标出这些态来自哪些轨道。本篇使用BulkBand_calc和BulkFatBand_calc共同开启当前稀疏ARPACK分支;不把返回的少量根当成完整能带。
1 先看两个已完成的实例#
python3 -m zipfile -e wanniertools-sparse-fatbands-wave958-*.zip .
cd wanniertools-sparse-fatbands
bash read.sh
bash plot.sh
这一步读取附带数据,不提交新计算。程序为WannierTools2.7.0 CPU模块wanniertools/2.7.0-8173m,oneAPI2023.2(ifort2021.10.0、Intel MPI2021.10、MKL2023.2.0、ARPACK-NG3.9.1)。模型很小,用来演示选根与文件格式,不宣称有性能加速收益。
六轨道模型包含两个会混合的轨道,以及四条能量固定为−10、−8、+8、+10 eV的辅助带。活动的二轨道块为:
H(k) = sin(2πkx) σx + [0.4 + cos(2πkx)] σz (eV)
这些是自建模型标签,不代表一种真实材料,也没有新增DFT计算。
2 稀疏HR比普通格式多一行#
cat inputs/near-zero/model_sparse_hr.dat
完整文件如下:
Own sixorbital sparse instructional model
14
6
3
1 1 1
0 0 0 1 1 0.4 0.0
0 0 0 2 2 -0.4 0.0
0 0 0 3 3 -10.0 0.0
0 0 0 4 4 -8.0 0.0
0 0 0 5 5 8.0 0.0
0 0 0 6 6 10.0 0.0
1 0 0 1 1 0.5 0.0
1 0 0 2 1 0.0 -0.5
1 0 0 1 2 0.0 -0.5
1 0 0 2 2 -0.5 0.0
-1 0 0 1 1 0.5 -0.0
-1 0 0 2 1 0.0 0.5
-1 0 0 1 2 0.0 0.5
-1 0 0 2 2 -0.5 -0.0
注释后依次是非零记录数14、轨道数6、R点数3及各R点简并数,后面才是R1 R2 R3 m n real imag。只有非零项写出;不要把普通Wannier90 HR的轨道数6误写到非零记录数的位置。
3 输入里的选根和投影组#
cat inputs/near-zero/wt.in
实际近零能量输入如下:
&TB_FILE
Hrfile='model_sparse_hr.dat',Is_Sparse_Hr=T
/
&CONTROL
BulkBand_calc=T
BulkFatBand_calc=T
/
&SYSTEM
NumOccupied=1,SOC=0,E_FERMI=0
/
&PARAMETERS
Nk1=17
NumSelectedEigenVals=2,E_arc=0.0000000000
projection_weight_mode='NORMAL'
/
LATTICE
Angstrom
3 0 0
0 3 0
0 0 3
ATOM_POSITIONS
1
Direct
X 0 0 0
PROJECTORS
6
X s px py pz dxy dz2
SELECTED_WANNIERORBITALS
3
1
2
3-6
KPATH_BULK
1
G 0 0 0 X 0.5 0 0
Is_Sparse_Hr=T对应上述稀疏格式。NumSelectedEigenVals=2请求靠近选根中心的两条根,不是最低的两条能带。本例的−10与−8 eV辅助带更低,但不在零能量附近。
projection_weight_mode='NORMAL'使用普通轨道概率。三个投影组依次选择轨道1、轨道2、轨道3到6;分组覆盖全部六轨道,因此这三组概率相加为1。这里不是超胞展开权重,也不套用展开例中的体积归一化。
NumOccupied在本输入中不用于判断稀疏选出的根是不是实际电子占据态;本篇只演示数值选根与投影。
4 用简单命令设置选根能量#
第二个shifted-root例请求7.7 eV附近的一条根。若要明确设置这个示例输入,执行:
python3 select_energy.py 7.7
python3 prepare.py
cd work-new
sbatch ../submit.sh
当前安装基线的这个稀疏分支,矩阵转为eV后,移位参数仍沿用读取后的另一套能量单位。配套脚本针对所列版本做换算:输入文件会写E_arc=209.5276645,该分支实际使用的选根中心才是7.7 eV。这不是所有WannierTools入口的通用E_arc规则,不能复制到表面谱或其他功能中。
脚本会核对对应源码版本;若版本已变化,应使用匹配的输入处理方式,不绕过提示继续套用这个换算。
普通CPU分区按56核整节点申请和计费,实际使用1个MPI进程、1个OpenMP线程。任务结束后:
cd ..
bash read.sh work-new
bash plot.sh
已有work-new请保留,再次提交应使用新的解压目录。默认的bash read.sh始终读取附带结果。
5 看能量和投影列#
head -n 9 work-new/near-zero/bulkek.dat
head -n 7 analysis-read/WT-sparse-selected-fatbands.csv
原生五列依次为路径长度(Å⁻¹)、能量(eV)、组1、组2和组3的概率。近零能量例有两条活动带,辅助轨道组概率为0;活动两组权重随kx变化。

实际能量与独立六阶矩阵对角化的最大差异小于4.42E-10 eV,投影概率最大差异小于4.16E-10,三个分组概率和为1。
6 核对选出的确实是目标附近的根#
head -n 8 work-new/shifted-root/bulkek.dat
7.7 eV附近的一条根实际为+8 eV辅助带,组3概率为1。原生输出只含这一条,不会同时给出另外五条能带。

灰线是读取脚本对包内六阶模型独立计算的完整谱,彩色点才是实际稀疏程序返回的根;没有为了画灰线再跑一次原生全矩阵能带计算。
更换真实HR后,需要按实际能量区间、轨道数和投影组设置选根,并核对返回能量、厄米性和概率。若返回根数量较少,不能据此认定其余能带不存在。ZIP SHA256:3e9a5da9e4ea4d630fbb3791ffd4301778fecd9786225b45b2abf3d06401f2c4。