GCC Code Coverage Report


Directory: Bembel/src/
File: Bembel/src/LinearOperator/Dummy/DummyOperator.hpp
Date: 2024-03-19 14:38:05
Exec Total Coverage
Lines: 8 9 88.9%
Functions: 2 3 66.7%
Branches: 8 16 50.0%

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_LINEAROPERATOR_DUMMY_DUMMYOPERATOR_HPP_
12 #define BEMBEL_SRC_LINEAROPERATOR_DUMMY_DUMMYOPERATOR_HPP_
13
14 namespace Bembel {
15
16 class DummyOperator;
17 /**
18 * \brief Specification of the LinearOperatorTraits for the DummyOperator.
19 */
20 template <>
21 struct LinearOperatorTraits<DummyOperator> {
22 typedef Eigen::VectorXd EigenType;
23 typedef Eigen::VectorXd::Scalar Scalar;
24 enum {
25 OperatorOrder = 0,
26 Form = DifferentialForm::Discontinuous,
27 NumberOfFMMComponents = 1
28 };
29 };
30
31 // forward declaration of class DummyOperator in order to define traits
32 // define some default test functiom
33 std::function<double(const Eigen::Vector2d &, const Eigen::Vector2d &)>
34 DummyOperator_test_function =
35 [](const Eigen::Vector2d &x, const Eigen::Vector2d &y) { return 1.; };
36
37 /**
38 * \ingroup DummyOperator
39 * \brief This class provides a dummy specialization of the LinearOperator and
40 * corresponding Traits for testing and debugging
41 */
42 class DummyOperator : public LinearOperatorBase<DummyOperator> {
43 // implementation of the kernel evaluation, which may be based on the
44 // information available from the superSpace
45 public:
46 /**
47 * \brief Default constructor
48 *
49 * The default test function is a constant 1.
50 */
51 DummyOperator() { test_func_ = DummyOperator_test_function; }
52 /**
53 * \brief Constructor with a given test function.
54 */
55 5 DummyOperator(
56 std::function<double(const Eigen::Vector2d &, const Eigen::Vector2d &)>
57 5 test_func) {
58
1/2
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
5 test_func_ = test_func;
59 5 }
60 /**
61 * \brief Implements the integration routine.
62 *
63 * \param super_space SuperSpace specified with template parameter.
64 * \param p1 SurfacePoint for evaluating the first integral.
65 * \param p2 SurfacePoint for evaluating the second integral.
66 * \param intval Matrix for the computed integral.
67 */
68 template <class T>
69 89534512 void evaluateIntegrand_impl(
70 const T &super_space, const SurfacePoint &p1, const SurfacePoint &p2,
71 Eigen::Matrix<typename LinearOperatorTraits<DummyOperator>::Scalar,
72 Eigen::Dynamic, Eigen::Dynamic> *intval) const {
73 179069024 (*intval)(0, 0) +=
74
7/14
✓ Branch 2 taken 89534512 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 89534512 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 89534512 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 89534512 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 89534512 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 89534512 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 89534512 times.
✗ Branch 21 not taken.
89534512 test_func_(p1.segment(3, 2), p2.segment(3, 2)) * p1(2) * p2(2);
75 89534512 return;
76 }
77
78 private:
79 std::function<double(const Eigen::Vector2d &, const Eigen::Vector2d &)>
80 test_func_;
81 };
82
83 } // namespace Bembel
84 #endif // BEMBEL_SRC_LINEAROPERATOR_DUMMY_DUMMYOPERATOR_HPP_
85