QE指定能区的分子激发态
用水分子实际计算说明Davidson输入、目标能区、残差、极化方向与结果导出。
阅读本篇目录
下载水分子完整输入、公开赝势、真实结果、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. 什么时候选Davidson#
想获得一个指定能区的少数激发态、对应跃迁分解时,可用 turbo_davidson.x;想看宽能区连续响应时,先看分子吸收光谱。两者使用同一份水分子基态,但求解目标不同。
本例选择最接近 reference=0.5Ry的一个激发态。这个参数用于选定目标能区,不是让软件算出的能量等于0.5Ry,也不保证选到所有低能态。有暗态或简并态时,更不能只按最明显的吸收峰列出全部激发态。
2. 前置基态与完整输入#
本例的前置 scf.in、赝势和结构与吸收谱教程相同:16Bohr立方超胞、NC-PBE、60/240Ry、8个价电子、12条KS能带。须先完成SCF,保留 tmp/water.save及其波函数;prefix/outdir必须与后处理一致。
cat inputs/davidson.in
cat job.slurm
完整Davidson输入:
&LR_INPUT prefix='water', outdir='./tmp', restart=.false. /
&LR_DAV num_eign=1, num_init=2, num_basis_max=80, residue_conv_thr=1d-6, max_iter=200,
start=0., finish=1.84, step=.00147, broadening=.0110248, reference=.5,
p_nbnd_occ=4, p_nbnd_virt=8, poor_of_ram=.false., poor_of_ram2=.false. /
num_eign=1求一个目标态;num_init=2为初始试探向量数。num_basis_max=80为迭代子空间上限,会影响内存和收敛;max_iter=200为最大迭代次数。residue_conv_thr=1d-6控制残差平方,并不是每一步的能量变化阈值。
p_nbnd_occ=4和 p_nbnd_virt=8选择用于初始试探及跃迁解释的占据/空带。本例有实际空带可用;只计算占据态的SCF输入不能不加检查就照搬。这里的谱能量范围、步长和 broadening以Ry输入,与Spectrum后处理中的 units=1设置不要混淆。
3. 提交与运行顺序#
sbatch job.slurm
资料包一次完成基态、Lanczos与本篇Davidson。CPU分区按56核整节点申请,Davidson部分固定4个MPI进程并使用 -ndiag 1。分区维护时等待可用资源;已分配的作业内可执行 bash run.sh。不要在同一工作目录并发运行两个会写同一个 prefix/outdir的程序。
查看已有真实参考结果:
cat reference-results/native/water.eigen
grep 'Largest residue' reference-results/native/davidson.out | tail -n 1
4. 本例实际得到什么#
| 量 | 真实结果 |
|---|---|
| 选中的激发能 | 6.1272280 eV |
| 最终最大残差平方 | 6.26822000e-07 |
| 本例残差阈值 | 1×10⁻⁶ |
| 原生eigen文件Total列 | 0.03553126 |
| 独立Lanczos z方向矩阵相邻极点 | 6.1274963 eV |
water.eigen包含Ry、eV、波长,以及Total/x/y/z列。保持文件表头对应的原生定义;不要把Total列直接当成实验吸光度,也不要跨程序直接比较绝对强度。本例该态以z方向响应为主;能量与同一基态的Lanczos矩阵极点相互对应。

这个能量只属于本例的固定几何、PBE赝势、超胞和截断设置。计算用户自己的分子时,先优化结构,再检查真空尺寸、截断能和响应设置;需要定量比较实验时,还要考虑泛函、溶剂、振动等相应物理因素。
5. 检查结束信息与导出结果#
程序打印 JOB DONE.只说明这一程序流程退出,还应查看是否出现 has finished,最后的残差是否低于设定值,以及 water.eigen和跃迁表是否为有限数。如果出现 has NOT converged或最终结果表含 NaN,应继续调整计算设置并确认,不能直接拿该结果画成最终激发态。
只查看和重画参考图:
bash show-reference.sh
head -n 5 absorption.csv
自己的计算完成后,用 bash analyze-results.sh提取:报告在 VALIDATION.json,选中能量在 Davidson.selected_state_energy_eV,完整谱数组在 spectra.npz。下次需要多个目标能区时,可在独立目录设置不同的 reference;需核对是否重复收敛到同一态,并分别检查残差。并行设置或子空间大小改变后,也应重新检查实际输出。