|
| | CoupledScatteringMatrix (Context &context_, StatisticsSweep &statisticsSweep_, BaseBandStructure &innerBandStructure_, BaseBandStructure &outerBandStructure_, ElectronH0Wannier *electronH0_=nullptr, PhononH0 *phononH0_=nullptr) |
| | Default constructor. More...
|
| |
| BaseBandStructure * | getPhBandStructure () |
| | Outputs the quantity to a json file. More...
|
| |
|
BaseBandStructure * | getElBandStructure () |
| |
|
| BaseElScatteringMatrix (Context &context_, StatisticsSweep &statisticsSweep_, BaseBandStructure &innerBandStructure_, BaseBandStructure &outerBandStructure_) |
| | Constructor that just calls the constructor of scattering matrix.
|
| |
| | ScatteringMatrix (Context &context_, StatisticsSweep &statisticsSweep_, BaseBandStructure &innerBandStructure_, BaseBandStructure &outerBandStructure_) |
| | Scattering matrix constructor. More...
|
| |
|
| ScatteringMatrix () |
| | Default constructor.
|
| |
| void | setup () |
| | This method needs to be called right after the constructor. More...
|
| |
| VectorBTE | diagonal () |
| | Returns the diagonal matrix elements. More...
|
| |
| double & | operator() (const int &row, const int &col) |
| | Get and set operator. More...
|
| |
|
VectorBTE | offDiagonalDot (VectorBTE &inPopulation) |
| | Computes the product A*f - diagonal(A)*f where A is the scattering matrix and f is the vector of quasiparticle populations.
|
| |
|
std::vector< VectorBTE > | offDiagonalDot (std::vector< VectorBTE > &inPopulations) |
| |
|
VectorBTE | dot (VectorBTE &inPopulation) |
| | Computes the product A*f where A is the scattering matrix and f is the vector of quasiparticle populations.
|
| |
|
std::vector< VectorBTE > | dot (std::vector< VectorBTE > &inPopulations) |
| |
| VectorBTE | getSingleModeTimes () |
| | Call to obtain the single-particle relaxation times of the systems. More...
|
| |
| VectorBTE | getLinewidths () |
| | Converts symmetrized internal scattering matrix diagonal to linewidths and returns the result. More...
|
| |
| void | setLinewidths (VectorBTE &linewidths) |
| | Call to set the single-particle linewidths. More...
|
| |
| VectorBTE | getSingleModeTimes (const VectorBTE &anyInternalDiagonal) |
| | Call to obtain the single-particle relaxation times of the systems given any internal diagonal like object – (basically, the linewidths but potentially scaled by some symmetrization factor) More...
|
| |
| VectorBTE | getLinewidths (const VectorBTE &anyInternalDiagonal) |
| | Call to obtain the single-particle linewidths. More...
|
| |
| void | a2Omega () |
| | Converts the scattering matrix from the form A to the symmetrised Omega. More...
|
| |
|
void | omega2A () |
| | The inverse of a2Omega, converts the matrix Omega to A.
|
| |
| std::tuple< Eigen::VectorXd, ParallelMatrix< double > > | diagonalize (int numEigenvalues=0) |
| | Diagonalize the scattering matrix. More...
|
| |
| int | getSMatrixIndex (BteIndex &bteIndex, CartIndex &cartIndex) |
| | Function to combine a BTE index and a cartesian index into one index of the scattering matrix. More...
|
| |
| std::tuple< BteIndex, CartIndex > | getSMatrixIndex (const int &iMat) |
| | Function to split a scattering matrix index (on rows/columns of S) into a BTE index and a cartesian index. More...
|
| |
|
void | symmetrize () |
| | Reinforce the condition that the matrix is symmetric.
|
| |
| void | relaxonsToJSON (const std::string &fileName, const Eigen::VectorXd &eigenvalues) |
| | Output relaxons scattering matrix quantities to file (particularly the tau values) Jenny's note: However, I have a feeling this should be elsewhere, as we're actually passing the eigenvalues back into this function. More...
|
| |
| std::vector< std::tuple< int, int > > | getAllLocalStates () |
| | Call the underlying PMatrix function to return the iterator of all elements of the matrix which are local. More...
|
| |
| void | outputToHDF5 (const std::string &outFileName) |
| | Outputs the matrix to an hdf5 file. More...
|
| |
|
| BasePhScatteringMatrix (Context &context_, StatisticsSweep &statisticsSweep_, BaseBandStructure &innerBandStructure_, BaseBandStructure &outerBandStructure_) |
| | Constructor that just calls the constructor of scattering matrix.
|
| |
|
| void | phononOnlyA2Omega () |
| | convert the phonon part of the coupled scattering matrix to Omega format. More...
|
| |
| void | builder (std::shared_ptr< VectorBTE > linewidth, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations) |
| | Method that actually computes the scattering matrix. More...
|
| |
| int | bteStateToWavevector (BteIndex &iMat, BaseBandStructure &bandStructure) |
| | A function to get the wavevector index given the index of an element of theMatrix. More...
|
| |
| std::vector< std::vector< std::tuple< std::vector< int >, int > > > | getIteratorWavevectorPairs (const bool &rowMajor=0) |
| | A function to generate the wavevector index pairs for which scattering rates are computed. More...
|
| |
| std::vector< std::tuple< std::vector< int >, int > > | getIteratorWavevectorPairs (const bool &rowMajor=false) |
| | Returns a vector of pairs of wavevector indices to iterate over during the construction of the scattering matrix. More...
|
| |
| void | degeneracyAveragingLinewidths (std::shared_ptr< VectorBTE > linewidth) |
| | Performs an average of the linewidths over degenerate states. More...
|
| |
| Eigen::MatrixXd | precomputeOccupations (BaseBandStructure &bandStructure) |
| | Function to precompute particle populations before scattering rates are calculated. More...
|
| |
| std::vector< int > | getExcludeIndices (BaseBandStructure &bandStructure) |
| | Method which for a phonon bandstructure returns the indices to be discarded in a phonon calculation due to very low phonon frequencies. More...
|
| |
|
void | setMatrixCase (std::shared_ptr< VectorBTE > linewidth, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations) |
| |
| void | addRateToMatrix (const Context &context, double linewidthRate, double matrixRate, int iCalc, int is1, int is2Irr, int iBte1, int iBte2, const Particle &p1, const Particle &p2, const Eigen::Matrix3d &rotation, std::shared_ptr< VectorBTE > linewidth, const std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations) |
| | Method to add scattering rate to matrix and linewidth containers. More...
|
| |
|
void | enforceDetailedBalance () |
| | A function to fix the linewidths to agree with the off diagonal elements, to enforce finding the special eigenvectors.
|
| |
|
void | replaceMatrixLinewidths () |
| | Replace the linewidths of the scatterng matrix with the supplied VectorBTE values.
|
| |
| std::tuple< BaseBandStructure *, BaseBandStructure * > | getStateBandStructures (const BteIndex &iBte1, const BteIndex &iBte2) |
| | Returns a tuple of final and initial particles for a give state. More...
|
| |
| std::tuple< int, int > | coupledToBandStructureIndices (const int &iBte1, const int &iBte2, const Particle &p1, const Particle &p2) |
| | If we have a coupled scattering matrix, we need to shift the matrix element indices back to those associated with ph and el bandstructures before accessing their quantities. More...
|
| |
| template<size_t n> |
| void | addUNRates (int iCalc, int iBte, double rate, const std::array< Point, n > &crysPoints, auto momentumConsExpr) |
| | Generic function to add UN times to their containers. More...
|
| |
|
|
void | addPhPhScattering (BasePhScatteringMatrix &matrix, Context &context, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations, std::vector< std::tuple< std::vector< int >, int >> qPairIterator, Eigen::MatrixXd &innerBose, Eigen::MatrixXd &outerBose, BaseBandStructure &innerBandStructure, BaseBandStructure &outerBandStructure, PhononH0 *phononH0, Interaction3Ph &coupling3Ph, VectorBTE *linewidth) |
| | Function to reweight the different quadrants of the matrix coupled matrix to account for spin dengeneracy.
|
| |
|
void | addIsotopeScattering (BasePhScatteringMatrix &matrix, Context &context, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations, std::vector< std::tuple< std::vector< int >, int >> qPairIterator, Eigen::MatrixXd &innerBose, Eigen::MatrixXd &outerBose, BaseBandStructure &innerBandStructure, BaseBandStructure &outerBandStructure, VectorBTE *linewidth) |
| |
|
void | addPhElScattering (BasePhScatteringMatrix &matrix, Context &context, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations, BaseBandStructure &phBandStructure, BaseBandStructure &elBandStructure, StatisticsSweep &statisticsSweep, InteractionElPhWan &couplingElPhWan, std::shared_ptr< VectorBTE > linewidth) |
| |
|
void | addElPhScattering (BaseElScatteringMatrix &matrix, Context &context, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations, std::vector< std::tuple< std::vector< int >, int >> kPairIterator, Eigen::MatrixXd &innerFermi, Eigen::MatrixXd &outerBose, BaseBandStructure &innerBandStructure, BaseBandStructure &outerBandStructure, PhononH0 &phononH0, InteractionElPhWan &couplingElPhWan, VectorBTE *linewidth) |
| |
|
void | addChargedImpurityScattering (BaseElScatteringMatrix &matrix, Context &context, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations, std::vector< std::tuple< std::vector< int >, int >> kPairIterator, BaseBandStructure &innerBandStructure, BaseBandStructure &outerBandStructure, std::shared_ptr< VectorBTE > linewidth) |
| |
|
void | addDragTerm (CoupledScatteringMatrix &matrix, Context &context, std::vector< std::tuple< std::vector< int >, int >> kqPairIterator, const int &dragTermType, InteractionElPhWan &couplingElPhWan, BaseBandStructure &innerBandStructure, BaseBandStructure &outerBandStructure) |
| |
|
void | phononElectronAcousticSumRule (CoupledScatteringMatrix &matrix, Context &context, BaseBandStructure &elBandStructure, BaseBandStructure &phBandStructure) |
| |
This class contains the logic to compute the combined scattering matrix. For a coupled BTE solve. The parent class ScatteringMatrix instead contains the logic for managing the operations with distribution vectors.
electron-self | electron-drag
phonon-drag | phonon-self