pub fn generate_det_mo_orbits<'a, G, T, SC>(
det: &'a SlaterDeterminant<'a, T, SC>,
mos: &'a [Vec<MolecularOrbital<'a, T, SC>>],
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, SC>, Vec<Vec<MolecularOrbitalSymmetryOrbit<'a, G, T, SC>>>), 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>,
SC: StructureConstraint + Clone + Eq + Display,
SlaterDeterminant<'a, T, SC>: SymmetryTransformable,
MolecularOrbital<'a, T, SC>: 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 ofdet.group- An orbit-generating symmetry group.metric- The metric of the basis in which the coefficients ofdetandmosare 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 theeigenvalue_comparison_mode- The mode of comparing the overlap eigenvalues to the specifiedlinear_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.