QE专题

QE分子吸收光谱与链长检查

从水分子SCF到三方向Lanczos响应,区分真实迭代、后处理外推、能量采样与展宽。

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

下载水分子完整输入、公开赝势、真实结果、CSV提取与绘图脚本,保存为 example.zip。本例由鸢算科技集群的QE7.6 CPU构建完成:Intel oneAPI2024.2编译器、Intel MPI及MKL;sisl/0.16.4模块提供这里绘图脚本所用的Python环境。

python3 -m zipfile -e example.zip .
cd qe-water-tddfpt

1. 先明确计算什么#

本例计算固定水分子的线性光学响应:pw.x先得到基态电荷密度和波函数,turbo_lanczos.x对x、y、z三个电场方向生成响应系数,turbo_spectrum.x再将系数变成极化率张量和吸收谱。

它不是先逐个求空带再相加的独立粒子吸收,也不是光学带隙、发光谱或激子束缚能的通用替代。这里的 S(E)保持软件原生幅值,张量采用文件表头的单位,不用某个峰的位置或高度直接代表实验水谱。

2. 检查结构、基态输入和赝势#

cat inputs/scf.in
cat PSEUDOPOTENTIAL-SOURCES.json

完整基态输入:

&CONTROL
 calculation='scf', prefix='water', pseudo_dir='../../pseudo',
 outdir='./tmp', tprnfor=.true., verbosity='high'
/
&SYSTEM
 ibrav=1, celldm(1)=16, nat=3, ntyp=2, nbnd=12,
 ecutwfc=60, ecutrho=240
/
&ELECTRONS
 conv_thr=1d-10, mixing_beta=.4, electron_maxstep=150
/
ATOMIC_SPECIES
O 15.999 O_HSCV_PBE-1.0.upf
H 1.008 H_HSCV_PBE-1.0.upf
ATOMIC_POSITIONS angstrom
O 3.175063 3.175063 3.175063
H 4.132263 3.175063 3.175063
H 2.935076 4.102360 3.175063
K_POINTS gamma

celldm(1)=16以Bohr为单位,相当于约8.47Å的立方超胞;原子坐标以Å为单位。ecutwfc/ecutrho=60/240以Ry为单位;conv_thr=1d-10控制电子自洽收敛。本例只做固定几何的响应,没有包含结构优化。水分子有8个价电子、4条双占据能带;nbnd=12还为后面的Davidson初始试探态与跃迁分析提供空带。

两份NC-PBE赝势从同一QE发行源码示例取得,原文件来源和SHA256都在资料包。更换元素、泛函或赝势后,应重新做截断能、真空尺寸和基态收敛检查,不能混用不对应的前置波函数。

3. 一次提交,依次完成计算和提取#

sbatch job.slurm

CPU分区按56核整节点申请,示例主要使用16个MPI进程,单独的Davidson阶段使用4个。分区维护时等待可用资源;在已分配的CPU作业目录内也可运行 bash run.sh。重新计算整套实例请使用新的解压目录,脚本拒绝覆盖已有 work/。

工作流顺序是:SCF → 三个方向各200步Lanczos → 从断点续到400、1600、6400步 → 六个有限链后处理 → 六个外推链/展宽后处理 → 一个指定能区Davidson激发态 → 提取CSV和图片。原生计算输出在 work/water/,完整张量数组在 spectra.npz,最终表格为 absorption.csv。

lanczos-200.in写为:

&LR_INPUT prefix='water', outdir='./tmp', restart=.false., restart_step=100 /
&LR_CONTROL itermax=200, ipol=4 /

续算文件仍使用同一个 prefix/outdir,例如:

&LR_INPUT prefix='water',outdir='./tmp',restart=.true.,restart_step=800 /
&LR_CONTROL itermax=6400,ipol=4 /

ipol=4依次做三个方向;不是四个方向,也不是申请四张卡。restart=.true.读取已有断点,必须保留同一套 tmp/、基态和响应文件。不要把其他结构或泛函的断点拷进来续算。

4. 光谱采样、展宽和外推是三个不同设置#

最终后处理输入为:

&LR_INPUT prefix='water',outdir='./tmp',itermax0=6400,itermax=10000,extrapolation='osc',units=1,
start=0.,end=25.,increment=.02,epsil=0.0110247966526965,ipol=4 /

itermax0=6400表示读取6400步真实计算的系数;itermax=10000表示外推后的后处理矩阵维度,不代表实际做了10000步响应计算。extrapolation='osc'为官方的奇偶系数外推方案,不能靠外推代替原始链长检查。

units=1使光子能量的起点、终点和间隔按eV输入,这里0—25eV、间隔0.02eV。一个容易弄错的地方是:epsil仍以Ry输入;0.15eV对应约0.0110248Ry,0.30eV对应约0.0220496Ry。把 epsil=0.15写进去会变成约2.04eV展宽,谱峰明显被抹平。

5. 实际链长比较与图片#

下表比较相同0.15eV展宽、相同10000维外推方案的整段曲线,与6400步结果的相对L₂差;它不是实验误差。

真实Lanczos步数/方向 后处理维度 0—8eV差异 0—25eV差异
400 10000 83.727% 47.025%
800 10000 1.536% 39.870%
1600 10000 1.873% 21.487%
3200 10000 0.002% 9.053%

100、200、400步的未外推谱差别很大,不能作为收敛结果。即使低能峰已经稳定,高能区也可能仍有明显变化;使用哪个能量区间,就应检查那个区间的谱峰、强度和链长变化。这里还未声称截断能、真空尺寸或完整高能光谱都已收敛。

真实H2O结构、不同链长的吸收谱、低能激发态与展宽比较

6. 查看参考结果,导出和重新画图#

无需重新计算,先查看资料包中的真实参考结果:

bash show-reference.sh
head -n 5 absorption.csv

若已经完成自己的计算,只重新提取和绘图:

bash analyze-results.sh

absorption.csv依次给出能量、两种展宽下的原生S(E)、x/y/z方向虚部极化率。完整9个复数张量分量在 spectra.npz,原始文本为每个后处理子目录的 water.plot_chi.dat和 water.plot_S.dat。图片写入 plots/,可直接用于对比。

数值脚本从原生系数独立组装稀疏矩阵求解:有限链逐能点检查全部9个复数张量分量,外推链另外检查均匀采样点及峰位,并检查原生S(E)与张量的关系。数值重建一致用于确认提取与单位处理,没有把它当作材料物理收敛证明。实测QE7.6把能量坐标从Ry切换到eV时,原生S(E)这一列的幅值不会随之缩放,因此图和CSV明确标为原生幅值,不将它直接当作已校准的每eV谱密度,也不把有限能区的积分直接解释为价电子数。

继续阅读指定能区的激发态。参考:Lanczos输入说明、Spectrum输入说明。

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

查看配图

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

100%查看原图 ↗