|
|
| BasePhScatteringMatrix (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...
|
| |
|
| 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, std::shared_ptr< VectorBTE > linewidth) |
| |
|
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, std::shared_ptr< 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) |
| |
|
| static void | symmetrizeCoupling (Eigen::Tensor< double, 3 > &coupling, const Eigen::VectorXd &energies1, const Eigen::VectorXd &energies2, const Eigen::VectorXd &energies3) |
| | Average the coupling for degenerate states. More...
|
| |
| virtual void | builder (std::shared_ptr< VectorBTE > linewidth, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations)=0 |
| | Method that actually computes the scattering matrix. 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...
|
| |
|
Context & | context |
| |
|
StatisticsSweep & | statisticsSweep |
| |
|
BaseBandStructure & | innerBandStructure |
| |
|
BaseBandStructure & | outerBandStructure |
| |
|
enum MatrixCase | matrixCase |
| |
|
bool | constantRTA = false |
| |
|
bool | highMemory = true |
| |
|
bool | outputUNTimes = false |
| |
|
double | boundaryLength |
| |
|
bool | doBoundary |
| |
|
bool | isMatrixOmega = false |
| |
|
bool | isCoupled = false |
| |
| std::function< std::tuple< long, long >long, long, const Particle &, const Particle &)> | shiftToCoupledIndices |
| |
|
std::shared_ptr< VectorBTE > | internalDiagonal |
| |
|
std::shared_ptr< VectorBTE > | internalDiagonalUmklapp |
| |
|
std::shared_ptr< VectorBTE > | internalDiagonalNormal |
| |
|
ParallelMatrix< double > | theMatrix |
| |
|
int | numStates |
| |
|
int | numCalculations |
| |
|
int | dimensionality_ |
| |
|
int | numElStates = 0 |
| |
|
std::vector< int > | excludeIndices |
| |
This class contains the logic to compute the phonon scattering matrix. The parent class ScatteringMatrix instead contains the logic for managing the operations with phonon distribution vectors.