11 #ifndef BEMBEL_SRC_LINEARFORM_NEUMANNTRACE_HPP_
12 #define BEMBEL_SRC_LINEARFORM_NEUMANNTRACE_HPP_
16 template <
typename Scalar>
19 template <
typename ScalarT>
21 typedef ScalarT Scalar;
30 template <
typename Scalar>
35 const std::function<Eigen::Matrix<Scalar, 3, 1>(Eigen::Vector3d)>
40 void evaluateIntegrand_impl(
42 Eigen::Matrix<Scalar, Eigen::Dynamic, 1> *intval)
const {
43 auto polynomial_degree = super_space.get_polynomial_degree();
44 auto polynomial_degree_plus_one_squared =
45 (polynomial_degree + 1) * (polynomial_degree + 1);
48 auto s = p.segment<2>(0);
54 auto x_f = p.segment<3>(3);
55 auto x_f_dx = p.segment<3>(6);
56 auto x_f_dy = p.segment<3>(9);
59 auto x_f_n = x_f_dx.cross(x_f_dy);
63 auto integrand = x_f_n.dot(function_(x_f)) * ws;
66 super_space.addScaledBasis(intval, integrand, s);
72 std::function<Eigen::Matrix<Scalar, 3, 1>(Eigen::Vector3d)> function_;
This class provides an implementation of the Neumann trace operator and a corresponding method to eva...
Eigen::Matrix< double, 12, 1 > SurfacePoint
typedef of SurfacePoint
Routines for the evalutation of pointwise errors.