Function calc_lowdin_pairing

Source
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>
where T: ComplexFloat + Lapack, <T as ComplexFloat>::Real: PartialOrd + LowerExp,
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 - If true, $\lozenge = \star$. If false, $\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.