C++QEDCore  v2 Milestone 10
a framework for simulating open quantum dynamics – core
Evolution_.h
Go to the documentation of this file.
1 // Copyright András Vukics 2006–2014. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.txt)
3 #ifndef CPPQEDCORE_QUANTUMTRAJECTORY_EVOLUTION__H_INCLUDED
4 #define CPPQEDCORE_QUANTUMTRAJECTORY_EVOLUTION__H_INCLUDED
5 
6 #include "Evolution_Fwd.h"
7 
8 #include "LazyDensityOperator.h"
9 #include "DensityOperatorFwd.h"
10 #include "StateVectorFwd.h"
11 #include "MCWF_TrajectoryFwd.h"
12 #include "ParsMCWF_Trajectory.h"
13 #include "QuantumSystemFwd.h"
14 
15 #include "SmartPtr.h"
16 #include "TMP_Tools.h"
17 
18 #include <iosfwd>
19 
20 
21 
22 using namespace quantumtrajectory;
23 
24 
26 namespace evolution {
27 
29 enum Method {
34 };
35 
36 std::ostream& operator<<(std::ostream&, Method );
37 std::istream& operator>>(std::istream&, Method&);
38 
39 
41 
42 struct Pars : public trajectory::ParsRun, public mcwf::Pars {
43 
45  bool
46  &negativity,
47  &timeAverage;
48  double &relaxationTime;
49 
50  Pars(parameters::ParameterTable& p, const std::string& mod="");
51 
52 };
53 
54 
56 
60 template<int RANK, typename SYS>
61 const boost::shared_ptr<MCWF_Trajectory<RANK> > makeMCWF(quantumdata::StateVector<RANK>&, const SYS&, const Pars&);
62 
63 } // evolution
64 
65 
67 
78 template<typename V, int RANK>
82  const evolution::Pars& p
83  );
84 
85 
87 template<typename V, int RANK>
91  const evolution::Pars& p
92  );
93 
94 
96 
106 template<int... V, typename SV_OR_DO, typename SYS>
107 inline
109 evolve(SV_OR_DO& initial,
110  const SYS& sys,
111  const evolution::Pars& p)
112 {
113  return evolve<tmptools::Vector<V...> >(initial,cpputils::sharedPointerize(sys),p);
114 }
115 
116 
117 #endif // CPPQEDCORE_QUANTUMTRAJECTORY_EVOLUTION__H_INCLUDED
double & relaxationTime
the relaxation time in the case when time averaging is desired
Definition: Evolution_.h:48
const boost::shared_ptr< MCWF_Trajectory< RANK > > makeMCWF(quantumdata::StateVector< RANK > &, const SYS &, const Pars &)
Dispatcher returning a quantumtrajectory::MCWF_Trajectory or quantumtrajectory::TimeAveragingMCWF_Tra...
Master equation with “fast” iteration.
Definition: Evolution_.h:33
const quantumdata::LazyDensityOperator< RANK >::Ptr evolve(quantumdata::StateVector< RANK > &psi, typename structure::QuantumSystem< RANK >::Ptr sys, const evolution::Pars &p)
The prototype function to evolve a quantumtrajectory from a pure StateVector initial condition...
single MCWF trajectory
Definition: Evolution_.h:30
ensemble of MCWF trajectories
Definition: Evolution_.h:31
Method & evol
the method of evolution
Definition: Evolution_.h:44
Density operator of arbitrary arity.
boost::shared_ptr< const QuantumSystem > Ptr
Many of the basic template classes in the framework act as template metafunctions returning a shared ...
Definition: QuantumSystem.h:30
const boost::shared_ptr< T > sharedPointerize(boost::shared_ptr< T > t)
Part of a bundle of functions providing a unified interface to wrap objects into the shared-pointer i...
Definition: SmartPtr.h:52
State vector of arbitrary arity.
Definition: StateVector.h:58
Defines class of the same name.
Parameters corresponding to the different versions of run()
Comprises modules representing trajectory drivers for simulating quantum systems. ...
Definition: DO_Display.h:12
The parameter table according to which the command line will be parsed by update() ...
Definition: Pars.h:134
std::ostream & operator<<(std::ostream &, Method)
output streaming for Method
std::istream & operator>>(std::istream &, Method &)
input streaming for Method
Master equation with normal iteration.
Definition: Evolution_.h:32
Method
Method of evolution for a quantum system.
Definition: Evolution_.h:29
boost::shared_ptr< const LazyDensityOperator > Ptr
Many class templates in the framework define shared pointers to their own types, in a template-metafu...
Defines class of the same name.
Tools for creating non-owning shared pointers.
Aggregate of parameters pertaining to the highest level driver functions for quantum trajectories...
Definition: Evolution_.h:42
Template metaprogramming tools, extending (and based on) Boost.MPL.
bool & timeAverage
governs whether in the case of SINGLE, time averaging should be performed (by using quantumtrajectory...
Definition: Evolution_.h:46
A non-negative compile-time vector.
Definition: TMP_Tools.h:200
Aggregate of parameters pertaining to MCWF simulations.
Auxiliary tools for the evolve functions.
Definition: Evolution_.h:26