C++QEDCore  v2 Milestone 10
a framework for simulating open quantum dynamics – core
Evolution_.h File Reference

Highest level driver functions for quantum trajectories. More...

#include "Evolution_Fwd.h"
#include "LazyDensityOperator.h"
#include "DensityOperatorFwd.h"
#include "StateVectorFwd.h"
#include "MCWF_TrajectoryFwd.h"
#include "ParsMCWF_Trajectory.h"
#include "QuantumSystemFwd.h"
#include "SmartPtr.h"
#include "TMP_Tools.h"
#include <iosfwd>
+ Include dependency graph for Evolution_.h:

Go to the source code of this file.

Classes

struct  evolution::Pars
 Aggregate of parameters pertaining to the highest level driver functions for quantum trajectories. More...
 

Namespaces

 evolution
 Auxiliary tools for the evolve functions.
 

Enumerations

enum  evolution::Method { evolution::SINGLE, evolution::ENSEMBLE, evolution::MASTER, evolution::MASTER_FAST }
 Method of evolution for a quantum system. More...
 

Functions

std::ostream & evolution::operator<< (std::ostream &, Method)
 output streaming for Method
 
std::istream & evolution::operator>> (std::istream &, Method &)
 input streaming for Method
 
template<int RANK, typename SYS >
const boost::shared_ptr< MCWF_Trajectory< RANK > > evolution::makeMCWF (quantumdata::StateVector< RANK > &, const SYS &, const Pars &)
 Dispatcher returning a quantumtrajectory::MCWF_Trajectory or quantumtrajectory::TimeAveragingMCWF_Trajectory instant, depending on the last argument (cf. Pars::timeAverage) More...
 
template<typename V , int RANK>
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. More...
 
template<typename V , int RANK>
const quantumdata::LazyDensityOperator< RANK >::Ptr evolve (quantumdata::DensityOperator< RANK > &rho, typename structure::QuantumSystem< RANK >::Ptr sys, const evolution::Pars &p)
 The prototype function to evolve a Master trajectory from a DensityOperator initial condition. More...
 
template<int... V, typename SV_OR_DO , typename SYS >
const quantumdata::LazyDensityOperator< SV_OR_DO::N_RANK >::Ptr evolve (SV_OR_DO &initial, const SYS &sys, const evolution::Pars &p)
 

Detailed Description

Highest level driver functions for quantum trajectories.

Definition in file Evolution_.h.

Function Documentation

template<typename V , int RANK>
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.

Basically a dispatcher invoking trajectory::run, with the difference that it also creates and stores the necessary quantum trajectory

Template Parameters
Vhas the same function as the template parameter V in quantumdata::negPT (cannot be inferred)
RANKarity of the Hilbert space (inferred from the 1st function argument)
Returns
the final state of the evolution as a quantumdata::LazyDensityOperator (for evolution::SINGLE this will be a copy of the evolved state vector, while for evolution::MASTER and evolution::ENSEMBLE a density operator)
Parameters
[in,out]psipure state-vector initial condition
[in]systhe simulated quantum system
[in]pparameters of the evolution
template<typename V , int RANK>
const quantumdata::LazyDensityOperator<RANK>::Ptr evolve ( quantumdata::DensityOperator< RANK > &  rho,
typename structure::QuantumSystem< RANK >::Ptr  sys,
const evolution::Pars p 
)

The prototype function to evolve a Master trajectory from a DensityOperator initial condition.

Parameters
[in,out]rhodensity operator initial condition
[in]systhe simulated quantum system
[in]pparameters of the evolution
template<int... V, typename SV_OR_DO , typename SYS >
const quantumdata::LazyDensityOperator<SV_OR_DO::N_RANK>::Ptr evolve ( SV_OR_DO &  initial,
const SYS &  sys,
const evolution::Pars p 
)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Adds also the syntactic sugar of being able to write

evolve<2,0,4>(psi,sys,p)

instead of

evolve<tmptools::Vector<2,0,4> >(psi,sys,p)

Definition at line 109 of file Evolution_.h.