Phoebe developer's documentation  1.1.0
Phonon and Electron Boltzmann Equations
phel_scattering_matrix.h
1 #ifndef PHEL_SCATTERING_MATRIX_H
2 #define PHEL_SCATTERING_MATRIX_H
3 
4 #include "electron_h0_wannier.h"
5 #include "phonon_h0.h"
6 #include "base_ph_scattering_matrix.h"
7 #include "vector_bte.h"
8 #include "interaction_elph.h"
9 
10 // TODO realistically this should be just absorbed
11 // as a diagonal only case for ph scattering matrix!
17 public:
18 
33  PhElScatteringMatrix(Context &context_, StatisticsSweep &statisticsSweep_,
34  BaseBandStructure &phBandStructure_,
35  PhononH0 *phononH0_,
36  ElectronH0Wannier *electronH0_);
37 
42 
49 
50 protected:
51 
52  PhononH0* phononH0;
53  ElectronH0Wannier *electronH0;
54 
55  void builder(std::shared_ptr<VectorBTE> linewidth, std::vector<VectorBTE> &inPopulations,
56  std::vector<VectorBTE> &outPopulations) override;
57 
58  // to prevent mistakes in which these two outer and inner BS could
59  // be accidentally swapped
60  BaseBandStructure& getPhBandStructure() { return outerBandStructure; };
61  BaseBandStructure& getElBandStructure() { return innerBandStructure; };
62 
63  friend void addPhElScattering(BasePhScatteringMatrix &matrix, Context &context,
64  std::vector<VectorBTE> &inPopulations,
65  std::vector<VectorBTE> &outPopulations,
66  BaseBandStructure &phBandStructure,
67  BaseBandStructure &elBandStructure,
68  StatisticsSweep& statisticsSweep,
69  InteractionElPhWan &couplingElPhWan,
70  std::shared_ptr<VectorBTE> linewidth);
71 
72 };
73 
74 #endif
Base class for describing objects containing the band structure, i.e.
Definition: bandstructure.h:15
class representing the phonon scattering matrix.
Definition: base_ph_scattering_matrix.h:16
Class containing the user input variables.
Definition: context.h:15
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
This class describes the construction of the electron scattering matrix.
Definition: phel_scattering_matrix.h:16
PhElScatteringMatrix & operator=(const PhElScatteringMatrix &that)
Copy assignment.
void builder(std::shared_ptr< VectorBTE > linewidth, std::vector< VectorBTE > &inPopulations, std::vector< VectorBTE > &outPopulations) override
Method that actually computes the scattering matrix.
Definition: phel_scattering_matrix.cpp:34
PhElScatteringMatrix(const PhElScatteringMatrix &that)
Copy constructor.
PhElScatteringMatrix(Context &context_, StatisticsSweep &statisticsSweep_, BaseBandStructure &phBandStructure_, PhononH0 *phononH0_, ElectronH0Wannier *electronH0_)
Default constructor.
Definition: phel_scattering_matrix.cpp:16
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