68 "integrate: the quadrature formulae order may be chosen (HINT: use qopt.set_order(n))");
72 pops.
initialize (omega.get_piola_basis(), quad, iopt);
73 expr.initialize (pops, iopt);
74 expr.template valued_check<Result>();
76 Eigen::Matrix<Result,Eigen::Dynamic,1> value;
81 for (
size_type ie = 0, ne = omega.size(map_d); ie < ne; ie++) {
82 const geo_element& K = omega.get_geo_element (map_d, ie);
89 expr.evaluate (omega, K, value);
90 const Eigen::Matrix<T,Eigen::Dynamic,1>& w = pops.
get_weight (omega, K);
92 "incompatible sizes w("<<w.size()<<
") and value("<<value.size()<<
")");
96 for (
size_type loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
97 result += value[loc_inod]*w[loc_inod];
100#ifdef _RHEOLEF_HAVE_MPI
102 result = mpi::all_reduce (omega.geo_element_ownership(0).comm(), result, std::plus<Result>());
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")