Base class for describing objects containing the band structure, i.e. More...
#include <bandstructure.h>

Public Member Functions | |
| virtual | ~BaseBandStructure ()=default |
| Base destructor for bandstructure class, silences warnings. | |
| virtual Particle | getParticle ()=0 |
| Get the Particle object associated with this class. More... | |
| virtual Points | getPoints ()=0 |
| Returns the wavevectors on which the band structure is computed. More... | |
| virtual Point | getPoint (const int &pointIndex)=0 |
| Returns a wavevector, given a wavevector index. More... | |
| virtual int | getNumPoints (const bool &useFullGrid=false)=0 |
| Returns the total number of k/q-points. More... | |
| virtual int | getNumBands ()=0 |
| Returns the number of bands. More... | |
| virtual int | getFullNumBands ()=0 |
| virtual int | getNumBands (WavevectorIndex &ik)=0 |
| Returns the number of bands. More... | |
| virtual int | hasWindow ()=0 |
| Checks whether the bandStructure has been built discarding some Bloch states from those available. More... | |
| virtual bool | getIsDistributed ()=0 |
| Returns the boolean determining if this band structure is distributed or not. | |
| virtual size_t | getIndex (const WavevectorIndex &ik, const BandIndex &ib)=0 |
| Builds a Bloch state index, which combines both wavevector index and band index. More... | |
| virtual std::tuple< WavevectorIndex, BandIndex > | getIndex (const int &is)=0 |
| Given a Bloch state index, finds the corresponding wavevector and band index. More... | |
| virtual std::tuple< WavevectorIndex, BandIndex > | getIndex (StateIndex &is)=0 |
| virtual int | getNumStates ()=0 |
| Returns the total number of Bloch states. More... | |
| virtual std::vector< size_t > | parallelStateIterator () |
| Returns an iterator to be used for loops over the Bloch state index. More... | |
| virtual const double & | getEnergy (StateIndex &is)=0 |
| Returns the energy of a quasiparticle from its Bloch index Used for accessing the band structure in the BTE. More... | |
| virtual Eigen::VectorXd | getEnergies (WavevectorIndex &ik)=0 |
| virtual double | getMaxEnergy ()=0 |
| Return the maximum energy of a bandstructure. More... | |
| virtual Eigen::Vector3d | getGroupVelocity (StateIndex &is)=0 |
| Returns the velocity of a quasiparticle from its Bloch index Used for accessing the band structure in the BTE. More... | |
| virtual Eigen::MatrixXd | getGroupVelocities (WavevectorIndex &ik)=0 |
| virtual Eigen::Tensor< std::complex< double >, 3 > | getVelocities (WavevectorIndex &ik)=0 |
| virtual Eigen::MatrixXcd | getEigenvectors (WavevectorIndex &ik)=0 |
| virtual Eigen::Tensor< std::complex< double >, 3 > | getPhEigenvectors (WavevectorIndex &ik)=0 |
| virtual Eigen::Vector3d | getWavevector (StateIndex &is)=0 |
| Returns the wavevector of a quasiparticle from its Bloch index Used for accessing the band structure in the BTE. More... | |
| virtual Eigen::Vector3d | getWavevector (WavevectorIndex &ik)=0 |
| virtual void | setEnergies (Point &point, Eigen::VectorXd &energies_)=0 |
| Method to save quasiparticle eigenvectors inside FullBandStructure(). More... | |
| virtual void | setEigenvectors (Point &point, Eigen::MatrixXcd &eigenvectors_)=0 |
| Method to save quasiparticle eigenvectors inside FullBandStructure(). More... | |
| virtual void | setVelocities (Point &point, Eigen::Tensor< std::complex< double >, 3 > &velocities_)=0 |
| Saves in the class the velocities computed at a particular point. More... | |
| virtual std::vector< Eigen::Matrix3d > | getRotationsStar (WavevectorIndex &ikIndex)=0 |
| Given a irreducible point index, find the list of rotations to reconstruct the equivalent points. More... | |
| virtual std::vector< Eigen::Matrix3d > | getRotationsStar (StateIndex &isIndex)=0 |
| Given an irreducible Bloch state (i.e. More... | |
| virtual std::tuple< int, Eigen::Matrix3d > | getRotationToIrreducible (const Eigen::Vector3d &x, const int &basis=Points::crystalCoordinates)=0 |
| Given a point in crystal or cartesian coordinates, returns the index of the irreducible point and the rotation such that rotation*irrPoint = redPoint. More... | |
| virtual BteIndex | stateToBte (StateIndex &isIndex)=0 |
| Utility method to convert an index over Bloch states in the band structure into a Bloch state index usable by VectorBTE. More... | |
| virtual StateIndex | bteToState (BteIndex &iBteIndex)=0 |
| Utility method to convert an index over Bloch states in a VectorBTE into the Bloch state index in the band structure. More... | |
| virtual std::vector< int > | irrStateIterator ()=0 |
| Iterator over the Bloch states in the band structure, over just the irreducible wavevectors, but isn't distributed over MPI processes. More... | |
| virtual std::vector< int > | parallelIrrStateIterator ()=0 |
| Iterator over the Bloch states in the band structure, distributed over MPI processes, running only over irreducible wavevectors. More... | |
| virtual std::vector< int > | irrPointsIterator ()=0 |
| Iterator over the irreducible points indices. More... | |
| virtual std::vector< int > | parallelIrrPointsIterator ()=0 |
| Iterator over the irreducible points indices. More... | |
| virtual int | getNumIrrStates ()=0 |
| Returns number of irr points for this band structure. | |
| virtual int | getPointIndex (const Eigen::Vector3d &crystalCoordinates, const bool &suppressError=false)=0 |
| Find the index of a point in the reducible list of points, given its coordinates in the crystal basis. More... | |
| virtual std::vector< int > | getReducibleStarFromIrreducible (const int &ik)=0 |
| Method to find the points equivalent to an irreducible point. 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... | |
the harmonic properties of a quasiparticle, as a function of wavevectors (Points).
|
pure virtual |
Unlike stateToBte, this should always have a solution.
| iBteIndex | index of the Bloch state in the BTE |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
| stateIndex | an integer index in range [0,numStates[ |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
| stateIndex | an integer index in range [0,numStates[ |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
| stateIndex | StateIndex integer from 0 to numStates - 1 = numBands*numPoints-1 |
Implemented in FullBandStructure, and ActiveBandStructure.
|
pure virtual |
It's used to view the various matrices such as energy as a 1D vector, and can be used in combination with get() methods.
| wavevectorIndex | strong-typed index on wavevector |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
Used when ph energy maximum is a cutoff for phel scattering.
Implemented in FullBandStructure, and ActiveBandStructure.
|
pure virtual |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
If the band structure is active, and there are a different number of bands at each wavevector, this function returns the number of bands at that point. If not, this defaults to the behavior of getNumBands() and just returns the number of bands. This is necessary for parts of the code where we leave an option to swap in different child band structure types.
Implemented in FullBandStructure, and ActiveBandStructure.
|
pure virtual |
| useFullGrid | default = false. If true, returns the number of points of the full monkhorst-pack grid of wavevectors, otherwise, returns the number of wavevectors stored in the BandStructure. |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
The wavevector index runs from 0 to numPoints-1
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
| crystalCoordinates | coordinates of the point in crystal basis |
| suppressError | default false. If false, will throw an error if the point is not found |
Implemented in FullBandStructure, and ActiveBandStructure.
|
pure virtual |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
| ik | index of the irreducible point, with ik running on the full list of reducible points. |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
any band at an irreducible point), find the list of rotations to reconstruct the equivalent points.
| isIndex | Index of the irreducible Bloch State. This index is a number between 0 and numStates. |
Implemented in FullBandStructure, and ActiveBandStructure.
|
pure virtual |
| ikIndex | Index of the irreducible wavevector. This index is a number between 0 and N_k_reducible. |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
| x | point coordinates |
| basis | either Points::crystalCoordinates or Points::cartesianCoordinates, this will treat x in the appropriate coordinate. Also the returned rotation will be in the corresponding basis. |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
| stateIndex | an integer index in range [0,numStates[ |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
The iterator is serial, not parallelized with MPI.
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
Implemented in FullBandStructure, and ActiveBandStructure.

| void BaseBandStructure::outputComponentsToJSON | ( | const std::string & | outFileName = "bandstructure.json" | ) |
| outFileName | : optional output file name |
| symReduced | : if the bandstructure info should be sym reduced or not |

|
pure virtual |
The iterator is parallelized over MPI processes.
Implemented in FullBandStructure, and ActiveBandStructure.

|
pure virtual |
Implemented in FullBandStructure, and ActiveBandStructure.

|
virtual |
The values of the iterator are distributed in N blocks over N MPI ranks.


| void BaseBandStructure::printBandStructureStateInfo | ( | const int & | fullNumBands | ) |
| fullNumBands | The maximum number of bands possible |


|
pure virtual |
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.
| point | a Point object with the coordinates of the wavevector, which should come from the same Point class stored in FullBandStructure |
| eigenvectors | a complex matrix of size (numBands,numBands) |
Implemented in FullBandStructure, and ActiveBandStructure.
|
pure virtual |
| point | a vector of 3 crystal coordinates. The method will look for the wavevector index. |
| energies | a vector of size (numBands) with the quasiparticle energies |
Implemented in FullBandStructure, and ActiveBandStructure.
|
pure virtual |
| point | a Point object representing the wavevector where these velocities have been computed. |
| velocities | a rank-3 tensor of size (numBands,numBands,3) containing the matrix elements of the velocity operator. Diagonal elements are the quasiparticle group velocities. |
Implemented in FullBandStructure, and ActiveBandStructure.
|
pure virtual |
If a state is not mapped to the VectorBTE, throws an error.
| StateIndex | the index of the Bloch state in the band structure. |
Implemented in FullBandStructure, and ActiveBandStructure.
