29 #ifndef __FormContextBase_H
30 #define __FormContextBase_H 1
46 template<
typename GeomapContext,
typename IM,
typename GeomapExprContext>
54 typedef GeomapContext map_geometric_mapping_context_type;
55 typedef typename fusion::result_of::value_at_key<GeomapContext,gmc<0> >::type geometric_mapping_context_ptrtype;
56 typedef typename geometric_mapping_context_ptrtype::element_type geometric_mapping_context_type;
57 typedef typename geometric_mapping_context_type::gm_type geometric_mapping_type;
59 typedef mpl::int_<fusion::result_of::template size<GeomapContext>::type::value> map_size;
61 typedef typename mpl::if_<mpl::equal_to<map_size,mpl::int_<2> >, gmc<1>, gmc<0> >::type gmc1;
63 typedef typename fusion::result_of::value_at_key<GeomapContext,gmc<0> >::type left_gmc_ptrtype;
64 typedef typename fusion::result_of::value_at_key<GeomapContext,gmc<0> >::type::element_type left_gmc_type;
65 typedef typename fusion::result_of::value_at_key<GeomapContext,gmc1 >::type right_gmc_ptrtype;
66 typedef typename fusion::result_of::value_at_key<GeomapContext,gmc1 >::type::element_type right_gmc_type;
68 typedef fusion::map<fusion::pair<gmc<0>, left_gmc_ptrtype> > map_left_gmc_type;
69 typedef fusion::map<fusion::pair<gmc<0>, right_gmc_ptrtype> > map_right_gmc_type;
72 typedef GeomapExprContext map_geometric_mapping_expr_context_type;
76 virtual ~FormContextBase() {}
78 virtual void update( map_geometric_mapping_context_type
const& _gmc,
79 map_geometric_mapping_expr_context_type
const& _gmcExpr ) = 0;
81 virtual void update( map_geometric_mapping_context_type
const& _gmc,
82 map_geometric_mapping_expr_context_type
const& _gmcExpr,
86 virtual void update( map_geometric_mapping_context_type
const& _gmc,
87 map_geometric_mapping_expr_context_type
const& _gmcExpr,
90 virtual void update( map_geometric_mapping_context_type
const& _gmc,
91 map_geometric_mapping_expr_context_type
const& _gmcExpr,
92 IM
const& im, mpl::int_<2> ) = 0;
97 virtual void assemble() = 0;
99 virtual void assemble( mpl::int_<2> ) = 0;
Poly::value_type integrate(Polynomial< Poly, PsetType > const &p)
integrate a polynomial over a convex
Definition: operations.hpp:51