GCC Code Coverage Report


Directory: ../../../builds/dumux-repositories/
File: dumux/dumux/common/reservedblockvector.hh
Date: 2025-04-12 19:19:20
Exec Total Coverage
Lines: 13 16 81.2%
Functions: 0 0 -%
Branches: 95 189 50.3%

Line Branch Exec Source
1 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 // vi: set et ts=4 sw=4 sts=4:
3 //
4 // SPDX-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5 // SPDX-License-Identifier: GPL-3.0-or-later
6 //
7 /*!
8 * \file
9 * \ingroup Core
10 * \brief A arithmetic block vector type based on DUNE's reserved vector
11 */
12 #ifndef DUMUX_RESERVED_BLOCK_VECTOR_HH
13 #define DUMUX_RESERVED_BLOCK_VECTOR_HH
14
15 #include <algorithm>
16 #include <dune/common/reservedvector.hh>
17
18 namespace Dumux {
19
20 /*!
21 * \ingroup Core
22 * \brief A arithmetic block vector type based on DUNE's reserved vector
23 */
24 template<class BlockType, int capacity>
25 class ReservedBlockVector : public Dune::ReservedVector<BlockType, capacity>
26 {
27 using Base = Dune::ReservedVector<BlockType, capacity>;
28 public:
29
30 using size_type = typename Base::size_type;
31 using value_type = BlockType;
32
33 15250014 using Base::Base;
34
35 16424508 explicit ReservedBlockVector() : Base() {}
36
11/12
✓ Branch 0 taken 10132204 times.
✓ Branch 1 taken 15850118 times.
✓ Branch 2 taken 20132146 times.
✓ Branch 3 taken 3105103 times.
✓ Branch 4 taken 7 times.
✓ Branch 5 taken 383253 times.
✓ Branch 6 taken 7 times.
✓ Branch 7 taken 1857541 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 372352 times.
✓ Branch 10 taken 1 times.
✓ Branch 11 taken 2111 times.
1053028932 explicit ReservedBlockVector(size_type size) : Base() { this->resize(size); }
37
38 ReservedBlockVector(const ReservedBlockVector&) = default;
39 ReservedBlockVector(ReservedBlockVector&&) = default;
40
41 ReservedBlockVector& operator= (const ReservedBlockVector&) = default;
42 ReservedBlockVector& operator= (ReservedBlockVector&&) = default;
43
44 ~ReservedBlockVector() = default;
45
46 //! assignment from scalar
47 362614457 ReservedBlockVector& operator= (const typename BlockType::field_type& v)
48 {
49
22/27
✓ Branch 0 taken 255222 times.
✓ Branch 1 taken 91055042 times.
✓ Branch 2 taken 89198023 times.
✓ Branch 3 taken 4419686 times.
✓ Branch 4 taken 11975565 times.
✓ Branch 5 taken 2913944 times.
✓ Branch 6 taken 3684841 times.
✓ Branch 7 taken 246762 times.
✓ Branch 8 taken 716747 times.
✓ Branch 9 taken 386424 times.
✓ Branch 11 taken 1170203 times.
✓ Branch 12 taken 5159 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 5781 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✓ Branch 18 taken 5780 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✓ Branch 23 taken 31 times.
✓ Branch 24 taken 1 times.
✓ Branch 25 taken 1055 times.
✓ Branch 26 taken 1 times.
✓ Branch 27 taken 30831 times.
✓ Branch 10 taken 12914703 times.
725623972 std::fill(this->begin(), this->end(), v);
50 return *this;
51 }
52
53 //! vector space addition
54 55962239 ReservedBlockVector& operator+= (const ReservedBlockVector& other)
55 {
56
20/24
✓ Branch 0 taken 16695546 times.
✓ Branch 1 taken 12724950 times.
✓ Branch 2 taken 376651282 times.
✓ Branch 3 taken 142680019 times.
✓ Branch 4 taken 16673197 times.
✓ Branch 5 taken 16977325 times.
✓ Branch 6 taken 41584238 times.
✓ Branch 7 taken 31733102 times.
✓ Branch 8 taken 345532 times.
✓ Branch 9 taken 326646 times.
✓ Branch 10 taken 11765904 times.
✓ Branch 11 taken 3266520 times.
✓ Branch 12 taken 971110 times.
✓ Branch 13 taken 967555 times.
✓ Branch 14 taken 917268 times.
✓ Branch 15 taken 867268 times.
✓ Branch 16 taken 355440 times.
✓ Branch 17 taken 88860 times.
✓ Branch 18 taken 2892000 times.
✓ Branch 19 taken 964000 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
679447762 for (size_type i = 0; i < this->size(); ++i)
57 859899627 (*this)[i] += other[i];
58 return *this;
59 }
60
61 //! vector space subtraction
62 ReservedBlockVector& operator-= (const ReservedBlockVector& other)
63 {
64
24/72
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 6486752 times.
✓ Branch 5 taken 1636088 times.
✓ Branch 6 taken 554983448 times.
✓ Branch 7 taken 132801956 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 3004032 times.
✓ Branch 13 taken 751008 times.
✓ Branch 14 taken 228373174 times.
✓ Branch 15 taken 57841871 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 114846 times.
✓ Branch 21 taken 24302 times.
✓ Branch 22 taken 73229184 times.
✓ Branch 23 taken 17625956 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 98963336 times.
✓ Branch 31 taken 17341340 times.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 2354206 times.
✓ Branch 39 taken 560018 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 18350688 times.
✓ Branch 47 taken 5264536 times.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 805462 times.
✓ Branch 55 taken 167386 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✓ Branch 62 taken 3168 times.
✓ Branch 63 taken 1056 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 123328 times.
✓ Branch 71 taken 30832 times.
1220837973 for (size_type i = 0; i < this->size(); ++i)
65 1511994213 (*this)[i] -= other[i];
66 return *this;
67 }
68
69 //! division by scalar
70 234046349 ReservedBlockVector& operator/= (const typename BlockType::field_type& v)
71 {
72
18/36
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 561470200 times.
✓ Branch 3 taken 134438044 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 231377206 times.
✓ Branch 7 taken 58592879 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 73344030 times.
✓ Branch 11 taken 17650258 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 98963336 times.
✓ Branch 15 taken 17341340 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 2354206 times.
✓ Branch 19 taken 560018 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 18350688 times.
✓ Branch 23 taken 5264536 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 805462 times.
✓ Branch 27 taken 167386 times.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 3168 times.
✓ Branch 31 taken 1056 times.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 123328 times.
✓ Branch 35 taken 30832 times.
1220837973 for (size_type i = 0; i < this->size(); ++i)
73 1511994213 (*this)[i] /= v;
74 return *this;
75 }
76
77 //! multiplication by scalar
78 ReservedBlockVector& operator*= (const typename BlockType::field_type& v)
79 {
80 for (size_type i = 0; i < this->size(); ++i)
81 (*this)[i] *= v;
82 return *this;
83 }
84 };
85
86 } // end namespace Dumux
87
88 #endif
89