Phoebe developer's documentation  1.1.0
Phonon and Electron Boltzmann Equations
FullBandStructure Class Reference

FullBandStructure is the class that stores the energies, velocities and eigenvectors of a quasiparticle computed on a set of wavevectors (as defined by Points() ) in the Brillouin zone. More...

#include <bandstructure.h>

Inheritance diagram for FullBandStructure:
Collaboration diagram for FullBandStructure:

Public Member Functions

 FullBandStructure (int numBands_, Particle &particle_, bool withVelocities, bool withEigenvectors, Points &points_, bool isDistributed_=false)
 Constructor of the FullBandStructure. More...
 
 FullBandStructure (const FullBandStructure &that)
 Copy constructor.
 
FullBandStructureoperator= (const FullBandStructure &that)
 Copy assignment operator.
 
void symmetrize ()
 Symmetrizes the full band structure energies.
 
Particle getParticle () override
 Get the Particle object associated with this class. More...
 
Points getPoints () override
 Returns the wavevectors on which the band structure is computed. More...
 
Point getPoint (const int &pointIndex) override
 Returns a wavevector, given a wavevector index. More...
 
int getNumPoints (const bool &useFullGrid=false) override
 Returns the total number of k/q-points. More...
 
int getNumBands () override
 Returns the number of bands. More...
 
int getFullNumBands () override
 
int getNumBands (WavevectorIndex &ik) override
 Returns the number of bands, to provide flexibility in cases where full or activeBandStructure could be used. More...
 
int hasWindow () override
 Checks whether the bandStructure has been built discarding some Bloch states from those available. More...
 
bool getIsDistributed () override
 Returns the boolean determining if this band structure is distributed or not.
 
bool getHasEigenvectors ()
 
size_t getIndex (const WavevectorIndex &ik, const BandIndex &ib) override
 Builds a Bloch state index, which runs on both wavevector index and band index. More...
 
std::tuple< WavevectorIndex, BandIndexgetIndex (const int &is) override
 Given a Bloch state index, finds the corresponding wavevector and band index. More...
 
std::tuple< WavevectorIndex, BandIndexgetIndex (StateIndex &is) override
 Given a Bloch state index, finds the corresponding wavevector and band index. More...
 
int getNumStates () override
 Returns the total number of Bloch states, equal to numPoints*numBands. More...
 
std::vector< int > getLocalWavevectorIndices ()
 Returns the indices of all wavevector indices on this process, or in an undistributed case, returns all wavevector indices. More...
 
std::vector< std::tuple< WavevectorIndex, BandIndex > > getLocalEnergyStateIndices ()
 Returns the indices of all n,k indices on this process, or in an undistributed case, returns all state indices. More...
 
std::vector< int > getLocalBandIndices () const
 Returns the indices of all state indices on this process, or in an undistributed case, returns all state indices. More...
 
const double & getEnergy (StateIndex &is) override
 Returns the energy of a quasiparticle from its Bloch index. More...
 
const double & getEnergy (WavevectorIndex &ik, BandIndex &ib)
 Returns the energy of a quasiparticle from its band and wavevector index. More...
 
Eigen::VectorXd getEnergies (WavevectorIndex &ik) override
 Returns the energies of all quasiparticle computed at a specified wavevector. More...
 
double getMaxEnergy () override
 Return the maximum energy of a bandstructure. More...
 
Eigen::Vector3d getGroupVelocity (StateIndex &is) override
 Returns the group velocity of a quasiparticle from its Bloch index. More...
 
Eigen::MatrixXd getGroupVelocities (WavevectorIndex &ik) override
 Returns the group velocity of a quasiparticle for all bands at a specified wavevector index. More...
 
Eigen::Tensor< std::complex< double >, 3 > getVelocities (WavevectorIndex &ik) override
 Returns the velocity operator (including off-diagonal matrix elements) of the quasiparticles at the specified wavevector index. More...
 
Eigen::MatrixXcd getEigenvectors (WavevectorIndex &ik) override
 Obtain the eigenvectors of the quasiparticles at a specified wavevector. More...
 
Eigen::Tensor< std::complex< double >, 3 > getPhEigenvectors (WavevectorIndex &ik) override
 Obtain the eigenvectors of the quasiparticles at a specified wavevector. More...
 
Eigen::Vector3d getWavevector (StateIndex &is) override
 Returns the energy of a quasiparticle from its Bloch index. More...
 
Eigen::Vector3d getWavevector (WavevectorIndex &ik) override
 Returns the energy of a quasiparticle from its Bloch index. More...
 
void setEnergies (Point &point, Eigen::VectorXd &energies_) override
 Method to save quasiparticle energies inside FullBandStructure(). More...
 
void setEigenvectors (Point &point, Eigen::MatrixXcd &eigenvectors_) override
 Method to save quasiparticle eigenvectors inside FullBandStructure(). More...
 
void setVelocities (Point &point, Eigen::Tensor< std::complex< double >, 3 > &velocities_) override
 Saves in the class the velocities computed at a particular point. More...
 
void setEnergies (Eigen::Vector3d &point, Eigen::VectorXd &energies_)
 Method to save quasiparticle eigenvectors inside FullBandStructure(). More...
 
Eigen::VectorXd getBandEnergies (int &bandIndex)
 Returns all electronic energies for all wavevectors at fixed band index Used by the Fourier interpolation of the band structure. More...
 
std::vector< Eigen::Matrix3d > getRotationsStar (WavevectorIndex &ikIndex) override
 Given a irreducible point index, find the list of rotations to reconstruct the equivalent points. More...
 
std::vector< Eigen::Matrix3d > getRotationsStar (StateIndex &isIndex) override
 Given an irreducible Bloch state (i.e. More...
 
std::tuple< int, Eigen::Matrix3d > getRotationToIrreducible (const Eigen::Vector3d &x, const int &basis=Points::crystalCoordinates) override
 Given a point in crystal or cartesian coordinates, returns the index of the irreducible point and the rotation such that rotation*irrPoint = redPoint. More...
 
BteIndex stateToBte (StateIndex &isIndex) override
 Utility method to convert an index over Bloch states in the band structure into a Bloch state index usable by VectorBTE. More...
 
StateIndex bteToState (BteIndex &iBteIndex) override
 Utility method to convert an index over Bloch states in a VectorBTE into the Bloch state index in the band structure. More...
 
std::vector< int > irrStateIterator () override
 Iterator over the Bloch states in the band structure, over just the irreducible wavevectors, but isn't distributed over MPI processes. More...
 
std::vector< int > parallelIrrStateIterator () override
 Iterator over the Bloch states in the band structure, distributed over MPI processes, running only over irreducible wavevectors. More...
 
std::vector< int > irrPointsIterator () override
 Iterator over the irreducible points indices. More...
 
std::vector< int > parallelIrrPointsIterator () override
 Iterator over the irreducible points indices. More...
 
int getNumIrrStates () override
 Returns the number of irreducible points for this band structure.
 
int getPointIndex (const Eigen::Vector3d &crystalCoordinates, const bool &suppressError=false) override
 Find the index of a point in the reducible list of points, given its coordinates in the crystal basis. More...
 
std::vector< int > getReducibleStarFromIrreducible (const int &ik) override
 Method to find the points equivalent to an irreducible point. More...
 
- Public Member Functions inherited from BaseBandStructure
virtual ~BaseBandStructure ()=default
 Base destructor for bandstructure class, silences warnings.
 
virtual std::vector< size_t > parallelStateIterator ()
 Returns an iterator to be used for loops over the Bloch state index. More...
 
void outputComponentsToJSON (const std::string &outFileName="bandstructure.json")
 Outputs the bandstructure information to file, either sym reduced or not. More...
 
void printBandStructureStateInfo (const int &fullNumBands)
 A function to print information about how many states are in this bandstructure, and how things were reduced by filtering of states. More...
 

Protected Attributes

Particle particle
 
Pointspoints
 
bool isDistributed = false
 
bool hasEigenvectors = false
 
bool hasVelocities = false
 
Matrix< double > energies
 
Matrix< std::complex< double > > velocities
 
Matrix< std::complex< double > > eigenvectors
 
int numBands = 0
 
int numAtoms = 0
 
size_t numPoints = 0
 
int numLocalPoints = 0
 

Friends

class ActiveBandStructure
 

Detailed Description

By default, each MPI process holds a full copy of the band structure. However, the band structure can be distributed over the wavevectors, if so specified in the constructor.

An important note for developers: When using a distributed band structure, looping over numStates of the band structure will not work – you need to loop over the iterator of indices provided by getStateIndices or getWavevectorIndices. The class will throw errors when nonlocal values are being requested. All functions in band structure are written to take the global wavevector indices associated with the Points object internal to the band structure (because we use the Point class to find wavevector indices in get and set functions of band structure).

Constructor & Destructor Documentation

◆ FullBandStructure()

FullBandStructure::FullBandStructure ( int  numBands_,
Particle particle_,
bool  withVelocities,
bool  withEigenvectors,
Points points_,
bool  isDistributed_ = false 
)
Parameters
numBandsan integer with the number of bands in the system
particlea Particle object that contains the type of quasiparticle
withVelocitiesa boolean to decide whether to store velocities
withEigenvectorsa boolean to decide whether to store eigenVectors
pointsthe underlying mesh of wavevectors.
isDistributedif true, we distribute in memory the storage of quantities, parallelizing over wavevectors (points). By default we don't distribute data in parallel.
Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ bteToState()

StateIndex FullBandStructure::bteToState ( BteIndex iBteIndex)
overridevirtual

Unlike stateToBte, this should always have a solution.

Parameters
iBteIndexindex of the Bloch state in the BTE
Returns
StateIndex: the index of the Bloch state in the band structure.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getBandEnergies()

Eigen::VectorXd FullBandStructure::getBandEnergies ( int &  bandIndex)
Parameters
bandIndexindex in [0,numBands[ for the quasiparticle band
Returns
energies: a vector of size numPoints with the QP energies. Energies are ordered as the underlying wavevectors in Points.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getEigenvectors()

Eigen::MatrixXcd FullBandStructure::getEigenvectors ( WavevectorIndex ik)
overridevirtual
Parameters
wavevectorIndexa WavevectorIndex(ik) object where ik is the integer wavevector index running over [0,numPoints-1].
Returns
eigenvectors: a complex matrix(numBands,numBands) where numBands is the number of Bloch states present at the specified wavevector. Eigenvectors are ordered along columns. Note that not all band structure interpolations may give eigenvectors.

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getEnergies()

Eigen::VectorXd FullBandStructure::getEnergies ( WavevectorIndex ik)
overridevirtual
Parameters
wavevectorIndexa WavevectorIndex(ik) where ik is an integer index running over the wavevectors [0,numPoints-1]
Returns
energies: an Eigen vector of quasiparticle energies for that given wavevector. Phonon energies are referred to zero, with negative energies being actually complex phonon frequencies. Electronic energies are not saved with any particular reference, and should be used together with the chemical potential computed by StatisticsSweep. In rydberg units.

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getEnergy() [1/2]

const double & FullBandStructure::getEnergy ( StateIndex is)
overridevirtual

Same as getEnergy(const int &stateIndex), but using a StateIndex input

Parameters
stateIndexa StateIndex(is) object where 'is' is an integer running over the number of states [0,numStates-1].
Returns
energy: the value of the QP energy for that given Bloch index. Phonon energies are referred to zero, with negative energies being actually complex phonon frequencies. Electronic energies are not saved with any particular reference, and should be used together with the chemical potential computed by StatisticsSweep. By policy, it's in rydberg units.

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getEnergy() [2/2]

const double & FullBandStructure::getEnergy ( WavevectorIndex ik,
BandIndex ib 
)

Same as getEnergy(const int &stateIndex), but using ib,ik instead. ik should always be the global wavevector index, or this will be wrong!

Parameters
ikthe wavevector index of the particle state
ibthe band index of the particle state
Returns
energy: the value of the QP energy for that given Bloch index. Phonon energies are referred to zero, with negative energies being actually complex phonon frequencies. Electronic energies are not saved with any particular reference, and should be used together with the chemical potential computed by StatisticsSweep. By policy, it's in rydberg units.
Here is the call graph for this function:

◆ getGroupVelocities()

Eigen::MatrixXd FullBandStructure::getGroupVelocities ( WavevectorIndex ik)
overridevirtual

Used for accessing the band structure in the BTE.

Parameters
wavevectorIndexa WavevectorIndex(ik) object where 'ik' is an integer index running over the wavevectors in range [0,numPoints-1]
Returns
velocity: a matrix(numBands,3) with the group velocity, in cartesian basis and in atomic rydberg units.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getGroupVelocity()

Eigen::Vector3d FullBandStructure::getGroupVelocity ( StateIndex is)
overridevirtual

Used for accessing the band structure in the BTE.

Parameters
stateIndexa StateIndex(is) object where 'is' is an integer index in the range [0,numStates[
Returns
velocity: a 3d vector with velocity. By policy, we save it in the cartesian basis and in atomic rydberg units.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getIndex() [1/3]

std::tuple< WavevectorIndex, BandIndex > FullBandStructure::getIndex ( const int &  is)
overridevirtual
Parameters
stateIndexinteger from 0 to numStates-1=numBands*numPoints-1
Returns
WavevectorIndex: strong-typed index on wavevector
BandIndex: strong-typed index on bands

Implements BaseBandStructure.

◆ getIndex() [2/3]

size_t FullBandStructure::getIndex ( const WavevectorIndex ik,
const BandIndex ib 
)
overridevirtual

ik runs from 0 to numPoints-1, ib from 0 to numBands-1. It's used to view the various matrices such as energy as a 1D vector, and can be used in combination with get() methods.

Parameters
wavevectorIndexstrong-typed index on wavevector
Returns
stateIndex: integer from 0 to numStates-1=numBands*numPoints-1

Implements BaseBandStructure.

Here is the caller graph for this function:

◆ getIndex() [3/3]

std::tuple< WavevectorIndex, BandIndex > FullBandStructure::getIndex ( StateIndex is)
overridevirtual
Parameters
stateIndexStateIndex(is) object where is is an integer from 0 to numStates-1=numBands*numPoints-1
Returns
WavevectorIndex: strong-typed index on wavevector
BandIndex: strong-typed index on bands

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getLocalBandIndices()

std::vector< int > FullBandStructure::getLocalBandIndices ( ) const
Returns
stateIndices: a vector of is state indices for use as an iterator. Returns the indices of all bands on this process, or in an undistributed case, returns all band indices.
bandIndices: a vector of band indices for use as an iterator.

◆ getLocalEnergyStateIndices()

std::vector< std::tuple< WavevectorIndex, BandIndex > > FullBandStructure::getLocalEnergyStateIndices ( )
Returns
stateIndices: a vector of tuples of (ib,ik) indices for use as an iterator.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getLocalWavevectorIndices()

std::vector< int > FullBandStructure::getLocalWavevectorIndices ( )
Returns
wavevectorIndices: a vector of wavevector indices for use as an iterator.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getMaxEnergy()

double FullBandStructure::getMaxEnergy ( )
overridevirtual

Used when ph energy maximum is a cutoff for phel scattering.

Returns
maxEnergy: maximum energy value of bandstructure in Ry

Implements BaseBandStructure.

◆ getNumBands() [1/2]

int FullBandStructure::getNumBands ( )
overridevirtual
Returns
numBands: the total number of bands in the bandStructure.

Implements BaseBandStructure.

Here is the caller graph for this function:

◆ getNumBands() [2/2]

int FullBandStructure::getNumBands ( WavevectorIndex ik)
overridevirtual
Returns
numBands: the total number of bands in the bandStructure.

Implements BaseBandStructure.

◆ getNumPoints()

int FullBandStructure::getNumPoints ( const bool &  useFullGrid = false)
overridevirtual
Parameters
useFullGridused for compatibility with the ActiveBandStructure, it doesn't affect the returned value.
Returns
numPoints: the total number of wavevectors of the bandStructure.

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getNumStates()

int FullBandStructure::getNumStates ( )
overridevirtual
Returns
numStates: the total number of Bloch states in the class.

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getParticle()

Particle FullBandStructure::getParticle ( )
overridevirtual
Returns
particle: a Particle object, describing e.g. whether this is a phonon or electron bandStructure

Implements BaseBandStructure.

Here is the caller graph for this function:

◆ getPhEigenvectors()

Eigen::Tensor< std::complex< double >, 3 > FullBandStructure::getPhEigenvectors ( WavevectorIndex ik)
overridevirtual

It's only meaningful for the phonon band structure, where eigenvectors are more naturally represented in this shape!

Parameters
wavevectorIndexa WavevectorIndex(ik) object where ik is the integer wavevector index running over [0,numPoints-1].
Returns
eigenvectors: a complex tensor (3,numAtoms,numBands) where numBands is the number of Bloch states present at the specified wavevector, numAtoms is the number of atoms in the crystal unit cell and 3 is a cartesian directions.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getPoint()

Point FullBandStructure::getPoint ( const int &  pointIndex)
overridevirtual

The wavevector index runs from 0 to numPoints-1

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getPointIndex()

int FullBandStructure::getPointIndex ( const Eigen::Vector3d &  crystalCoordinates,
const bool &  suppressError = false 
)
overridevirtual
Parameters
crystalCoordinatescoordinates of the point in crystal basis
suppressErrordefault false. If false, will throw an error if the point is not found
Returns
ik: the index of the point

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getPoints()

Points FullBandStructure::getPoints ( )
overridevirtual
Returns
Points: the object representing the Brillouin zone wavevectors.

Implements BaseBandStructure.

Here is the caller graph for this function:

◆ getReducibleStarFromIrreducible()

std::vector< int > FullBandStructure::getReducibleStarFromIrreducible ( const int &  ik)
overridevirtual
Parameters
ikindex of the irreducible point, with ik running on the full list of reducible points.
Returns
vector<int>: the list of indices of the reducible points equivalent to point #ik.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getRotationsStar() [1/2]

std::vector< Eigen::Matrix3d > FullBandStructure::getRotationsStar ( StateIndex isIndex)
overridevirtual

any band at an irreducible point), find the list of rotations to reconstruct the equivalent points.

Parameters
isIndexIndex of the irreducible Bloch State. This index is a number between 0 and numStates.
Returns
rotations: a vector with the rotations used to reconstruct the symmetry-equivalent Bloch states.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getRotationsStar() [2/2]

std::vector< Eigen::Matrix3d > FullBandStructure::getRotationsStar ( WavevectorIndex ikIndex)
overridevirtual
Parameters
ikIndexIndex of the irreducible wavevector. This index is a number between 0 and N_k_reducible.
Returns
rotations: a vector with the rotations used to reconstruct the symmetry-equivalent Bloch states.

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getRotationToIrreducible()

std::tuple< int, Eigen::Matrix3d > FullBandStructure::getRotationToIrreducible ( const Eigen::Vector3d &  x,
const int &  basis = Points::crystalCoordinates 
)
overridevirtual
Parameters
xpoint coordinates
basiseither Points::crystalCoordinates or Points::cartesianCoordinates, this will treat x in the appropriate coordinate. Also the returned rotation will be in the corresponding basis.
Returns
<ik,rot>: a tuple with the index of the irreducible point and the rotation matrix connecting the irreducible and reducible point.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getVelocities()

Eigen::Tensor< std::complex< double >, 3 > FullBandStructure::getVelocities ( WavevectorIndex ik)
overridevirtual

Used for accessing the band structure in the BTE.

Parameters
wavevectorIndexa WavevectorIndex(ik) object where 'ik' is an integer index running over the wavevectors in range [0,numPoints-1]
Returns
velocity: a tensor (numBands,numBands,3) with the velocity operator matrix elements, in cartesian basis and in atomic rydberg units.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ getWavevector() [1/2]

Eigen::Vector3d FullBandStructure::getWavevector ( StateIndex is)
overridevirtual
Parameters
stateIndexa StateIndex(is) object where 'is' is an integer index in range [0,numStates-1].
Returns
wavevector: a 3d vector with the wavevector in cartesian coordinates in units of Bohr^-1.

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getWavevector() [2/2]

Eigen::Vector3d FullBandStructure::getWavevector ( WavevectorIndex ik)
overridevirtual
Parameters
wavevectorIndexa WavevectorIndex(ik) object where 'ik' is an integer index in range [0,numPoints-1].
Returns
wavevector: a 3d vector with the wavevector in cartesian coordinates in units of Bohr^-1.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ hasWindow()

int FullBandStructure::hasWindow ( )
overridevirtual
Returns
windowMethod: one of the values of Window::filterMethod. 0 for no filter.

Implements BaseBandStructure.

◆ irrPointsIterator()

std::vector< int > FullBandStructure::irrPointsIterator ( )
overridevirtual

The iterator is serial, not parallelized with MPI.

Returns
k-indices: a std::vector<int> with the indices of the irreducible points.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ irrStateIterator()

std::vector< int > FullBandStructure::irrStateIterator ( )
overridevirtual
Returns
State-indices: a vector<int> with the indices over Bloch states stored in the band structure

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallelIrrPointsIterator()

std::vector< int > FullBandStructure::parallelIrrPointsIterator ( )
overridevirtual

The iterator is parallelized over MPI processes.

Returns
k-indices: a std::vector<int> with the indices of the irreducible points.

Implements BaseBandStructure.

Here is the call graph for this function:

◆ parallelIrrStateIterator()

std::vector< int > FullBandStructure::parallelIrrStateIterator ( )
overridevirtual
Returns
State-indices: a vector<int> with the indices over Bloch states stored in the band structure

Implements BaseBandStructure.

Here is the call graph for this function:

◆ setEigenvectors()

void FullBandStructure::setEigenvectors ( Point point,
Eigen::MatrixXcd &  eigenvectors_ 
)
overridevirtual

Note that in this case, eigenvectors are passed as a matrix, which is the case e.g. for the Wannier interpolation, where the eigenvectors represent the unitary transformation matrix U for Wannier localization.

Parameters
pointa Point object with the coordinates of the wavevector, which should come from the same Point class stored in FullBandStructure
eigenvectorsa complex matrix of size (numBands,numBands)

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setEnergies() [1/2]

void FullBandStructure::setEnergies ( Eigen::Vector3d &  point,
Eigen::VectorXd &  energies_ 
)
Parameters
pointa vector of 3 crystal coordinates. The method will look for the wavevector index.
energiesa vector of size (numBands) with the quasiparticle energies
Here is the call graph for this function:

◆ setEnergies() [2/2]

void FullBandStructure::setEnergies ( Point point,
Eigen::VectorXd &  energies_ 
)
overridevirtual
Parameters
pointa point object, which also provides the wavevector index.
energiesa vector of size (numBands) with the quasiparticle energies

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setVelocities()

void FullBandStructure::setVelocities ( Point point,
Eigen::Tensor< std::complex< double >, 3 > &  velocities_ 
)
overridevirtual
Parameters
pointa Point object representing the wavevector where these velocities have been computed.
velocitiesa rank-3 tensor of size (numBands,numBands,3) containing the matrix elements of the velocity operator. Diagonal elements are the quasiparticle group velocities.

Implements BaseBandStructure.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stateToBte()

BteIndex FullBandStructure::stateToBte ( StateIndex isIndex)
overridevirtual

If a state is not mapped to the VectorBTE, throws an error.

Parameters
StateIndexthe index of the Bloch state in the band structure.
Returns
BteIndex: index of the Bloch state in the BTE

Implements BaseBandStructure.

Here is the call graph for this function: