NESSi  v1.0.2
The NonEquilibrium Systems Simulation Library

◆ vie2_mat()

template<typename T >
void cntr::vie2_mat ( herm_matrix< T > &  G,
herm_matrix< T > &  F,
herm_matrix< T > &  Fcc,
herm_matrix< T > &  Q,
beta,
const int  SolveOrder,
const int  method 
)

VIE solver \((1+F)*G=Q\) for a Green's function \(G\) on the Matsubara axis

Purpose

One solves the linear equation \((1+F)*G=Q\) for a hermitian matrix \(G(t, t^\prime)\) on a Matsubara axis, for given: input kernel \(F(t, t^\prime)\), its hermitian conjugate \(F^\ddagger(t, t^\prime)\), and the source term \(Q(t, t^\prime)\). There are 3 possible methods for solution: Fourier, steep, and fixpoint. Fixpoint method is choosen by default.

Parameters
&G

[herm_matrix] solution

&F

[herm_matrix] green's function on left-hand side

&Fcc

[herm_matrix] Complex conjugate of F

&Q

[herm_matrix] green's function on right-hand side

beta

[double] inverse temperature

SolveOrder

[int] integrator order

method

[const] Solution method on the Matsubara axis with 0: Fourier, 1: steep, 2: fixpoint

Definition at line 1283 of file cntr_vie2_impl.hpp.

1284  {
1285 
1286  const int fourier_order=3;
1287  int maxiter;
1288  T tol = 1.0e-12;
1289 
1290  switch(method) {
1291  case CNTR_MAT_FOURIER:
1292  vie2_mat_fourier(G, F, Fcc, Q, beta, fourier_order);
1293  break;
1294  case CNTR_MAT_CG:
1295  maxiter = 40;
1296  vie2_mat_steep(G, F, Fcc, Q, beta, integration::I<T>(SolveOrder), maxiter, tol);
1297  break;
1298  default:
1299  maxiter = 6;
1300  vie2_mat_fixpoint(G, F, Fcc, Q, beta, integration::I<T>(SolveOrder), maxiter);
1301  break;
1302  }
1303 
1304 }