WannierTools专题

WannierTools按kz切片分析输运

使用配套个人程序计算kz平面的电导张量贡献,核对零场解析结果、正反磁场、历史积分和实际输出单位。

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

普通霍尔计算给出整个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 正反磁场和历史积分检查#

正反磁场和600/1200档历史的实际切片结果

正反磁场的纵向分量一致,横向分量反号,并满足σ_ij(B)=σ_ji(-B)。以实际张量的最大分量归一化,反向转置差异约6.72E-16;历史采样从600加到1200,最大差异约3.92E-5。

这些数值只说明本例的符号、积分和切片求和相互一致。12³网格仍然是操作教学规模;更换真实材料后,需要分别检查能带、费米面、能窗、k网格和轨迹采样收敛,不能直接使用本例电导数值判断材料性能。

ZIP SHA256:fe40b36d90222cd4d72e39e309ae73e6b989573aec39a856c20cc22ebe7bf28f。

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

查看配图

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

100%查看原图 ↗