Bembel
integrate0.hpp
1 // This file is part of Bembel, the higher order C++ boundary element library.
2 //
3 // Copyright (C) 2022 see <http://www.bembel.eu>
4 //
5 // It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
6 // M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
7 // Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
8 // source code is subject to the GNU General Public License version 3 and
9 // provided WITHOUT ANY WARRANTY, see <http://www.bembel.eu> for further
10 // information.
11 #ifndef BEMBEL_SRC_DUFFYTRICK_INTEGRATE0_HPP_
12 #define BEMBEL_SRC_DUFFYTRICK_INTEGRATE0_HPP_
13 
14 namespace Bembel {
15 namespace DuffyTrick {
22 template <typename Derived, class T>
23 void integrate0(const LinearOperatorBase<Derived> &LinOp, const T &super_space,
24  const ElementTreeNode &e1, int rot1, const ElementTreeNode &e2,
25  int rot2, const ElementSurfacePoints &ffield_qnodes1,
26  const ElementSurfacePoints &ffield_qnodes2, const Cubature &Q,
27  Eigen::Matrix<typename LinearOperatorTraits<Derived>::Scalar,
28  Eigen::Dynamic, Eigen::Dynamic> *intval) {
29  intval->setZero();
30  for (auto i = 0; i < Q.w_.size(); ++i)
31  for (auto j = 0; j < Q.w_.size(); ++j)
32  LinOp.evaluateIntegrand(super_space, ffield_qnodes1[i], ffield_qnodes2[j],
33  intval);
34  BEMBEL_UNUSED_(rot1);
35  BEMBEL_UNUSED_(rot2);
36  BEMBEL_UNUSED_(Q);
37  return;
38 }
39 } // namespace DuffyTrick
40 } // namespace Bembel
41 #endif // BEMBEL_SRC_DUFFYTRICK_INTEGRATE0_HPP_
The ElementTreeNode corresponds to an element in the element tree.
void integrate0(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)
far-field quadrature routine, which is based on precomputed values in order to quickly evaluate the i...
Definition: integrate0.hpp:23
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.
Definition: AnsatzSpace.hpp:14
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...