NESSi  v1.0.2
The NonEquilibrium Systems Simulation Library
cntr_equilibrium_decl.hpp
Go to the documentation of this file.
1 #ifndef CNTR_EQUILIBRIUM_DECL_H
2 #define CNTR_EQUILIBRIUM_DECL_H
3 
5 
6 namespace cntr {
7 
8  template <typename T> class function;
9  template <typename T> class herm_matrix;
10  template <typename T> class herm_matrix_timestep;
11  template <typename T> class herm_pseudo;
12 
13  /*###########################################################################################
14  #
15  # COMPUTATION OF EQUILIBRIUM GREEN FUNCTIONS FROM DOS
16  # (for size1>1, G is set to be a diagobal matrix)
17  # dome predefined DOS, otherwise:
18  # dos must have an operator (omega) (the value) and functions lo() (lower
19  cutoff)
20  # and hi() (upper cutoff)
21  #
22  ###########################################################################################*/
23  template <typename T>
24  T fermi(T beta, T omega);
26  template <typename T>
27  T fermi_exp(T beta, T tau, T omega);
28 
29  template<typename T>
30  dvector fermi(T beta,dvector &omega);
32  template<typename T>
33  dvector fermi_exp(T beta,T tau,dvector &omega);
34 
36  template<typename T>
37  cdmatrix diag_prop(T time,dvector &omega);
38 
39 
40  // BETHE DOS, bandwidh 4
41  template <typename T>
42  void green_equilibrium_mat_bethe(herm_matrix<T> &G, double beta,
43  int limit = 100, int nn = 20,double mu=0.0);
44  template <typename T>
45  void green_equilibrium_bethe(herm_matrix<T> &G, double beta, double h,
46  int limit = 100, int nn = 20,double mu=0.0);
47  // user-defined DOS
48  template <typename T, class dos_function>
49  void green_equilibrium_mat(herm_matrix<T> &G, dos_function &dos, double beta,
50  int limit = 100, int nn = 20,double mu=0.0);
51 
53  template <typename T, class dos_function>
54  void green_equilibrium(herm_matrix<T> &G, dos_function &dos, double beta,
55  double h, int limit = 100, int nn = 20, double mu=0.0);
56 
57  template <typename T, class dos_function>
58  void green_equilibrium(herm_matrix<T> &G, dos_function &dos, double beta,
59  double h, double mu=0.0, int limit = 100, int nn = 20);
60 
61  // other "simple" Greenfunctions: [idt + mu - H(t)]^{-1} and [idt + mu -
62  // H0]^{-1} etc
63  // template <typename T>
64  // void green_transform(herm_matrix<T> &G0, herm_matrix<T> &G1,
65  // std::complex<T> *u01_0, std::complex<T> *u01_t);
66  // template <typename T>
67  // void green_transform(herm_matrix<T> &G0, herm_matrix<T> &G1,
68  // std::complex<T> *u01_0);
69 
70  //template <typename T>
71  //void green_from_eps(herm_matrix<T> &G, T mu, T *eps, T beta, T h);
72  template <typename T>
73  void green_from_H(herm_matrix<T> &G,T mu,cdmatrix &eps,T beta,T h);
74  template <typename T>
75  void green_from_H(int tstp, herm_matrix_timestep<T> &G,T mu,cdmatrix &eps,T beta,T h);
76  template <typename T>
77  void green_from_H(int tstp, herm_matrix<T> &G,T mu,cdmatrix &eps,T beta,T h);
78  template <typename T>
80  T beta,T h,int SolveOrder=MAX_SOLVE_ORDER,int cf_order=4);
81  template <typename T>
82  void green_from_H(int tstp, herm_matrix_timestep<T> &G,T mu,cntr::function<T> &eps,
83  T beta,T h,bool fixHam=false,int SolveOrder=MAX_SOLVE_ORDER,int cf_order=4);
84  template <typename T>
85  void green_from_H(int tstp, herm_matrix<T> &G,T mu,cntr::function<T> &eps,
86  T beta,T h,bool fixHam=false,int SolveOrder=MAX_SOLVE_ORDER,int cf_order=4);
87 
89  template <typename T>
90  void green_from_H(herm_matrix_timestep<T> &G,T mu,cdmatrix &eps,T beta,T h);
92  template <typename T>
94  T beta,T h,bool fixHam=false,int SolveOrder=MAX_SOLVE_ORDER,int cf_order=4);
96  template <typename T>
98  T beta,T h,bool fixHam=false,int SolveOrder=MAX_SOLVE_ORDER,int cf_order=4);
99 
100  // simple bosonic GF
101 
102  // BOSONIC GREENS FUNCTION:
103  // G(t,t') = - ii * <TC b(t) bdag(t') >, with H = w * b^dag b
104  //template <typename T>
105  //void green_single_pole_bose(herm_matrix<T> &G, T *w, T beta, T h);
106  // G(t,t') = - ii * <TC X(t) X(t') > *in equilibrium*
107  template <typename T>
108  void green_single_pole_XX_timestep(int tstp, herm_matrix_timestep<T> &D0, T w, T beta,
109  T h);
111  template <typename T>
112  void green_single_pole_XX_timestep(int tstp, herm_matrix<T> &D0, T w, T beta,
113  T h);
115  template <typename T>
116  void green_single_pole_XX(herm_matrix<T> &D0, T w, T beta, T h);
117 
119  template <typename T>
121  T h);
122 
123 } // namespace cntr
124 
125 #endif // CNTR_EQUILIBRIUM_DECL_H
void green_from_H(herm_matrix< T > &G, T mu, cdmatrix &eps, T beta, T h)
Propagator for time-independent free Hamiltonian
Class herm_matrix_timestep deals with contour objects at a particular timestep .
void green_equilibrium_mat(herm_matrix< T > &G, dos_function &dos, double beta, int limit=100, int nn=20, double mu=0.0)
void green_single_pole_XX_timestep(int tstp, herm_matrix_timestep< T > &D0, T w, T beta, T h)
void green_equilibrium_mat_bethe(herm_matrix< T > &G, double beta, int limit=100, int nn=20, double mu=0.0)
Equilibrium propagator for Bethe semicircular density of states. Matsubara only. ...
void green_equilibrium_bethe(herm_matrix< T > &G, double beta, double h, int limit=100, int nn=20, double mu=0.0)
Equilibrium propagator for Bethe semicircular density of states
Class function for objects with time on real axis.
void green_equilibrium(herm_matrix< T > &G, dos_function &dos, double beta, double h, double mu=0.0, int limit=100, int nn=20)
Equilibrium propagator for the given density of states
Class herm_matrix for two-time contour objects with hermitian symmetry.
T fermi(T beta, T omega)
Evaluates the Fermi distribution function.