QE EPW电子自能:逐模贡献、线宽和费米窗口
读取逐模ImSigma,明确文件表头与实际数值的区别,再换算FWHM而不是重复乘因子。
阅读本篇目录
下载QE/EPW完整输入、真实结果与绘图脚本,保存为example.zip:
python3 -m zipfile -e example.zip .
cd qe-epw-diamond-examples
bash results.sh
bash plot.sh
以上只读取参考结果和绘图。需要自己计算时,先按完整流程提交两阶段任务;输入在inputs/,参考原生输出在reference-results/,十份数据表在data/。本组使用QE7.6/P100入口,NVHPC25.3、HPC-X2.22.1、CUDA12.8和MKL2023.2,每次一个MPI进程、两个CPU线程、一张GPU。图中的数据来自鸢算科技集群实际计算。
1. 打开电子自能与逐模输出#
基础输入已经设置:
iverbosity = 3
elecselfen = .true.
temps = 300
degaussw = 1.0
fsthick = 15
temps单位K,degaussw和fsthick单位eV。本例展宽1eV很大,用来快速学习文件;真实定量结果需检查细网格与更合理的展宽。
head -10 reference-results/linewidth.elself.300.000K
head -5 data/electron-selfenergy.csv
原文件一行对应k点、能带、E−EF、声子模式、ImΣ。2原子原胞有6个声子模式,因此每个(k,band)有6行。6个贡献相加得到该电子态的自能虚部。
2. 特别留意2倍因子#
QE7.6这份输出第一行写了linewidth = 2*Im(Sigma),但后面实际写入的是ImΣ,单位meV,这可以从同版源码selfen.f90写出位置核对。包中明确分为两列:
| CSV列 | 含义 |
|---|---|
ImSigma_meV |
6个模式的虚部相加 |
FWHM_meV |
完整展宽,等于2×ImΣ |
mode1_ImSigma_meV等 |
各模式贡献 |
不能先把原数据当作FWHM,又再除以2。若要估算寿命,先明确使用的是半宽还是完整线宽;本例不把大展宽、粗网格的数字作为材料寿命推荐值。

3. 只解释费米窗口内的态#
本例fsthick=15,图和模式均值只使用|E−EF|<15eV的723个电子态。窗口外深价带的数值不能直接解释为完整自能;求和和散射可访问的能带范围也需要单独收敛。
下面直接用CSV计算窗口内FWHM范围:
python3 - <<'PY'
import csv
rows=list(csv.DictReader(open('data/electron-selfenergy.csv')))
v=[float(r['FWHM_meV']) for r in rows
if abs(float(r['E_minusEF_eV'])) < 15]
print('states:',len(v))
print('FWHM range / meV:',min(v),max(v))
PY
实际得到723个态,FWHM约79.0900–374.6238meV。这是大展宽与粗网格测试模型的输出;真实材料应重新计算收敛后的数值。
4. 简并电子态的比较方式#
严格简并的几条能带可以在同一子空间旋转,逐带自能对角元会变,但子空间的迹应一致。比较重启路径时,先核对能量和插值设置,再比较简并子空间总贡献,不能只把“第2带”与另一次运行的“第2带”硬配对。