xDH 在 Python 下实现的简易教程
在这份文档中,我们将会介绍 xDH 型函数的典型:XYG3,其在 Python 下的实现过程。同时,为了方便,这里大量使用 PySCF API 进行中间矩阵的输出与计算。作者希望,读者可以借助于这些成熟量化软件接口,以及 NumPy 对矩阵、张量计算的强大支持,可以较为轻松地在 Post-HF 或 DFT 方法理论推导,与上机实验的结果进行相互比对,并最终享受亲手实现新方法的乐趣。
动机
前置准备
量化基础必要背景
- 1. 量化基础必要背景:序
- 2. 分子结构、基组、电子积分
- 3. RHF 自洽场计算
- 3.1. 量化软件的自洽场计算
- 3.2. 小型自洽场程序
- 3.3. Hamiltonian Core 积分详述
- 3.4. RHF 能量实现参考
- 3.4.1. 分子轨道系数 \(C_{\mu p}\)
- 3.4.2. 电子态密度 \(D_{\mu \nu}\)
- 3.4.3. Hamiltonian Core 积分 \(h_{\mu \nu}\)
- 3.4.4. 库伦积分 \(J_{\mu \nu}[X_{\kappa \lambda}]\)
- 3.4.5. 交换积分 \(K_{\mu \nu}[R_{\kappa \lambda}]\)
- 3.4.6. Fock 矩阵 \(F_{\mu \nu}[R_{\kappa \lambda}]\)
- 3.4.7. 原子核排斥能 \(E_\mathrm{nuc}\)
- 3.4.8. 电子态能量 \(E_\mathrm{elec}[R_{\mu \nu}]\)
- 3.4.9. 体系总能量 \(E_\mathrm{tot}[R_{\mu \nu}]\)
- 3.4.10. 轨道能量 \(\varepsilon_p\)
- 3.4.11. 轨道占据数
- 3.5. 任务参考解答
- 3.6. 参考文献
- 4. MP2 计算
- 5. DFT 格点
- 6. LDA 泛函核
- 7. GGA 自洽场计算
- 8. 非自洽 GGA 密度泛函
- 9. B2PLYP 能量计算
- 10. XYG3 型密度泛函
- 11. 单元课题:XYG3 能量计算
数值梯度必要背景
一阶梯度与性质
- 1. 一阶梯度与性质:序
- 2. 背景资料
- 3. Skeleton 导数与 U 导数概述
- 4. RHF 偶极矩计算
- 5. RHF 核坐标梯度计算
- 6. RHF 核坐标梯度的 U 矩阵计算
- 7. MP2 核坐标梯度
- 8. GGA 泛函核坐标梯度
- 9. GGA 方法 U 矩阵与 B2PLYP 型泛函核坐标梯度
- 10. XYG3 型泛函核坐标梯度与核坐标梯度 CheatSheet
- 10.1. 准备工作
- 10.2. XYG3 型核坐标梯度:与 B2PLYP 型梯度的差异
- 10.3. XYG3 型核坐标梯度:程序实现 CheatSheet
- 10.3.1.
nc_F_0_mo
\(F_{pq}^\mathrm{n}\) Non-consistent (hybrid) GGA Fock Matrix - 10.3.2.
S_1_ao
\(S_{\mu \nu}^{A_t}\) Overlap Integral Skeleton - 10.3.3.
H_1_ao
\(h_{\mu \nu}^{A_t}\) Hamiltonian Core Skeleton - 10.3.4.
eri1_ao
\((\mu \nu | \kappa \lambda)^{A_t}\) Electron-repulsion Integral Skeleton - 10.3.5.
A_rho_1
\(\rho^{A_t}\) Density Grid Skeleton - 10.3.6.
A_rho_2
\(\rho_r^{A_t}\) Density Derivative Grid Skeleton - 10.3.7.
A_gamma_1
\(\gamma^{A_t}\) Skeleton - 10.3.8.
F_1_ao
\(F_{\mu \nu}^{A_t}\) (Self-consistent) Fock Skeleton - 10.3.9.
Ax0_Core
\(A_{pq, rs}\) (Self-consistent) A Tensor (G Response) Contraction - 10.3.10.
B_1
\(B_{pq}^{A_t}\) B Matrix (CP-HF Equation RHS) - 10.3.11.
U_1_vo
\(U_{ai}^{A_t}\) U Matrix Virt-Occ Block (Unnecessary for xDH Gradient) - 10.3.12. PT2 Tensors
- 10.3.13.
W_I
\(W_{pq}^\mathrm{PT2} [\mathrm{I}]\) Part I of Weighted Density Matrix - 10.3.14.
D_r
\(D_{pq}^\mathrm{PT2+}\) Relaxed Density Matrix: Block-Diagonal Part - 10.3.15.
L
\(L_{ai}^\mathrm{PT2+}\) PT2+ Total Lagrangian - 10.3.16.
D_r
\(D_{pq}^\mathrm{PT2+}\) Relaxed Density Matrix: vir-occ Part - 10.3.17.
E_1_nuc
\(\partial_{A_t} E_\mathrm{nuc}\) Nucleus Repulsion Energy Derivative - 10.3.18.
E_1
\(\partial E_\mathrm{tot}\) Total XYG3 Energy Derivative
- 10.3.1.
- 11. 梯度中间量应用:原子的电子态密度测评程序
- 12. XYG3 型泛函电场梯度 CheatSheet
- 12.1. 准备工作
- 12.2. XYG3 型电场梯度:程序实现 CheatSheet
- 12.2.1. Derivative Unrelated Tensors
- 12.2.2. Zero Derivative Tensors
- 12.2.3.
H_1_ao
\(h_{\mu \nu}^t\) Hamiltonian Core Skeleton - 12.2.4.
F_1_ao
\(F_{\mu \nu}^{t}\) (Self-consistent) Fock Skeleton - 12.2.5.
B_1
\(B_{pq}^{t}\) B Matrix (CP-HF Equation RHS) - 12.2.6.
U_1_vo
\(U_{ai}^{t}\) U Matrix Virt-Occ Block (Unnecessary for xDH Gradient) - 12.2.7.
E_1_nuc
\(\partial_{F_t} E_\mathrm{nuc}\) Nucleus Repulsion Energy Derivative - 12.2.8.
E_1_elec
\(\partial E_\mathrm{elec}\) XYG3 Electronic Energy Derivative - 12.2.9.
E_1
\(\partial E_\mathrm{tot}\) XYG3 Total Energy Derivative
二阶梯度与性质
- 1. 二阶梯度与性质:序
- 2. RHF Hessian
- 3. RHF 核坐标二阶 U 矩阵
- 4. “不安全”的 MP2 Hessian
- 4.1. 准备工作
- 4.2. 程序二阶导数正确性的验证
- 4.3. MP2 二阶梯度概述
- 4.4.
pdB_B_A
\(\partial_\mathbb{B} B_{pq}^\mathbb{A}\) 与pdB_S_A_mo
\(\partial_\mathbb{B} S_{pq}^\mathbb{A}\) - 4.5.
pdB_pdpA_eri0_iajb
\(\partial_\mathbb{B} (ia | jb)^\mathbb{A}\) - 4.6.
pdA_t_iajb
\(\partial_\mathbb{A} t_{ij}^{ab}\) - 4.7. 包含 \(\partial_\mathbb{A} t_{ij}^{ab}\) 的各类导数
- 4.8. \(\partial_\mathbb{B} D_{ai}^\mathrm{MP2}\) 的处理
- 4.9. MP2 相关能二阶核坐标梯度:非安全方法
- 5. “安全的”MP2 Hessian 与“轨道旋转”效应的消除
- 6. GGA Hessian
- 7. GGA 核坐标二阶 U 矩阵
开壳层开发笔记
基于效率与内存考量的笔记
- 1. 简单理解 PySCF 临时文件 chkfile 使用
- 2. 重新学习 RHF 核坐标梯度笔记
- 3. 重新学习 MP2 能量笔记
- 4. MP2 核坐标梯度的重新推导
- 4.1. 初始化
- 4.2. MP2 核坐标梯度
- 4.3. 各张量的生成
- 4.3.1. \(D_{pq}^\mathrm{MP2, oo-vv}\) 的生成
- 4.3.2. \(\Gamma_{\mu \nu \kappa \lambda}^\mathrm{MP2}\) 的生成:初步方案
- 4.3.3. 二阶约化密度对梯度的贡献
- 4.3.4. \(W_{pq}^\mathrm{MP2} [\mathrm{I}]\) 的生成与重要中间矩阵 \(I_{\mu \nu}\)
- 4.3.5. Lagrangian 量 \(L_{ai}\)
- 4.3.6. MP2 弛豫密度 \(D_{ai}^\mathrm{MP2}\)
- 4.3.7. Hamiltonian Core 对梯度的贡献
- 4.3.8. 完整的 \(W_{\mu \nu}^\mathrm{MP2}\) 对梯度的贡献
- 4.4. MP2 二阶梯度实现总结
- 4.5. 程序的优化问题:以 \(D_{ij}^\mathrm{MP2}\) 为例