Phoebe developer's documentation  1.1.0
Phonon and Electron Boltzmann Equations
el_scattering_matrix.h
1 #ifndef EL_SCATTERING_MATRIX_H
2 #define EL_SCATTERING_MATRIX_H
3 
4 #include "electron_h0_wannier.h"
5 #include "interaction_elph.h"
6 #include "phonon_h0.h"
7 #include "base_el_scattering_matrix.h"
8 #include "vector_bte.h"
9 
15 public:
30  ElScatteringMatrix(Context &context_, StatisticsSweep &statisticsSweep_,
31  BaseBandStructure &innerBandStructure_,
32  BaseBandStructure &outerBandStructure_, PhononH0 &h0);
33 
36 
37 protected:
38 
39  InteractionElPhWan *couplingElPhWan;
40  PhononH0 &phononH0;
41 
52  void builder(std::shared_ptr<VectorBTE> linewidth,
53  std::vector<VectorBTE> &inPopulations,
54  std::vector<VectorBTE> &outPopulations) override;
55 
56  // TODO write docstrings for these
57  // friend functions for adding scattering rates,
58  // these live in el_scattering.cpp
59 
60  friend void addElPhScattering(BaseElScatteringMatrix &matrix, Context &context,
61  std::vector<VectorBTE> &inPopulations,
62  std::vector<VectorBTE> &outPopulations,
63  std::vector<std::tuple<std::vector<int>, int>> kPairIterator,
64  Eigen::MatrixXd &innerFermi, //Eigen::MatrixXd &outerBose,
65  BaseBandStructure &innerBandStructure,
66  BaseBandStructure &outerBandStructure,
67  PhononH0 &phononH0,
68  InteractionElPhWan &couplingElPhWan,
69  std::shared_ptr<VectorBTE> linewidth);
70 
71  friend void addDragTerm(BaseElScatteringMatrix &matrix, Context &context,
72  std::vector<std::tuple<std::vector<int>, int>> kqPairIterator,
73  const int& dragTermType,
74  ElectronH0Wannier* electronH0,
75  InteractionElPhWan &couplingElPhWan,
76  BaseBandStructure &innerBandStructure,
77  BaseBandStructure &outerBandStructure,
78  std::shared_ptr<VectorBTE> linewidth);
79 
80  friend void addChargedImpurityScattering(BaseElScatteringMatrix &matrix, Context &context,
81  std::vector<VectorBTE> &inPopulations,
82  std::vector<VectorBTE> &outPopulations,
83  std::vector<std::tuple<std::vector<int>, int>> kPairIterator,
84  BaseBandStructure &innerBandStructure,
85  BaseBandStructure &outerBandStructure,
86  std::shared_ptr<VectorBTE> linewidth);
87 
88  friend void add_eeDMFT(BaseElScatteringMatrix &matrix, const Context &context,
89  //std::vector<VectorBTE> &inPopulations,
90  //std::vector<VectorBTE> &outPopulations,
91  BaseBandStructure &outerBandStructure,
92  std::shared_ptr<VectorBTE> linewidth);
93 
94 };
95 
96 #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
Class containing the user input variables.
Definition: context.h:15
This class describes the construction of the electron scattering matrix.
Definition: el_scattering_matrix.h:14
VectorBTE getSingleModeMRTimes()
Function to return the momentum relaxation times specifically.
Definition: el_scattering_matrix.cpp:162
ElScatteringMatrix(Context &context_, StatisticsSweep &statisticsSweep_, BaseBandStructure &innerBandStructure_, BaseBandStructure &outerBandStructure_, PhononH0 &h0)
Default constructor.
Definition: el_scattering_matrix.cpp:9
void builder(std::shared_ptr< VectorBTE > linewidth, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations) override
Function with the detailed calculation of the scattering matrix.
Definition: el_scattering_matrix.cpp:23
Class for diagonalizing electronic energies with the Wannier interpolation The object is built passin...
Definition: electron_h0_wannier.h:17
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
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