C++QEDCore  2.100.2 (v2 Milestone 10 Development branch)
a framework for simulating open quantum dynamics – core
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
structure::Liouvillean< RANK > Class Template Referenceabstract

The interface every system having Liouvillean time-evolution must present towards the trajectory drivers. More...

#include <Liouvillean.h>

+ Inheritance diagram for structure::Liouvillean< RANK >:
+ Collaboration diagram for structure::Liouvillean< RANK >:

Public Types

typedef boost::shared_ptr< const LiouvilleanPtr
 
typedef quantumdata::StateVector< RANK > StateVector
 
typedef Base::StateVectorLow StateVectorLow
 
typedef Base::DensityOperatorLow DensityOperatorLow
 
typedef Base::LazyDensityOperator LazyDensityOperator
 
typedef Base::DArray1D Rates
 The 1D real array for storing the jump rates.
 
- Public Types inherited from quantumdata::Types< RANK, LiouvilleanAveragedCommonRanked< RANK > >
typedef CArray< RANK > StateVectorLow
 
typedef CArray< 2 *RANK > DensityOperatorLow
 

Public Member Functions

const Rates rates (double t, const StateVector &psi) const
 Returns the set of jump rates $\bra{\Psi}J_m^\dagger J_m\ket{\Psi},$ where the Lindblads are in general time-dependent. More...
 
void actWithJ (double t, StateVectorLow &psi, size_t m) const
 Performs the quantum jump operation $\ket\Psi\rightarrow J_m(t)\ket\Psi$. More...
 

Static Public Attributes

static const int N_RANK =RANK
 

Detailed Description

template<int RANK>
class structure::Liouvillean< RANK >

The interface every system having Liouvillean time-evolution must present towards the trajectory drivers.

The time-evolution must be Markovian where the Lindblad form of the Master equation is the most general one possible:

\[\dot\rho=\frac1{i\hbar}\comm{H}\rho+\sum_m\lp J_m\rho J_m^\dag-\frac12\comm{J_m^\dag J_m}{\rho}_+\rp\]

The class represents the set of $J_m$ operators (Lindblads or quantum jump operators) of arbitrary number, either for Master equation or Monte Carlo wave-function evolution (in the latter case it calculates the jump rates as well).

Template Parameters
RANKarity of the Hilbert space
Note
No matter how complex the quantum system, the framework always assigns a unique ordinal to each jump corresponding to every subsystem
It is always possible to forgo the explicit calculation of certain jump rates because the rate can be calculated also on the basis of the Liouvillean::actWithJ function by the MCWF stepper. The fact that such a fallback is desired can be signalled by setting a negative value for the rate of the given jump (“special jump”).
See also
The notion of “special jumps” in the framework
The design is very similar to Exact, but here the choice is not between TwoTime/OneTime dependence, but OneTime/NoTime.

Definition at line 37 of file Liouvillean.h.

Member Function Documentation

template<int RANK>
void structure::Liouvillean< RANK >::actWithJ ( double  t,
StateVectorLow &  psi,
size_t  m 
) const
inline

Performs the quantum jump operation $\ket\Psi\rightarrow J_m(t)\ket\Psi$.

Parameters
[in]t$t$
[in,out]psi$\ket\Psi$
[out]m$m$

Definition at line 64 of file Liouvillean.h.

template<int RANK>
const Rates structure::Liouvillean< RANK >::rates ( double  t,
const StateVector psi 
) const
inline

Returns the set of jump rates $\bra{\Psi}J_m^\dagger J_m\ket{\Psi},$ where the Lindblads are in general time-dependent.

Simply redirects to LiouvilleanAveragedCommonRanked::average, so that this function does not appear in the interface for implementers.

Definition at line 61 of file Liouvillean.h.


The documentation for this class was generated from the following file: