NESSi  v1.0.2 The NonEquilibrium Systems Simulation Library

## ◆ dyson_timestep()

template<typename T >
 void cntr::dyson_timestep ( int n, herm_matrix< T > & G, T mu, function< T > & H, herm_matrix< T > & Sigma, T beta, T h, const int SolveOrder )

One step Dyson solver (integral-differential form) for a Green's function $$G$$

Purpose

One solves the Dyson equation of the following form: $$[ id/dt + \mu - H(t) ] G(t,t^\prime) - [\Sigma*G](t,t^\prime) = \delta(t,t^\prime)$$ for a hermitian matrix $$G(t, t^\prime)$$ at a given timestep 'n', i.e., G^ret(nh,t'<=nh), G^les(t<=nh,nh), G^tv(nt,tau=0..beta). Timestep must be >k, where k is the Integration order 'I'. The timesteps n=0..k must be computed seperately, using the routine "_start", which assumes that the Matsubara component of $$G$$ and $$\Sigma(t,t^\prime)$$ for $$t,t^\prime$$<=k are given. Here, are given: $$\Sigma(t, t^\prime)$$, $$\mu$$, and $$H(t)$$.

Parameters
 n [int] time step &G [herm_matrix] solution mu [T] chemical potential &H [function] time-dependent function &Sigma [herm_matrix] self-energy beta [double] inverse temperature h [double] time interval SolveOrder [int] integrator order

Definition at line 1618 of file cntr_dyson_impl.hpp.

1619  {
1620  int size1 = G.size1();
1621  assert(G.size1() == Sigma.size1());
1622  assert(G.ntau() == Sigma.ntau());
1623  assert(G.nt() >= n);
1624  assert(Sigma.nt() >= n);
1625  assert(n > SolveOrder);
1626  if (size1 == 1) {
1627  dyson_timestep_ret<T, herm_matrix<T>, 1>(n, G, mu, H.ptr(0), Sigma, integration::I<T>(SolveOrder), h);
1628  dyson_timestep_tv<T, herm_matrix<T>, 1>(n, G, mu, H.ptr(n), Sigma, integration::I<T>(SolveOrder), beta, h);
1629  dyson_timestep_les<T, herm_matrix<T>, 1>(n, G, mu, H.ptr(0), Sigma, integration::I<T>(SolveOrder), beta, h);
1630  } else {
1631  dyson_timestep_ret<T, herm_matrix<T>, LARGESIZE>(n, G, mu, H.ptr(0), Sigma, integration::I<T>(SolveOrder), h);
1632  dyson_timestep_tv<T, herm_matrix<T>, LARGESIZE>(n, G, mu, H.ptr(n), Sigma, integration::I<T>(SolveOrder), beta,
1633  h);
1634  dyson_timestep_les<T, herm_matrix<T>, LARGESIZE>(n, G, mu, H.ptr(0), Sigma, integration::I<T>(SolveOrder), beta,
1635  h);
1636  }
1637 }
Here is the call graph for this function: