4 #ifndef CPPQEDCORE_QUANTUMOPERATOR_TRIDIAGONALHAMILTONIAN_H_INCLUDED
5 #define CPPQEDCORE_QUANTUMOPERATOR_TRIDIAGONALHAMILTONIAN_H_INCLUDED
7 #include "TridiagonalHamiltonianFwd.h"
24 template<
int RANK,
bool IS_TIME_DEPENDENT>
27 mpl::if_c<IS_TIME_DEPENDENT,
28 mpl::integral_c<TimeDependence,ONE_TIME>,
29 mpl::integral_c<TimeDependence, NO_TIME>
35 typedef std::list<Tridiagonal> Tridiagonals;
39 TDH_Base(
const Tridiagonals& hOverIs) : hOverIs_(hOverIs) {}
41 const Tridiagonals& getH_OverIs()
const {
return hOverIs_;}
42 Tridiagonals& getH_OverIs() {
return const_cast<Tridiagonals&
>(
static_cast<const TDH_Base*
>(
this)->getH_OverIs());}
47 void addContribution_v(
OneTime,
const StateVectorLow&, StateVectorLow&)
const;
49 void addContribution_v(
NoTime,
const StateVectorLow&, StateVectorLow&)
const;
53 mutable Tridiagonals hOverIs_;
76 template<
int RANK,
bool IS_TIME_DEPENDENT>
80 typedef details::TDH_Base<RANK,IS_TIME_DEPENDENT> Base;
84 typedef typename Base::Tridiagonals Tridiagonals;
96 #endif // CPPQEDCORE_QUANTUMOPERATOR_TRIDIAGONALHAMILTONIAN_H_INCLUDED
Implements the action of a Hamiltonian whose matrix consists of a sum of tridiagonal matrices...
quantumdata::Types< 1 >::StateVectorLow StateVectorLow
unary StateVectorLow
TridiagonalHamiltonian(const Tridiagonal &hOverI)
quantumoperator::Tridiagonal< 1 > Tridiagonal
unary Tridiagonal
Defines class of the same name.
Comprises modules for describing quantum systems.
Describes one-time dependence corresponding to the case ONE_TIME.
Defines class of the same name.
Comprises modules representing operators of special structure (tridiagonal, sparse) over Hilbert spac...
TridiagonalHamiltonian(const Tridiagonals &hOverIs)
Generic constructor.
Class representing a (unary) tridiagonal matrix or direct product of such matrices.
Implements the general Hamiltonian interface by dispatching the different time-dependence levels...
Describes no-time dependence corresponding to the case NO_TIME.