QE:吸收谱重绘、展宽与偏振方向
用真实XSpectra数据比较占据态裁剪、两档展宽、缓存重绘及独立x/z偏振。
阅读本篇目录
1. SCF之后再算吸收谱#
接续金刚石模型与芯态准备。这里比较实际计算的有/无芯空穴两套吸收谱,说明哪些参数可以直接重绘,哪些参数需要新的Lanczos计算。
下载两套SCF与XSpectra完整输入、实际输出、光谱CSV和绘图脚本,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd qe-xspectra-carbon
module load ase/3.29.0
bash read.sh
bash plot.sh
这会读取实际完成的结果生成图表,不会重新运行电子结构计算。新计算需先准备赝势,再提交作业。
2. 完整XSpectra输入#
xas.in:
&input_xspectra calculation='xanes_dipole',prefix='diamond',outdir='./tmp',xniter=1000,xcheck_conv=50,xepsilon(1)=1.,xepsilon(2)=0.,xepsilon(3)=0.,xiabs=1,x_save_file='diamond.xspectra.sav',xerror=.001 /
&plot xnepoint=401,xgamma=.8,xemin=-10.,xemax=30.,terminator=.true.,cut_occ_states=.false. /
&pseudos filecore='C.wfc',r_paw(1)=3.2 /
&cut_occ /
2 2 2 1 1 1
xiabs=1 选择第一种原子类型C_h;xepsilon 是偏振方向;x_save_file 保存本次Lanczos系数。xniter=1000 是最大迭代次数,xcheck_conv=50 是每50步检查一次;本例主要k点在约200步达到设定谱误差。xgamma 是原生展宽参数,单位eV。
filecore 指向上一步提取的1s芯态,r_paw 按此官方示例设为3.2。最后一行不是普通SCF K_POINTS卡片,而是XSpectra使用的网格和位移。
在相应计算目录、已分配CPU资源中运行:
xspectra.x -in xas.in > xas.out
mv xanes.dat xas.dat
grep "END JOB XSpectra" xas.out
head xas.dat
本版原生输出谱文件名为 xanes.dat,下一次运行会覆盖它,所以每次立即改为有意义的文件名。数据有两列:相对能量和程序原生sigma;本页保留native sigma口径,不额外假定实验单位。
3. 先观察占据态的影响#
原始 xas.in 设置 cut_occ_states=.false.,包括占据态贡献。这个版本是帮助理解选项的对照,不应直接把它当成只含空态跃迁的最终吸收谱。

打开占据态裁剪的重绘输入 replot-cut.in:
&input_xspectra calculation='xanes_dipole',prefix='diamond',outdir='./tmp',xonly_plot=.true.,xniter=1000,xcheck_conv=50,xepsilon(1)=1.,xepsilon(2)=0.,xepsilon(3)=0.,xiabs=1,x_save_file='diamond.xspectra.sav',xerror=.001 /
&plot xnepoint=401,xgamma=.8,xemin=-10.,xemax=30.,terminator=.true.,cut_occ_states=.true. /
&pseudos filecore='C.wfc',r_paw(1)=3.2 /
&cut_occ cut_desmooth=.1,cut_stepl=.01 /
2 2 2 1 1 1
执行:
xspectra.x -in replot-cut.in > replot-cut.out
mv xanes.dat replot-cut.dat
这里 xonly_plot=.true. 从同一个 diamond.xspectra.sav 重绘,不重新做SCF或Lanczos。cut_desmooth 和 cut_stepl 是裁剪数值控制,不是给整个材料引入新的温度或化学势。
4. 改展宽无需重算SCF#
replot-narrow.in:
&input_xspectra calculation='xanes_dipole',prefix='diamond',outdir='./tmp',xonly_plot=.true.,xniter=1000,xcheck_conv=50,xepsilon(1)=1.,xepsilon(2)=0.,xepsilon(3)=0.,xiabs=1,x_save_file='diamond.xspectra.sav',xerror=.001 /
&plot xnepoint=401,xgamma=.4,xemin=-10.,xemax=30.,terminator=.true.,cut_occ_states=.true. /
&pseudos filecore='C.wfc',r_paw(1)=3.2 /
&cut_occ cut_desmooth=.1,cut_stepl=.01 /
2 2 2 1 1 1
xspectra.x -in replot-narrow.in > replot-narrow.out
mv xanes.dat replot-narrow.dat

展宽变小后峰会更尖、细节更明显,也更容易暴露粗k网格和有限Lanczos精度。峰高变大不等于跃迁总强度变大,更不等于材料性能变好。
资料包另有 replot-identical.in:所有绘图条件与原始谱相同,仅打开缓存重绘,实际得到逐点一致的谱。用户可以先用它确认自己读取了正确的缓存文件,再改参数。
5. 换偏振方向需要新计算#
改变偏振向量会改变跃迁矩阵元,不能仅修改重绘输入就认为已算了新方向。xas-z.in 把偏振改为(0,0,1),关闭仅重绘,使用新的 diamond.z.xspectra.sav,保留原x方向缓存。
xspectra.x -in xas-z.in > xas-z.out
mv xanes.dat xas-z.dat

本例两种模型的x/z有限窗口积分相对差都小于4×10⁻⁸,符合立方结构的方向等价关系。这个结果不能推广为所有晶体都没有偏振差异;低对称、二维和分子体系往往需要按实际测量方向计算。
6. 横轴不能直接当成绝对吸收边#
本例不显式指定谱零点,程序对绝缘体采用各自SCF的最高占据能级作为能量参考。因此图中能量是相对各自HOMO的能量,不是绝对X射线光子能量;两种模型也没有做绝对边对齐。
| 模型 | 去占据态,gamma=0.8 eV时峰位置/eV | 相同条件峰高/native sigma |
|---|---|---|
| 无芯空穴 | 13.1 | 0.166112 |
| 单芯空穴 | 11.6 | 0.195192 |
这些是本例有限窗口、各自能量参考下的数值,不应把1.5 eV差值直接写为绝对化学位移。正式比较实验还需要统一能量对齐、芯空穴近似、超胞、网格及寿命/仪器展宽。
7. CSV和图像#
head analysis-read/spectra.csv
cat analysis-read/spectral-summary.csv
ls figures
spectra.csv 汇总模型、处理阶段、相对能量和原生强度;摘要列出各自HOMO、峰位置、峰高和−10至30 eV有限窗口积分。有限窗口积分只是图中数据的积分,不等于完整吸收和规则或所有能量下的总振子强度。