pub trait OrbitMatrix<'a, T, SC>where
    T: Lapack + ComplexFloat,
    SC: StructureConstraint + Clone + Display,
    SlaterDeterminant<'a, T, SC>: SymmetryTransformable,{
    type MatrixElement;
    // Required methods
    fn calc_matrix_element(
        &self,
        det_w: &SlaterDeterminant<'_, T, SC>,
        det_x: &SlaterDeterminant<'_, T, SC>,
        sao: &ArrayView2<'_, T>,
        thresh_offdiag: <T as ComplexFloat>::Real,
        thresh_zeroov: <T as ComplexFloat>::Real,
    ) -> Result<Self::MatrixElement, Error>;
    fn t(x: &Self::MatrixElement) -> Self::MatrixElement;
    fn conj(x: &Self::MatrixElement) -> Self::MatrixElement;
    fn zero(&self) -> Self::MatrixElement;
    // Provided methods
    fn norm_preserving_scalar_map<'b, G>(
        &self,
        i: usize,
        orbit_basis: &'b OrbitBasis<'b, G, SlaterDeterminant<'a, T, SC>>,
    ) -> Result<fn(&Self::MatrixElement) -> Self::MatrixElement, Error>
       where G: SymmetryGroupProperties + Clone,
             'a: 'b { ... }
    fn calc_orbit_matrix<'g, G>(
        &self,
        orbit_basis: &'g OrbitBasis<'g, G, SlaterDeterminant<'a, T, SC>>,
        use_cayley_table: bool,
        sao: &ArrayView2<'_, T>,
        thresh_offdiag: <T as ComplexFloat>::Real,
        thresh_zeroov: <T as ComplexFloat>::Real,
    ) -> Result<Array2<Self::MatrixElement>, Error>
       where G: SymmetryGroupProperties + Clone,
             T: Sync + Send,
             <T as ComplexFloat>::Real: Sync,
             SlaterDeterminant<'a, T, SC>: Sync,
             Self: Sync,
             Self::MatrixElement: Send + LowerExp + Clone,
             'a: 'g { ... }
}Required Associated Types§
Sourcetype MatrixElement
 
type MatrixElement
The type of the matrix elements.
Required Methods§
Sourcefn calc_matrix_element(
    &self,
    det_w: &SlaterDeterminant<'_, T, SC>,
    det_x: &SlaterDeterminant<'_, T, SC>,
    sao: &ArrayView2<'_, T>,
    thresh_offdiag: <T as ComplexFloat>::Real,
    thresh_zeroov: <T as ComplexFloat>::Real,
) -> Result<Self::MatrixElement, Error>
 
fn calc_matrix_element( &self, det_w: &SlaterDeterminant<'_, T, SC>, det_x: &SlaterDeterminant<'_, T, SC>, sao: &ArrayView2<'_, T>, thresh_offdiag: <T as ComplexFloat>::Real, thresh_zeroov: <T as ComplexFloat>::Real, ) -> Result<Self::MatrixElement, Error>
Calculates the matrix element between two Slater determinants.
§Arguments
- det_w- The determinant $- ^{w}\Psi$.
- det_x- The determinant $- ^{x}\Psi$.
- sao- The atomic-orbital overlap matrix.
- thresh_offdiag- Threshold for determining non-zero off-diagonal elements in the orbital overlap matrix between $- ^{w}\Psi$ and $- ^{x}\Psi$ during Löwdin pairing.
- thresh_zeroov- Threshold for identifying zero Löwdin overlaps.
§Returns
The resulting matrix element.
Sourcefn t(x: &Self::MatrixElement) -> Self::MatrixElement
 
fn t(x: &Self::MatrixElement) -> Self::MatrixElement
Computes the transpose of a matrix element.
Sourcefn conj(x: &Self::MatrixElement) -> Self::MatrixElement
 
fn conj(x: &Self::MatrixElement) -> Self::MatrixElement
Computes the complex conjugation of a matrix element.
Sourcefn zero(&self) -> Self::MatrixElement
 
fn zero(&self) -> Self::MatrixElement
Returns the zero matrix element.
Provided Methods§
Sourcefn norm_preserving_scalar_map<'b, G>(
    &self,
    i: usize,
    orbit_basis: &'b OrbitBasis<'b, G, SlaterDeterminant<'a, T, SC>>,
) -> Result<fn(&Self::MatrixElement) -> Self::MatrixElement, Error>where
    G: SymmetryGroupProperties + Clone,
    'a: 'b,
 
fn norm_preserving_scalar_map<'b, G>(
    &self,
    i: usize,
    orbit_basis: &'b OrbitBasis<'b, G, SlaterDeterminant<'a, T, SC>>,
) -> Result<fn(&Self::MatrixElement) -> Self::MatrixElement, Error>where
    G: SymmetryGroupProperties + Clone,
    'a: 'b,
Returns the norm-presearving scalar map connecting diagonally-symmetric elements in the matrix.
Sourcefn calc_orbit_matrix<'g, G>(
    &self,
    orbit_basis: &'g OrbitBasis<'g, G, SlaterDeterminant<'a, T, SC>>,
    use_cayley_table: bool,
    sao: &ArrayView2<'_, T>,
    thresh_offdiag: <T as ComplexFloat>::Real,
    thresh_zeroov: <T as ComplexFloat>::Real,
) -> Result<Array2<Self::MatrixElement>, Error>where
    G: SymmetryGroupProperties + Clone,
    T: Sync + Send,
    <T as ComplexFloat>::Real: Sync,
    SlaterDeterminant<'a, T, SC>: Sync,
    Self: Sync,
    Self::MatrixElement: Send + LowerExp + Clone,
    'a: 'g,
 
fn calc_orbit_matrix<'g, G>(
    &self,
    orbit_basis: &'g OrbitBasis<'g, G, SlaterDeterminant<'a, T, SC>>,
    use_cayley_table: bool,
    sao: &ArrayView2<'_, T>,
    thresh_offdiag: <T as ComplexFloat>::Real,
    thresh_zeroov: <T as ComplexFloat>::Real,
) -> Result<Array2<Self::MatrixElement>, Error>where
    G: SymmetryGroupProperties + Clone,
    T: Sync + Send,
    <T as ComplexFloat>::Real: Sync,
    SlaterDeterminant<'a, T, SC>: Sync,
    Self: Sync,
    Self::MatrixElement: Send + LowerExp + Clone,
    'a: 'g,
Computes the entire matrix of matrix elements in an orbit basis, making use of group closure for optimisation.
§Arguments
- orbit_basis- The orbit basis in which the matrix elements are to be computed.
- use_cayley_table- Boolean indicating whether group closure should be used to speed up the computation.
- sao- The atomic-orbital overlap matrix.
- thresh_offdiag- Threshold for determining non-zero off-diagonal elements in the orbital overlap matrix between two Slater determinants during Löwdin pairing.
- thresh_zeroov- Threshold for identifying zero Löwdin overlaps.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.