4 #ifndef CPPQEDCORE_QUANTUMTRAJECTORY_QUANTUMTRAJECTORY_H_INCLUDED
5 #define CPPQEDCORE_QUANTUMTRAJECTORY_QUANTUMTRAJECTORY_H_INCLUDED
33 template<
int RANK,
typename BASE>
40 template<
typename... ArgumentPack>
42 : BASE(std::forward<ArgumentPack>(argumentPack)...), t0_(0), qs_(qs, isNoisy) {};
44 const QuantumSystemWrapper getQSW()
const {
return qs_;}
48 { BASE::readStateMore_v(iar);
if (getQSW().getEx())
setT0();
return iar; }
60 double getT0()
const {
return t0_;}
63 void setT0(
double t0)
const {t0_=t0;}
66 void setT0()
const {t0_=BASE::getTime();}
69 template<
typename CONSTRUCT>
74 const QuantumSystemWrapper qs_;
82 #endif // CPPQEDCORE_QUANTUMTRAJECTORY_QUANTUMTRAJECTORY_H_INCLUDED
Defines the basic classes of the trajectory-bundle.
Defines class of the same name.
Class hosting common code of MCWF_Trajectory and Master.
A wrapper for Exact, Hamiltonian, Liouvillean, and Averaged.
boost::shared_ptr< const QuantumSystem > Ptr
Many of the basic template classes in the framework act as template metafunctions returning a shared ...
Defines structur::QuantumSystemWrapper.
Comprises modules representing trajectory drivers for simulating quantum systems. ...
void setT0(double t0) const
The time instant of the beginning of the current time step.
Thrown in the case of dimensionality mismatch of constructs over the same Hilbert space...
cpputils::iarchive & readStateMore_v(cpputils::iarchive &iar) override
Forwards to BASE, but also sets t0.
double getT0() const
The time instant of the beginning of the current time step.
double initialTimeStep(double highestFrequency)
A heuristic determination of the inital timestep from the highest frequency of a physical system...
boost::archive::binary_iarchive iarchive
delegated to Boost.Serialization
QuantumTrajectory(typename structure::QuantumSystem< RANK >::Ptr qs, bool isNoisy, ArgumentPack &&...argumentPack)
Constructor forwarding to BASE and QuantumSystemWrapper.
void setT0() const
The time instant of the beginning of the current time step. Sets to the current time.
double initialTimeStep(typename structure::QuantumSystem< RANK >::Ptr qs)
Forwards to trajectory::initialTimeStep, with the highest frequency of the system taken as structure:...
void checkDimension(const CONSTRUCT &construct) const
Check the dimensions of the stored quantum system against construct
double highestFrequency() const
The fastest timescale of the system for ODE stepping.