KB 转换模块 (kb)
概述
将半局域势 \(\{V_l(r)\}\) 转换为 Kleinman-Bylander 可分离形式:
\[V_{\text{NL}} = \sum_l |\beta_l\rangle D_l \langle\beta_l|\]
其中 \(\beta_l(r)\) 是投影子,\(D_l\) 是耦合系数。
核心功能
数据类
算法说明
投影子构造
对于非局域通道 \(l \neq l^*\),构造未归一化投影子:
\[\chi_l(r) = [V_l(r) - V_{\text{loc}}(r)] \cdot \phi_l(r)\]
其中:
\(V_{\text{loc}}(r) = V_{l^*}(r)\) 是局域势(通常选择未占据的高角动量通道)
\(\phi_l(r) = u_l(r)/r\) 是径向规约波函数
归一化条件
投影子归一化为 \(\langle\beta_l|\beta_l\rangle = 1\):
\[\beta_l(r) = \frac{\chi_l(r)}{\sqrt{\langle\chi_l|\chi_l\rangle}}\]
耦合系数
标准 KB 形式的耦合系数为:
\[D_l^{\text{std}} = \frac{1}{\langle\phi_l|\Delta V|\phi_l\rangle}\]
其中 \(\Delta V = V_l - V_{\text{loc}}\)。
本实现采用归一化投影子,因此耦合系数调整为:
\[D_l = \frac{\langle\chi_l|\chi_l\rangle}{\langle\phi_l|\Delta V|\phi_l\rangle} = \frac{W}{Z}\]
其中:
\(W = \int |\chi_l|^2 w \, dr\)
\(Z = \int \Delta V \cdot \phi_l^2 w \, dr\)
这两种形式物理等价,归一化形式在数值上更稳定。
数值稳定性
原点保护:在 \(r \to 0\) 时,\(u_l \sim r^{l+1}\),因此 \(\phi_l = u_l/r \sim r^l\) 有限。 使用
np.maximum(r, 1e-10)保护除法。积分权重:使用提供的积分权重 \(w\) 计算内积,保证数值精度。
除零检查:计算 \(D_l = W/Z\) 时检查 \(|Z| < 10^{-12}\),避免分母接近零。
参考文献
Kleinman & Bylander, PRL 48, 1425 (1982)
Giannozzi, Notes on pseudopotential generation (2019)