GCC Code Coverage Report


Directory: Bembel/src/
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 30 / 0 / 30
Functions: 100.0% 5 / 0 / 5
Branches: 100.0% 20 / 0 / 20

DuffyTrick/integrate0.hpp
Line Branch Exec Source
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 {
16 /**
17 * \ingroup DuffyTrick
18 * \brief far-field quadrature routine, which is based on precomputed values in
19 * order to quickly evaluate the integrand in the case that the far-field
20 * quadrature degree can be used
21 */
22 template <typename Derived, class T>
23 34006 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 34006 intval->setZero();
30
10/10
void Bembel::DuffyTrick::integrate0<Bembel::DummyOperator, Bembel::SuperSpace<Bembel::DummyOperator> >(Bembel::LinearOperatorBase<Bembel::DummyOperator> const&, Bembel::SuperSpace<Bembel::DummyOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::DummyOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 73984 times.
✓ Branch 2 taken 256 times.
void Bembel::DuffyTrick::integrate0<Bembel::HelmholtzSingleLayerOperator, Bembel::SuperSpace<Bembel::HelmholtzSingleLayerOperator> >(Bembel::LinearOperatorBase<Bembel::HelmholtzSingleLayerOperator> const&, Bembel::SuperSpace<Bembel::HelmholtzSingleLayerOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::HelmholtzSingleLayerOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 266616 times.
✓ Branch 2 taken 18984 times.
void Bembel::DuffyTrick::integrate0<Bembel::HomogenisedLaplaceSingleLayerOperator, Bembel::SuperSpace<Bembel::HomogenisedLaplaceSingleLayerOperator> >(Bembel::LinearOperatorBase<Bembel::HomogenisedLaplaceSingleLayerOperator> const&, Bembel::SuperSpace<Bembel::HomogenisedLaplaceSingleLayerOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::HomogenisedLaplaceSingleLayerOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 37368 times.
✓ Branch 2 taken 4152 times.
void Bembel::DuffyTrick::integrate0<Bembel::LaplaceSingleLayerOperator, Bembel::SuperSpace<Bembel::LaplaceSingleLayerOperator> >(Bembel::LinearOperatorBase<Bembel::LaplaceSingleLayerOperator> const&, Bembel::SuperSpace<Bembel::LaplaceSingleLayerOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::LaplaceSingleLayerOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 47736 times.
✓ Branch 2 taken 5304 times.
void Bembel::DuffyTrick::integrate0<Bembel::MaxwellSingleLayerOperator, Bembel::SuperSpace<Bembel::MaxwellSingleLayerOperator> >(Bembel::LinearOperatorBase<Bembel::MaxwellSingleLayerOperator> const&, Bembel::SuperSpace<Bembel::MaxwellSingleLayerOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::MaxwellSingleLayerOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 84960 times.
✓ Branch 2 taken 5310 times.
544670 for (auto i = 0; i < Q.w_.size(); ++i)
31
10/10
void Bembel::DuffyTrick::integrate0<Bembel::DummyOperator, Bembel::SuperSpace<Bembel::DummyOperator> >(Bembel::LinearOperatorBase<Bembel::DummyOperator> const&, Bembel::SuperSpace<Bembel::DummyOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::DummyOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 21381376 times.
✓ Branch 2 taken 73984 times.
void Bembel::DuffyTrick::integrate0<Bembel::HelmholtzSingleLayerOperator, Bembel::SuperSpace<Bembel::HelmholtzSingleLayerOperator> >(Bembel::LinearOperatorBase<Bembel::HelmholtzSingleLayerOperator> const&, Bembel::SuperSpace<Bembel::HelmholtzSingleLayerOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::HelmholtzSingleLayerOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 3931704 times.
✓ Branch 2 taken 266616 times.
void Bembel::DuffyTrick::integrate0<Bembel::HomogenisedLaplaceSingleLayerOperator, Bembel::SuperSpace<Bembel::HomogenisedLaplaceSingleLayerOperator> >(Bembel::LinearOperatorBase<Bembel::HomogenisedLaplaceSingleLayerOperator> const&, Bembel::SuperSpace<Bembel::HomogenisedLaplaceSingleLayerOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::HomogenisedLaplaceSingleLayerOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 336312 times.
✓ Branch 2 taken 37368 times.
void Bembel::DuffyTrick::integrate0<Bembel::LaplaceSingleLayerOperator, Bembel::SuperSpace<Bembel::LaplaceSingleLayerOperator> >(Bembel::LinearOperatorBase<Bembel::LaplaceSingleLayerOperator> const&, Bembel::SuperSpace<Bembel::LaplaceSingleLayerOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::LaplaceSingleLayerOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 429624 times.
✓ Branch 2 taken 47736 times.
void Bembel::DuffyTrick::integrate0<Bembel::MaxwellSingleLayerOperator, Bembel::SuperSpace<Bembel::MaxwellSingleLayerOperator> >(Bembel::LinearOperatorBase<Bembel::MaxwellSingleLayerOperator> const&, Bembel::SuperSpace<Bembel::MaxwellSingleLayerOperator> const&, Bembel::ElementTreeNode const&, int, Bembel::ElementTreeNode const&, int, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, std::vector<Eigen::Matrix<double, 12, 1, 0, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1, 0, 12, 1> > > const&, Bembel::Quadrature<2u> const&, Eigen::Matrix<Bembel::LinearOperatorTraits<Bembel::MaxwellSingleLayerOperator>::Scalar, -1, -1, 0, -1, -1>*):
✓ Branch 1 taken 1359360 times.
✓ Branch 2 taken 84960 times.
27949040 for (auto j = 0; j < Q.w_.size(); ++j)
32 27438376 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 34006 return;
38 }
39 } // namespace DuffyTrick
40 } // namespace Bembel
41 #endif // BEMBEL_SRC_DUFFYTRICK_INTEGRATE0_HPP_
42