WannierTools:固定磁通能带、权重与平面图
设置固定磁通路径和选带,读取可信的能量与固定k权重,按输入重建平面坐标。
阅读本篇目录
下载WannierTools磁场与谱函数完整示例,保存为example.zip:
python3 -m zipfile -e example.zip .
cd wanniertools-magnetic-examples
bash results.sh
bash plot.sh
以上读取参考数据和图片。自己运行时用sbatch run.slurm,在新的work/中依次运行十个短条件;已有目录保留。bash read.sh work用独立Harper矩阵读取新能量。本例使用已安装WannierTools2.7.0 CPU程序,Intel oneAPI2023.2、Intel MPI、MKL LP64顺序库、ARPACK-NG3.9.1,单MPI进程/单CPU线程,不使用GPU。
1. 从磁通扫描切换固定磁通路径#
完整输入在inputs/k-q9/wt.in,相比磁通扫描主要修改:
&CONTROL
LandauLevel_k_calc=T
LandauLevel_wavefunction_calc=.FALSE.
/
&SYSTEM
NSLAB=9
NumOccupied=1
SOC=0
E_FERMI=0
/
&PARAMETERS
Magq=9
Magp=1
Nk1=17
/
保留HR、晶格、投影和SURFACE,路径为:
KPATH_BULK
1
G 0 0 0 Y 0 0.5 0
这里p/q=1/9保持不变,17个路径采样得到九条能带;q=15对应另一磁通1/15,不能把两张图简单当成“同一磁场下的网格收敛”。
cat inputs/k-q9/wt.in
cat inputs/k-q15/wt.in
head -n 8 reference-results/k-q9/landaulevel_k.dat

原生第一列是路径长度,单位Å⁻¹;不是直接的ky分数坐标。整理后的data/fixed-flux-kbands.csv同时提供两者。
2. 波函数权重先核对归一化#
固定k路径使用:
LandauLevel_k_calc=T
LandauLevel_wavefunction_calc=T
head -n 6 reference-results/k-wave-q9/landaulevel_k.dat
head -n 6 reference-results/B-wave-q9/landaulevel_B.dat
本例每个磁胞只有一种轨道,把所有磁复制胞该轨道权重相加应为1。固定k路径实际全部为1,能量与不输出波函数时一致。
当前版本B扫描的相应权重却约0.192–0.808,不能把这些数值当成正确的轨道投影概率;本例保留原值,也没有强制重新归一化。需要定量权重时,先用已核对的固定磁通路径分支,并重新检查自己模型的轨道编号。
3. 平面计算必须明确选几条带#
本例完整输入在inputs/plane-all-q9/wt.in,改用:
&CONTROL
LandauLevel_kplane_calc=T
/
&PARAMETERS
Magq=9
Magp=1
Nk1=17
Nk2=17
/
KPLANE_BULK
0 0 0
0 1 0
0 0 1
SELECTED_BANDS
9
1 2 3 4 5 6 7 8 9
SELECTED_BANDS第一行是数量,第二行是编号,不使用1-9代替列表。省略时,本例只输出一条默认选择带;显式列出9条才得到完整九带平面。
head -n 4 reference-results/plane-q9/landaulevel_kplane.dat
head -n 4 reference-results/plane-all-q9/landaulevel_kplane.dat
head -n 4 data/plane-reconstructed-input-grid.csv
4. 当前版本的平面坐标列不要直接画#
该分支原生前六列出现0/NaN,后面的能量有限且与独立矩阵相符。配套CSV依据本例明确的17×17输入网格和原生循环顺序另行重建ky、磁超胞kz,并标明坐标来源;没有覆盖或修补原生文件。

本例网格为两方向各−0.5…0.5,先固定第一个方向、内层遍历第二个方向。更换起点、向量、网格、原生分支或输出排序时,需要跟着修改提取器;不要对任意平面数据盲目套用这个重建。
对更复杂模型,优先先算并核对几条固定磁通路径,再扩展到平面。一般能带与表面研究入口见模型准备。
参考:WannierTools官方文档、官方源码。