NESSi  v1.0.2
The NonEquilibrium Systems Simulation Library

◆ vie2_omp()

template<typename T >
void cntr::vie2_omp ( int  omp_num_threads,
herm_matrix< T > &  G,
herm_matrix< T > &  F,
herm_matrix< T > &  Fcc,
herm_matrix< T > &  Q,
beta,
h,
const int  SolveOrder,
const int  matsubara_method 
)

One step VIE solver \((1+F)*G=Q\) for a Green's function \(G\). OpenMP parallelized

Purpose

OpenMP version of 'vie2'. One solves the linear equation \((1+F)*G=Q\) for a hermitian matrix \(G(t, t^\prime)\) with given \(F(t, t^\prime)\) and \(Q(t, t^\prime)\). Here, one calls the routines 'vie2_mat()', 'vie2_start()', 'vie2_timestep'.

Parameters
omp_num_threads

[int] The number of openMP threads to be used. Set to the number of threads in the current team.

&G

[herm_matrix<T>] solution

&F

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

&Fcc

[herm_matrix<T>] Complex conjugate of F

&Q

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

beta

[double] inverse temperature

h

[double] time interval

SolveOrder

[int] integrator order

matsubara_method

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

Definition at line 2508 of file cntr_vie2_impl.hpp.

References cntr::herm_matrix< T >::nt().

2509  {
2510  int tstp;
2511  vie2_mat(G, F, Fcc, Q, beta, SolveOrder, matsubara_method);
2512  if (G.nt() >= 0)
2513  vie2_start(G, F, Fcc, Q, beta, h, SolveOrder);
2514  for (tstp = SolveOrder + 1; tstp <= G.nt(); tstp++)
2515  vie2_timestep_omp(omp_num_threads, tstp, G, F, Fcc, Q, beta, h, SolveOrder);
2516 }
+ Here is the call graph for this function: