GCC Code Coverage Report


Directory: ../../../builds/dumux-repositories/
File: /builds/dumux-repositories/dumux/dumux/discretization/cvfe/elementvolumevariables.hh
Date: 2024-05-04 19:09:25
Exec Total Coverage
Lines: 24 35 68.6%
Functions: 108 347 31.1%
Branches: 448 602 74.4%

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-FileCopyrightInfo: 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 CVFEDiscretization
10 * \brief The local volume variables class
11 */
12 #ifndef DUMUX_DISCRETIZATION_CVFE_ELEMENT_VOLUMEVARIABLES_HH
13 #define DUMUX_DISCRETIZATION_CVFE_ELEMENT_VOLUMEVARIABLES_HH
14
15 #include <type_traits>
16 #include <utility>
17 #include <vector>
18
19 #include <dumux/discretization/elementsolution.hh>
20
21 namespace Dumux {
22
23 /*!
24 * \ingroup CVFEDiscretization
25 * \brief The local (stencil) volume variables class for control-volume finite element
26 * \note The class is specialized for versions with and without caching
27 * \tparam GVV the grid volume variables type
28 * \tparam cachingEnabled if the cache is enabled
29 */
30 template<class GVV, bool cachingEnabled>
31 class CVFEElementVolumeVariables;
32
33 /*!
34 * \ingroup CVFEDiscretization
35 * \brief The local (stencil) volume variables class for control-volume finite element with caching
36 * \note the volume variables are stored for the whole grid view in the corresponding GridVolumeVariables class
37 */
38 template<class GVV>
39 class CVFEElementVolumeVariables<GVV, /*cachingEnabled*/true>
40 {
41 public:
42 //! export type of the grid volume variables
43 using GridVolumeVariables = GVV;
44
45 //! export type of the volume variables
46 using VolumeVariables = typename GridVolumeVariables::VolumeVariables;
47
48 //! Constructor
49 CVFEElementVolumeVariables(const GridVolumeVariables& gridVolVars)
50 : gridVolVarsPtr_(&gridVolVars) {}
51
52 const VolumeVariables& operator [](std::size_t scvIdx) const
53
31/32
✓ Branch 0 taken 5019673 times.
✓ Branch 1 taken 51348955 times.
✓ Branch 2 taken 5019673 times.
✓ Branch 3 taken 51348955 times.
✓ Branch 4 taken 26524651 times.
✓ Branch 5 taken 29843977 times.
✓ Branch 6 taken 26524651 times.
✓ Branch 7 taken 29843977 times.
✓ Branch 8 taken 6968304 times.
✓ Branch 9 taken 290129396 times.
✓ Branch 10 taken 6968304 times.
✓ Branch 11 taken 315505796 times.
✓ Branch 12 taken 146427580 times.
✓ Branch 13 taken 176046520 times.
✓ Branch 14 taken 146432368 times.
✓ Branch 15 taken 176041732 times.
✓ Branch 16 taken 11432638 times.
✓ Branch 17 taken 254750530 times.
✓ Branch 18 taken 11427850 times.
✓ Branch 19 taken 237837718 times.
✓ Branch 20 taken 51726608 times.
✓ Branch 21 taken 109875978 times.
✓ Branch 22 taken 51768902 times.
✓ Branch 23 taken 101459472 times.
✓ Branch 24 taken 42294 times.
✓ Branch 25 taken 64130454 times.
✗ Branch 26 not taken.
✓ Branch 27 taken 64088160 times.
✓ Branch 28 taken 30800 times.
✓ Branch 29 taken 50560 times.
✓ Branch 30 taken 30800 times.
✓ Branch 31 taken 50560 times.
1636004604 { return gridVolVars().volVars(eIdx_, scvIdx); }
54
55 template<class SubControlVolume, typename std::enable_if_t<!std::is_integral<SubControlVolume>::value, int> = 0>
56 const VolumeVariables& operator [](const SubControlVolume& scv) const
57
21/31
✓ Branch 0 taken 188725580 times.
✓ Branch 1 taken 3345600 times.
✓ Branch 2 taken 188725580 times.
✓ Branch 3 taken 3345600 times.
✓ Branch 4 taken 205643180 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 205643180 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 538354092 times.
✓ Branch 9 taken 153400836 times.
✓ Branch 10 taken 538990572 times.
✓ Branch 11 taken 153400836 times.
✓ Branch 12 taken 64808932 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 64808932 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 248447972 times.
✓ Branch 17 taken 6656000 times.
✓ Branch 18 taken 247811492 times.
✓ Branch 19 taken 9201920 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 8472096 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 5926216 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 40 times.
✗ Branch 27 not taken.
✓ Branch 45 taken 40 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 40 times.
✗ Branch 49 not taken.
7466130034 { return gridVolVars().volVars(eIdx_, scv.indexInElement()); }
58
59 /*!
60 * \brief bind the local view (r-value overload)
61 * This overload is called when an instance of this class is a temporary in the usage context
62 * This allows a usage like this: `const auto view = localView(...).bind(element);`
63 */
64 template<class FVElementGeometry, class SolutionVector>
65 CVFEElementVolumeVariables bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
66 const FVElementGeometry& fvGeometry,
67 const SolutionVector& sol) &&
68 {
69 710966 this->bindElement(element, fvGeometry, sol);
70 355483 return std::move(*this);
71 }
72
73 // For compatibility reasons with the case of not storing the vol vars.
74 // function to be called before assembling an element, preparing the vol vars within the stencil
75 template<class FVElementGeometry, class SolutionVector>
76 void bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
77 const FVElementGeometry& fvGeometry,
78 const SolutionVector& sol) &
79 {
80 15561454 bindElement(element, fvGeometry, sol);
81 }
82
83 /*!
84 * \brief bind the local view (r-value overload)
85 * This overload is called when an instance of this class is a temporary in the usage context
86 * This allows a usage like this: `const auto view = localView(...).bind(element);`
87 */
88 template<class FVElementGeometry, class SolutionVector>
89 CVFEElementVolumeVariables bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
90 const FVElementGeometry& fvGeometry,
91 const SolutionVector& sol) &&
92 {
93 78060 this->bindElement(element, fvGeometry, sol);
94 39030 return std::move(*this);
95 }
96
97 // function to prepare the vol vars within the element
98 template<class FVElementGeometry, class SolutionVector>
99 void bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
100 const FVElementGeometry& fvGeometry,
101 const SolutionVector& sol) &
102 {
103
46/81
✓ Branch 1 taken 55304 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 55304 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 55304 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 15078 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 138216 times.
✓ Branch 20 taken 15078 times.
✓ Branch 21 taken 10487 times.
✓ Branch 22 taken 138216 times.
✓ Branch 23 taken 15078 times.
✓ Branch 24 taken 10487 times.
✓ Branch 25 taken 138216 times.
✓ Branch 26 taken 15078 times.
✓ Branch 27 taken 10487 times.
✓ Branch 28 taken 284772 times.
✓ Branch 29 taken 30156 times.
✓ Branch 30 taken 10487 times.
✓ Branch 31 taken 284772 times.
✓ Branch 32 taken 634356 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 284772 times.
✓ Branch 35 taken 30156 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✓ Branch 38 taken 30156 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 7 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✓ Branch 48 taken 261051 times.
✗ Branch 49 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✓ Branch 53 taken 1191312 times.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✓ Branch 56 taken 1191312 times.
✗ Branch 57 not taken.
✓ Branch 59 taken 1191312 times.
✓ Branch 60 taken 20798 times.
✓ Branch 62 taken 1191312 times.
✗ Branch 63 not taken.
✓ Branch 65 taken 71568 times.
✗ Branch 66 not taken.
✓ Branch 68 taken 71568 times.
✗ Branch 69 not taken.
✓ Branch 71 taken 71568 times.
✗ Branch 72 not taken.
✓ Branch 87 taken 4416 times.
✗ Branch 88 not taken.
✓ Branch 90 taken 4416 times.
✓ Branch 91 taken 10400 times.
✗ Branch 92 not taken.
✓ Branch 93 taken 4416 times.
✓ Branch 94 taken 10400 times.
✗ Branch 95 not taken.
✓ Branch 96 taken 4412 times.
✓ Branch 97 taken 10400 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 10400 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 10400 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 10400 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 10400 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 10400 times.
✗ Branch 113 not taken.
48607638 eIdx_ = fvGeometry.gridGeometry().elementMapper().index(element);
104 }
105
106 //! The global volume variables object we are a restriction of
107 const GridVolumeVariables& gridVolVars() const
108 { return *gridVolVarsPtr_; }
109
110 private:
111 const GridVolumeVariables* gridVolVarsPtr_;
112 std::size_t eIdx_;
113 };
114
115
116 /*!
117 * \ingroup CVFEDiscretization
118 * \brief The local (stencil) volume variables class for control-volume finite element without caching
119 */
120 template<class GVV>
121
100/152
✓ Branch 0 taken 293 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 244 times.
✓ Branch 5 taken 1227 times.
✓ Branch 6 taken 42900 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 51 times.
✓ Branch 10 taken 140893 times.
✓ Branch 11 taken 5772534 times.
✓ Branch 12 taken 54 times.
✓ Branch 13 taken 42900 times.
✓ Branch 14 taken 5767798 times.
✓ Branch 15 taken 45503 times.
✓ Branch 16 taken 62516 times.
✓ Branch 17 taken 183688 times.
✓ Branch 18 taken 788612 times.
✓ Branch 19 taken 198568 times.
✓ Branch 20 taken 34 times.
✓ Branch 21 taken 5908586 times.
✓ Branch 22 taken 605 times.
✓ Branch 23 taken 5885990 times.
✓ Branch 24 taken 5071 times.
✓ Branch 25 taken 5767800 times.
✓ Branch 26 taken 374196 times.
✓ Branch 27 taken 23 times.
✓ Branch 28 taken 78366 times.
✓ Branch 29 taken 129665 times.
✓ Branch 30 taken 57780 times.
✓ Branch 31 taken 330946 times.
✓ Branch 32 taken 4466 times.
✓ Branch 33 taken 788772 times.
✓ Branch 34 taken 126138 times.
✓ Branch 35 taken 788623 times.
✓ Branch 36 taken 164712 times.
✓ Branch 37 taken 788612 times.
✓ Branch 38 taken 125694 times.
✓ Branch 39 taken 1048720 times.
✓ Branch 40 taken 655 times.
✓ Branch 41 taken 404 times.
✓ Branch 42 taken 260112 times.
✓ Branch 43 taken 970 times.
✓ Branch 44 taken 412 times.
✓ Branch 45 taken 316432 times.
✓ Branch 46 taken 12 times.
✓ Branch 47 taken 316908 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 321282 times.
✓ Branch 50 taken 16 times.
✓ Branch 51 taken 320882 times.
✓ Branch 52 taken 400 times.
✓ Branch 53 taken 4495 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 4 times.
✗ Branch 56 not taken.
✓ Branch 57 taken 154192 times.
✗ Branch 58 not taken.
✓ Branch 59 taken 161552 times.
✓ Branch 60 taken 260448 times.
✓ Branch 61 taken 153840 times.
✓ Branch 62 taken 421648 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 413936 times.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✓ Branch 67 taken 7708 times.
✗ Branch 68 not taken.
✓ Branch 69 taken 50000 times.
✓ Branch 70 taken 7708 times.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✓ Branch 74 taken 154240 times.
✗ Branch 75 not taken.
✓ Branch 76 taken 1387584 times.
✓ Branch 77 taken 16 times.
✓ Branch 78 taken 154240 times.
✓ Branch 79 taken 160408 times.
✗ Branch 80 not taken.
✓ Branch 81 taken 160408 times.
✗ Branch 82 not taken.
✓ Branch 83 taken 6552 times.
✓ Branch 84 taken 6552 times.
✓ Branch 85 taken 7712 times.
✓ Branch 86 taken 6552 times.
✓ Branch 87 taken 7712 times.
✓ Branch 88 taken 352 times.
✓ Branch 89 taken 7712 times.
✓ Branch 90 taken 353 times.
✗ Branch 91 not taken.
✓ Branch 92 taken 352 times.
✗ Branch 93 not taken.
✓ Branch 94 taken 1 times.
✗ Branch 95 not taken.
✓ Branch 96 taken 53021 times.
✗ Branch 97 not taken.
✓ Branch 98 taken 3021 times.
✓ Branch 99 taken 57708 times.
✓ Branch 100 taken 3021 times.
✓ Branch 101 taken 10729 times.
✗ Branch 102 not taken.
✓ Branch 103 taken 10729 times.
✗ Branch 104 not taken.
✗ Branch 105 not taken.
✓ Branch 106 taken 964000 times.
✗ Branch 107 not taken.
✗ Branch 108 not taken.
✓ Branch 109 taken 964000 times.
✗ Branch 110 not taken.
✗ Branch 111 not taken.
✓ Branch 112 taken 326574 times.
✓ Branch 113 taken 12168 times.
✗ Branch 114 not taken.
✗ Branch 115 not taken.
✓ Branch 116 taken 50000 times.
✓ Branch 117 taken 175910 times.
✓ Branch 118 taken 56920 times.
✗ Branch 119 not taken.
✓ Branch 120 taken 50000 times.
✗ Branch 121 not taken.
✓ Branch 122 taken 2 times.
✗ Branch 123 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✓ Branch 126 taken 2 times.
✓ Branch 127 taken 964000 times.
✗ Branch 128 not taken.
✓ Branch 129 taken 964000 times.
✓ Branch 130 taken 1 times.
✓ Branch 131 taken 964000 times.
✓ Branch 132 taken 1 times.
✗ Branch 133 not taken.
✓ Branch 134 taken 1 times.
✗ Branch 135 not taken.
✓ Branch 136 taken 1 times.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✓ Branch 141 taken 100 times.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✓ Branch 145 taken 1 times.
✗ Branch 146 not taken.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✓ Branch 150 taken 1 times.
✗ Branch 151 not taken.
✗ Branch 153 not taken.
✗ Branch 154 not taken.
24004422 class CVFEElementVolumeVariables<GVV, /*cachingEnabled*/false>
122 {
123 public:
124 //! export type of the grid volume variables
125 using GridVolumeVariables = GVV;
126
127 //! export type of the volume variables
128 using VolumeVariables = typename GridVolumeVariables::VolumeVariables;
129
130 //! Constructor
131 CVFEElementVolumeVariables(const GridVolumeVariables& gridVolVars)
132
53/70
✓ Branch 1 taken 293 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 293 times.
✓ Branch 5 taken 16329 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 44115 times.
✓ Branch 8 taken 16329 times.
✓ Branch 9 taken 153840 times.
✓ Branch 10 taken 44115 times.
✓ Branch 11 taken 16766 times.
✓ Branch 12 taken 153840 times.
✓ Branch 13 taken 5843345 times.
✓ Branch 14 taken 16024 times.
✓ Branch 15 taken 153840 times.
✓ Branch 16 taken 5842603 times.
✓ Branch 17 taken 158329 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 6007408 times.
✓ Branch 20 taken 4477 times.
✓ Branch 21 taken 16 times.
✓ Branch 22 taken 6007396 times.
✓ Branch 23 taken 4466 times.
✓ Branch 24 taken 16 times.
✓ Branch 25 taken 242251 times.
✓ Branch 26 taken 4466 times.
✓ Branch 27 taken 153856 times.
✓ Branch 28 taken 88411 times.
✓ Branch 29 taken 260096 times.
✓ Branch 30 taken 16 times.
✓ Branch 31 taken 45483 times.
✓ Branch 32 taken 260096 times.
✓ Branch 33 taken 7304 times.
✓ Branch 34 taken 38931 times.
✓ Branch 35 taken 263117 times.
✓ Branch 36 taken 752 times.
✓ Branch 37 taken 442 times.
✓ Branch 38 taken 263117 times.
✓ Branch 39 taken 752 times.
✓ Branch 40 taken 442 times.
✓ Branch 41 taken 3021 times.
✓ Branch 42 taken 752 times.
✓ Branch 43 taken 3021 times.
✓ Branch 45 taken 354162 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 354162 times.
✗ Branch 49 not taken.
✓ Branch 51 taken 198250 times.
✗ Branch 52 not taken.
✓ Branch 54 taken 198250 times.
✗ Branch 55 not taken.
✓ Branch 57 taken 50002 times.
✗ Branch 58 not taken.
✓ Branch 60 taken 50002 times.
✗ Branch 61 not taken.
✓ Branch 63 taken 50002 times.
✗ Branch 64 not taken.
✓ Branch 66 taken 50002 times.
✗ Branch 67 not taken.
✓ Branch 69 taken 964001 times.
✗ Branch 70 not taken.
✓ Branch 72 taken 964001 times.
✗ Branch 73 not taken.
✓ Branch 75 taken 964001 times.
✗ Branch 76 not taken.
✓ Branch 78 taken 964001 times.
✗ Branch 79 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
36729720 : gridVolVarsPtr_(&gridVolVars) {}
133
134 /*!
135 * \brief bind the local view (r-value overload)
136 * This overload is called when an instance of this class is a temporary in the usage context
137 * This allows a usage like this: `const auto view = localView(...).bind(element);`
138 */
139 template<class FVElementGeometry, class SolutionVector>
140 CVFEElementVolumeVariables bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
141 const FVElementGeometry& fvGeometry,
142 const SolutionVector& sol) &&
143 {
144
2/4
✓ Branch 1 taken 161146 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 156861 times.
✗ Branch 5 not taken.
318007 this->bindElement(element, fvGeometry, sol);
145
4/8
✗ Branch 0 not taken.
✓ Branch 1 taken 161146 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 161146 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 156861 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 156861 times.
636014 return std::move(*this);
146 }
147
148 // specialization for control-volume finite element, simply forwards to the bindElement method
149 template<class FVElementGeometry, class SolutionVector>
150 void bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
151 const FVElementGeometry& fvGeometry,
152 const SolutionVector& sol) &
153 {
154
21/39
✓ Branch 1 taken 57780 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 272145 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 14291 times.
✓ Branch 8 taken 61038 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 31352 times.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 8788 times.
✓ Branch 14 taken 31352 times.
✓ Branch 15 taken 19752 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 17398 times.
✓ Branch 19 taken 704 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 1007 times.
✓ Branch 22 taken 64 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 2184 times.
✓ Branch 25 taken 800 times.
✗ Branch 26 not taken.
✓ Branch 27 taken 2184 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 101007 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1007 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 200 times.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 100 times.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 1928 times.
✗ Branch 42 not taken.
9191509 bindElement(element, fvGeometry, sol);
155 }
156
157 /*!
158 * \brief bind the local view (r-value overload)
159 * This overload is called when an instance of this class is a temporary in the usage context
160 * This allows a usage like this: `const auto view = localView(...).bind(element);`
161 */
162 template<class FVElementGeometry, class SolutionVector>
163 CVFEElementVolumeVariables bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
164 const FVElementGeometry& fvGeometry,
165 const SolutionVector& sol) &&
166 {
167
1/2
✓ Branch 1 taken 40626 times.
✗ Branch 2 not taken.
40626 this->bindElement(element, fvGeometry, sol);
168 81252 return std::move(*this);
169 }
170
171 // specialization for control-volume finite element
172 template<class FVElementGeometry, class SolutionVector>
173 26474199 void bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
174 const FVElementGeometry& fvGeometry,
175 const SolutionVector& sol) &
176 {
177 // get the solution at the dofs of the element
178 36137117 auto elemSol = elementSolution(element, sol, fvGeometry.gridGeometry());
179
180 // resize volume variables to the required size
181 52948398 volumeVariables_.resize(fvGeometry.numScv());
182
4/4
✓ Branch 0 taken 69853828 times.
✓ Branch 1 taken 20943749 times.
✓ Branch 2 taken 62928734 times.
✓ Branch 3 taken 17481215 times.
139716484 for (auto&& scv : scvs(fvGeometry))
183 169670690 volumeVariables_[scv.indexInElement()].update(elemSol, gridVolVars().problem(), element, scv);
184 26474181 }
185
186 const VolumeVariables& operator [](std::size_t scvIdx) const
187
64/64
✓ Branch 0 taken 43678 times.
✓ Branch 1 taken 135190031 times.
✓ Branch 2 taken 43678 times.
✓ Branch 3 taken 135190031 times.
✓ Branch 4 taken 65233917 times.
✓ Branch 5 taken 69999792 times.
✓ Branch 6 taken 65233917 times.
✓ Branch 7 taken 69999792 times.
✓ Branch 8 taken 306284 times.
✓ Branch 9 taken 283049661 times.
✓ Branch 10 taken 306284 times.
✓ Branch 11 taken 319687055 times.
✓ Branch 12 taken 136550489 times.
✓ Branch 13 taken 185004279 times.
✓ Branch 14 taken 136620766 times.
✓ Branch 15 taken 184926092 times.
✓ Branch 16 taken 2142325 times.
✓ Branch 17 taken 523558075 times.
✓ Branch 18 taken 2072048 times.
✓ Branch 19 taken 491158020 times.
✓ Branch 20 taken 229460055 times.
✓ Branch 21 taken 251630535 times.
✓ Branch 22 taken 229460375 times.
✓ Branch 23 taken 247559463 times.
✓ Branch 24 taken 971105 times.
✓ Branch 25 taken 222105880 times.
✓ Branch 26 taken 971890 times.
✓ Branch 27 taken 222017800 times.
✓ Branch 28 taken 6283626 times.
✓ Branch 29 taken 8484632 times.
✓ Branch 30 taken 6282521 times.
✓ Branch 31 taken 8484632 times.
✓ Branch 32 taken 46353 times.
✓ Branch 33 taken 2212668 times.
✓ Branch 34 taken 44346 times.
✓ Branch 35 taken 2211798 times.
✓ Branch 36 taken 370976 times.
✓ Branch 37 taken 133842 times.
✓ Branch 38 taken 370976 times.
✓ Branch 39 taken 133842 times.
✓ Branch 40 taken 377839 times.
✓ Branch 41 taken 66042 times.
✓ Branch 42 taken 356825 times.
✓ Branch 43 taken 58286 times.
✓ Branch 44 taken 727054 times.
✓ Branch 45 taken 295055 times.
✓ Branch 46 taken 727054 times.
✓ Branch 47 taken 295055 times.
✓ Branch 48 taken 12028624 times.
✓ Branch 49 taken 23070071 times.
✓ Branch 50 taken 12028624 times.
✓ Branch 51 taken 23070071 times.
✓ Branch 52 taken 11567609 times.
✓ Branch 53 taken 23531017 times.
✓ Branch 54 taken 11567609 times.
✓ Branch 55 taken 23531017 times.
✓ Branch 56 taken 932612 times.
✓ Branch 57 taken 33539038 times.
✓ Branch 58 taken 1 times.
✓ Branch 59 taken 31948673 times.
✓ Branch 60 taken 1 times.
✓ Branch 61 taken 31948673 times.
✓ Branch 62 taken 1 times.
✓ Branch 63 taken 31948673 times.
2749382689 { return volumeVariables_[scvIdx]; }
188
189 VolumeVariables& operator [](std::size_t scvIdx)
190 { return volumeVariables_[scvIdx]; }
191
192 template<class SubControlVolume, typename std::enable_if_t<!std::is_integral<SubControlVolume>::value, int> = 0>
193 const VolumeVariables& operator [](const SubControlVolume& scv) const
194
90/92
✓ Branch 0 taken 326567408 times.
✓ Branch 1 taken 4056944 times.
✓ Branch 2 taken 328164608 times.
✓ Branch 3 taken 4056944 times.
✓ Branch 4 taken 305935884 times.
✓ Branch 5 taken 3094457 times.
✓ Branch 6 taken 305935884 times.
✓ Branch 7 taken 3094457 times.
✓ Branch 8 taken 355148710 times.
✓ Branch 9 taken 511683843 times.
✓ Branch 10 taken 420295126 times.
✓ Branch 11 taken 511821443 times.
✓ Branch 12 taken 257565850 times.
✓ Branch 13 taken 14741149 times.
✓ Branch 14 taken 251318802 times.
✓ Branch 15 taken 14632613 times.
✓ Branch 16 taken 651284606 times.
✓ Branch 17 taken 33102531 times.
✓ Branch 18 taken 815405228 times.
✓ Branch 19 taken 50389947 times.
✓ Branch 20 taken 247076084 times.
✓ Branch 21 taken 25012182 times.
✓ Branch 22 taken 22466804 times.
✓ Branch 23 taken 7695702 times.
✓ Branch 24 taken 10861162 times.
✓ Branch 25 taken 5299408 times.
✓ Branch 26 taken 11423460 times.
✓ Branch 27 taken 9081276 times.
✓ Branch 28 taken 6045432 times.
✓ Branch 29 taken 5857956 times.
✓ Branch 30 taken 9497886 times.
✓ Branch 31 taken 2113202 times.
✓ Branch 32 taken 4791326 times.
✓ Branch 33 taken 6057810 times.
✓ Branch 34 taken 4791326 times.
✓ Branch 35 taken 6057810 times.
✓ Branch 36 taken 3449064 times.
✓ Branch 37 taken 19480976 times.
✓ Branch 38 taken 3449064 times.
✓ Branch 39 taken 19480976 times.
✓ Branch 40 taken 1528803 times.
✓ Branch 41 taken 2935197 times.
✓ Branch 42 taken 1539779 times.
✓ Branch 43 taken 2935197 times.
✓ Branch 44 taken 1537622 times.
✓ Branch 45 taken 2937610 times.
✓ Branch 46 taken 410977 times.
✓ Branch 47 taken 4479 times.
✓ Branch 48 taken 14532032 times.
✓ Branch 49 taken 231240 times.
✓ Branch 50 taken 14521056 times.
✓ Branch 51 taken 253192 times.
✓ Branch 52 taken 14575719 times.
✓ Branch 53 taken 137473 times.
✓ Branch 54 taken 14575719 times.
✓ Branch 55 taken 115521 times.
✓ Branch 56 taken 843801 times.
✓ Branch 57 taken 40599361 times.
✓ Branch 58 taken 843801 times.
✓ Branch 59 taken 40599361 times.
✓ Branch 60 taken 4799176 times.
✓ Branch 61 taken 35837458 times.
✓ Branch 62 taken 4799176 times.
✓ Branch 63 taken 35837458 times.
✓ Branch 64 taken 1 times.
✓ Branch 65 taken 334024 times.
✓ Branch 66 taken 1 times.
✓ Branch 67 taken 334024 times.
✓ Branch 68 taken 1300 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 1301 times.
✓ Branch 71 taken 75275 times.
✓ Branch 72 taken 1301 times.
✓ Branch 73 taken 75275 times.
✓ Branch 74 taken 1301 times.
✓ Branch 75 taken 82759 times.
✓ Branch 76 taken 1 times.
✓ Branch 77 taken 85359 times.
✗ Branch 78 not taken.
✓ Branch 79 taken 2600 times.
✓ Branch 80 taken 400 times.
✓ Branch 81 taken 5784 times.
✓ Branch 82 taken 400 times.
✓ Branch 83 taken 5784 times.
✓ Branch 84 taken 2913 times.
✓ Branch 85 taken 2871 times.
✓ Branch 86 taken 2913 times.
✓ Branch 87 taken 2871 times.
✓ Branch 88 taken 1 times.
✓ Branch 89 taken 37039 times.
✓ Branch 90 taken 1 times.
✓ Branch 91 taken 37039 times.
12635726112 { return volumeVariables_[scv.indexInElement()]; }
195
196 template<class SubControlVolume, typename std::enable_if_t<!std::is_integral<SubControlVolume>::value, int> = 0>
197 VolumeVariables& operator [](const SubControlVolume& scv)
198
11/19
✗ Branch 0 not taken.
✓ Branch 1 taken 1489044 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1489044 times.
✓ Branch 4 taken 1057616 times.
✓ Branch 5 taken 4860001 times.
✓ Branch 6 taken 1057616 times.
✓ Branch 7 taken 2803548 times.
✓ Branch 8 taken 2056453 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 2202 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2202 times.
✓ Branch 17 taken 57 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 57 times.
✗ Branch 21 not taken.
295401886 { return volumeVariables_[scv.indexInElement()]; }
199
200 //! The global volume variables object we are a restriction of
201 const GridVolumeVariables& gridVolVars() const
202 { return *gridVolVarsPtr_; }
203
204 private:
205 const GridVolumeVariables* gridVolVarsPtr_;
206 std::vector<VolumeVariables> volumeVariables_;
207 };
208
209 } // end namespace Dumux
210
211 #endif
212