4 #ifndef CPPQEDCORE_STRUCTURE_HAMILTONIAN_H_INCLUDED
5 #define CPPQEDCORE_STRUCTURE_HAMILTONIAN_H_INCLUDED
7 #include "HamiltonianFwd.h"
12 #include <boost/shared_ptr.hpp>
30 typedef boost::shared_ptr<const Hamiltonian> Ptr;
32 typedef typename quantumdata::Types<RANK>::StateVectorLow StateVectorLow;
48 const StateVectorLow& psi,
49 StateVectorLow& dpsidt,
52 {addContribution_v(t,psi,dpsidt,t0);}
57 virtual void addContribution_v(
double,
const StateVectorLow&, StateVectorLow&,
double)
const = 0;
67 template<
int RANK, TimeDependence TD>
71 typedef typename Hamiltonian<RANK>::StateVectorLow StateVectorLow;
77 virtual void addContribution_v(
double t,
const StateVectorLow& psi, StateVectorLow& dpsidt,
double t0)
const final
79 addContribution_v(
Time(t,t0),psi,dpsidt);
83 virtual void addContribution_v(Time,
const StateVectorLow&, StateVectorLow&)
const = 0;
90 #endif // CPPQEDCORE_STRUCTURE_HAMILTONIAN_H_INCLUDED
Defines class of the same name.
Basically only a metafunction defining types for higher-level constructs of arity RANK ...
void addContribution(double t, const StateVectorLow &psi, StateVectorLow &dpsidt, double t0) const
Adds the Hamiltonian contribution of the given (sub)system to dpsidt
time::Dispatcher< TD >::type Time
The actual time-dependence level from the template parameter TD
Comprises modules for describing quantum systems.
The interface every system having (possibly non-Hermitian) Hamiltonian time-evolution must present to...
Metafunction dispatching the three classes TwoTime, OneTime, & NoTime according to the template param...
Defines tools related to the description of different time-dependence levels.
Implements the general Hamiltonian interface by dispatching the different time-dependence levels...