Skip to main content

OrbitMatrix

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 op() -> &'a str;
    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 op() -> &'a str

Returns a string representing the operator for the 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".

Implementors§

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>

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,