WannierTools:霍尔张量检查与单位换算
对比正反磁场和两档积分精度,独立核对零场电导,明确sigma/tau、rho乘tau与外部假设寿命。
阅读本篇目录
本篇接着普通霍尔操作例,用同一批实际输出检查磁场反向、历史积分、k 网格和单位。先把输出定义弄清楚,再讨论电导、磁阻或霍尔系数。
1. 读取和画图#
下载四组实际输入、原生张量结果及画图工具,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd wanniertools-ordinary-Hall
module load ase/3.29.0
bash read.sh
bash plot.sh
默认只读取已完成结果,不重新计算。重新运行时执行 bash submit.sh,模板加载 wanniertools/2.7.0-8173m,使用 oneAPI 2023.2、Intel MPI/MKL 编译的程序;向 CPU 分区申请 56 核整节点,例子仅启动 1 个 MPI 进程、1 个线程。新结果放在 work-new/,用 bash read.sh work-new analysis-read 读取。

2. 正反磁场与张量逆#
cat inputs/z-negative/wt.in
cat analysis-read/WannierTools-ordinary-Hall-controls.csv
对本例非磁模型,+z 和 −z 结果满足 Onsager 转置关系 σij(B)=σji(−B),整体相对差约 1.2×10⁻¹⁵。横向分量反号,不能把正反号差异当作计算不稳定。
读取器还检查 σ·ρ≈I,原生打印精度下最大残差约 4.3×10⁻⁶。用户处理自己的结果时,应把九个分量组成矩阵后求逆和比较。
3. 历史积分与 k 网格分别加密#
本例选用历史片段数 1200,另一组增至 2400。完整矩阵归一化差约 0.000626。更粗的参数不能凭一条分量接近就认为整个张量稳定。
grep Nslice inputs/z-positive/wt.in inputs/z-finer-history/wt.in
grep Nk1 inputs/z-positive/wt.in inputs/mesh24-zeroB/wt.in
历史积分加密与 k 网格加密是两项独立检查。零场原生结果:
| 网格 | σxx/τ,(Ω·m·s)⁻¹ | 独立离散网格积分 |
|---|---|---|
| 12³ | 4.15311×10¹⁹ | 4.15310734×10¹⁹ |
| 24³ | 2.06533×10¹⁹ | 2.06533512×10¹⁹ |
独立结果使用同一个模型速度、费米分布导数及网格,不加额外自旋因子;与原生程序相符。两档网格之间的结果相差很大,因此这个例子并未收敛到可用于定量材料比较的输运系数。 实际研究需要继续加密并检查费米面、能窗、温度与模型质量。
4. 原生数值怎样变成物理单位#
本次原生输出是 σ/τ、ρ·τ,横轴是 Bτ:
| 原生量 | 单位 | 给定外部 τ 后 |
|---|---|---|
| σ/τ | (Ω·m·s)⁻¹ | 乘 τ,得到 S/m |
| ρ·τ | Ω·m·s | 除 τ,得到 Ω·m |
| Bτ | T·ps | 除以 τ 的 ps 数值得到 T |
例如仅作换算,假设 τ=1 ps=10⁻¹² s:
python3 units.py 1
head -6 analysis-read/WannierTools-OHE-assumed-tau.csv
则 12³ 零场 σxx≈4.15311×10⁷ S/m。τ 是用户输入的外部假设,不是本例从第一性原理求得,也不能从这组模型数据宣称真实材料寿命。
输入中 Relaxation_Time_Tau=1.0 在本包固定。若只是用另一假设寿命换算同一个 Bτ 结果,使用 units.py;不要随意改内部参数后仍认为横轴与原输出完全相同。
5. 用于自己的体系#
先检查 Wannier 能带与费米面;再对 Bτ、历史积分、k 网格分别检查;最后使用有依据的散射时间或明确标注的假设进行单位换算。霍尔系数还要声明磁场方向、张量下标与电荷符号约定,避免把 rho_xy 和 rho_yx 混用。
完整原生输出和独立积分代码均在下载包中;程序特性及输入版本可参照 WannierTools 官方教程。