Besides ElementLiouvillean, this is another solution based on the strategy idiom to control the number of Lindblads @ compile time. More...
#include <ElementLiouvillean.h>
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 Liouvillean > | Ptr |
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 where the Lindblads are in general time-dependent. More... | |
void | actWithJ (double t, StateVectorLow &psi, size_t m) const |
Performs the quantum jump operation . More... | |
Static Public Attributes inherited from structure::Liouvillean< RANK > | |
static const int | N_RANK =RANK |
Besides ElementLiouvillean, this is another solution based on the strategy idiom to control the number of Lindblads @ compile time.
RANK | arity of the Hilbert space |
NLINDBLADS | the total number of Lindblads |
IS_TIME_DEPENDENT | governs time dependence |
Definition at line 200 of file ElementLiouvillean.h.
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.