WannierTools 纳米线能带与截面设置
用四组实际纳米线能带演示有限截面、路径采样、原生单位换算和边界颜色。
阅读本篇目录
纳米线能带只在一个方向保留周期性,另外两个方向采用有限截面。本篇用四组小模型演示:设置截面、运行 WireBand_calc、换算能量、理解颜色,并比较截面宽度与采样点数。
1. 下载并先查看已有结果#
下载完整模型、输入、实际输出、数据和绘图工具,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd wanniertools-nanowire-bands
source ./env.sh
bash show-reference.sh
bash plot-results.sh
ls -lh plots/wanniertools-nanowire-confinement.png

使用集群已有 WannierTools 2.7.0 CPU 构建:Intel oneAPI 2023.2 / ifort 2021.10、Intel MPI 2021.10、MKL LP64 顺序库和 ARPACK-NG 3.9.1。示例为单进程、单线程,运行时应使用已分配的兼容 CPU 资源。
2. 模型与方向如何对应#
这是用于理解输入和输出的自建紧束缚模型,晶格常数三个方向均为 3 Å,每原胞两个同位置轨道。两个轨道的在位能为 −1.31 和 1.73 eV,最近邻跃迁为 x 方向 0.373、y 方向 0.217、z 方向 0.613 eV。模型不代表本文另外指定的一种实际材料。
这里 SURFACE 采用原始 x、y 晶格方向,Nslab1 和 Nslab2 分别控制 x、y 两个方向的有限原胞数;z 方向保持周期性。两个有限方向没有首尾相连的跃迁。改变 SURFACE 时应重新核对变换后的方向,不能照搬这组 x/y/z 对应关系。
| 截面 | Nk1 | 能带数 | 输出数据行 | 不重复的 q 点 |
|---|---|---|---|---|
| 3×4 | 21 | 24 | 1008 | 41 |
| 5×4 | 21 | 40 | 1680 | 41 |
| 5×6 | 21 | 60 | 2520 | 41 |
| 5×6 | 41 | 60 | 4920 | 81 |
能带数为 2×Nslab1×Nslab2。Nk1 是原生程序实际计算的 0 到 0.5 区间的点数;输出再把这个半区间反射到 −0.5 到 0,因此每条带有 2×Nk1 行,Γ 点重复两次。不是另行读取 KPATH_BULK 或 KPATH_SLAB 来定义这条一维路径。
当前原生分支把负半轴按正半轴反射。本例实跃迁模型满足 E(q)=E(−q),可以这样使用;非互易色散或破坏相应对称性的模型,不能据此确认负半轴的独立结果。
3. 一组完整输入#
reference-results/native/wire-3x4-nk21/wt.in:
&TB_FILE
Hrfile='model_hr.dat'
/
&CONTROL
WireBand_calc=T
/
&SYSTEM
NumOccupied=1
SOC=0
E_FERMI=0
Nslab1=3
Nslab2=4
/
&PARAMETERS
Nk1=21
/
LATTICE
Angstrom
3 0 0
0 3 0
0 0 3
ATOM_POSITIONS
1
Direct
X 0 0 0
PROJECTORS
2
X s s
SURFACE
1 0 0
0 1 0
配套 model_hr.dat 已包含在每个参考目录,使用 eV 作为输入单位。两个原胞轨道都归在一个示例原子上,SOC=0;不能将这两个轨道误解为自旋向上和向下。
4. 手动运行并画出 eV 能带#
source ./env.sh
mkdir manual
cp reference-results/native/wire-3x4-nk21/{wt.in,model_hr.dat} manual/
(cd manual && wt.x)
head -n 8 manual/ribbonek.dat
cd manual
gnuplot <<'PLOT'
set terminal pngcairo size 1600,1100 enhanced font ',18'
set output 'wire-eV.png'
set xlabel 'q_z (fractional)'
set ylabel 'Energy (eV)'
set xrange [-0.5:0.5]
unset key
rgb(r,g,b)=int(r)*65536+int(g)*256+int(b)
plot 'ribbonek.dat' using 1:($2*27.211385):(rgb(255,$3,3)) with points pt 7 ps 0.35 lc rgb variable
PLOT
ls -lh wire-eV.png
cd ..
当前安装版本的 WireBand 分支有一个能量标注问题:ribbonek.dat 第二列实际为 Hartree,自带 ribbonek.gnu 却写了 eV。 上面的绘图命令先乘以源码使用的 27.211385,再标为 eV;配套图和 CSV 同样已经换算。不要把这个换算不加区分地用到其他已经输出 eV 的 WannierTools 文件。
当前原生文件保留小数点后 7 位 Hartree,换算后的舍入精度约为 1.36×10⁻⁶ eV。10128 行数据均与独立有限开链公式在原生打印精度上一致;不要把多打印几位 CSV 小数理解成更高的原生精度。
5. 第三列颜色表示什么#
本分支先累加四个截面边界上的本征态权重,角点会被累加两次;随后开平方,以当前整个计算中的最大值归一化,最后输出 int(255−归一化幅度×255)。
因此,第三列是 0 到 255 的颜色编码,较小值对应较强的归一化边界幅度。它不是直接的边界概率,不能把 第三列/255 当成表面态占比,也不能只凭颜色判断拓扑性质。图中的截面示意标出了内部、边界和角点分别被计入 0、1、2 次。
6. 重算四组并比较#
sbatch job.slurm
或在已经获得的兼容 CPU 资源内:
bash run.sh
bash plot-results.sh
cat wire-summary.csv
ls -lh plots/wanniertools-nanowire-confinement.png
脚本先生成四套 wt.in / model_hr.dat,再逐组运行 wt.x,最后整理 CSV、数组和图。已有 work 目录时停止,重新解压到另一个目录可以从头计算。
本例最低子带在 Γ 点的能量分别约为 −0.96262、−1.08117、−1.12108 eV:截面增大后有限尺寸限制减弱,最低子带下降。两组 5×6 截面的 Nk1=21/41 在共有 q 点得到完全相同的原生能量和颜色,加密只增加沿线采样;它不增加截面厚度。
替换成自己的材料时,先检查体相模型和方向,再增大两个截面尺寸,最后加密沿线采样。本模型的解析对照说明输入/输出流程,不替代真实材料的模型质量、厚度和采样收敛研究。
官方说明:纳米线能带功能、输入参数、原生 WireBand 实现。本篇单位与颜色解释以当前集群固定版本的实际代码和输出为准。