WannierTools按kz切片分析输运
使用配套个人程序计算kz平面的电导张量贡献,核对零场解析结果、正反磁场、历史积分和实际输出单位。
阅读本篇目录
普通霍尔计算给出整个k网格的电导张量;Boltz_k_calc这一路径进一步按第三个网格方向输出切片结果。这里每一行已经对该kz平面内的kx、ky求和并平均,不是某一个独立k点的贡献。
本篇使用配套个人程序。请先执行下载包的setup.sh,再使用其中的提交脚本;公共模块主程序没有合入这份补充,不能直接把提交命令改回公共wt.x后混用结果。
1 下载后先读取已有实算数据#
python3 -m zipfile -e wanniertools-kz-conductivity-wave954-*.zip .
cd wanniertools-kz-conductivity
bash read.sh
bash plot.sh
这一步读取四个实际条件:零场、正向磁场600档历史、反向磁场600档历史、正向磁场1200档历史,不重新计算。
模型沿用普通霍尔实例的简单立方单轨道模型:晶格常数3 Å,最近邻跃迁−1 eV,费米能−5 eV,温度300 K。它是构造的教学哈密顿量,不是某种真实材料的输运结果。
2 准备个人程序#
bash setup.sh
脚本核对当前已装WannierTools2.7.0源码版本,将对应源码、目标文件和模块复制到当前目录的.build,应用配套源码补充,只重新编译对应输运文件并链接个人程序。公共源码、二进制及模块保持原样。
构建使用oneAPI2023.2(ifort2021.10.0、Intel MPI2021.10、MKL2023.2.0、ARPACK-NG3.9.1)。个人程序在本目录使用;若版本核对不匹配,请选择匹配的安装基线,不在不同版本目标文件之间拼接链接。
3 认清本分支读取哪些参数#
cat inputs/positive1200/wt.in
实际正向、较密历史输入如下:
&TB_FILE
Hrfile='model_hr.dat'
/
&CONTROL
Boltz_k_calc=T
Symmetry_Import_calc=F
/
&SYSTEM
NumOccupied=1, SOC=0, E_FERMI=-5.0
Btheta=0, Bphi=0
/
&PARAMETERS
Nk1=12, Nk2=12, Nk3=12
OmegaNum=1, OmegaMin=0, OmegaMax=0
EF_broadening=.4
BTauNum=5, BTauMax=0.5
Tmin=300, Tmax=300, NumT=1
Nslice_BTau_Max=1200
Relaxation_Time_Tau=1.0
/
LATTICE
Angstrom
3 0 0
0 3 0
0 0 3
ATOM_POSITIONS
1
Direct
X 0 0 0
PROJECTORS
1
X s
KCUBE_BULK
-0.5 -0.5 -0.5
1 0 0
0 1 0
0 0 1
SELECTEDBANDS
1
1
Boltz_k_calc=T选择切片电导。Nk1,Nk2分别控制每片的kx、ky网格,Nk3控制切片数;KCUBE_BULK决定三条网格方向。本例三条方向与笛卡尔轴一致,才能直接把第三方向称为kz。
这个分支使用Tmin、OmegaMin和BTauMax对应的一个条件,不像总电导路径那样输出整套温度、化学势和Bτ扫描。即使输入保留BTauNum=5,这份文件也不是五个Bτ块。
四个条件主要差别是:
| 目录 | Bτ(T·ps) | Btheta | 历史采样 |
|---|---|---|---|
| zero | 0 | 0° | 1200(零场不积分轨道) |
| positive600 | 0.5 | 0° | 600 |
| negative600 | 0.5 | 180° | 600 |
| positive1200 | 0.5 | 0° | 1200 |
把方向从0°改为180°代表磁场反向,不是把Bτ数组的顺序颠倒。EF_broadening=0.4 eV用于筛选费米能附近参与积分的点;它不是将温度改为0.4 eV。
4 提交并读取自己的结果#
python3 prepare.py
cd work-new
sbatch ../submit.sh
脚本顺序计算四个条件。普通CPU分区申请56核整节点并按整节点计费;本教学例实际使用1个MPI进程和1个OpenMP线程。完成后回到包根目录:
cd ..
bash read.sh work-new
bash plot.sh
head -n 8 analysis-read/WT-kz-conductivity-planes.csv
新结果保存在work-new,未指定路径的bash read.sh始终读取附带结果。
5 切片序号和单位#
head -n 9 work-new/zero/sigma_k_band_1.dat
第一列是从1开始的切片序号,后面依次是xx xy xz yx yy yz zx zy zz。本例序号1到12对应kz=-0.5+(index-1)/12,不包含+0.5端点。CSV给出明确的kz_fractional,不用靠序号猜坐标。
这个切片分支的原生系数比总电导σ/τ输出多乘了10⁻¹²。 因而本篇原生数值等于(σ/τ)×1 ps,数值上对应外部假设τ=1 ps时的S/m。不能把它直接当成总电导文件中单位为(Ω·m·s)⁻¹的原始σ/τ。
若外部采用其他散射时间τ_ps,在同一Bτ条件下,电导为本篇数值再乘τ_ps;实际磁场为B=(Bτ)/τ_ps T。τ是外部假设,本例并没有从第一性原理求得寿命。
6 零场切片能还原整体结果吗#

由于每一片已除以平面点数144,最后对12片取平均,而不是再除以144或直接相加。本例得到:
| 分量 | 切片平均,假设τ=1 ps(S/m) |
|---|---|
| xx | 4.1531086×10⁷ |
| yy | 4.1531086×10⁷ |
| zz | 4.1531044×10⁷ |
先前总电导计算换到同一τ假设后为4.15311×10⁷ S/m。这里直接读取已完成的总电导数组来对照,没有重复跑总电导任务。
读取脚本还独立使用模型色散与速度、300 K费米分布导数重建每一片的零场张量。以最大切片分量归一化后的最大差异约3.82E-7。很小的非对角残差是浮点求和量级,不应解释成零场横向输运信号。
7 正反磁场和历史积分检查#

正反磁场的纵向分量一致,横向分量反号,并满足σ_ij(B)=σ_ji(-B)。以实际张量的最大分量归一化,反向转置差异约6.72E-16;历史采样从600加到1200,最大差异约3.92E-5。
这些数值只说明本例的符号、积分和切片求和相互一致。12³网格仍然是操作教学规模;更换真实材料后,需要分别检查能带、费米面、能窗、k网格和轨迹采样收敛,不能直接使用本例电导数值判断材料性能。
ZIP SHA256:fe40b36d90222cd4d72e39e309ae73e6b989573aec39a856c20cc22ebe7bf28f。