1 #ifndef CNTR_CONVOLUTION_DECL_H 2 #define CNTR_CONVOLUTION_DECL_H 22 template <
typename T,
class GG>
25 template <
typename T,
class GG>
63 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
66 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
70 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
75 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
82 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
89 template <
typename T,
class GG>
94 template <
typename T,
class GG>
98 template <
typename T,
class GG>
102 template <
typename T,
class GG>
106 template <
typename T,
class GG>
110 template <
typename T,
class GG>
111 void convolution_les_timediag(
int tstp, cdmatrix &Cles, GG &A, GG &B,
115 template <
typename T,
class GG>
118 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
119 template <
typename T,
class GG>
121 GG &B, T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
122 template <
typename T,
class GG>
124 GG &Bcc, T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
125 template <
typename T,
class GG>
127 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
130 template <
typename T,
class GG>
131 void convolution_matsubara(GG &C, GG &A, std::complex<T> *f0, GG &B,
134 template <
typename T,
class GG,
int SIZE1>
135 void convolution_timestep_ret(
int n, GG &C, GG &A, GG &Acc, std::complex<T> *ft, GG &B,
138 template <
typename T,
class GG,
int SIZE1>
139 void convolution_timestep_tv(
int n, std::complex<T> *ctv, GG &C, GG &A, GG &Acc, GG &B,
142 template <
typename T,
class GG,
int SIZE1>
143 void convolution_timestep_tv(
int n, GG &C, GG &A, GG &Acc, GG &B, GG &Bcc,
146 template <
typename T,
class GG,
int SIZE1>
147 void convolution_timestep_tv(
int n, std::complex<T> *ctv, GG &C, GG &A, GG &Acc,
148 std::complex<T> *f0, std::complex<T> *ft, GG &B, GG &Bcc,
151 template <
typename T,
class GG,
int SIZE1>
152 void convolution_timestep_tv(
int n, GG &C, GG &A, GG &Acc, std::complex<T> *f0,
153 std::complex<T> *ft, GG &B, GG &Bcc,
156 template <
typename T,
class GG,
int SIZE1>
157 void convolution_timestep_les_tvvt(
int n,
int j1,
int j2, std::complex<T> *cles, GG &C,
158 GG &A, GG &Acc, GG &B, GG &Bcc,
161 template <
typename T,
class GG,
int SIZE1>
162 void convolution_timestep_les_tvvt(
int n, std::complex<T> *cles, GG &C, GG &A, GG &Acc,
166 template <
typename T,
class GG,
int SIZE1>
167 void convolution_timestep_les_tvvt(
int n, std::complex<T> *cles, GG &C, GG &A, GG &Acc,
168 std::complex<T> *f0, GG &B, GG &Bcc,
171 template <
typename T,
class GG,
int SIZE1>
172 void convolution_timestep_les_lesadv(
int n,
int j1,
int j2, std::complex<T> *cles, GG &C,
173 GG &A, GG &Acc, GG &B, GG &Bcc,
176 template <
typename T,
class GG,
int SIZE1>
177 void convolution_timestep_les_lesadv(
int n, std::complex<T> *cles, GG &C, GG &A, GG &Acc,
181 template <
typename T,
class GG,
int SIZE1>
182 void convolution_timestep_les_lesadv(
int n, std::complex<T> *cles, GG &C, GG &A, GG &Acc,
183 std::complex<T> *ft, GG &B, GG &Bcc,
186 template <
typename T,
class GG,
int SIZE1 >
187 void convolution_timestep_les_retles(
int n,std::complex<T> *cles,GG &C,GG &A, GG &Acc,
190 template <
typename T,
class GG,
int SIZE1>
191 void convolution_timestep_les(
int n, GG &C, GG &A, GG &Acc, std::complex<T> *f0,
192 std::complex<T> *ft, GG &B, GG &Bcc,
195 template <
typename T>
200 template <
typename T>
205 template <
typename T>
211 template <
typename T>
216 template <
typename T>
220 template <
typename T>
226 template <
typename T,
class GG,
int SIZE1>
227 void convolution_timestep_les_jn_lesadv(
int j,
int n, std::complex<T> *cc,
int sizec, GG &A,
228 GG &Acc, std::complex<T> *ft, GG &B, GG &Bcc,
231 template <
typename T,
class GG,
int SIZE1>
232 void convolution_timestep_les_jn_tvvt(
int j,
int n, std::complex<T> *cc,
int sizec, GG &A,
233 GG &Acc, std::complex<T> *f0, GG &B, GG &Bcc,
236 template <
typename T,
class GG,
int SIZE1>
237 void convolution_timestep_les_jn_retles(
int j,
int n, std::complex<T> *cc,
int sizec, GG &A,
238 GG &Acc, std::complex<T> *ft, GG &B, GG &Bcc,
241 template <
typename T,
class GG,
int SIZE1>
242 void convolution_timestep_les_jn(
int j,
int n, std::complex<T> *cc,
int sizec, GG &A,
243 GG &Acc, std::complex<T> *f0, std::complex<T> *ft, GG &B,
247 template <
typename T,
class GG>
251 template <
typename T,
class GG>
255 template <
typename T,
class GG>
259 template <
typename T,
class GG>
263 template <
typename T,
class GG>
273 template <
typename T,
int SIZE1>
274 void matsubara_integral_1(
int size1,
int m,
int ntau, std::complex<T> *C, std::complex<T> *A,
277 template <
typename T,
int SIZE1>
278 void matsubara_integral_1_1(
int size1,
int m,
int ntau, std::complex<T> *C,
279 std::complex<T> *A, std::complex<T> *B,
282 template <
typename T,
int SIZE1>
283 void matsubara_integral_2(
int size1,
int m,
int ntau, std::complex<T> *C, std::complex<T> *A,
286 template <
typename T,
int SIZE1>
287 void matsubara_integral_2_2(
int size1,
int m,
int ntau, std::complex<T> *C,
288 std::complex<T> *A, std::complex<T> *B,
364 #define CPLX std::complex<T> 366 #if CNTR_USE_OMP == 1 367 template <
typename T,
class GG,
int SIZE1>
369 void incr_convolution_omp(
int omp_num_threads,
int tstp, CPLX alpha, GG &C, GG &A, GG &Acc,
373 template <
typename T>
379 template <
typename T>
384 template <
typename T>
388 template <
typename T>
393 template <
typename T>
398 template <
typename T>
404 template <
typename T>
409 template <
typename T>
415 template <
typename T>
419 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
420 template <
typename T>
423 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
425 template <
typename T>
428 herm_matrix<T> &Bcc, T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
429 template <
typename T>
433 T h,
int SolveOrder=MAX_SOLVE_ORDER);
434 template <
typename T>
437 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
438 template <
typename T>
441 T beta, T h,
int SolveOrder=MAX_SOLVE_ORDER);
446 #endif // CNTR_USE_OMP 450 #endif // CNTR_CONVOLUTION_DECL_H Class Integrator contains all kinds of weights for integration and differentiation of a function at ...
Integrator< T > & I(int k)
Class function for objects with time on real axis.
void convolution_omp(int omp_num_threads, herm_matrix< T > &C, herm_matrix< T > &A, herm_matrix< T > &Acc, herm_matrix< T > &B, herm_matrix< T > &Bcc, T beta, T h, int SolveOrder=MAX_SOLVE_ORDER)
Returns convolution for all timesteps.
void convolution_timestep_omp(int omp_num_threads, int tstp, herm_matrix< T > &C, herm_matrix< T > &A, herm_matrix< T > &B, T beta, T h, int SolveOrder=MAX_SOLVE_ORDER)
Returns convolution at a given time step.
Class herm_matrix for two-time contour objects with hermitian symmetry.
void convolution_density_matrix(int tstp, cdmatrix &rho, GG &A, GG &B, T beta, T h, int SolveOrder=MAX_SOLVE_ORDER)
Returns the result of the contour convolution for a density matrix