C++QEDCore  v2 Milestone 10
a framework for simulating open quantum dynamics – core
structure::ElementLiouvillean< RANK, NLINDBLADS, IS_TIME_DEPENDENT > Class Template Reference

An implementation of Liouvillean for the case when the number of Lindblads is known @ compile time (which is very often the case with elements)… More...

#include <ElementLiouvillean.h>

+ Inheritance diagram for structure::ElementLiouvillean< RANK, NLINDBLADS, IS_TIME_DEPENDENT >:
+ Collaboration diagram for structure::ElementLiouvillean< RANK, NLINDBLADS, IS_TIME_DEPENDENT >:

Public Types

typedef Base::StateVectorLow StateVectorLow
 
typedef Base::LazyDensityOperator LazyDensityOperator
 
typedef Base::Rates Rates
 
typedef Base::Time Time
 
- Public Types inherited from structure::ElementLiouvilleanAveragedCommon< LiouvilleanTimeDependenceDispatched< RANK, IS_TIME_DEPENDENT > >
typedef cpputils::KeyPrinter::KeyLabels KeyLabels
 
typedef cpputils::KeyPrinter::KeyLabelsInitializer KeyLabelsInitializer
 
- Public Types inherited from structure::LiouvilleanTimeDependenceDispatched< RANK, IS_TIME_DEPENDENT >
typedef Liouvillean< RANK >::StateVectorLow StateVectorLow
 
typedef Liouvillean< RANK >::LazyDensityOperator LazyDensityOperator
 
typedef Liouvillean< RANK >::Rates Rates
 
typedef time::DispatcherIsTimeDependent< IS_TIME_DEPENDENT >::type Time
 
- Public Types inherited from structure::Liouvillean< RANK >
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 Types inherited from structure::lindblad::_< RANK, NLINDBLADS-1, false >
typedef time::DispatcherIsTimeDependent< IS_TIME_DEPENDENT >::type Time
 

Protected Member Functions

template<typename... KeyLabelsPack>
 ElementLiouvillean (const std::string &keyTitle, KeyLabelsPack &&...keyLabelsPack)
 
 ElementLiouvillean (const std::string &keyTitle, typename Base::KeyLabelsInitializer il)
 
- Protected Member Functions inherited from structure::ElementLiouvilleanAveragedCommon< LiouvilleanTimeDependenceDispatched< RANK, IS_TIME_DEPENDENT > >
 ElementLiouvilleanAveragedCommon (const std::string &keyTitle, KeyLabelsPack &&...keyLabelsPack)
 redirect to cpputils::KeyPrinter More...
 
 ElementLiouvilleanAveragedCommon (const std::string &keyTitle, KeyLabelsInitializer il)
 redirect to cpputils::KeyPrinter More...
 

Additional Inherited Members

- Public Member Functions inherited from structure::ElementLiouvilleanAveragedCommon< LiouvilleanTimeDependenceDispatched< RANK, IS_TIME_DEPENDENT > >
const std::string & getTitle () const
 redirect to cpputils::KeyPrinter
 
const KeyLabels & getLabels () const
 redirect to cpputils::KeyPrinter More...
 
- Public Member Functions inherited from structure::Liouvillean< RANK >
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...
 
- Public Member Functions inherited from structure::lindblad::_< RANK, NLINDBLADS-1, false >
void typeErasedActWithJ (Time t, typename quantumdata::Types< RANK >::StateVectorLow &psi) const
 calls the virtual doActWithJ for the given LINDBLAD_ORDINAL
 
double typeErasedRate (Time t, const quantumdata::LazyDensityOperator< RANK > &matrix) const
 calls the virtual rate for the given LINDBLAD_ORDINAL
 
- Static Public Attributes inherited from structure::Liouvillean< RANK >
static const int N_RANK =RANK
 

Detailed Description

template<int RANK, int NLINDBLADS, bool IS_TIME_DEPENDENT>
class structure::ElementLiouvillean< RANK, NLINDBLADS, IS_TIME_DEPENDENT >

An implementation of Liouvillean for the case when the number of Lindblads is known @ compile time (which is very often the case with elements)…

… if this is not the case, Liouvillean has to be used.

The class relies on lindblad::_ to declare a pair of purely virtual functions doActWithJ and rate for each Lindblad between 0 and NLINDBLADS-1. The virtuals average_v and actWithJ_v inherited from Liouvillean are defined in terms of these purely virtual functions.

Template Parameters
RANKarity of the Hilbert space
NLINDBLADSthe total number of Lindblads
IS_TIME_DEPENDENTgoverns time dependence
See also
Sec. Using class inheritance of the structure-bundle guide for an example of usage

Definition at line 94 of file ElementLiouvillean.h.


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