Phoebe developer's documentation  1.1.0
Phonon and Electron Boltzmann Equations
base_el_scattering_matrix.h
1 #ifndef BASE_EL_SCATTERING_MATRIX_H
2 #define BASE_EL_SCATTERING_MATRIX_H
3 
4 #include "phonon_h0.h"
5 #include "interaction_elph.h"
6 #include "electron_h0_wannier.h"
7 #include "scattering_matrix.h"
8 #include "vector_bte.h"
9 
14 class BaseElScatteringMatrix : virtual public ScatteringMatrix {
15  public:
16 
19  StatisticsSweep &statisticsSweep_,
20  BaseBandStructure &innerBandStructure_,
21  BaseBandStructure &outerBandStructure_);
22 
23  protected:
24 
25  std::shared_ptr<VectorBTE> linewidthMR;
26 
27  // friend functions for adding scattering rates,
28  // these live in el_scattering.cpp. See el_scattering header file for more info.
29  friend void addElPhScattering(BaseElScatteringMatrix &matrix, Context &context,
30  std::vector<VectorBTE> &inPopulations,
31  std::vector<VectorBTE> &outPopulations,
32  std::vector<std::tuple<std::vector<int>, int>> kPairIterator,
33  Eigen::MatrixXd &innerFermi, //Eigen::MatrixXd &outerBose,
34  BaseBandStructure &innerBandStructure,
35  BaseBandStructure &outerBandStructure,
36  PhononH0 &phononH0,
37  InteractionElPhWan& couplingElPhWan,
38  std::shared_ptr<VectorBTE> linewidth);
39 
40  friend void addChargedImpurityScattering(BaseElScatteringMatrix &matrix, Context &context,
41  std::vector<VectorBTE> &inPopulations,
42  std::vector<VectorBTE> &outPopulations,
43  std::vector<std::tuple<std::vector<int>, int>> kPairIterator,
44  BaseBandStructure &innerBandStructure,
45  BaseBandStructure &outerBandStructure,
46  std::shared_ptr<VectorBTE> linewidth);
47 
48  friend void add_eeDMFT(BaseElScatteringMatrix &matrix, const Context &context,
49  //std::vector<VectorBTE> &inPopulations,
50  //std::vector<VectorBTE> &outPopulations,
51  BaseBandStructure &outerBandStructure,
52  std::shared_ptr<VectorBTE> linewidth);
53 
54 };
55 
56 #endif
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
BaseElScatteringMatrix(Context &context_, StatisticsSweep &statisticsSweep_, BaseBandStructure &innerBandStructure_, BaseBandStructure &outerBandStructure_)
Constructor that just calls the constructor of scattering matrix.
Definition: base_el_scattering_matrix.cpp:3
Class containing the user input variables.
Definition: context.h:15
Class to handle the coupling between electron and phonons.
Definition: interaction_elph.h:30
class that computes phonon energies, velocities and eigenvectors.
Definition: phonon_h0.h:21
Base class of the scattering matrix.
Definition: scattering_matrix.h:22
Object for controlling the loop over temperatures and chemical potentials.
Definition: statistics_sweep.h:26