#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). | |
Definition at line 30 of file bloch_overlaps.hpp.
|
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.
|
inlineexplicit |
From matrices already built, one row of directions per k-point.
Definition at line 78 of file bloch_overlaps.hpp.
|
inline |
Definition at line 92 of file bloch_overlaps.hpp.
Referenced by q3::SpreadFunctional::evaluate(), q3::SpreadFunctional::gradient(), restricted_to(), and transformed_by().
|
inline |
Definition at line 88 of file bloch_overlaps.hpp.
Referenced by restricted_to(), and transformed_by().
|
inline |
Definition at line 85 of file bloch_overlaps.hpp.
Referenced by restricted_to(), and transformed_by().
|
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().
|
inlinestatic |
The square case: N x N at every (k, b).
Definition at line 73 of file bloch_overlaps.hpp.
|
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().