3 #ifndef CPPQEDCORE_QUANTUMTRAJECTORY_MCWF_TRAJECTORY_H_INCLUDED
4 #define CPPQEDCORE_QUANTUMTRAJECTORY_MCWF_TRAJECTORY_H_INCLUDED
6 #include "MCWF_TrajectoryFwd.h"
8 #include "StateVectorFwd.h"
16 #include <boost/tuple/tuple.hpp>
22 #define BASE_class trajectory::Stochastic<typename quantumdata::Types<RANK>::StateVectorLow, const quantumdata::StateVector<RANK>&>
63 typedef structure::Exact <RANK>
Exact ;
66 typedef structure::Averaged <RANK>
Averaged ;
70 typedef typename StateVector::StateVectorLow StateVectorLow;
74 typedef BASE_class
Base;
78 typedef boost::tuple<int,StateVectorLow> IndexSVL_tuple;
83 template<
typename SYS>
87 const StateVectorLow& scaleAbs=StateVectorLow()
92 void derivs(
double,
const StateVectorLow&, StateVectorLow&)
const;
96 const StateVector& getPsi()
const {
return psi_;}
104 using Base::getEvolved;
using Base::getDtTry;
using QuantumTrajectory::getQSW;
106 std::ostream&
display_v(std::ostream&,
int )
const override;
107 std::ostream&
displayKey_v(std::ostream&,
size_t&)
const override;
117 typedef std::vector<IndexSVL_tuple> IndexSVL_tuples;
120 void step_v(
double)
override;
122 std::ostream& displayParameters_v(std::ostream&)
const override;
124 const StateVector& toBeAveraged_v()
const override {
return psi_;}
126 const std::string trajectoryID_v()
const override {
return "MCWF_Trajectory";}
128 double coherentTimeDevelopment(
double Dt);
129 const IndexSVL_tuples calculateSpecialRates ( Rates* rates,
double t)
const;
133 void performJump (
const Rates&,
const IndexSVL_tuples&,
double);
138 const double dpLimit_, overshootTolerance_;
140 mutable mcwf::Logger logger_;
148 #endif // CPPQEDCORE_QUANTUMTRAJECTORY_MCWF_TRAJECTORY_H_INCLUDED
std::ostream & onEnd(std::ostream &) const
displays summary log information at the end (called by MCWF_Trajectory::logOnEnd_v) ...
std::ostream & displayKey_v(std::ostream &, size_t &) const override
Forwards to structure::Averaged::displayKey.
The interface every system that needs transformation between two quantum mechanical pictures must pre...
std::ostream & logOnEnd_v(std::ostream &os) const override
calls mcwf::Logger::onEnd
Class hosting common code of MCWF_Trajectory and Master.
Represents a trajectory that has both adaptive ODE evolution and noise.
Defines class of the same name.
State vector of arbitrary arity.
Defines structur::QuantumSystemWrapper.
double getTime() const
actual time instant
Comprises modules representing trajectory drivers for simulating quantum systems. ...
boost::archive::binary_oarchive oarchive
delegated to Boost.Serialization
Essentially an aggregate of data fields for logging during a MCWF_Trajectory run. ...
Defines class of the same name.
The interface every system having (possibly non-Hermitian) Hamiltonian time-evolution must present to...
cpputils::oarchive & writeStateMore_v(cpputils::oarchive &oar) const override
hook into Trajectory::writeState
cpputils::iarchive & readStateMore_v(cpputils::iarchive &iar) override
Forwards to BASE, but also sets t0.
Implements a single Monte Carlo wave-function trajectory.
The interface every system that calculates and displays quantum averages must present towards the tra...
Bookkeeps the timestep-data of Evolved.
std::ostream & display_v(std::ostream &, int) const override
Forwards to structure::Averaged::display.
boost::archive::binary_iarchive iarchive
delegated to Boost.Serialization
void derivs(double, const StateVectorLow &, StateVectorLow &) const
The actual function calculating the time derivative for ODE evolution.
MCWF_Trajectory(StateVector &psi, const SYS &sys, const mcwf::Pars &p, const StateVectorLow &scaleAbs=StateVectorLow())
Templated constructor with the same idea as Master::Master.
The interface every system having Liouvillean time-evolution must present towards the trajectory driv...
cpputils::iarchive & readStateMore_v(cpputils::iarchive &iar) override
Forwards to QuantumTrajectory::readStateMore_v (that involves setting t0) + serializes mcwf::Logger s...
cpputils::oarchive & writeStateMore_v(cpputils::oarchive &oar) const override
Forwards to Base::writeStateMore_v + serializes mcwf::Logger state.
Aggregate of parameters pertaining to MCWF simulations.
Defines classes related to stochastic evolution.
Base::DArray1D Rates
The 1D real array for storing the jump rates.