WannierTools专题

WannierTools镜面Chern数实操

准备镜面对称四轨道模型,分别读取两个镜面子空间的Wilson环,并用21与41网格核对拓扑和平庸两种情况。

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

镜面Chern数把占据态按镜面本征值分成两个子空间,分别计算拓扑不变量,再取它们的差的一半。只看全部占据态的总Chern数为0,不能区分本例的两种情况;需要同时看两个镜面子空间。

1 下载四个实际小例#

下载输入、原始结果、CSV和脚本,执行:

python3 -m zipfile -e wanniertools-mirror-chern-wave952-*.zip .
cd wanniertools-mirror-chern
bash read.sh
bash plot.sh

这两条脚本先读取附带的实际计算结果,不提交新任务。软件为WannierTools2.7.0 CPU模块wanniertools/2.7.0-8173m,oneAPI2023.2(ifort2021.10.0、Intel MPI2021.10、MKL2023.2.0、ARPACK-NG3.9.1)。本例为自建紧束缚教学模型,没有新增DFT计算,不代表某种真实材料。

两个模型参数为m=-1与m=-3 eV,每个都实际运行21×21和41×41两档网格,四份目录互相独立。

2 模型与镜面基底要一致#

两个自旋块的哈密顿量是:

H_up   = sin(2πkx) τx + sin(2πky) τy
         + [m + cos(2πkx) + cos(2πky)] τz
H_down = -sin(2πkx) τx + sin(2πky) τy
         + [m + cos(2πkx) + cos(2πky)] τz

各三角函数前的系数为1 eV,τ作用于两种模型轨道。完整基底按up_s, up_px, down_s, down_px排列;s和px在z镜面下均为偶,物理镜面本征值为±i。当前程序省去共同的i因子,使用M_z=diag(1,1,-1,-1),所以输出分为plus与minus。

cat inputs/topological41/wt.in
head -n 12 inputs/topological41/model_hr.dat

输入如下:

&TB_FILE
 Hrfile='model_hr.dat'
/
&CONTROL
 MirrorChern_calc=T
/
&SYSTEM
 NumOccupied=2,SOC=1,E_FERMI=0
 Bmagnitude=1,Btheta=0,Bphi=0
/
&PARAMETERS
 Nk1=41,Nk2=41
/
LATTICE
Angstrom
3 0 0
0 3 0
0 0 3
ATOM_POSITIONS
1
Direct
X 0 0 0 0 0 0
PROJECTORS
2
X s px
KPLANE_BULK
0 0 0
1 0 0
0 1 0

SOC=1使程序按这套含自旋的四轨道基底读取矩阵,不会自动为模型添加某个SOC相互作用强度。NumOccupied=2对应每个镜面子空间各一个占据态;本例不适合直接套到两个子空间占据数不相等的情况。

KPLANE_BULK沿参考倒格矢x方向闭合Wilson环,y方向从0到1扫过整个周期。两个方向的取样约定不同:闭合环方向不重复末端,扫参方向包含首末两端。不要把半个平面上的变化直接当成本例的全周期绕数。

输入明确写出的沿z方向1 T磁场用于点群筛选;本模型没有加入Zeeman或Peierls项,不把这组结果解释成有限磁场下的拓扑相变。

3 提交自己的四个小计算#

python3 prepare.py
cd work-new
sbatch ../submit.sh

脚本依次运行四份输入,实际1个MPI进程、1个OpenMP线程;普通CPU分区按56核整节点申请和计费。完成后:

cd ..
bash read.sh work-new
bash plot.sh

默认bash read.sh读附带结果,指定work-new才读自己的任务。

4 先看模1相位,再看连续绕数#

head -n 8 work-new/topological41/wcc-mirrorplus.dat
head -n 8 work-new/topological41/wcc-mirrorminus.dat

三列依次是y方向的分数坐标、占据Wilson相位之和(模1)、各占据Wilson相位(模1)。本例每个子空间只有一条占据Wilson分支,所以第二、三列相同。

两个镜面子空间的实际模1 Wilson相位

相位从接近1跳回接近0只是模1表示。读取脚本按相邻相位的连续变化展开,再取一整个y周期的变化;不能把这类图上的竖向跳变当成能带不连续。

21与41网格的连续相位及实际不变量

本篇采用有向x环、正y扫参,并定义C_mirror=(C_plus-C_minus)/2,得到:

m(eV) 网格 C_plus C_minus C_mirror
−1 21×21、41×41 −1 +1 −1
−3 21×21、41×41 0 0 0

如果反转路径方向、交换镜面子空间名称,符号约定会随之变化,比较文献时应先对齐约定。

5 换体系前先确认镜面对称性#

head -n 8 analysis-read/WT-mirror-Wilson-loop.csv

读取程序对实际HR做傅里叶变换,核对[H,M_z]=0;再用独立的二轨道本征矢求Wilson相位和FHS网格小回路通量。四例相位差均小于4.81E-9个周期,两个网格的整数绕数一致。

程序的该分支会使用镜面操作处理哈密顿量,因此更换真实HR时,应先确认镜面矩阵适用于你的轨道顺序与原子位置,且原HR本来就满足相应镜面对称性。不能让一个不对称的HR经过处理后,就把结果当成原体系的镜面拓扑。

21与41两档只是本教学模型的数值对照。真实材料还需检查目标平面的能隙、占据态选择和网格收敛;若平面穿过能带交叉,先判断该拓扑不变量是否仍有定义。

ZIP SHA256:a279bc4027851064ed80b54cd058deaa11c24d0c1745666b3146ea80c05c0262。

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

查看配图

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

100%查看原图 ↗