 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

Purpose

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

Parameters
 tstp timestep at which propagator is calculated H Time dependent Hamiltonian Hinte1 Interpolated Hamiltonian at c1 Hinte2 Interpolated Hamiltonian at c2 kt Order of integrator used for extrapolation and interpolation fixHam 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
709
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: