NESSi  v1.0.2
The NonEquilibrium Systems Simulation Library

◆ dyson_mat() [1/2]

template<typename T >
void cntr::dyson_mat ( herm_matrix< T > &  G,
mu,
function< T > &  H,
herm_matrix< T > &  Sigma,
beta,
const int  SolveOrder,
const int  method,
const bool  force_hermitian 
)

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)\) on a Matsubara axis. There are 3 possible methods for solution: Fourier, steep, and fixpoint.

Parameters
&G

[herm_matrix<T>] solution

mu

[T] chemical potential

&Sigma

[herm_matrix<T>] self-energy

&H

[function<T>] time-dependent function

SolveOrder

[int] integrator order

beta

[double] inverse temperature

method

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

force_hermitian

[bool] force hermitian solution, if 'true'

Definition at line 1393 of file cntr_dyson_impl.hpp.

References force_matsubara_hermitian().

1394  {
1395  assert(method <= 2 && "UNKNOWN CNTR_MAT_METHOD");
1396  assert(SolveOrder <= MAX_SOLVE_ORDER);
1397 
1398  const int fourier_order = 3;
1399  const double tol=1.0e-12;
1400  int maxiter;
1401 
1402  switch(method){
1403  case 0:
1404  dyson_mat_fourier(G, Sigma, mu, H, beta, fourier_order);
1405  break;
1406  case 1:
1407  maxiter = 40;
1408  dyson_mat_steep(G, Sigma, mu, H, integration::I<T>(SolveOrder), beta, maxiter, tol);
1409  break;
1410  case 2:
1411  maxiter=6;
1412  dyson_mat_fixpoint(G, Sigma, mu, H, integration::I<T>(SolveOrder), beta, maxiter);
1413  break;
1414  }
1415  if(force_hermitian){
1417  }
1418 }
void force_matsubara_hermitian(herm_matrix< T > &G)
Force the Matsubara component of herm_matrix to be a hermitian matrix at each . ...
+ Here is the call graph for this function: