WannierTools专题

WannierTools:磁通扫描与Hofstadter能谱

从一轨道模型和完整wt.in开始,扫描磁通,读取能级,并独立换算SI磁场。

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

下载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. 本例算的是什么#

这是人为定义的一轨道理论模型,不是某种真实材料的拟合:y、z方向最近邻跃迁各为−1 eV,晶格常数3 Å,x方向不跳跃。零场色散为:

E(ky,kz) = -2 cos(2πky) -2 cos(2πkz),能量单位eV,k为分数坐标。

磁场沿SURFACE第一基矢方向,磁超胞沿第三基矢堆叠。每原胞磁通取p/q个h/e磁通量子;q决定磁超胞大小,也决定本模型的q条磁子带。

完整HR文件只有五个实空间项:

Owned one-orbital square yz model, t=1eV, a=3A; not fitted material
1
5
1 1 1 1 1
0 0 0 1 1 0.000000000000 0.000000000000
0 1 0 1 1 -1.000000000000 0.000000000000
0 -1 0 1 1 -1.000000000000 0.000000000000
0 0 1 1 1 -1.000000000000 0.000000000000
0 0 -1 1 1 -1.000000000000 0.000000000000

2. 准备完整wt.in#

本例q=9输入如下:

&TB_FILE
 Hrfile='model_hr.dat'
/
&CONTROL
 LandauLevel_B_calc=T
 LandauLevel_wavefunction_calc=.FALSE.
/
&SYSTEM
 NSLAB=9
 NumOccupied=1
 SOC=0
 E_FERMI=0
/
&PARAMETERS
 Magq=9
 Magp=9
 Nk1=17
 Nk2=17
 Nk3=1
 OmegaNum=101
 OmegaMin=-4.5
 OmegaMax=4.5
 Eta_Arc=0.05
/
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
0 0 1
KPATH_BULK
1
G 0 0 0 Y 0 0.5 0
KPLANE_BULK
0 0 0
0 1 0
0 0 1

LandauLevel_B_calc扫描磁通,Hof_Butt_calc在这个版本进入同一计算分支。不要把两个名称当成两套独立物理算法。这里NSLAB和Magq都设9,避免不同分支采用不同的超胞参数。

在已分配CPU资源的工作目录中,单独运行一个条件:

module load wanniertools/2.7.0-8173m
cp inputs/B-q9/wt.in .
cp inputs/B-q9/model_hr.dat .
wt.x > native.log
head -n 6 landaulevel_B.dat

若下载包根目录已经有这些文件,先在独立副本中操作。完整十条件的提交入口仍是sbatch run.slurm。

3. 读磁通,不把Magp当作Tesla#

q=9实际得到p=0…8九个磁通点、每点九个能量;q=15得到十五个磁通点、每点十五个能量。Magp不是直接输入磁场强度,也不要假定扫参一定包含p/q=1的端点;先读实际第一列。

两组真实磁通扫描

输出前三列为磁通比例、原生标记的磁场、能量。这个2.7.0构建的Tesla列存在面积单位不一致,不能直接作为SI磁场。 本例用p/q作为横轴,并在data/magnetic-flux-levels.csv分别保留原值和按原胞面积独立计算的磁场。

按SI定义自行换算:

python3 - <<'PY'
h = 6.62607015e-34
e = 1.602176634e-19
p, q = 1, 9
area_m2 = (3e-10) * (3e-10)
print('B (tesla) =', (p/q) * (h/e) / area_m2)
PY

约5105.76 T;原生该点标为约1429.76 T,两者不能混用。小q对应很强的模型磁场,不代表实验可轻易达到。接近真实弱场需要更大磁超胞和额外的收敛、模型适用性研究。

4. 如何知道能量读对了#

零场全部能量与解析色散的折叠值一致;所有磁通、固定磁通路径及平面能量均与独立Harper矩阵逐条比较,最大差约5×10⁻⁹ eV。比较器保留当前原生相位实现中的frc=1e-4边界约定;相对理想周期边界的差在本例最多约4.44×10⁻⁴ eV,不能把它说成完全没有边界误差。

bash read.sh
cat data/independent-Harper-errors.csv

继续看固定磁通、权重与平面图和谱函数读取。

参考:WannierTools官方文档、官方源码。

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

查看配图

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

100%查看原图 ↗