WannierTools:新晶胞HR与R索引转换
通过SURFACE定义等体积新基矢,读取原生新晶胞HR并检查k与R的对应关系。
阅读本篇目录
改变晶胞基矢后,同一条实空间跃迁会用不同的整数R索引表示,倒空间分数坐标也要对应变换。本例在自旋标准化导出之外,再读取原生生成的 wannier90_hr_newcell.dat。
下载完整输入、四份原生导出HR、读取和绘图脚本,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd wanniertools-export-HR
bash read.sh
bash plot.sh
使用 wanniertools/2.7.0-8173m CPU MPI模块,构建为oneAPI 2023.2、ifort 2021.10.0、Intel MPI 2021.10、MKL 2023.2.0及ARPACK-NG 3.9.1。脚本依赖NumPy、Matplotlib。本例是自建的4轨道复数厄米紧束缚模型,用于文件转换操作,没有DFT前置计算。

1. 完整新晶胞输入#
&TB_FILE
Hrfile='model_hr.dat',Package='QE'
/
&CONTROL
export_newhr=T
/
&SYSTEM
NumOccupied=2,SOC=1,E_FERMI=0,Nslab=4
/
&PARAMETERS
Nk1=3,Nk2=3,Nk3=3,NP=1
/
LATTICE
Angstrom
3 0 0
0 3 0
0 0 3
ATOM_POSITIONS
1
Direct
X 0 0 0
PROJECTORS
2
X s px
SURFACE
1 1 0
0 1 0
原晶胞为3Å立方格子,新基矢选择为 a1'=a1+a2、a2'=a2、a3'=a3。对应整数变换矩阵:
C = 1 1 0
0 1 0
0 0 1
行列式为1,晶胞体积不变;它是同一个格子的基矢变换,不是扩成两倍体积的超胞。一般超胞与能带展开还需采用对应方法,不能直接套用本例。
2. 从终端找两种导出文件#
ls reference-results/shear-cell/wannier90_hr_*.dat
head reference-results/shear-cell/wannier90_hr_standard.dat
head reference-results/shear-cell/wannier90_hr_newcell.dat
standard 文件采用原晶胞R索引和标准自旋基组;newcell 文件采用本次新晶胞的R索引。本例所有模型轨道中心在原点,便于单独理解基矢和R变化;一般有非零轨道中心时,还需考虑中心归入新晶胞导致的重标记。
原R为 (1,0,0) 的跃迁,导出后R为 (1,-1,0)。物理位移仍是沿x方向3Å:a1'-a2'=a1。不能直接逐行比较两个HR,文件中的R顺序也可能改变,应按R和轨道索引对应后比较。
3. k坐标也要一起变#
本例约定晶格矢量按行写,转换关系为:
Anew = C × Aold
Rnew(row) = Rold(row) × inverse(C)
kold(column) = inverse(C) × knew(column)
例如新晶胞分数k点 (0.3,0.3,0) 对应旧晶胞 (0,0.3,0)。比较两种HR的能带时,不能固定相同的三个分数数值而不管晶胞已变化。
bash read.sh
head analysis-read/WT-export-HR-Rpoints.csv
head analysis-read/WT-export-HR-27k.csv
配套脚本按上述坐标关系独立构造27个k点的哈密顿量,检查厄米性、矩阵和本征值;本例差低于 1E-10 eV。这是从实际原生导出文件读出的结果,没有新的DFT计算。
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核整节点并整节点计费。它运行两个独立导出目录,不会再提交原生能带或DFT任务。
如果把新晶胞HR用于下一次计算,需要同步写入新LATTICE、原子与轨道中心信息,不能只替换HR文件。标准自旋排列也已经处理,避免再次按QE顺序重排。资料包的检查脚本针对本例的4轨道与共同变换,其他材料应按自己的矩阵维数和中心映射调整。
下载:实际R索引与矩阵范数、27点矩阵与能量对照。