NESSi  v1.0.2
The NonEquilibrium Systems Simulation Library

◆ interpolate_CF4()

template<typename T >
void cntr::interpolate_CF4 ( int  tstp,
cntr::function< T > &  H,
cdmatrix &  Hinte1,
cdmatrix &  Hinte2,
int  kt,
bool  fixHam = false 

Interpolation for the forth order propagator


Interpolates \(H(t - dt + dt*c1)\) and \(H(t - dt + dt*c2)\), where

\(c1 = 1/2 - \sqrt(3)/6\) \(c2 = 1/2 + \sqrt(3)/6\) from \(H(t+dt)\), \(H(t)\), \(H(t-dt)\) where \(H(t+dt)\) is obtained from the extrapolation if not yet known. If fixham=true we assume that the hamiltonian is known for all times and there is no extrapolation


timestep at which propagator is calculated


Time dependent Hamiltonian


Interpolated Hamiltonian at c1


Interpolated Hamiltonian at c2


Order of integrator used for extrapolation and interpolation


Hamiltonian is known for all times and no extrapolation is needed for the predictor/corrector

Definition at line 698 of file cntr_equilibrium_impl.hpp.

References integration::I< double >(), and cntr::function< T >::size1_.

Referenced by propagator_exp().

698  {
699  int size=H.size1_;
700  cdmatrix tmp(size,size);
701  int ktextrap=(tstp<=kt ? tstp : kt);
702  int n1=(tstp<=kt ? kt : tstp);
703  // Extrapolate to get H(t)
704  if(!fixHam && tstp>kt){
705  extrapolate_timestep(tstp-1,H,integration::I<double>(ktextrap));
706  }
707  Hinte1=interpolation(n1,(tstp-0.5-sqrt(3)/6.0),H,integration::I<double>(kt)); //ktextrap+1 since we added one more point
708  Hinte2=interpolation(n1,(tstp-0.5+sqrt(3)/6.0),H,integration::I<double>(kt)); //ktextrap+1 since we added one more point
710 }
int size1_
Number of the colums in the Matrix form.
template Integrator< double > & I< double >(int k)
+ Here is the call graph for this function:
+ Here is the caller graph for this function: