Loading...
Searching...
No Matches
q3::BlochOverlaps Class Reference

#include <bloch_overlaps.hpp>

Public Member Functions

 BlochOverlaps (const std::vector< std::vector< std::vector< Complex > > > &blocks, int rows, int columns)
 
 BlochOverlaps (std::vector< std::vector< DenseMatrix< Complex > > > blocks)
 From matrices already built, one row of directions per k-point.
 
const DenseMatrix< Complex > & at (int kpoint, int direction) const
 
int number_of_directions () const
 
int number_of_kpoints () const
 
BlochOverlaps restricted_to (const std::vector< KPointBandClassification > &classification, const KPointStencil &stencil) const
 
BlochOverlaps transformed_by (const std::vector< DenseMatrix< Complex > > &left, const std::vector< DenseMatrix< Complex > > &right, const KPointStencil &stencil) const
 left(k)^dagger M(k, b) right(k + b) at every (k, b).
 

Static Public Member Functions

static BlochOverlaps square (const std::vector< std::vector< std::vector< Complex > > > &blocks, int dimension)
 The square case: N x N at every (k, b).
 

Detailed Description

Definition at line 30 of file bloch_overlaps.hpp.

Constructor & Destructor Documentation

◆ BlochOverlaps() [1/2]

q3::BlochOverlaps::BlochOverlaps ( const std::vector< std::vector< std::vector< Complex > > > &  blocks,
int  rows,
int  columns 
)
inline

From a record's blocks, blocks[kpoint][direction] each a column-major rows x columns matrix with the k-side band as the row. A block of another size is refused naming its k-point and direction.

Definition at line 37 of file bloch_overlaps.hpp.

◆ BlochOverlaps() [2/2]

q3::BlochOverlaps::BlochOverlaps ( std::vector< std::vector< DenseMatrix< Complex > > >  blocks)
inlineexplicit

From matrices already built, one row of directions per k-point.

Definition at line 78 of file bloch_overlaps.hpp.

Member Function Documentation

◆ at()

const DenseMatrix< Complex > & q3::BlochOverlaps::at ( int  kpoint,
int  direction 
) const
inline

◆ number_of_directions()

int q3::BlochOverlaps::number_of_directions ( ) const
inline

Definition at line 88 of file bloch_overlaps.hpp.

Referenced by restricted_to(), and transformed_by().

◆ number_of_kpoints()

int q3::BlochOverlaps::number_of_kpoints ( ) const
inline

Definition at line 85 of file bloch_overlaps.hpp.

Referenced by restricted_to(), and transformed_by().

◆ restricted_to()

BlochOverlaps q3::BlochOverlaps::restricted_to ( const std::vector< KPointBandClassification > &  classification,
const KPointStencil &  stencil 
) const
inline

M restricted to the kept bands: rows from k's keep-list, columns from k+b's. The two lists differ, because which bands survive is decided k-point by k-point; slicing both sides with one of them is the mistake this signature exists to make impossible.

Definition at line 103 of file bloch_overlaps.hpp.

References at(), q3::KPointStencil::neighbor(), number_of_directions(), number_of_kpoints(), and q3::DenseMatrix< T >::submatrix().

Referenced by q3::WannierConstructionInputs::overlaps_in_gauge(), and q3::SubspaceDisentangler::run().

◆ square()

static BlochOverlaps q3::BlochOverlaps::square ( const std::vector< std::vector< std::vector< Complex > > > &  blocks,
int  dimension 
)
inlinestatic

The square case: N x N at every (k, b).

Definition at line 73 of file bloch_overlaps.hpp.

◆ transformed_by()

BlochOverlaps q3::BlochOverlaps::transformed_by ( const std::vector< DenseMatrix< Complex > > &  left,
const std::vector< DenseMatrix< Complex > > &  right,
const KPointStencil &  stencil 
) const
inline

left(k)^dagger M(k, b) right(k + b) at every (k, b).

Definition at line 130 of file bloch_overlaps.hpp.

References at(), q3::ConjugateTranspose, q3::multiply(), q3::KPointStencil::neighbor(), q3::None, number_of_directions(), and number_of_kpoints().

Referenced by q3::WannierConstructionInputs::overlaps_in_gauge().


The documentation for this class was generated from the following file: