Phoebe developer's documentation  1.1.0
Phonon and Electron Boltzmann Equations
base_ph_scattering_matrix.h
1 #ifndef BASE_PH_SCATTERING_MATRIX_H
2 #define BASE_PH_SCATTERING_MATRIX_H
3 
4 #include "interaction_elph.h"
5 #include "interaction_3ph.h"
6 #include "phonon_h0.h"
7 #include "electron_h0_wannier.h"
8 #include "scattering_matrix.h"
9 #include "vector_bte.h"
10 
16 class BasePhScatteringMatrix : virtual public ScatteringMatrix {
17  public:
18 
21  StatisticsSweep &statisticsSweep_,
22  BaseBandStructure &innerBandStructure_,
23  BaseBandStructure &outerBandStructure_);
24 
25  protected:
26 
27  // friend functions for adding scattering rates,
28  // these live in ph_scattering.cpp, descriptions in ph_scattering.h
29  friend void addPhPhScattering(BasePhScatteringMatrix &matrix, Context &context,
30  std::vector<VectorBTE> &inPopulations,
31  std::vector<VectorBTE> &outPopulations,
32  std::vector<std::tuple<std::vector<int>, int>> qPairIterator,
33  Eigen::MatrixXd &innerBose, Eigen::MatrixXd &outerBose,
34  BaseBandStructure &innerBandStructure,
35  BaseBandStructure &outerBandStructure,
36  PhononH0& phononH0,
37  Interaction3Ph& coupling3Ph,
38  std::shared_ptr<VectorBTE> linewidth);
39 
40  friend void addIsotopeScattering(BasePhScatteringMatrix &matrix, Context &context,
41  std::vector<VectorBTE> &inPopulations,
42  std::vector<VectorBTE> &outPopulations,
43  std::vector<std::tuple<std::vector<int>, int>> qPairIterator,
44  Eigen::MatrixXd &innerBose, Eigen::MatrixXd &outerBose,
45  BaseBandStructure &innerBandStructure,
46  BaseBandStructure &outerBandStructure,
47  std::shared_ptr<VectorBTE> linewidth);
48 
49  friend void addPhElScattering(BasePhScatteringMatrix &matrix, Context &context,
50  std::vector<VectorBTE> &inPopulations,
51  std::vector<VectorBTE> &outPopulations,
52  BaseBandStructure &phBandStructure,
53  BaseBandStructure &elBandStructure,
54  StatisticsSweep& statisticsSweep,
55  InteractionElPhWan &couplingElPhWan,
56  std::shared_ptr<VectorBTE> linewidth);
57 };
58 
59 #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
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, std::shared_ptr< VectorBTE > linewidth)
Definition: ph_scattering.cpp:19
BasePhScatteringMatrix(Context &context_, StatisticsSweep &statisticsSweep_, BaseBandStructure &innerBandStructure_, BaseBandStructure &outerBandStructure_)
Constructor that just calls the constructor of scattering matrix.
Definition: base_ph_scattering_matrix.cpp:3
Class containing the user input variables.
Definition: context.h:15
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 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