Trait Overlap

Source
pub trait Overlap<T, D>
where T: ComplexFloat + Debug + Lapack, D: Dimension,
{ // Required methods fn complex_symmetric(&self) -> bool; fn overlap( &self, other: &Self, metric: Option<&Array<T, D>>, metric_h: Option<&Array<T, D>>, ) -> Result<T, Error>; fn overlap_definition(&self) -> String; }
Expand description

Trait for computing the inner product $\langle \hat{\iota} \mathbf{v}_i, \mathbf{v}_j \rangle$ between two linear-space quantities $\mathbf{v}_i$ and $\mathbf{v}_j$. The involutory operator $\hat{\iota}$ determines whether the inner product is a sesquilinear form or a bilinear form.

Required Methods§

Source

fn complex_symmetric(&self) -> bool

If true, the inner product is bilinear and $\hat{\iota} = \hat{\kappa}$. If false, the inner product is sesquilinear and $\hat{\iota} = \mathrm{id}$.

Source

fn overlap( &self, other: &Self, metric: Option<&Array<T, D>>, metric_h: Option<&Array<T, D>>, ) -> Result<T, Error>

Returns the overlap between self and other, with respect to a metric metric (and possibly its complex-symmetric version metric_h) of the underlying basis in which self and other are expressed.

Source

fn overlap_definition(&self) -> String

Returns a string describing the mathematical definition of the overlap (i.e. the inner product) between two quantities of this type.

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> Overlap<T, Dim<[usize; 2]>> for VibrationalCoordinate<'a, T>
where T: Lapack + ComplexFloat<Real = <T as Scalar>::Real> + Debug + Mul<<T as ComplexFloat>::Real, Output = T>, <T as ComplexFloat>::Real: Debug + RelativeEq<<T as ComplexFloat>::Real> + AbsDiffEq<Epsilon = <T as Scalar>::Real>,

Source§

impl<'a, T> Overlap<T, Dim<[usize; 4]>> for Density<'a, T>
where T: Lapack + ComplexFloat<Real = <T as Scalar>::Real> + Debug + Mul<<T as ComplexFloat>::Real, Output = T>, <T as ComplexFloat>::Real: Debug + RelativeEq<<T as ComplexFloat>::Real> + AbsDiffEq<Epsilon = <T as Scalar>::Real>,

Source§

impl<'a, T, SC> Overlap<T, Dim<[usize; 2]>> for SlaterDeterminant<'a, T, SC>
where T: Lapack + ComplexFloat<Real = <T as Scalar>::Real> + Debug + Mul<<T as ComplexFloat>::Real, Output = T>, <T as ComplexFloat>::Real: Debug + RelativeEq<<T as ComplexFloat>::Real> + AbsDiffEq<Epsilon = <T as Scalar>::Real>, SC: StructureConstraint + Eq + Display,

Source§

impl<'a, T, SC> Overlap<T, Dim<[usize; 2]>> for MolecularOrbital<'a, T, SC>
where T: Lapack + ComplexFloat<Real = <T as Scalar>::Real> + Debug + Mul<<T as ComplexFloat>::Real, Output = T>, <T as ComplexFloat>::Real: Debug + RelativeEq<<T as ComplexFloat>::Real> + AbsDiffEq<Epsilon = <T as Scalar>::Real>, SC: StructureConstraint + Eq + Display,

Source§

impl<T> Overlap<T, Dim<[usize; 2]>> for AxialVector3<T>
where T: Lapack + ComplexFloat<Real = <T as Scalar>::Real> + Debug + Mul<<T as ComplexFloat>::Real, Output = T>, <T as ComplexFloat>::Real: Debug + RelativeEq<<T as ComplexFloat>::Real> + AbsDiffEq<Epsilon = <T as Scalar>::Real>,

Source§

impl<T, F> Overlap<T, Dim<[usize; 1]>> for RealSpaceFunction<T, F>
where T: ComplexFloat + Lapack + Send + Sync, F: Clone + Sync + Send + Fn(&Point3<f64>) -> T,