pub fn calc_lowdin_pairing<T>(
cw: &ArrayView2<'_, T>,
cx: &ArrayView2<'_, T>,
sao: &ArrayView2<'_, T>,
complex_symmetric: bool,
thresh_offdiag: <T as ComplexFloat>::Real,
thresh_zeroov: <T as ComplexFloat>::Real,
) -> Result<LowdinPairedCoefficients<T>, Error>Expand description
Performs Löwdin pairing on two coefficient matrices $^{w}\mathbf{C}$ and
$^{x}\mathbf{C}$.
Löwdin pairing ensures that
^{wx}\mathbf{\Lambda}
= \mathrm{diag}(^{wx}\lambda_i)
= ^{w}\!\tilde{\mathbf{C}}^{\dagger\lozenge}
\ \mathbf{S}_{\mathrm{AO}}
\ ^{x}\tilde{\mathbf{C}},where the Löwdin-paired coefficient matrices are given by
\begin{align*}
^{w}\!\tilde{\mathbf{C}}
&=\ ^{w}\mathbf{C}\ ^{wx}\mathbf{U}^{\lozenge} \\
^{x}\!\tilde{\mathbf{C}}
&=\ ^{x}\mathbf{C}\ ^{wx}\mathbf{V}
\end{align*}with $^{wx}\mathbf{U}$ and $^{wx}\mathbf{V}$ being SVD factorisation matrices:
^{w}\mathbf{C}^{\dagger\lozenge}
\ \mathbf{S}_{\mathrm{AO}}
\ ^{x}\mathbf{C}
=
\ ^{wx}\mathbf{U}
\ ^{wx}\mathbf{\Lambda}
\ ^{wx}\mathbf{V}^{\dagger}.We note that the first columns of $^{w}\!\tilde{\mathbf{C}}$ and $^{x}\!\tilde{\mathbf{C}}$
are also adjusted by the determinants of $^{wx}\mathbf{U}$ and $^{wx}\mathbf{V}$ as
appropriate to ensure that the Slater determinants corresponding to them remain invariant with
respect to the unitary transformations brought about by $^{wx}\mathbf{U}$ and $^{wx}\mathbf{V}$.
§Arguments
cw- Coefficient matrix $^{w}\mathbf{C}$.cx- Coefficient matrix $^{x}\mathbf{C}$.sao- The overlap matrix $\mathbf{S}_{\mathrm{AO}}$ of the underlying atomic basis functions.complex_symmetric- Iftrue, $\lozenge = \star$. Iffalse, $\lozenge = \hat{e}$.thresh_offdiag- Threshold to check if the off-diagonal elements in the original orbital overlap matrix and in the Löwdin-paired orbital overlap matrix $^{wx}\mathbf{\Lambda}$ are zero.thresh_zeroov- Threshold to identify which Löwdin overlaps $^{wx}\lambda_i$ are zero.
§Returns
A LowdinPairedCoefficients structure containing the result of the Löwdin pairing.