30 ansatz_space_ = other.ansatz_space_;
32 polynomial_degree_plus_one_squared_ =
33 other.polynomial_degree_plus_one_squared_;
37 init_FunctionEvaluator(ansatz_space);
43 Eigen::Dynamic, 1> &fun) {
44 init_FunctionEvaluator(ansatz_space, fun);
51 ansatz_space_ = ansatz_space;
52 auto polynomial_degree = ansatz_space_.get_polynomial_degree();
53 polynomial_degree_plus_one_squared_ =
54 (polynomial_degree + 1) * (polynomial_degree + 1);
55 reordering_vector_ = ansatz_space_.get_superspace()
58 .computeReorderingVector();
61 void init_FunctionEvaluator(
64 Eigen::Dynamic, 1> &fun) {
65 ansatz_space_ = ansatz_space;
67 auto polynomial_degree = ansatz_space_.get_polynomial_degree();
68 polynomial_degree_plus_one_squared_ =
69 (polynomial_degree + 1) * (polynomial_degree + 1);
70 reordering_vector_ = ansatz_space_.get_superspace()
73 .computeReorderingVector();
82 evaluateOnPatch(
int patch,
const Eigen::Vector2d &
ref_point)
const {
84 (1 << ansatz_space_.get_refinement_level());
96 ansatz_space_.get_superspace().get_mesh().get_element_tree();
97 auto it =
et.cpbegin();
102 ansatz_space_.get_superspace().get_geometry()[
patch].updateSurfacePoint(
111 ansatz_space_.get_superspace(), polynomial_degree_plus_one_squared_,
113 fun_.block(polynomial_degree_plus_one_squared_ *
element.id_, 0,
114 polynomial_degree_plus_one_squared_,
120 return eval_.evalDiv(
121 ansatz_space_.get_superspace(), polynomial_degree_plus_one_squared_,
123 fun_.block(polynomial_degree_plus_one_squared_ *
element.id_, 0,
124 polynomial_degree_plus_one_squared_,
137 auto longfun = (ansatz_space_.get_transformation_matrix() *
fun).eval();
139 Eigen::Map<Eigen::Matrix<typename LinearOperatorTraits<Derived>::Scalar,
147 std::vector<int> reordering_vector_;
153 int polynomial_degree_plus_one_squared_;