WannierTools镜面Chern数实操
准备镜面对称四轨道模型,分别读取两个镜面子空间的Wilson环,并用21与41网格核对拓扑和平庸两种情况。
阅读本篇目录
镜面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跳回接近0只是模1表示。读取脚本按相邻相位的连续变化展开,再取一整个y周期的变化;不能把这类图上的竖向跳变当成能带不连续。

本篇采用有向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。