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 I,
int J>
29 template<
int NL,
typename VC>
35 typedef typename MultiLevelBase<NL>::Ptr MultiLevelPtr;
37 Base(MultiLevelPtr, mode::Ptr,
const VC&);
40 class ElementaryCoupling;
48 class CouplingToModeDynamics
51 CouplingToModeDynamics(MultiLevelPtr ml, mode::Ptr
mode) : ml_(ml), mode_(mode) {}
55 template<
typename T,
typename C>
56 struct result<T(const C&)> : mpl::identity<ModeDynamics<C::first,C::second> > {};
59 const ModeDynamics<C::first,C::second>
60 operator()(
const C& coupling)
const
62 return ModeDynamics<C::first,C::second>(ml_,mode_,coupling.get());
66 const MultiLevelPtr ml_ ;
67 const mode::Ptr mode_;
72 typedef typename boost::fusion::result_of::transform<VC const,CouplingToModeDynamics>::type ModeDynamicss;
74 const ModeDynamicss mds_;
84 #define BIG_NAMESPACE_NAME mljc
85 #define BIG_CLASS_NAME MLJC
86 #define BIG_ADDITIONAL_PARAMETERS , const mljc::Pars<VC>& p
87 #define BIG_ADDITIONAL_PARAMETERS_PASS ,p.gs
88 #define BIG_ADDITIONAL_TEMPLATE_PARAMETERS int NL, typename VC,
89 #define BIG_ADDITIONAL_TEMPLATE_PARAMETERS_PASS <NL,VC>
95 #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.
A “preprocessor factory” to binary interactions.