QE专题

QE EPW声子自能:输入、温度和异常数据识别

展示实际声子自能与谱函数操作,说明负线宽、频率窗口和多温度输出如何处理。

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

下载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. 在已有矩阵上处理声子谱#

完整输入:

--
&inputepw
  prefix      = 'diam'
  amass(1)    = 12.01078
  outdir      = './'
  iverbosity  = 0

  elph        = .true.
  etf_mem     = 0
  vme         = 'dipole'

  epwwrite    = .false.
  epwread     = .true.

  nbndsub     =  4

  wannierize  = .false.
  num_iter    = 300
  iprint      = 2
  dis_win_max = 12
  dis_froz_max= 7
  proj(1)     = 'f=0,0,0:l=-3'

  elecselfen  = .false.
  nest_fn     = .false.
  phonselfen  = .true.
  a2f         = .false.

  specfun_ph   = .true.
  wmin_specfun = 0
  wmax_specfun = 0.20
  nw_specfun = 201

  fsthick     = 15 ! eV
  temps       = 300 ! K
  degaussw    = 1.0 ! eV

  dvscf_dir   = './save/'

  nkf1        = 6
  nkf2        = 6
  nkf3        = 6

  nqf1        = 6
  nqf2        = 6
  nqf3        = 6

  nk1         = 3
  nk2         = 3
  nk3         = 3

  nq1         = 3
  nq2         = 3
  nq3         = 3
 /

phonselfen输出声子自能,specfun_ph输出频率相关谱。wmax_specfun=0.20单位是eV,即200meV。原官方20eV/20点范围过宽,无法分辨本例约164meV的最高声子能量,这里实际另算了0–0.20eV的201点窗口;原输入和结果也保留。

head -8 reference-results/post/phonon-window/specfun.phon.300.000K
head -8 reference-results/post/epw6/linewidth.phself.300.000K

谱文件依次是q编号、能量eV、电子展宽eV、谱强度1/meV。线宽文件是q编号、模式、声子能量meV、线宽meV,不能把能量值当作声子寿命。

2. 多温度和多展宽#

inputs/post/epw12/input.in使用300K、400K两温度,输出带温度后缀的文件;inputs/post/epw13/input.in用nsmear=2输出两套电子展宽:

cat inputs/post/epw12/input.in
cat inputs/post/epw13/input.in
ls reference-results/post/epw12

temps不会替你产生新的热膨胀结构。nsmear是展宽条件数,不是声子模式数。

3. 本例哪些数值不能换成寿命#

保留原符号的声子线宽与低频谱

实际数据出现负声子线宽,最低约−0.1630meV;低频谱也有负值。它们不适合报告定量寿命或当作稳定正定谱。图保留原符号,没有取绝对值、截成零或删掉负点。

python3 - <<'PY'
import csv
rows=list(csv.DictReader(open('data/phonon-linewidth-diagnostic.csv')))
v=[float(r['signed_linewidth_meV']) for r in rows]
print('minimum / meV:',min(v))
print('negative entries:',sum(x<0 for x in v))
PY

原生打印共有34个负条目,含接近数值零的很小负值。负值不是“负寿命”;应检查电子占据、k/q积分网格、电子展宽、频率分辨率、声学支和带子空间,必要时重新计算对应后处理条件。基础数据不变时无需重复SCF/DFPT;改变结构、赝势、粗网格或带空间后,要重新生成相关矩阵。

本例教用户运行并识别输出,不将这些粗网格自能提升为材料结论。电子与声子路径的插值频率与这里的线宽有效性需要分别判断。

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

查看配图

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

100%查看原图 ↗