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.