4 #ifndef CPPQEDELEMENTS_INTERACTIONS_MLJC_H_INCLUDED
5 #define CPPQEDELEMENTS_INTERACTIONS_MLJC_H_INCLUDED
14 #include <boost/fusion/algorithm/transformation/transform.hpp>
18 template<
int N1,
int N2>
32 template<
int NL,
typename VC>
38 typedef typename MultiLevelBase<NL>::Ptr MultiLevelPtr;
40 Base(MultiLevelPtr, mode::Ptr,
const VC&);
43 class ElementaryCoupling;
51 class CouplingToModeDynamics
54 CouplingToModeDynamics(MultiLevelPtr ml, mode::Ptr
mode) : ml_(ml), mode_(mode) {}
58 template<
typename T,
typename C>
59 struct result<T(const C&)> : mpl::identity<ModeDynamics<C::first,C::second> > {};
62 const ModeDynamics<C::first,C::second>
63 operator()(
const C& coupling)
const
65 return ModeDynamics<C::first,C::second>(ml_,mode_,coupling.get());
69 const MultiLevelPtr ml_ ;
70 const mode::Ptr mode_;
75 typedef typename boost::fusion::result_of::transform<VC const,CouplingToModeDynamics>::type ModeDynamicss;
77 const ModeDynamicss mds_;
87 #define BIG_NAMESPACE_NAME mljc
88 #define BIG_CLASS_NAME MLJC
89 #define BIG_ADDITIONAL_PARAMETERS , const mljc::Pars<VC>& p
90 #define BIG_ADDITIONAL_PARAMETERS_PASS ,p.gs
91 #define BIG_ADDITIONAL_TEMPLATE_PARAMETERS int NL, typename VC,
92 #define BIG_ADDITIONAL_TEMPLATE_PARAMETERS_PASS <NL,VC>
98 #endif // CPPQEDELEMENTS_INTERACTIONS_MLJC_H_INCLUDED
Class representing an elementary coupling term (a here) with a compile-time pair and a runtime comp...
quantumdata::Types< 1 >::StateVectorLow StateVectorLow
Defines the Mode bundle (tackling the dynamics of a single harmonic-oscillator mode) ...
Contains helpers for the Mode bundle.
Defines free elements of the MultiLevel bundle.
std::complex< double > dcomp
A “preprocessor factory” to binary interactions.