WannierTools:磁场谱函数与Lanczos输出
实际运行两种Lanczos分支,识别展宽、负谱值和磁场标记,并由已核对能级生成确定性谱。
阅读本篇目录
下载WannierTools磁场与谱函数完整示例,保存为example.zip:
python3 -m zipfile -e example.zip .
cd wanniertools-magnetic-examples
bash results.sh
bash plot.sh
以上读取参考数据和图片。自己运行时用sbatch run.slurm,在新的work/中依次运行十个短条件;已有目录保留。bash read.sh work用独立Harper矩阵读取新能量。本例使用已安装WannierTools2.7.0 CPU程序,Intel oneAPI2023.2、Intel MPI、MKL LP64顺序库、ARPACK-NG3.9.1,单MPI进程/单CPU线程,不使用GPU。
1. 什么时候需要谱函数分支#
小矩阵可以直接对角化,得到每条能级。磁超胞和轨道数很大时,可以考虑Lanczos近似谱;随机向量、递推长度和展宽会影响结果。本例只有9维,先拿它学习输出,不宣称Lanczos有加速收益。
本例分别实际执行LandauLevel_B_dos_calc与LandauLevel_k_dos_calc。完整输入在:
cat inputs/B-Lanczos-q9/wt.in
cat inputs/k-Lanczos-q9/wt.in
固定k谱的关键参数:
&CONTROL
LandauLevel_k_dos_calc=T
/
&PARAMETERS
Magq=9
Magp=1
Nk1=9
OmegaNum=501
OmegaMin=-4.5
OmegaMax=4.5
Eta_Arc=0.05
NumLCZVecs=9
NumRandomConfs=32
/
完整输入还须保留晶格、原子/投影、HR、SURFACE和路径。原生程序与上一页使用同一已安装CPU入口,整个十条件例由sbatch run.slurm串起来。
2. 读实际输出列#
head -n 8 reference-results/B-Lanczos-q9/LandauLevel_B_dos.dat
head -n 6 reference-results/k-Lanczos-q9/LandauLevel_k_dos.dat
B谱有磁通、原生磁场、能量及九种展宽的谱值,九种展宽写在文件头,不能把全部九列都当作Eta_Arc=0.05。本例B谱包含p/q=1端点,与前篇直接对角化B扫描的点数不同,比较时按磁通匹配。
固定k谱是路径长度、能量、原始LDOS值。原生谱列不能只因能量列标eV,就直接当作已归一化的“每eV态数”。本例保留原单位和全部原值。
另外,Lanczos分支的Tesla标记还包含与对角化分支不同的磁通常数约定;两者都不能代替按磁通和面积的SI换算。本例的图统一按p/q或能量展示。
3. 负谱值要停下来检查#
本例固定k原生谱出现约−0.847233的负原值。没有取绝对值,也没有截成0;这个输出不用于给出可信LDOS、态数或物理峰强。

增加随机向量、递推长度或调整算法不保证自动修复所有问题。实际研究应核对谱的符号、积分、能级位置和参数变化;本小模型优先使用已经逐条核对的直接对角化结果。
4. 从真实能级画一个可解释的展宽谱#
用上一页q=9、p=1、路径Γ点的九条真实能量,给每条能量加半宽0.05 eV的Lorentz峰,并除以9得到平均每态归一化谱。这是单个固定k点的展宽参考,不是对整个布里渊区积分的体DOS。
/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python - <<'PY'
import numpy as np
x = np.loadtxt('reference-results/k-q9/landaulevel_k.dat')
levels = x.reshape(9,17,2)[:,0,1]
energy = np.linspace(-4.5,4.5,501)
eta = 0.05
rho = (eta/np.pi/((energy[:,None]-levels[None,:])**2+eta**2)).mean(1)
np.savetxt('spectrum.csv', np.c_[energy,rho], delimiter=',',
header='energy_eV,normalized_DOS_per_eV', comments='')
PY
bash plot.sh
每条Lorentz峰在无限能量范围积分为1;有限的−4.5…4.5 eV窗口会丢失尾部,因此不能硬把该窗口积分要求成恰好1。配套data/fixed-k-spectrum-comparison.csv同时保存这个确定性曲线和未经改写的原生Lanczos原值,便于比较。
这里演示三种不同对象:真实离散能级、基于它们的确定性展宽,以及实际执行但存在上述问题的Lanczos输出。读取时始终保留这个区别。
参考:WannierTools官方文档、官方源码。