11 #ifndef BEMBEL_SRC_DUFFYTRICK_INTEGRATE2_HPP_
12 #define BEMBEL_SRC_DUFFYTRICK_INTEGRATE2_HPP_
15 namespace DuffyTrick {
27 template <
typename Derived,
class T>
33 Eigen::Dynamic, Eigen::Dynamic> *intval) {
35 double h = e1.
get_h();
40 Eigen::Matrix<double, 2, 8> pts;
43 for (
auto i = 0; i < Q.w_.size(); ++i) {
44 double w = h * h * Q.w_(i) * Q.xi_(0, i) * (1 - Q.xi_(0, i)) *
45 (1 - Q.xi_(0, i) * Q.xi_(1, i));
46 for (
auto j = 0; j < Q.w_.size(); ++j) {
47 t1 = Q.xi_(0, j) * (1 - Q.xi_(0, i));
48 t2 = Q.xi_(1, j) * (1 - Q.xi_(0, i) * Q.xi_(1, i));
49 t3 = Q.xi_(0, j) * (1 - Q.xi_(0, i)) + Q.xi_(0, i);
50 t4 = Q.xi_(1, j) * (1 - Q.xi_(0, i) * Q.xi_(1, i)) +
51 Q.xi_(0, i) * Q.xi_(1, i);
52 pts << t1, t3, t1, t3, t2, t4, t2, t4, t2, t4, t4, t2, t1, t3, t3, t1;
53 for (
auto k = 0; k < 4; ++k) {
54 super_space.map2surface(e1, pts.col(2 * k), w, &qp1);
55 super_space.map2surface(e1, pts.col(2 * k + 1), Q.w_(j), &qp2);
56 LinOp.evaluateIntegrand(super_space, qp1, qp2, intval);
57 LinOp.evaluateIntegrand(super_space, qp2, qp1, intval);
64 BEMBEL_UNUSED_(ffield_qnodes1);
65 BEMBEL_UNUSED_(ffield_qnodes2);
The ElementTreeNode corresponds to an element in the element tree.
double get_h() const
getter
void integrate2(const LinearOperatorBase< Derived > &LinOp, const T &super_space, const ElementTreeNode &e1, int rot1, const ElementTreeNode &e2, int rot2, const ElementSurfacePoints &ffield_qnodes1, const ElementSurfacePoints &ffield_qnodes2, const Cubature &Q, Eigen::Matrix< typename LinearOperatorTraits< Derived >::Scalar, Eigen::Dynamic, Eigen::Dynamic > *intval)
quadrature routine for identical elements
Eigen::Matrix< double, 12, 1 > SurfacePoint
typedef of SurfacePoint
std::vector< SurfacePoint, Eigen::aligned_allocator< SurfacePoint > > ElementSurfacePoints
typedef std::vector<SurfacePoint> with aligned allocator of Eigen for compatibility with older compil...
Routines for the evalutation of pointwise errors.
linear operator base class. this serves as a common interface for existing linear operators.
struct containing specifications on the linear operator has to be specialized or derived for any part...