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

#include <construction_inputs.hpp>

Public Member Functions

 WannierConstructionInputs (const WannierInputs &record)
 
bool has_overlaps () const
 Whether the record carries M_mn(k,b); implies has_stencil().
 
bool has_stencil () const
 Whether the record names its neighbour directions, so k + b is resolved.
 
int number_of_kpoints () const
 
int number_of_wannier_functions () const
 
const BlochOverlaps & overlaps () const
 
BlochOverlaps overlaps_in_gauge (const BandClassification &classification, const std::vector< DenseMatrix< Complex > > &frames) const
 
std::vector< DenseMatrix< Complex > > projections_restricted_to (const BandClassification &classification) const
 A(k) restricted to the bands classification keeps at each k-point: kept x N, band as row.
 
const WannierInputs & record () const
 The inputs as the record stores them.
 
bool spread_is_defined () const
 
const KPointStencil & stencil () const
 
std::optional< int > two_point_axis_direction () const
 The direction of a two-point axis, if any; KPointStencil::two_point_axis_direction says why.
 

Detailed Description

Definition at line 41 of file construction_inputs.hpp.

Constructor & Destructor Documentation

◆ WannierConstructionInputs()

q3::WannierConstructionInputs::WannierConstructionInputs ( const WannierInputs &  record)
inlineexplicit

The model is a Fourier sum over the Wigner-Seitz supercell of the grid, and that transform is exact only over the whole grid: a record holding some other number of k-points is not a smaller problem, it is a wrong one.

Definition at line 43 of file construction_inputs.hpp.

References q3::WannierInputs::eigenvalues_rydberg, q3::KPointStencil::from_grid(), q3::WannierInputs::has_overlaps(), q3::WannierInputs::kpoint_grid_dimensions, q3::WannierInputs::neighbor_directions, q3::WannierInputs::number_of_bands, number_of_kpoints(), q3::WannierInputs::number_of_kpoints(), q3::WannierInputs::number_of_trial_orbitals, q3::WannierInputs::overlap_matrices, q3::WannierInputs::projection_matrices, and record().

Member Function Documentation

◆ has_overlaps()

bool q3::WannierConstructionInputs::has_overlaps ( ) const
inline

Whether the record carries M_mn(k,b); implies has_stencil().

Definition at line 138 of file construction_inputs.hpp.

Referenced by q3::create_gauge_choice(), and q3::MaximallyLocalizedGaugeChoice::require_supported().

◆ has_stencil()

bool q3::WannierConstructionInputs::has_stencil ( ) const
inline

Whether the record names its neighbour directions, so k + b is resolved.

Definition at line 127 of file construction_inputs.hpp.

◆ number_of_kpoints()

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

◆ number_of_wannier_functions()

◆ overlaps()

const BlochOverlaps & q3::WannierConstructionInputs::overlaps ( ) const
inline

◆ overlaps_in_gauge()

BlochOverlaps q3::WannierConstructionInputs::overlaps_in_gauge ( const BandClassification &  classification,
const std::vector< DenseMatrix< Complex > > &  frames 
) const
inline

M_mn(k,b) in a gauge: restricted to the bands classification keeps and rotated by frames, C(k)^dagger M(k,b) C(k+b). What a spread is evaluated on; defined only where has_overlaps().

Definition at line 169 of file construction_inputs.hpp.

References q3::BandClassification::kpoints, overlaps(), q3::BlochOverlaps::restricted_to(), stencil(), and q3::BlochOverlaps::transformed_by().

Referenced by q3::MaximallyLocalizedGaugeChoice::choose(), and q3::ProjectionGaugeChoice::choose().

◆ projections_restricted_to()

std::vector< DenseMatrix< Complex > > q3::WannierConstructionInputs::projections_restricted_to ( const BandClassification &  classification) const
inline

A(k) restricted to the bands classification keeps at each k-point: kept x N, band as row.

Definition at line 151 of file construction_inputs.hpp.

References q3::BandClassification::kpoints, and number_of_wannier_functions().

Referenced by q3::IsolatedManifoldSelection::choose(), and q3::ProjectabilityDisentanglementSelection::choose().

◆ record()

◆ spread_is_defined()

bool q3::WannierConstructionInputs::spread_is_defined ( ) const
inline

Whether the spread is defined at all: it needs the overlaps, and a mesh without a two-point axis. The subspace iteration is untouched by the two-point rule – it never reads a phase – which is why a two-point axis is usable without localisation and not with it.

Definition at line 187 of file construction_inputs.hpp.

References two_point_axis_direction().

Referenced by q3::ProjectionGaugeChoice::choose().

◆ stencil()

◆ two_point_axis_direction()

std::optional< int > q3::WannierConstructionInputs::two_point_axis_direction ( ) const
inline

The direction of a two-point axis, if any; KPointStencil::two_point_axis_direction says why.

Definition at line 177 of file construction_inputs.hpp.

Referenced by q3::MaximallyLocalizedGaugeChoice::require_supported(), and spread_is_defined().


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