NESSi  v1.0.2
The NonEquilibrium Systems Simulation Library

◆ green_equilibrium_mat()

template<typename T , class dos_function >
void cntr::green_equilibrium_mat ( herm_matrix< T > &  G,
dos_function &  dos,
double  beta,
int  limit = 100,
int  nn = 20,
double  mu = 0.0 
)

Definition at line 438 of file cntr_equilibrium_impl.hpp.

References cntr::dos_wrapper< dos >::beta_, fourier::adft_func::dft(), cntr::dos_wrapper< dos >::mu_, cntr::herm_matrix< T >::ntau(), fourier::adft_func::sample(), cntr::herm_matrix< T >::sig(), cntr::herm_matrix< T >::size1(), cntr::dos_wrapper< dos >::tau_, and cntr::dos_wrapper< dos >::x_.

Referenced by green_equilibrium(), and green_equilibrium_mat_bethe().

439 {
440  typedef std::complex<double> cplx;
441  int ntau=G.ntau(),m,size1=G.size1();
442  int sign=G.sig();
443  double dtau;
444  cplx res,err;
445  fourier::adft_func adft;
446  dos_wrapper<dos_function> dos1(dos,sign,mu);
447  dos1.beta_=beta;
448  dtau=beta/ntau;
449  dos1.mu_=mu;
450  dos1.x_=mat;
451  for(m=0;m<=ntau;m++){
452  dos1.tau_=m*dtau;
453  adft.sample(0.0,dos.lo_,dos.hi_,dos1,nn,limit);
454  adft.dft(0.0,res,err);
455  element_set<T,LARGESIZE>(size1,G.matptr(m),(std::complex<T>)(res));
456  }
457 }
Class adft_func contains functions for computing accurate Fourier transforms by adaptive splitting o...
Definition: fourier.hpp:42
std::complex< double > cplx
Definition: fourier.cpp:11
void sample(double w, double a, double b, function &fz, int n, int limit)
Fourier samples the given function to determine the individual intervals.
Definition: fourier.hpp:366
void dft(double w, cplx &result, cplx &err)
Computes the cubically corrected DFT.
Definition: fourier.hpp:317
+ Here is the call graph for this function:
+ Here is the caller graph for this function: