TBTK
TBTK::ReciprocalLattice Class Reference

#include <ReciprocalLattice.h>

Public Member Functions

 ReciprocalLattice (UnitCell *unitCell)
 
 ~ReciprocalLattice ()
 
ModelgenerateModel (std::initializer_list< double > momentum) const
 
ModelgenerateModel (std::vector< double > momentum) const
 
ModelgenerateModel (const std::vector< std::vector< double >> &momentums, const std::vector< Index > &blockIndices) const
 
const std::vector< std::vector< double > > & getReciprocalLatticeVectors () const
 
unsigned int getNumBands () const
 

Detailed Description

The ReciprocalLattice provides methods for constructing momentum space Models from a UnitCell. Let the real space Hamiltonian be written on the form

\[ H = \sum_{RiR'i'}a_{RiR'i'}c_{Ri'}^{\dagger}c_{R'i'}, \]

where R and R' are UnitCell-indices and i and i' are intra UnitCell-indices. Expanding the operators in the momentum basis we have

\[ H = \sum_{RkiR'k'i'}a_{RiR'i'}c_{ki}^{\dagger}c_{k'i'}e^{i(k\cdot R - k'\cdot R')}. \]

Now assuming translational invaraince, such that the coefficients only depend on the relative UnitCell positions, we can write

\[ H = \sum_{\bar{R}kiR'k'i'}a_{\bar{R}i0i'}c_{ki}^{\dagger}c_{k'i'}e^{ik\cdot\bar{R}}e^{i(k-k')\cdot R'}, \]

where

\[\bar{R} = R - R'\]

. Carrying out the sum over R' we arrive at

\[ H = \sum_{kik'i'}\left(\sum_{\bar{R}}a_{\bar{R}i0i'}e^{ik\cdot\bar{R}}\right)c_{ki}^{\dagger}c_{k'i'}. \]

It therefore follows that the momentum space HoppingAmplitudes are given by

\[ a_{kik'i'} = \sum_{\bar{R}}a_{\bar{R}i0i'}e^{ik\cdot\bar{R}}. \]

The purpose of this class is to provide method for constructing Models for given k and k' using these coefficients. This is done by specifying a real space environment around a reference UnitCell, large enough to ensure that the sum can run over all relevant

\[\bar{R}\]

, and then using this to calcualte the coefficeints when Models with given k and k' is demanded.

Constructor & Destructor Documentation

◆ ReciprocalLattice()

TBTK::ReciprocalLattice::ReciprocalLattice ( UnitCell unitCell)

Constructor.

◆ ~ReciprocalLattice()

TBTK::ReciprocalLattice::~ReciprocalLattice ( )

Destructor.

Member Function Documentation

◆ generateModel() [1/3]

Model* TBTK::ReciprocalLattice::generateModel ( std::initializer_list< double >  momentum) const

Genearates a Model for give momentum.

◆ generateModel() [2/3]

Model* TBTK::ReciprocalLattice::generateModel ( std::vector< double >  momentum) const

Genearates a Model for give momentum.

◆ generateModel() [3/3]

Model* TBTK::ReciprocalLattice::generateModel ( const std::vector< std::vector< double >> &  momentums,
const std::vector< Index > &  blockIndices 
) const

Genearates a Model for give momentum.

◆ getNumBands()

unsigned int TBTK::ReciprocalLattice::getNumBands ( ) const
inline

Get number of bands.

◆ getReciprocalLatticeVectors()

const std::vector< std::vector< double > > & TBTK::ReciprocalLattice::getReciprocalLatticeVectors ( ) const
inline

Get reciprocal lattice vectors.


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