Trait OrbitMatrix

Source
pub trait OrbitMatrix<'a, T, SC>{
    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§

Source

type MatrixElement

The type of the matrix elements.

Required Methods§

Source

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.

Source

fn t(x: &Self::MatrixElement) -> Self::MatrixElement

Computes the transpose of a matrix element.

Source

fn conj(x: &Self::MatrixElement) -> Self::MatrixElement

Computes the complex conjugation of a matrix element.

Source

fn zero(&self) -> Self::MatrixElement

Returns the zero matrix element.

Provided Methods§

Source

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.

Source

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.

Implementors§

Source§

impl<'a, T, SC> OrbitMatrix<'a, T, SC> for &OverlapAO<'a, T, SC>
where T: ComplexFloat + Lapack, SC: StructureConstraint + Clone + Display, for<'b> SlaterDeterminant<'b, T, SC>: Overlap<T, Ix2>, SlaterDeterminant<'a, T, SC>: SymmetryTransformable,

Source§

impl<'a, T, SC> OrbitMatrix<'a, T, SC> for OverlapAO<'a, T, SC>
where T: ComplexFloat + Lapack, SC: StructureConstraint + Clone + Display, for<'b> SlaterDeterminant<'b, T, SC>: Overlap<T, Ix2>, SlaterDeterminant<'a, T, SC>: SymmetryTransformable,

Source§

impl<'a, T, SC, F> OrbitMatrix<'a, T, SC> for &HamiltonianAO<'a, T, SC, F>

Source§

impl<'a, T, SC, F> OrbitMatrix<'a, T, SC> for HamiltonianAO<'a, T, SC, F>