NESSi  v1.0.2 The NonEquilibrium Systems Simulation Library

◆ convolution_timestep() [1/4]

template<typename T >
 void cntr::convolution_timestep ( int n, 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 )

Returns convolution of two matrices at a given time step

Purpose

Computes contour convolution C=A*B of the objects with class 'herm_matrix' at a given time step 't=nh'. Works for a scalar and square matrices.

Parameters
 n [int] number of the time step ('t=nh') C [herm_matrix] Matrix to which the result of the convolution on Matsubara axis is given A [herm_matrix] contour Green's function Acc [herm_matrix] complex conjugate to A B [herm_matrix] contour Green's function Bcc [herm_matrix] complex conjugate to B beta inversed temperature h time step interval SolveOrder [int] integrator order

Definition at line 1657 of file cntr_convolution_impl.hpp.

1660  {
1661  int size1 = C.size1(), ntau = C.ntau(), n1 = (n < SolveOrder ? SolveOrder : n);
1662  if (n == -1) {
1663  convolution_matsubara(C, A, B, integration::I<T>(SolveOrder), beta);
1664  return;
1665  }
1666  assert(n >= 0);
1667  assert(A.size1() == size1);
1668  assert(Acc.size1() == size1);
1669  assert(B.size1() == size1);
1670  assert(Bcc.size1() == size1);
1671  assert(A.ntau() == ntau);
1672  assert(Acc.ntau() == ntau);
1673  assert(B.ntau() == ntau);
1674  assert(Bcc.ntau() == ntau);
1675  assert(A.nt() >= n1);
1676  assert(Acc.nt() >= n1);
1677  assert(B.nt() >= n1);
1678  assert(Bcc.nt() >= n1);
1679  assert(C.nt() >= n);
1680  if (size1 == 1) {
1681  convolution_timestep_ret<T, herm_matrix<T>, 1>(n, C, A, Acc, B, Bcc,
1682  integration::I<T>(SolveOrder), h);
1683  convolution_timestep_tv<T, herm_matrix<T>, 1>(n, C, A, Acc, B, Bcc, integration::I<T>(SolveOrder),
1684  beta, h);
1685  convolution_timestep_les<T, herm_matrix<T>, 1>(n, C, A, Acc, B, Bcc,
1686  integration::I<T>(SolveOrder), beta, h);
1687  } else {
1688  convolution_timestep_ret<T, herm_matrix<T>, LARGESIZE>(n, C, A, Acc,
1689  B, Bcc, integration::I<T>(SolveOrder), h);
1690  convolution_timestep_tv<T, herm_matrix<T>, LARGESIZE>(
1691  n, C, A, Acc, B, Bcc, integration::I<T>(SolveOrder), beta, h);
1692  convolution_timestep_les<T, herm_matrix<T>, LARGESIZE>(
1693  n, C, A, Acc, B, Bcc, integration::I<T>(SolveOrder), beta, h);
1694  }
1695 }
Here is the call graph for this function: