QE:将Hubbard U代入后续计算
读取实际DFPT结果并完成新SCF,对比同结构下的能级间隙与投影占据。
阅读本篇目录
下载完整输入、实际日志、响应矩阵、能级CSV和绘图脚本,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd qe-hubbard-U-response
module load ase/3.29.0 qe/7.6-8173m
bash read.sh
bash plot.sh
本例使用鸢算科技集群的 QE 7.6 CPU 版本,构建工具为 Intel oneAPI 2024.2、Intel MPI 2021.13 和 MKL。材料为四原子菱方 LiCoO₂;固定原子位置和晶胞,采用非磁 PBEsol、USPP、50/400 Ry 截断能、20 条能带、2×2×2 电子 k 网格和 1×1×1 响应 q 网格。小网格适合先熟悉流程;正式使用需要加密并检查 U 及所需性质。
1. 将计算得到的U代回输入#
前一篇已经完成基态和 hp.x 响应。本例完整自动脚本会读取 Hubbard matrix 的 7.775865 eV,在新目录执行 pw.x;不需要手工猜 U。
手动流程可在项目根目录执行:
python3 - <<'PYCODE'
from pathlib import Path
import re
p = Path('work-new/baseline/LiCoO2.Hubbard_parameters.dat')
u = float(re.search(r'Hubbard matrix\s*:\s*\n\s*([-0-9.]+)', p.read_text())[1])
s = Path('inputs/scf.in').read_text()
assert s.count('U Co-3d 0.0001') == 1
Path('scf-with-U.in').write_text(s.replace('U Co-3d 0.0001', f'U Co-3d {u:.6f}'))
print('U =', u, 'eV')
PYCODE
关键卡片变为:
HUBBARD ortho-atomic
U Co-3d 7.775865
如果采用前篇的手动 manual/baseline 路径,将 Python 中的文件路径换为对应位置。不要从其他材料的 U 文件读取数值。
2. 单独保留含U的输出#
下面命令在已分配 CPU 资源内执行;目录相对于本例资料包根目录:
mkdir -p compare/pseudo compare/applied-U
cp pseudo/*.UPF compare/pseudo/
cp scf-with-U.in compare/applied-U/scf.in
cd compare/applied-U
pw.x < scf.in > scf.out
grep -E 'highest occupied|!.*total energy|convergence has been achieved' scf.out
cd ../..
自动流程把这一步放在 work-new/applied-U。本例使用新的 tmp 目录,保持晶胞、位置、赝势、截断能与 k 网格一致,比较同一固定结构在两种 U 设置下的结果。
3. 本次实际结果#
| 设置 | Hubbard U/eV | 总能量/Ry | 已采样k点的能级间隙/eV |
|---|---|---|---|
| 基态参考 | 0.000100 | −373.36904959 | 约1.6096 |
| 代入DFPT结果 | 7.775865 | −373.07665468 | 约4.0671 |

这里的间隙取已采样 k 点中最低未占据态与最高占据态之差,不是经过能带路径、密集网格和参数收敛后的材料带隙。图展示的是实际工作流的变化,不用它直接与实验比较。
两行使用不同 U,对应能量泛函不同,不能因为第二行总能量较高,就认为该设置“不稳定”,也不能拿两行做相稳定性排名。
4. 提取自己新算的数据#
自动计算结束后,在项目根目录:
bash read.sh work-new analysis-new
bash plot.sh analysis-new
cat analysis-new/response-matrices.csv
cat analysis-new/U-and-observables.csv
ls figures
不提供参数时,读取资料包里本次实际完成的参考输出;提供 work-new 时读取你新计算的结果。ks-eigenvalues.csv 逐个保留不可约 k 点和能带;绘图使用这些实际数据。
Co-3d 占据数来自所选 Hubbard 投影子。它不是 Bader 电荷,也不能直接当成 Co 的形式氧化态。
5. 从教学例子扩展到正式计算#
先固定赝势、投影子和目标结构,逐步加密 k/q 网格并提高所需精度,观察 U 和目标能量、受力或能带的变化。若研究涉及磁性,应选择适当磁态重新做基态和响应。
本例只做一次“计算 U → 代回 U”。如果需要结构与 U 的联合自洽,应再按新的结构/电子态计算 U,按明确判据迭代;不能把本例的一次流程称作已经完成外层自洽。
程序说明可查 QE官方HP用户指南 和 QE7.6官方HP算例。