pub fn generate_det_mo_orbits<'a, G, T>(
    det: &'a SlaterDeterminant<'a, T>,
    mos: &'a [Vec<MolecularOrbital<'a, T>>],
    group: &'a G,
    metric: &Array2<T>,
    metric_h: Option<&Array2<T>>,
    integrality_threshold: <T as ComplexFloat>::Real,
    linear_independence_threshold: <T as ComplexFloat>::Real,
    symmetry_transformation_kind: SymmetryTransformationKind,
    eigenvalue_comparison_mode: EigenvalueComparisonMode,
    use_cayley_table: bool,
) -> Result<(SlaterDeterminantSymmetryOrbit<'a, G, T>, Vec<Vec<MolecularOrbitalSymmetryOrbit<'a, G, T>>>), Error>
where G: SymmetryGroupProperties + Clone, G::CharTab: SubspaceDecomposable<T>, T: Lapack + ComplexFloat<Real = <T as Scalar>::Real> + Debug + Mul<<T as ComplexFloat>::Real, Output = T>, <T as ComplexFloat>::Real: Debug + Zero + From<u16> + ToPrimitive + RelativeEq<<T as ComplexFloat>::Real> + AbsDiffEq<Epsilon = <T as Scalar>::Real>, SlaterDeterminant<'a, T>: SymmetryTransformable, MolecularOrbital<'a, T>: SymmetryTransformable,
Expand description

Given an origin determinant, generates the determinant orbit and all molecular-orbital orbits in tandem while populating their $\mathbf{S}$ matrices at the same time.

The evaluation of the $\mathbf{S}$ matrix for the determinant orbit passes through intermediate values that can be used to populate the $\mathbf{S}$ matrices of the molecular-orbital orbits, so it saves time significantly to construct all orbits together.

§Arguments

  • det - An origin determinant.
  • mos - The molecular orbitals of det.
  • group - An orbit-generating symmetry group.
  • metric - The metric of the basis in which the coefficients of det and mos are written.
  • integrality_threshold - The threshold of integrality check of multiplicity coefficients in each orbit.
  • linear_independence_threshold - The threshold of linear independence for each orbit.
  • symmetry_transformation_kind - The kind of symmetry transformation to be applied to the
  • eigenvalue_comparison_mode - The mode of comparing the overlap eigenvalues to the specified linear_independence_threshold.
  • use_cayley_table - A boolean indicating if the Cayley table of the group, if available, should be used to speed up the computation of the orbit overlap matrix.

§Returns

A tuple consisting of:

  • the determinant orbit, and
  • a vector of vectors of molecular-orbital orbits, where each element of the outer vector is for one spin space, and each element of an inner vector is for one molecular orbital.