NESSi  v1.0.2 The NonEquilibrium Systems Simulation Library

◆ green_from_H() [6/6]

template<typename T >
 void cntr::green_from_H ( int tstp, herm_matrix< T > & G, T mu, cntr::function< T > & eps, T beta, T h, bool fixHam, int SolveOrder, int cf_order )

Propagator for time-dependent free Hamiltonian

Purpose

Calculate the free propagator G from time dependent quadratic Hamiltonian using high-order commutator-free exponential time-propagation, see https://doi.org/10.1016/j.jcp.2011.04.006 for the description. Currently implemented versions are the second order using one exponential CF2:1 (order=2) and fourth order using two exponentials CF4:2 (order=4), see also article for more details.

Parameters
 tstp the index of the time step G The output: a timestep of the Greens function set to time dependent free propagator mu chemical potential eps time dependent representation of quadratical hamiltonian beta inverse temperature h time step interval fixHam If True Hamiltonian is known for all times and no extrapolation is needed for the predictor/corrector SolveOrder Order of integrator used for extrapolation and interpolation cf_order Order of approximation for commutator-free exponential, currently implemented orders = 2,4

Definition at line 1394 of file cntr_equilibrium_impl.hpp.

1394  {
1395  assert(tstp <= G.nt());
1396  assert(G.size1()==eps.size2_);
1397  assert(eps.size1_==eps.size2_);
1398  assert(SolveOrder <= MAX_SOLVE_ORDER);
1399  assert(cf_order == 2 || cf_order == 4);
1400  herm_matrix_timestep<T> Gstep(tstp,G.ntau(),G.size1(),G.sig());
1401
1402  int size=G.size1();
1403  if(size==1) green_from_H_dispatch<T,1>(Gstep,mu,eps,beta,h,SolveOrder,cf_order,fixHam);
1404  else green_from_H_dispatch<T,LARGESIZE>(Gstep,mu,eps,beta,h,SolveOrder,cf_order,fixHam);
1405
1406  G.set_timestep(tstp, Gstep);
1407 }
int size2_
Number of the rows in the Matrix form.
int size1_
Number of the colums in the Matrix form.
Here is the call graph for this function: