QE专题

QE:线性响应计算Hubbard U

用四原子LiCoO2实际完成基态与hp响应,提供完整输入和矩阵解读。

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

下载完整输入、实际日志、响应矩阵、能级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. 先做含Hubbard投影子的基态#

顺序是:准备结构和赝势 → pw.x 基态 → hp.x 响应 → 读取 U → 新的含 U 计算。hp.x 需要前一步保留的 tmp/LiCoO2.save 等文件,仅复制 scf.out 不够。

完整 inputs/scf.in:

&control
 calculation='scf', restart_mode='from_scratch',
 prefix='LiCoO2', pseudo_dir='../pseudo', outdir='./tmp',
 verbosity='high', tprnfor=.true., tstress=.true.
/
&system
 ibrav=5, celldm(1)=9.3705, celldm(4)=0.83874,
 nat=4, ntyp=3, ecutwfc=50, ecutrho=400, nbnd=20
/
&electrons
 conv_thr=1d-10, mixing_beta=0.4, electron_maxstep=150
/
ATOMIC_SPECIES
Co 59.0 Co.pbesol-spn-rrkjus_psl.0.3.1.UPF
O  16.0 O.pbesol-n-rrkjus_psl.0.1.UPF
Li 7.0 Li.pbesol-s-rrkjus_psl.0.2.1.UPF
ATOMIC_POSITIONS crystal
Co 0.0 0.0 0.0
O 0.2604885 0.2604885 0.2604885
O 0.7395115 0.7395115 0.7395115
Li 0.5 0.5 0.5
K_POINTS automatic
2 2 2 0 0 0
HUBBARD ortho-atomic
U Co-3d 0.0001

HUBBARD ortho-atomic 定义正交化原子投影子。极小的 U Co-3d 0.0001 用于启用对应投影子路线;它是 0.0001 eV,不能称为严格 U=0。这里的 Co-3d、赝势轨道和后续 hp.x 的相关子空间必须一致。

2. 准备三种赝势#

资料包未打包赝势,提供官方文件网址和 SHA256。运行:

python3 setup-pseudo.py
ls pseudo
cat pseudopotentials.json

本例使用 Co.pbesol-spn-rrkjus_psl.0.3.1.UPF、O.pbesol-n-rrkjus_psl.0.1.UPF、Li.pbesol-s-rrkjus_psl.0.2.1.UPF。更换赝势、交换关联泛函、投影子或结构后,应重新计算 U,不能直接把本例数值复制到其他材料。

3. 提交自动流程#

bash submit.sh
squeue -u "$USER"

模板申请 cpu-8173m 的 56 核整节点,短例使用 1 MPI 进程和 1 线程。脚本依次执行基态、响应和代入实际 U 后的新基态。已获分配的 CPU 资源内,也可执行 bash run.sh;不要同时运行两份。

希望理解每一步时,可在分配好的 CPU 资源内手动执行:

mkdir -p manual/pseudo manual/baseline
cp pseudo/*.UPF manual/pseudo/
cd manual/baseline
pw.x < ../../inputs/scf.in > scf.out
grep 'convergence has been achieved' scf.out
ls tmp/LiCoO2.save
hp.x < ../../inputs/hp.in > hp.out
cd ../..

两个程序使用同一工作目录、prefix 和 outdir;不要在运行 hp.x 之前清理 tmp。

4. 响应输入与完成信号#

完整 inputs/hp.in:

&inputhp
 prefix='LiCoO2', outdir='./tmp',
 nq1=1, nq2=1, nq3=1,
 conv_thr_chi=1d-7, iverbosity=2,
 niter_max=100, max_seconds=550
/

conv_thr_chi 控制响应自洽,不等于 pw.x 的电子收敛阈值。nq1/nq2/nq3 是响应 q 网格,不能拿电子 k 网格替代。检查:

grep -E 'iter #|chi:|CONVERGENCE HAS BEEN REACHED' work-new/baseline/hp.out
cat work-new/baseline/LiCoO2.Hubbard_parameters.dat

本次实际响应经过 13 次迭代,末次残差为 5.40×10⁻⁸,得到 U=7.775865 eV。

实际LiCoO2响应自洽历程

5. 从响应矩阵理解U#

本例只有一个相关 Co 位点,可直接看标量形式:U=χ₀⁻¹−χ⁻¹。实际文件包含:

chi0 matrix:       -0.261000
chi matrix:        -0.086153
chi0 inverse:      -3.831416
chi inverse:      -11.607281
Hubbard matrix:     7.775865

用打印出来的 χ₀、χ 重新求倒数,约为 7.775839 eV;差异来自响应矩阵仅保留六位小数。取实际 Hubbard matrix 的值用于下一步,而不是用四舍五入后的响应重复求 U。

多相关位点是矩阵求逆,不能逐个元素取倒数;含 V、磁性或多个 Hubbard manifold 时,应按对应设置处理。本例不等价于这些更复杂情况。

下一篇:将实际 U 代回计算并比较能级。

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

查看配图

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

100%查看原图 ↗