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

 TBTK::ReciprocalLattice::ReciprocalLattice ( UnitCell * unitCell )

Constructor.

 TBTK::ReciprocalLattice::~ReciprocalLattice ( )

Destructor.

## Member Function Documentation

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

Genearates a Model for give momentum.

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

Genearates a Model for give momentum.

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

Genearates a Model for give momentum.

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

Get number of bands.

 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: