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::ElementLiouvilleanStrategies< RANK, NLINDBLADS, IS_TIME_DEPENDENT > Class Template Reference

Besides ElementLiouvillean, this is another solution based on the strategy idiom to control the number of Lindblads @ compile time. More...

#include <ElementLiouvillean.h>

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

Public Types

typedef Base::StateVectorLow StateVectorLow
 
typedef Base::LazyDensityOperator LazyDensityOperator
 
typedef Base::Rates Rates
 
typedef Base::Time Time
 
typedef mpl::if_c< IS_TIME_DEPENDENT, boost::function< void(double, StateVectorLow &)>, boost::function< void(StateVectorLow &)> >::type JumpStrategy
 Strategy functional for acting with a given Lindblad operator (= performing a given jump) on a state. More...
 
typedef mpl::if_c< IS_TIME_DEPENDENT, boost::function< double(double, const LazyDensityOperator &)>, boost::function< double(const LazyDensityOperator &)> >::type JumpRateStrategy
 Strategy functional for calculating from a state the jump rate corresponding to a given Lindblad.
 
typedef blitz::TinyVector< JumpStrategy,NLINDBLADS > JumpStrategies
 Tiny vector of length NLINDBLADS containing the JumpStrategy instances.
 
typedef blitz::TinyVector< JumpRateStrategy, NLINDBLADS > JumpRateStrategies
 Tiny vector of length NLINDBLADS containing the JumpRateStrategy instances.
 
- 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
 

Protected Member Functions

template<typename... KeyLabelsPack>
 ElementLiouvilleanStrategies (const JumpStrategies &jumps, const JumpRateStrategies &jumpRates, const std::string &keyTitle, KeyLabelsPack &&...keyLabelsPack)
 
 ElementLiouvilleanStrategies (const JumpStrategies &jumps, const JumpRateStrategies &jumpRates, 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...
 
- 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::ElementLiouvilleanStrategies< RANK, NLINDBLADS, IS_TIME_DEPENDENT >

Besides ElementLiouvillean, this is another solution based on the strategy idiom to control the number of Lindblads @ compile time.

Template Parameters
RANKarity of the Hilbert space
NLINDBLADSthe total number of Lindblads
IS_TIME_DEPENDENTgoverns time dependence
See also
Sec. Implementation of a class representing a harmonic-oscillator mode of the structure-bundle guide for an example of usage

Definition at line 200 of file ElementLiouvillean.h.

Member Typedef Documentation

template<int RANK, int NLINDBLADS, bool IS_TIME_DEPENDENT>
typedef mpl::if_c<IS_TIME_DEPENDENT,boost::function<void (double, StateVectorLow& )>,boost::function<void ( StateVectorLow& )> >::type structure::ElementLiouvilleanStrategies< RANK, NLINDBLADS, IS_TIME_DEPENDENT >::JumpStrategy

Strategy functional for acting with a given Lindblad operator (= performing a given jump) on a state.

The actual signature of the functional is decided on the basis of IS_TIME_DEPENDENT using the compile-time if-construct if_c.

Definition at line 216 of file ElementLiouvillean.h.


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