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 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§
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".