4 #ifndef CPPQEDCORE_STRUCTURE_FREEEXACT_H_INCLUDED
5 #define CPPQEDCORE_STRUCTURE_FREEEXACT_H_INCLUDED
9 #include <boost/utility/enable_if.hpp>
21 template<
bool IS_TWO_TIME>
32 explicit FreeExact(
size_t dim) : diagonal_(
int(dim)), t_(0,0) {}
34 Diagonal& getDiagonal()
const {
return diagonal_;}
37 virtual void actWithU_v(Time t, StateVectorLow& psi)
const final {
if (t!=t_) {updateU(t_=t);} psi*=getDiagonal();}
39 virtual void updateU(Time)
const = 0;
42 mutable Diagonal diagonal_;
51 #endif // CPPQEDCORE_STRUCTURE_FREEEXACT_H_INCLUDED
Implements the general Exact interface by dispatching the two possible time-dependence levels...
blitz::Array< dcomp,RANK > CArray
A complex array of arbitrary arity.
A unary implementation of Exact assuming that the operator that transforms between the pictures is di...
Defines class of the same name.
Comprises modules for describing quantum systems.