3 #ifndef CPPQEDCORE_QUANTUMTRAJECTORY_MCWF_TRAJECTORYLOGGER_H_INCLUDED
4 #define CPPQEDCORE_QUANTUMTRAJECTORY_MCWF_TRAJECTORYLOGGER_H_INCLUDED
6 #include "MCWF_TrajectoryFwd.h"
10 #include "core_config.h"
12 #ifndef DO_NOT_USE_BOOST_SERIALIZATION
13 #include <boost/serialization/list.hpp>
14 #include <boost/serialization/utility.hpp>
15 #endif // DO_NOT_USE_BOOST_SERIALIZATION
28 typedef std::list<Logger> LoggerList;
32 std::ostream&
displayLog(std::ostream&,
const LoggerList&,
size_t nBins,
size_t nJumpsPerBin);
65 void stepBack(
double dp,
double dtDid,
double newDtTry,
double t,
bool logControl);
66 void overshot(
double dp,
double oldDtTry,
double newDtTry ,
bool logControl);
68 void processNorm(
double norm);
70 void jumpOccured(
double t,
size_t lindbladNo);
72 void logFailedSteps(
size_t);
74 void hamiltonianCalled();
76 std::ostream& onEnd(std::ostream&)
const;
79 #ifndef DO_NOT_USE_BOOST_SERIALIZATION
80 friend class boost::serialization::access;
81 template<
class Archive>
82 void serialize(Archive& ar,
const unsigned int) {ar & nSteps_ & nOvershot_ & nToleranceOvershot_ & nFailedSteps_ & nHamiltonianCalls_
83 & dpMaxOvershoot_ & dpToleranceMaxOvershoot_ & normMaxDeviation_
85 #endif // DO_NOT_USE_BOOST_SERIALIZATION
87 friend std::ostream&
ensemble::displayLog(std::ostream&,
const ensemble::LoggerList&,
size_t,
size_t);
90 const bool isHamiltonian_;
91 const size_t nLindblads_;
93 size_t nSteps_, nOvershot_, nToleranceOvershot_, nFailedSteps_, nHamiltonianCalls_;
94 double dpMaxOvershoot_, dpToleranceMaxOvershoot_, normMaxDeviation_;
96 MCWF_Trajectory traj_;
104 #endif // CPPQEDCORE_QUANTUMTRAJECTORY_MCWF_TRAJECTORYLOGGER_H_INCLUDED
std::list< std::pair< double, size_t > > MCWF_Trajectory
Stores <time instant, lindbladNo> pairs, that is, the complete stochastic MCWF trajectory (the rest i...
Defines i/oarchive types depending on the DO_NOT_USE_BOOST_SERIALIZATION macro.
Comprises modules representing trajectory drivers for simulating quantum systems. ...
Essentially an aggregate of data fields for logging during a MCWF_Trajectory run. ...
std::ostream & displayLog(std::ostream &, const LoggerList &, size_t nBins, size_t nJumpsPerBin)
Called by EnsembleMCWF::logOnEnd, it displays a time histogram of total jumps.