NESSi  v1.0.2
The NonEquilibrium Systems Simulation Library

◆ get_les() [2/4]

template<typename T >
void get_les ( const int  i,
const int  j,
cdmatrix &  G_les,
herm_matrix_timestep_view< T > &  G,
herm_matrix_timestep_view< T > &  Gcc 
)

Returns the lesser component of a general contour function at given times.

Purpose

Returns the lesser component \( G^<(t_i,t_j) \) at given times \( t_i\) and \( t_j\). For \( i > j\) the hermitian conjugate \(G^\ddagger\) is used.

Parameters
i

[int] Index of time \( t_i\) .

j

[int] Index of time \( t_j\) .

G_les

[cdmatrix] The lesser component (returned to an eigen3 matrix).

G

[herm_matrix_timestep_view] Contour function G

Gcc

[herm_matrix_timestep_view] Hermitian conjugate \(G^\ddagger\) of \(G\).

Definition at line 199 of file cntr_getset_herm_matrix_timestep_view_inc.hpp.

200  {
201  assert(i <= G.tstp() && j <= G.tstp());
202  assert(i == G.tstp() || j == G.tstp());
203  assert(i <= Gcc.tstp() && j <= Gcc.tstp());
204  assert(i == Gcc.tstp() || j == Gcc.tstp());
205  assert(G.tstp() == Gcc.tstp());
206  assert(G.ntau() == Gcc.ntau());
207  assert(G.size1() == Gcc.size1());
208  assert(G.size2() == Gcc.size2());
209  assert(G.sig() == Gcc.sig());
210  std::complex<T> *les;
211  int size1=G.size1(), size2=G.size2();
212 
213  if (G.tstp() == j){
214  les = G.lesptr(i);
215  map_ptr2matrix(size1, size2, les, G_les);
216  } else if (G.tstp() == i) {
217  les = Gcc.lesptr(j);
218  map_ptr2matrix(size1, size2, les, G_les);
219  G_les.adjointInPlace();
220  G_les = -G_les;
221  }
222 }