1 #ifndef COUPLED_SCATTERING_MATRIX_H
2 #define COUPLED_SCATTERING_MATRIX_H
4 #include "electron_h0_wannier.h"
6 #include "base_el_scattering_matrix.h"
7 #include "base_ph_scattering_matrix.h"
8 #include "coupled_vector_bte.h"
81 void builder(std::shared_ptr<VectorBTE> linewidth,
82 std::vector<VectorBTE> &inPopulations,
83 std::vector<VectorBTE> &outPopulations);
102 std::vector<std::vector<std::tuple<std::vector<int>,
int>>>
112 std::vector<VectorBTE> &inPopulations,
113 std::vector<VectorBTE> &outPopulations,
114 std::vector<std::tuple<std::vector<int>,
int>> qPairIterator,
115 Eigen::MatrixXd &innerBose, Eigen::MatrixXd &outerBose,
123 std::vector<VectorBTE> &inPopulations,
124 std::vector<VectorBTE> &outPopulations,
125 std::vector<std::tuple<std::vector<int>,
int>> qPairIterator,
126 Eigen::MatrixXd &innerBose, Eigen::MatrixXd &outerBose,
132 std::vector<VectorBTE> &inPopulations,
133 std::vector<VectorBTE> &outPopulations,
138 std::shared_ptr<VectorBTE> linewidth);
141 std::vector<VectorBTE> &inPopulations,
142 std::vector<VectorBTE> &outPopulations,
143 std::vector<std::tuple<std::vector<int>,
int>> kPairIterator,
144 Eigen::MatrixXd &innerFermi, Eigen::MatrixXd &outerBose,
152 std::vector<VectorBTE> &inPopulations,
153 std::vector<VectorBTE> &outPopulations,
154 std::vector<std::tuple<std::vector<int>,
int>> kPairIterator,
157 std::shared_ptr<VectorBTE> linewidth);
160 std::vector<std::tuple<std::vector<int>,
int>> kqPairIterator,
161 const int& dragTermType,
Base class for describing objects containing the band structure, i.e.
Definition: bandstructure.h:15
class representing the electron scattering matrix.
Definition: base_el_scattering_matrix.h:14
class representing the phonon scattering matrix.
Definition: base_ph_scattering_matrix.h:16
Class containing the user input variables.
Definition: context.h:15
class representing the combined scattering matrix.
Definition: coupled_scattering_matrix.h:21
void builder(std::shared_ptr< VectorBTE > linewidth, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations)
Method that actually computes the scattering matrix.
Definition: coupled_scattering_matrix.cpp:98
friend 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 dengene...
CoupledScatteringMatrix(Context &context_, StatisticsSweep &statisticsSweep_, BaseBandStructure &innerBandStructure_, BaseBandStructure &outerBandStructure_, ElectronH0Wannier *electronH0_=nullptr, PhononH0 *phononH0_=nullptr)
Default constructor.
Definition: coupled_scattering_matrix.cpp:16
void phononOnlyA2Omega()
convert the phonon part of the coupled scattering matrix to Omega format.
Definition: coupled_scattering_matrix.cpp:394
BaseBandStructure * getPhBandStructure()
Outputs the quantity to a json file.
Definition: coupled_scattering_matrix.cpp:671
int bteStateToWavevector(BteIndex &iMat, BaseBandStructure &bandStructure)
A function to get the wavevector index given the index of an element of theMatrix.
Definition: coupled_scattering_matrix.cpp:462
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.
Definition: coupled_scattering_matrix.cpp:508
Class for diagonalizing electronic energies with the Wannier interpolation The object is built passin...
Definition: electron_h0_wannier.h:17
Class to calculate the probability rate for one 3-phonon scattering event.
Definition: interaction_3ph.h:47
Class to handle the coupling between electron and phonons.
Definition: interaction_elph.h:30
Class for implementing strong typing.
Definition: utilities.h:51
class that computes phonon energies, velocities and eigenvectors.
Definition: phonon_h0.h:21
Object for controlling the loop over temperatures and chemical potentials.
Definition: statistics_sweep.h:26
Class used to store the "vector" of out-of-equilibrium populations.
Definition: vector_bte.h:16