23 #ifndef COM_DAFER45_TBTK_MOMENTUM_SPACE_CONTEXT 24 #define COM_DAFER45_TBTK_MOMENTUM_SPACE_CONTEXT 27 #include "TBTK/Solver/BlockDiagonalizer.h" 28 #include "TBTK/PropertyExtractor/BlockDiagonalizer.h" 59 const std::vector<std::vector<double>>&
getMesh()
const;
71 double getEnergy(
unsigned int state)
const;
74 double getEnergy(
unsigned int block,
unsigned int state)
const;
80 unsigned int amplitude
96 std::vector<unsigned int> numMeshPoints;
99 std::vector<std::vector<double>> mesh;
102 unsigned int numOrbitals;
114 std::complex<double> *amplitudes;
123 this->model = &model;
125 isInitialized =
false;
135 this->brillouinZone = &brillouinZone;
137 isInitialized =
false;
141 return *brillouinZone;
145 const std::vector<unsigned int> &numMeshPoints
147 this->numMeshPoints = numMeshPoints;
149 brillouinZone !=
nullptr,
150 "MomentumSpaceContext::setNumMeshPoints()",
151 "BrillouinZone not set.",
152 "First set the BrillouinZone using" 153 <<
" MomentumSpaceContext::setBrillouinZone()" 157 isInitialized =
false;
162 return numMeshPoints;
171 this->numOrbitals = numOrbitals;
173 isInitialized =
false;
181 return energies[state];
188 return energies[block*numOrbitals + state];
194 unsigned int amplitude
196 return amplitudes[numOrbitals*(numOrbitals*block + state) + amplitude];
200 const std::vector<double> &k
210 return *propertyExtractor;
virtual std::vector< std::vector< double > > getMinorMesh(const std::vector< unsigned int > &numMeshPoints) const
const std::vector< unsigned int > & getNumMeshPoints() const
Definition: MomentumSpaceContext.h:160
unsigned int getNumOrbitals() const
Definition: MomentumSpaceContext.h:176
const std::vector< std::vector< double > > & getMesh() const
Definition: MomentumSpaceContext.h:165
const Model & getModel() const
Definition: MomentumSpaceContext.h:128
std::complex< double > getAmplitude(unsigned int block, unsigned int state, unsigned int amplitude) const
Definition: MomentumSpaceContext.h:191
Definition: BrillouinZone.h:34
Definition: MomentumSpaceContext.h:32
virtual Index getMinorCellIndex(const std::vector< double > &coordinates, const std::vector< unsigned int > &numMeshPoints) const
Index getKIndex(const std::vector< double > &k) const
Definition: MomentumSpaceContext.h:199
void setNumOrbitals(unsigned int numOrbitals)
Definition: MomentumSpaceContext.h:170
const BrillouinZone & getBrillouinZone() const
Definition: MomentumSpaceContext.h:140
Flexible physical index.
Definition: Index.h:73
Definition: ModelFactory.h:35
const PropertyExtractor::BlockDiagonalizer & getPropertyExtractorBlockDiagonalizer() const
Definition: MomentumSpaceContext.h:208
void setNumMeshPoints(const std::vector< unsigned int > &numMeshPoints)
Definition: MomentumSpaceContext.h:144
void setModel(Model &model)
Definition: MomentumSpaceContext.h:122
Solves a block diagonal Model using diagonalization.
Definition: BlockDiagonalizer.h:66
Container of Model related information.
Definition: Model.h:57
double getEnergy(unsigned int state) const
Definition: MomentumSpaceContext.h:180
void setBrillouinZone(const BrillouinZone &brillouinZone)
Definition: MomentumSpaceContext.h:132