WannierTools专题

WannierTools:Berry相位的0与π实操

用两轨道SSH模型计算Berry相位,展示闭合路径、正反方向与201/401点的实际结果。

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

本例用 BerryPhase_calc 计算闭合倒空间路径上的Berry相位。模型为两轨道SSH链:胞内与胞间跃迁分别取0.6/1.4eV,以及对换后的1.4/0.6eV。使用明确固定的模型轨道中心与晶胞约定,观察0和π,而不是直接计算某种材料的绝对极化。

本模块使用oneAPI 2023.2构建:ifort 2021.10.0、Intel MPI 2021.10、MKL 2023.2.0,配合ARPACK-NG 3.9.1;本例使用CPU MPI程序。

1. 下载并看实际结果#

下载完整输入、四组原生输出与脚本,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd wanniertools-SSH-Berry
bash read.sh
bash plot.sh
cat analysis-read/WT-SSH-Berry-phase.csv

使用WannierTools 2.7.0 CPU模块 wanniertools/2.7.0-8173m,Intel MPI/oneAPI运行环境;读取与绘图需要NumPy、Matplotlib。本例没有DFT前置任务,也不需要POTCAR。

实际模型的复数矩阵元闭合轨迹及原生Berry相位结果

2. 完整输入#

&TB_FILE
 Hrfile='model_hr.dat'
/
&CONTROL
 BerryPhase_calc=T
/
&SYSTEM
 NumOccupied=1,SOC=0,E_FERMI=0
/
&PARAMETERS
 Nk1=201
/
LATTICE
Angstrom
3 0 0
0 3 0
0 0 3
ATOM_POSITIONS
1
Direct
X 0 0 0
PROJECTORS
2
X s px
KPATH_BERRY
2
Direct
0 0 0
1 0 0

NumOccupied=1 表示累积最低一条占据带的相位。KPATH_BERRY 中2代表给出两个路径端点,0 0 0 到 1 0 0 相差一个倒格矢,构成周期意义下的闭合回路。不是任意两个不同k点都能当作闭合路径。

模型HR文件完整内容如下,只有两个轨道和三个实空间R点:

Own two-orbital SSH chain, both model orbital centres at origin
2
3
1 1 1
-1 0 0 1 1 0.000000000000 0.0
-1 0 0 2 1 1.400000000000 0.0
-1 0 0 1 2 0.000000000000 0.0
-1 0 0 2 2 0.000000000000 0.0
0 0 0 1 1 0.000000000000 0.0
0 0 0 2 1 0.600000000000 0.0
0 0 0 1 2 0.600000000000 0.0
0 0 0 2 2 0.000000000000 0.0
1 0 0 1 1 0.000000000000 0.0
1 0 0 2 1 0.000000000000 0.0
1 0 0 1 2 1.400000000000 0.0
1 0 0 2 2 0.000000000000 0.0

两个模型轨道中心都按原点处理,s px 是本抽象模型的标签。使用自己的Wannier模型时必须保持HR、轨道中心、晶胞和规范约定对应,不能只替换一个文件就沿用本例的拓扑解释。

3. 四个实际计算#

目录 胞内/胞间跃迁,eV 方向 Nk1 原生输出,单位π
topological 0.6/1.4 0→1 201 +1.000000
trivial 1.4/0.6 0→1 201 0.000000
reversed 0.6/1.4 1→0 201 +1.000000
finer 0.6/1.4 0→1 401 −1.000000

相位以2π为周期,+π与−π是同一相位。不能直接把表中+1和−1相减后说差了2π或没有收敛。方向反转也要在同一个模2π约定下比较。

for name in topological trivial reversed finer; do
  echo "$name"
  head -1 reference-results/"$name"/kpath_berry.txt
done

读取器从实际HR独立构造哈密顿量,沿闭合路径求归一化相邻态重叠的乘积,与原生相位按模2π比较,差低于 2E-6。两组模型沿路径的最小带隙均为1.6eV,避免把经过带接触点的路径当成隔离占据带。

从实际输入哈密顿量独立计算的两组能带和能隙示意

图中的能带是读取脚本从实际模型HR求出的解释性结果,原生计算入口是Berry相位;没有额外提交一次原生能带任务。两组能谱相同,但固定约定下的相位不同,说明只看能量曲线还不够。

4. 自己运行#

python3 prepare.py
cd work-new
sbatch ../submit.sh
squeue -u "$USER"
# 作业结束后
cd ..
bash read.sh work-new
bash plot.sh

模板依次计算四个小例,实际1个MPI进程、OMP线程1,按本站规则申请56核整节点并整节点计费。

kpath_berry.txt 的前三列是该原生入口写出的笛卡尔坐标,单位Bohr⁻¹,后三列是分数坐标;不要套用其他能带文件的Å⁻¹假设。相位在文件表头,单位为π。

换自己的体系时,先确认占据子空间、绝缘间隙和闭合路径,再增加采样点检查相位是否稳定;金属、简并子空间及轨道中心处理需结合对应方法,不能直接套用这里的两轨道单占据带结论。

下载:实际相位汇总、实际输入的复数轨迹与能带数据。

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

查看配图

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

100%查看原图 ↗