GCC Code Coverage Report


Directory: ../../../builds/dumux-repositories/
File: dumux/dumux/common/boundarytypes.hh
Date: 2025-04-12 19:19:20
Exec Total Coverage
Lines: 71 71 100.0%
Functions: 0 0 -%
Branches: 674 1102 61.2%

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 Class to specify the type of a boundary.
11 */
12 #ifndef DUMUX_BOUNDARY_TYPES_HH
13 #define DUMUX_BOUNDARY_TYPES_HH
14
15 #include <algorithm>
16 #include <array>
17
18 namespace Dumux {
19
20 /*!
21 * \ingroup Core
22 * \brief Class to specify the type of a boundary.
23 */
24 template <int numEq>
25 class BoundaryTypes
26 {
27 public:
28 552951247 BoundaryTypes()
29
10/10
✓ Branch 0 taken 2527062205 times.
✓ Branch 1 taken 454342392 times.
✓ Branch 2 taken 21294971 times.
✓ Branch 3 taken 5982245 times.
✓ Branch 4 taken 701976 times.
✓ Branch 5 taken 173417 times.
✓ Branch 6 taken 3930 times.
✓ Branch 7 taken 786 times.
✓ Branch 8 taken 1692 times.
✓ Branch 9 taken 423 times.
3089150234 { reset(); }
30
31 //! we have a boundary condition for each equation
32 static constexpr int size()
33 { return numEq; }
34
35 /*!
36 * \brief Reset the boundary types for all equations.
37 *
38 * After this method no equations will be disabled and neither
39 * Neumann nor Dirichlet conditions will be evaluated. This
40 * corresponds to a Neumann zero boundary.
41 */
42 609177927 void reset()
43 {
44
12/12
✓ Branch 0 taken 2625067380 times.
✓ Branch 1 taken 493807257 times.
✓ Branch 2 taken 109620389 times.
✓ Branch 3 taken 43743950 times.
✓ Branch 4 taken 35324362 times.
✓ Branch 5 taken 13789474 times.
✓ Branch 6 taken 2232078 times.
✓ Branch 7 taken 903064 times.
✓ Branch 8 taken 474976 times.
✓ Branch 9 taken 236953 times.
✓ Branch 10 taken 119144 times.
✓ Branch 11 taken 47700 times.
3376222428 for (int eqIdx=0; eqIdx < numEq; ++eqIdx)
45 2808353954 resetEq(eqIdx);
46 }
47
48 /*!
49 * \brief Reset the boundary types for one equation.
50 */
51 9593057365 void resetEq(int eqIdx)
52 {
53
8/8
✓ Branch 0 taken 1446216 times.
✓ Branch 1 taken 6708208 times.
✓ Branch 2 taken 101401 times.
✓ Branch 3 taken 1353311 times.
✓ Branch 4 taken 128288 times.
✓ Branch 5 taken 3097360 times.
✓ Branch 6 taken 921 times.
✓ Branch 7 taken 25215 times.
8749774540 boundaryInfo_[eqIdx].visited = false;
54
55 9623380603 boundaryInfo_[eqIdx].isDirichlet = false;
56 9623380603 boundaryInfo_[eqIdx].isNeumann = false;
57 9623380603 boundaryInfo_[eqIdx].isOutflow = false;
58 9623380603 boundaryInfo_[eqIdx].isCouplingDirichlet = false;
59 9623380603 boundaryInfo_[eqIdx].isCouplingNeumann = false;
60
61 9623380603 eq2pvIdx_[eqIdx] = eqIdx;
62
24/24
✓ Branch 0 taken 9308167 times.
✓ Branch 1 taken 4524690 times.
✓ Branch 2 taken 1802301 times.
✓ Branch 3 taken 11229724 times.
✓ Branch 4 taken 1746841 times.
✓ Branch 5 taken 1901743 times.
✓ Branch 6 taken 216249 times.
✓ Branch 7 taken 7143722 times.
✓ Branch 8 taken 47280 times.
✓ Branch 9 taken 1674632 times.
✓ Branch 10 taken 177054 times.
✓ Branch 11 taken 3313649 times.
✓ Branch 12 taken 115324 times.
✓ Branch 13 taken 83956 times.
✓ Branch 14 taken 1471 times.
✓ Branch 15 taken 271671 times.
✓ Branch 16 taken 15006 times.
✓ Branch 17 taken 63670 times.
✓ Branch 18 taken 26282 times.
✓ Branch 19 taken 3044 times.
✓ Branch 20 taken 2206 times.
✓ Branch 21 taken 5418 times.
✓ Branch 22 taken 315 times.
✓ Branch 23 taken 750 times.
8752765095 pv2eqIdx_[eqIdx] = eqIdx;
63 }
64
65 /*!
66 * \brief Returns true if the boundary types for a given equation
67 * has been specified.
68 *
69 * \param eqIdx The index of the equation
70 */
71 bool isSet(int eqIdx) const
72 { return boundaryInfo_[eqIdx].visited; }
73
74 /*!
75 * \brief Make sure the boundary conditions are well-posed.
76 *
77 * If they are not, an assertion fails and the program aborts!
78 * (if the NDEBUG macro is not defined)
79 */
80 void checkWellPosed() const
81 {
82 // if this fails, at least one condition is missing.
83 for (int i=0; i < numEq; ++i)
84 assert(boundaryInfo_[i].visited);
85 }
86
87 /*!
88 * \brief Set all boundary conditions to Neumann.
89 */
90 736223 void setAllNeumann()
91 {
92
8/8
✓ Branch 0 taken 67900234 times.
✓ Branch 1 taken 26199144 times.
✓ Branch 2 taken 15936884 times.
✓ Branch 3 taken 7619134 times.
✓ Branch 4 taken 578808 times.
✓ Branch 5 taken 227348 times.
✓ Branch 6 taken 5700 times.
✓ Branch 7 taken 2850 times.
118877305 for (int eqIdx = 0; eqIdx < numEq; ++eqIdx)
93 84969061 setNeumann(eqIdx);
94 }
95
96 /*!
97 * \brief Set all boundary conditions to Dirichlet.
98 */
99 866914 void setAllDirichlet()
100 {
101
6/6
✓ Branch 0 taken 22661299 times.
✓ Branch 1 taken 12776559 times.
✓ Branch 2 taken 1058135 times.
✓ Branch 3 taken 136344 times.
✓ Branch 4 taken 79790 times.
✓ Branch 5 taken 36555 times.
36748682 for (int eqIdx = 0; eqIdx < numEq; ++ eqIdx)
102 25135814 setDirichlet(eqIdx);
103 }
104
105 /*!
106 * \brief Set all boundary conditions to Dirichlet-like coupling
107 */
108 void setAllCouplingDirichlet()
109 {
110 for (int eqIdx = 0; eqIdx < numEq; ++eqIdx)
111 setCouplingDirichlet(eqIdx);
112 }
113
114 /*!
115 * \brief Set all boundary conditions to Neumann-like coupling.
116 */
117 void setAllCouplingNeumann()
118 {
119
4/4
✓ Branch 0 taken 420317 times.
✓ Branch 1 taken 197639 times.
✓ Branch 2 taken 21104 times.
✓ Branch 3 taken 9181 times.
648950 for (int eqIdx = 0; eqIdx < numEq; ++eqIdx)
120 442130 setCouplingNeumann(eqIdx);
121 }
122
123 /*!
124 * \brief Set a Neumann boundary condition for a single equation.
125 *
126 * \param eqIdx The index of the equation
127 */
128
2/2
✓ Branch 0 taken 882256 times.
✓ Branch 1 taken 152512 times.
92045015 void setNeumann(int eqIdx)
129 {
130 94058937 resetEq(eqIdx);
131 114384902 boundaryInfo_[eqIdx].visited = true;
132
12/12
✓ Branch 0 taken 2281289 times.
✓ Branch 1 taken 1352845 times.
✓ Branch 2 taken 132655 times.
✓ Branch 3 taken 137362 times.
✓ Branch 4 taken 139296 times.
✓ Branch 5 taken 14679 times.
✓ Branch 6 taken 38498 times.
✓ Branch 7 taken 41056 times.
✓ Branch 8 taken 26997 times.
✓ Branch 9 taken 5448 times.
✓ Branch 10 taken 7242 times.
✓ Branch 11 taken 756 times.
96907800 boundaryInfo_[eqIdx].isNeumann = true;
133 4510491 }
134
135 /*!
136 * \brief Set a Dirichlet boundary condition for a single primary
137 * variable
138 *
139 * \param pvIdx The index of the primary variable for which the
140 * Dirichlet condition should apply.
141 * \param eqIdx The index of the equation which should used to set
142 * the Dirichlet condition
143 */
144 779515347 void setDirichlet(int pvIdx, int eqIdx)
145 {
146 779516497 resetEq(eqIdx);
147 779711158 boundaryInfo_[eqIdx].visited = true;
148 779711158 boundaryInfo_[eqIdx].isDirichlet = true;
149
150 // update the equation <-> primary variable mapping
151 779711158 eq2pvIdx_[eqIdx] = pvIdx;
152
6/8
✓ Branch 0 taken 11659 times.
✓ Branch 1 taken 21066 times.
✓ Branch 2 taken 4652 times.
✓ Branch 3 taken 4480 times.
✓ Branch 4 taken 504 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 126 times.
✗ Branch 7 not taken.
779708758 pv2eqIdx_[pvIdx] = eqIdx;
153 }
154
155 /*!
156 * \brief Set a boundary condition for a single equation to
157 * a Dirichlet-like coupling condition.
158 */
159 void setCouplingDirichlet(int eqIdx)
160 {
161 resetEq(eqIdx);
162 boundaryInfo_[eqIdx].visited = true;
163 boundaryInfo_[eqIdx].isCouplingDirichlet = true;
164 boundaryInfo_[eqIdx].isDirichlet = true;
165 }
166
167 /*!
168 * \brief Set a boundary condition for a single equation to
169 * a Neumann-like coupling condition.
170 */
171 1600706 void setCouplingNeumann(int eqIdx)
172 {
173 1601415 resetEq(eqIdx);
174 1601415 boundaryInfo_[eqIdx].visited = true;
175 1601415 boundaryInfo_[eqIdx].isCouplingNeumann = true;
176 1601415 boundaryInfo_[eqIdx].isNeumann = true;
177 24981 }
178
179 /*!
180 * \brief Set a Dirichlet boundary condition for a single primary
181 * variable.
182 *
183 * Depending on the discretization, setting the Dirichlet condition
184 * will replace the balance equation with index equal to pvIdx.
185 *
186 * \param pvIdx The index of the primary variable inside a
187 * PrimaryVariables object.
188 */
189
10/14
✓ Branch 1 taken 292991 times.
✓ Branch 2 taken 4905 times.
✓ Branch 3 taken 780 times.
✓ Branch 4 taken 5348 times.
✓ Branch 6 taken 11904 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 36642 times.
✓ Branch 10 taken 34804 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 34804 times.
✓ Branch 0 taken 201299 times.
✓ Branch 5 taken 10752 times.
775979245 void setDirichlet(int pvIdx)
190 {
191
10/14
✓ Branch 1 taken 292991 times.
✓ Branch 2 taken 4905 times.
✓ Branch 3 taken 780 times.
✓ Branch 4 taken 5348 times.
✓ Branch 6 taken 11904 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 36642 times.
✓ Branch 10 taken 34804 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 34804 times.
✓ Branch 0 taken 201299 times.
✓ Branch 5 taken 10752 times.
760280833 setDirichlet(pvIdx, pvIdx);
192 736180681 }
193
194 /*!
195 * \brief Returns true if an equation is used to specify a
196 * Dirichlet condition.
197 *
198 * \param eqIdx The index of the equation
199 */
200 77688557 bool isDirichlet(unsigned eqIdx) const
201
203/284
✓ Branch 0 taken 8580240 times.
✓ Branch 1 taken 7604973 times.
✓ Branch 2 taken 348761 times.
✓ Branch 3 taken 8901823 times.
✓ Branch 4 taken 2064 times.
✓ Branch 5 taken 30636 times.
✓ Branch 6 taken 3042 times.
✓ Branch 7 taken 151276 times.
✓ Branch 8 taken 434886 times.
✓ Branch 9 taken 8765064 times.
✓ Branch 10 taken 375524 times.
✓ Branch 11 taken 2735439 times.
✓ Branch 12 taken 349529 times.
✓ Branch 13 taken 882233 times.
✓ Branch 14 taken 479144 times.
✓ Branch 15 taken 51686 times.
✓ Branch 16 taken 5608972 times.
✓ Branch 17 taken 2319440 times.
✓ Branch 18 taken 9013340 times.
✓ Branch 19 taken 4911702 times.
✓ Branch 20 taken 5330999 times.
✓ Branch 21 taken 6984 times.
✓ Branch 22 taken 4419961 times.
✓ Branch 23 taken 10860081 times.
✓ Branch 24 taken 4661153 times.
✓ Branch 25 taken 8651515 times.
✓ Branch 26 taken 5337228 times.
✓ Branch 27 taken 3967147 times.
✓ Branch 28 taken 4136841 times.
✓ Branch 29 taken 4536869 times.
✓ Branch 30 taken 957253 times.
✓ Branch 31 taken 1807990 times.
✓ Branch 32 taken 394416 times.
✓ Branch 33 taken 101257 times.
✓ Branch 34 taken 500714 times.
✓ Branch 35 taken 154518 times.
✓ Branch 36 taken 263054 times.
✓ Branch 37 taken 42592 times.
✓ Branch 38 taken 576205 times.
✓ Branch 39 taken 565559 times.
✓ Branch 40 taken 205481 times.
✓ Branch 41 taken 281680 times.
✓ Branch 42 taken 26250 times.
✓ Branch 43 taken 17994 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 15 times.
✓ Branch 47 taken 5 times.
✓ Branch 48 taken 5 times.
✗ Branch 49 not taken.
✓ Branch 50 taken 20 times.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 20 times.
✗ Branch 55 not taken.
✓ Branch 56 taken 15 times.
✓ Branch 57 taken 5 times.
✓ Branch 58 taken 5 times.
✗ Branch 59 not taken.
✓ Branch 60 taken 20 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 20 times.
✗ Branch 65 not taken.
✓ Branch 66 taken 15 times.
✓ Branch 67 taken 5 times.
✓ Branch 68 taken 5 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 20 times.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✓ Branch 74 taken 40 times.
✗ Branch 75 not taken.
✓ Branch 76 taken 15 times.
✓ Branch 77 taken 5 times.
✓ Branch 78 taken 5 times.
✗ Branch 79 not taken.
✓ Branch 80 taken 20 times.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 84 taken 15 times.
✓ Branch 85 taken 5 times.
✓ Branch 86 taken 15 times.
✓ Branch 87 taken 5 times.
✓ Branch 88 taken 5 times.
✗ Branch 89 not taken.
✓ Branch 90 taken 20 times.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✓ Branch 94 taken 35 times.
✓ Branch 95 taken 5 times.
✓ Branch 96 taken 15 times.
✓ Branch 97 taken 5 times.
✓ Branch 98 taken 5 times.
✗ Branch 99 not taken.
✓ Branch 100 taken 20 times.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✓ Branch 104 taken 35 times.
✓ Branch 105 taken 5 times.
✓ Branch 106 taken 15 times.
✓ Branch 107 taken 5 times.
✓ Branch 108 taken 5 times.
✗ Branch 109 not taken.
✓ Branch 110 taken 20 times.
✗ Branch 111 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✓ Branch 114 taken 55 times.
✓ Branch 115 taken 5 times.
✓ Branch 116 taken 15 times.
✓ Branch 117 taken 5 times.
✓ Branch 118 taken 5 times.
✗ Branch 119 not taken.
✓ Branch 120 taken 20 times.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✗ Branch 123 not taken.
✓ Branch 124 taken 30 times.
✓ Branch 125 taken 10 times.
✓ Branch 126 taken 15 times.
✓ Branch 127 taken 5 times.
✓ Branch 128 taken 5 times.
✗ Branch 129 not taken.
✓ Branch 130 taken 20 times.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✗ Branch 133 not taken.
✓ Branch 134 taken 50 times.
✓ Branch 135 taken 10 times.
✓ Branch 136 taken 15 times.
✓ Branch 137 taken 5 times.
✓ Branch 138 taken 5 times.
✗ Branch 139 not taken.
✓ Branch 140 taken 20 times.
✗ Branch 141 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✓ Branch 144 taken 50 times.
✓ Branch 145 taken 10 times.
✓ Branch 146 taken 15 times.
✓ Branch 147 taken 5 times.
✓ Branch 148 taken 5 times.
✗ Branch 149 not taken.
✓ Branch 150 taken 20 times.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 153 not taken.
✓ Branch 154 taken 70 times.
✓ Branch 155 taken 10 times.
✓ Branch 156 taken 15 times.
✓ Branch 157 taken 5 times.
✓ Branch 158 taken 5 times.
✗ Branch 159 not taken.
✓ Branch 160 taken 20 times.
✗ Branch 161 not taken.
✗ Branch 162 not taken.
✗ Branch 163 not taken.
✓ Branch 164 taken 30 times.
✓ Branch 165 taken 10 times.
✓ Branch 166 taken 15 times.
✓ Branch 167 taken 5 times.
✓ Branch 168 taken 5 times.
✗ Branch 169 not taken.
✓ Branch 170 taken 20 times.
✗ Branch 171 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✓ Branch 174 taken 50 times.
✓ Branch 175 taken 10 times.
✓ Branch 176 taken 15 times.
✓ Branch 177 taken 5 times.
✓ Branch 178 taken 5 times.
✗ Branch 179 not taken.
✓ Branch 180 taken 20 times.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✓ Branch 184 taken 50 times.
✓ Branch 185 taken 10 times.
✓ Branch 186 taken 15 times.
✓ Branch 187 taken 5 times.
✓ Branch 188 taken 5 times.
✗ Branch 189 not taken.
✓ Branch 190 taken 20 times.
✗ Branch 191 not taken.
✗ Branch 192 not taken.
✗ Branch 193 not taken.
✓ Branch 194 taken 70 times.
✓ Branch 195 taken 10 times.
✓ Branch 196 taken 15 times.
✓ Branch 197 taken 5 times.
✓ Branch 198 taken 5 times.
✗ Branch 199 not taken.
✓ Branch 200 taken 20 times.
✗ Branch 201 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✓ Branch 204 taken 30 times.
✓ Branch 205 taken 10 times.
✓ Branch 206 taken 15 times.
✓ Branch 207 taken 5 times.
✓ Branch 208 taken 5 times.
✗ Branch 209 not taken.
✓ Branch 210 taken 20 times.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✗ Branch 213 not taken.
✓ Branch 214 taken 50 times.
✓ Branch 215 taken 10 times.
✓ Branch 216 taken 15 times.
✓ Branch 217 taken 5 times.
✓ Branch 218 taken 5 times.
✗ Branch 219 not taken.
✓ Branch 220 taken 20 times.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✗ Branch 223 not taken.
✓ Branch 224 taken 50 times.
✓ Branch 225 taken 10 times.
✓ Branch 226 taken 15 times.
✓ Branch 227 taken 5 times.
✓ Branch 228 taken 5 times.
✗ Branch 229 not taken.
✓ Branch 230 taken 20 times.
✗ Branch 231 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✓ Branch 234 taken 70 times.
✓ Branch 235 taken 10 times.
✓ Branch 236 taken 10 times.
✓ Branch 237 taken 30 times.
✓ Branch 238 taken 10 times.
✓ Branch 239 taken 30 times.
✓ Branch 240 taken 10 times.
✓ Branch 241 taken 30 times.
✓ Branch 242 taken 10 times.
✓ Branch 243 taken 30 times.
✓ Branch 244 taken 10 times.
✓ Branch 245 taken 30 times.
✓ Branch 246 taken 10 times.
✓ Branch 247 taken 30 times.
✓ Branch 248 taken 10 times.
✓ Branch 249 taken 30 times.
✓ Branch 250 taken 10 times.
✓ Branch 251 taken 30 times.
✓ Branch 252 taken 10 times.
✓ Branch 253 taken 30 times.
✓ Branch 254 taken 10 times.
✓ Branch 255 taken 30 times.
✓ Branch 256 taken 10 times.
✓ Branch 257 taken 30 times.
✓ Branch 258 taken 10 times.
✓ Branch 259 taken 30 times.
✓ Branch 260 taken 10 times.
✓ Branch 261 taken 30 times.
✓ Branch 262 taken 10 times.
✓ Branch 263 taken 30 times.
✓ Branch 264 taken 10 times.
✓ Branch 265 taken 30 times.
✓ Branch 266 taken 10 times.
✓ Branch 267 taken 30 times.
✓ Branch 268 taken 10 times.
✓ Branch 269 taken 30 times.
✓ Branch 270 taken 10 times.
✓ Branch 271 taken 30 times.
✓ Branch 272 taken 10 times.
✓ Branch 273 taken 30 times.
✓ Branch 274 taken 10 times.
✓ Branch 275 taken 30 times.
✓ Branch 276 taken 15 times.
✓ Branch 277 taken 5 times.
✓ Branch 278 taken 15 times.
✓ Branch 279 taken 5 times.
✓ Branch 280 taken 15 times.
✓ Branch 281 taken 5 times.
✓ Branch 282 taken 15 times.
✓ Branch 283 taken 5 times.
118713164 { return boundaryInfo_[eqIdx].isDirichlet ||
202
133/284
✗ Branch 0 not taken.
✓ Branch 1 taken 8421940 times.
✓ Branch 2 taken 148 times.
✓ Branch 3 taken 2245 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 822 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 255422 times.
✓ Branch 8 taken 347267 times.
✓ Branch 9 taken 86881 times.
✓ Branch 10 taken 115 times.
✓ Branch 11 taken 596585 times.
✓ Branch 12 taken 13501 times.
✓ Branch 13 taken 165396 times.
✓ Branch 14 taken 5568584 times.
✓ Branch 15 taken 65368 times.
✓ Branch 16 taken 8905333 times.
✓ Branch 17 taken 105292 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 5229503 times.
✓ Branch 20 taken 1033654 times.
✓ Branch 21 taken 6946483 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 5571560 times.
✓ Branch 24 taken 4 times.
✓ Branch 25 taken 5337208 times.
✗ Branch 26 not taken.
✓ Branch 27 taken 4136846 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 957263 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 394397 times.
✗ Branch 32 not taken.
✓ Branch 33 taken 500734 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 263014 times.
✓ Branch 36 taken 1152 times.
✓ Branch 37 taken 572774 times.
✓ Branch 38 taken 38136 times.
✓ Branch 39 taken 145563 times.
✓ Branch 40 taken 15946 times.
✓ Branch 41 taken 5 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 20 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 15 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 5 times.
✗ Branch 50 not taken.
✓ Branch 51 taken 20 times.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 20 times.
✗ Branch 56 not taken.
✓ Branch 57 taken 15 times.
✗ Branch 58 not taken.
✓ Branch 59 taken 5 times.
✗ Branch 60 not taken.
✓ Branch 61 taken 20 times.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 20 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 15 times.
✗ Branch 68 not taken.
✓ Branch 69 taken 5 times.
✗ Branch 70 not taken.
✓ Branch 71 taken 20 times.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✓ Branch 75 taken 40 times.
✗ Branch 76 not taken.
✓ Branch 77 taken 15 times.
✗ Branch 78 not taken.
✓ Branch 79 taken 5 times.
✗ Branch 80 not taken.
✓ Branch 81 taken 20 times.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✓ Branch 85 taken 15 times.
✗ Branch 86 not taken.
✓ Branch 87 taken 15 times.
✗ Branch 88 not taken.
✓ Branch 89 taken 5 times.
✗ Branch 90 not taken.
✓ Branch 91 taken 20 times.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✓ Branch 95 taken 35 times.
✗ Branch 96 not taken.
✓ Branch 97 taken 15 times.
✗ Branch 98 not taken.
✓ Branch 99 taken 5 times.
✗ Branch 100 not taken.
✓ Branch 101 taken 20 times.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✓ Branch 105 taken 35 times.
✗ Branch 106 not taken.
✓ Branch 107 taken 15 times.
✗ Branch 108 not taken.
✓ Branch 109 taken 5 times.
✗ Branch 110 not taken.
✓ Branch 111 taken 20 times.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✓ Branch 115 taken 55 times.
✗ Branch 116 not taken.
✓ Branch 117 taken 15 times.
✗ Branch 118 not taken.
✓ Branch 119 taken 5 times.
✗ Branch 120 not taken.
✓ Branch 121 taken 20 times.
✗ Branch 122 not taken.
✗ Branch 123 not taken.
✗ Branch 124 not taken.
✓ Branch 125 taken 30 times.
✗ Branch 126 not taken.
✓ Branch 127 taken 15 times.
✗ Branch 128 not taken.
✓ Branch 129 taken 5 times.
✗ Branch 130 not taken.
✓ Branch 131 taken 20 times.
✗ Branch 132 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✓ Branch 135 taken 50 times.
✗ Branch 136 not taken.
✓ Branch 137 taken 15 times.
✗ Branch 138 not taken.
✓ Branch 139 taken 5 times.
✗ Branch 140 not taken.
✓ Branch 141 taken 20 times.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✓ Branch 145 taken 50 times.
✗ Branch 146 not taken.
✓ Branch 147 taken 15 times.
✗ Branch 148 not taken.
✓ Branch 149 taken 5 times.
✗ Branch 150 not taken.
✓ Branch 151 taken 20 times.
✗ Branch 152 not taken.
✗ Branch 153 not taken.
✗ Branch 154 not taken.
✓ Branch 155 taken 70 times.
✗ Branch 156 not taken.
✓ Branch 157 taken 15 times.
✗ Branch 158 not taken.
✓ Branch 159 taken 5 times.
✗ Branch 160 not taken.
✓ Branch 161 taken 20 times.
✗ Branch 162 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✓ Branch 165 taken 30 times.
✗ Branch 166 not taken.
✓ Branch 167 taken 15 times.
✗ Branch 168 not taken.
✓ Branch 169 taken 5 times.
✗ Branch 170 not taken.
✓ Branch 171 taken 20 times.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✗ Branch 174 not taken.
✓ Branch 175 taken 50 times.
✗ Branch 176 not taken.
✓ Branch 177 taken 15 times.
✗ Branch 178 not taken.
✓ Branch 179 taken 5 times.
✗ Branch 180 not taken.
✓ Branch 181 taken 20 times.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✓ Branch 185 taken 50 times.
✗ Branch 186 not taken.
✓ Branch 187 taken 15 times.
✗ Branch 188 not taken.
✓ Branch 189 taken 5 times.
✗ Branch 190 not taken.
✓ Branch 191 taken 20 times.
✗ Branch 192 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✓ Branch 195 taken 70 times.
✗ Branch 196 not taken.
✓ Branch 197 taken 15 times.
✗ Branch 198 not taken.
✓ Branch 199 taken 5 times.
✗ Branch 200 not taken.
✓ Branch 201 taken 20 times.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 204 not taken.
✓ Branch 205 taken 30 times.
✗ Branch 206 not taken.
✓ Branch 207 taken 15 times.
✗ Branch 208 not taken.
✓ Branch 209 taken 5 times.
✗ Branch 210 not taken.
✓ Branch 211 taken 20 times.
✗ Branch 212 not taken.
✗ Branch 213 not taken.
✗ Branch 214 not taken.
✓ Branch 215 taken 50 times.
✗ Branch 216 not taken.
✓ Branch 217 taken 15 times.
✗ Branch 218 not taken.
✓ Branch 219 taken 5 times.
✗ Branch 220 not taken.
✓ Branch 221 taken 20 times.
✗ Branch 222 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✓ Branch 225 taken 50 times.
✗ Branch 226 not taken.
✓ Branch 227 taken 15 times.
✗ Branch 228 not taken.
✓ Branch 229 taken 5 times.
✗ Branch 230 not taken.
✓ Branch 231 taken 20 times.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 234 not taken.
✓ Branch 235 taken 70 times.
✓ Branch 236 taken 30 times.
✗ Branch 237 not taken.
✓ Branch 238 taken 30 times.
✗ Branch 239 not taken.
✓ Branch 240 taken 30 times.
✗ Branch 241 not taken.
✓ Branch 242 taken 30 times.
✗ Branch 243 not taken.
✓ Branch 244 taken 30 times.
✗ Branch 245 not taken.
✓ Branch 246 taken 30 times.
✗ Branch 247 not taken.
✓ Branch 248 taken 30 times.
✗ Branch 249 not taken.
✓ Branch 250 taken 30 times.
✗ Branch 251 not taken.
✓ Branch 252 taken 30 times.
✗ Branch 253 not taken.
✓ Branch 254 taken 30 times.
✗ Branch 255 not taken.
✓ Branch 256 taken 30 times.
✗ Branch 257 not taken.
✓ Branch 258 taken 30 times.
✗ Branch 259 not taken.
✓ Branch 260 taken 30 times.
✗ Branch 261 not taken.
✓ Branch 262 taken 30 times.
✗ Branch 263 not taken.
✓ Branch 264 taken 30 times.
✗ Branch 265 not taken.
✓ Branch 266 taken 30 times.
✗ Branch 267 not taken.
✓ Branch 268 taken 30 times.
✗ Branch 269 not taken.
✓ Branch 270 taken 30 times.
✗ Branch 271 not taken.
✓ Branch 272 taken 30 times.
✗ Branch 273 not taken.
✓ Branch 274 taken 30 times.
✗ Branch 275 not taken.
✓ Branch 276 taken 15 times.
✗ Branch 277 not taken.
✓ Branch 278 taken 15 times.
✗ Branch 279 not taken.
✓ Branch 280 taken 15 times.
✗ Branch 281 not taken.
✓ Branch 282 taken 15 times.
✗ Branch 283 not taken.
55681401 boundaryInfo_[eqIdx].isCouplingDirichlet;
203 }
204
205 /*!
206 * \brief Returns true if all equations are used to specify a
207 * Dirichlet condition.
208 */
209 27245016 bool hasOnlyDirichlet() const
210 {
211
22/24
✓ Branch 0 taken 544041 times.
✓ Branch 1 taken 2187199 times.
✓ Branch 2 taken 1148334 times.
✓ Branch 3 taken 16741978 times.
✓ Branch 4 taken 392800 times.
✓ Branch 5 taken 2986078 times.
✓ Branch 6 taken 410408 times.
✓ Branch 7 taken 2796052 times.
✓ Branch 8 taken 10797 times.
✓ Branch 9 taken 15629 times.
✓ Branch 10 taken 520 times.
✓ Branch 11 taken 1952 times.
✓ Branch 12 taken 15 times.
✓ Branch 13 taken 6685 times.
✓ Branch 14 taken 380 times.
✓ Branch 15 taken 1412 times.
✓ Branch 16 taken 120 times.
✓ Branch 17 taken 440 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 32 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 8 times.
✓ Branch 22 taken 30 times.
✓ Branch 23 taken 106 times.
27245016 return std::all_of(boundaryInfo_.begin(),
212 boundaryInfo_.end(),
213
15/28
✓ Branch 0 taken 387091 times.
✓ Branch 1 taken 11707 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 11707 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 11707 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 11707 times.
✓ Branch 8 taken 2547560 times.
✓ Branch 9 taken 149990 times.
✓ Branch 10 taken 10350172 times.
✓ Branch 11 taken 2152189 times.
✓ Branch 12 taken 11420684 times.
✓ Branch 13 taken 2464570 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 24192 times.
✓ Branch 25 taken 16128 times.
✓ Branch 26 taken 7872 times.
✓ Branch 27 taken 32528 times.
29564683 [](const BoundaryInfo& b){ return b.isDirichlet ||
214
6/28
✓ Branch 0 taken 387091 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2547560 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 10350172 times.
✓ Branch 12 taken 11420684 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 24192 times.
✓ Branch 26 taken 7872 times.
✗ Branch 27 not taken.
24737571 b.isCouplingDirichlet; }
215 );
216 }
217
218 /*!
219 * \brief Returns true if some equation is used to specify a
220 * Dirichlet condition.
221 */
222 70448360 bool hasDirichlet() const
223 {
224
23/24
✓ Branch 0 taken 2273629 times.
✓ Branch 1 taken 18083507 times.
✓ Branch 2 taken 1000547 times.
✓ Branch 3 taken 20098759 times.
✓ Branch 4 taken 570830 times.
✓ Branch 5 taken 14080070 times.
✓ Branch 6 taken 391754 times.
✓ Branch 7 taken 9816505 times.
✓ Branch 8 taken 297388 times.
✓ Branch 9 taken 2228106 times.
✓ Branch 10 taken 227623 times.
✓ Branch 11 taken 740839 times.
✓ Branch 12 taken 324027 times.
✓ Branch 13 taken 35059 times.
✓ Branch 14 taken 6141 times.
✓ Branch 15 taken 6578 times.
✓ Branch 16 taken 15779 times.
✓ Branch 17 taken 154132 times.
✓ Branch 18 taken 24329 times.
✓ Branch 19 taken 41858 times.
✓ Branch 20 taken 16126 times.
✓ Branch 21 taken 14138 times.
✓ Branch 22 taken 636 times.
✗ Branch 23 not taken.
70448360 return std::any_of(boundaryInfo_.begin(),
225 boundaryInfo_.end(),
226
17/28
✓ Branch 0 taken 3145341 times.
✓ Branch 1 taken 105480 times.
✓ Branch 2 taken 3145341 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3145341 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3145341 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 12385844 times.
✓ Branch 9 taken 627121 times.
✓ Branch 10 taken 27030797 times.
✓ Branch 11 taken 2620144 times.
✓ Branch 12 taken 61784346 times.
✓ Branch 13 taken 669262 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 93176 times.
✓ Branch 23 taken 106554 times.
✓ Branch 24 taken 336629 times.
✓ Branch 25 taken 763560 times.
✓ Branch 26 taken 677864 times.
✓ Branch 27 taken 34933 times.
119817074 [](const BoundaryInfo& b){ return b.isDirichlet ||
227
10/28
✗ Branch 0 not taken.
✓ Branch 1 taken 3145341 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3145341 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 3145341 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 3145341 times.
✓ Branch 8 taken 12385844 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 27030797 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 61784346 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 93176 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 336629 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 677864 times.
114890020 b.isCouplingDirichlet; }
228 );
229 }
230
231 /*!
232 * \brief Returns true if an equation is used to specify a
233 * Neumann condition.
234 *
235 * \param eqIdx The index of the equation
236 */
237 130916809 bool isNeumann(unsigned eqIdx) const
238 {
239
28/44
✓ Branch 0 taken 5662000 times.
✓ Branch 1 taken 96621763 times.
✓ Branch 2 taken 39168 times.
✓ Branch 3 taken 768208 times.
✓ Branch 4 taken 13819712 times.
✓ Branch 5 taken 368356 times.
✓ Branch 6 taken 1997178 times.
✓ Branch 7 taken 1885214 times.
✓ Branch 8 taken 8324626 times.
✓ Branch 9 taken 968840 times.
✓ Branch 10 taken 40 times.
✓ Branch 11 taken 460964 times.
✓ Branch 12 taken 15 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 35 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 35 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 55 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 30 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 50 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 50 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 70 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 30 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 50 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 50 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 70 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 30 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 50 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 50 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 70 times.
✗ Branch 43 not taken.
130916809 return boundaryInfo_[eqIdx].isNeumann ||
240
22/44
✗ Branch 0 not taken.
✓ Branch 1 taken 5662000 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 39168 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 13819712 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1997178 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 8324626 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 40 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 15 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 35 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 35 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 55 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 30 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 50 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 50 times.
✗ Branch 26 not taken.
✓ Branch 27 taken 70 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 30 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 50 times.
✗ Branch 32 not taken.
✓ Branch 33 taken 50 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 70 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 30 times.
✗ Branch 38 not taken.
✓ Branch 39 taken 50 times.
✗ Branch 40 not taken.
✓ Branch 41 taken 50 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 70 times.
29843464 boundaryInfo_[eqIdx].isCouplingNeumann;
241 }
242
243 /*!
244 * \brief Returns true if all equations are used to specify a
245 * Neumann condition.
246 */
247 3209570 bool hasOnlyNeumann() const
248 {
249
6/8
✓ Branch 0 taken 1386034 times.
✓ Branch 1 taken 4680 times.
✓ Branch 2 taken 1027168 times.
✓ Branch 3 taken 2400 times.
✓ Branch 4 taken 644616 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 144672 times.
✗ Branch 7 not taken.
3209570 return std::all_of(boundaryInfo_.begin(),
250 boundaryInfo_.end(),
251
4/14
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1759548 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2509816 times.
✓ Branch 12 taken 7080 times.
✓ Branch 13 taken 3202490 times.
7478934 [](const BoundaryInfo& b){ return b.isNeumann ||
252
1/14
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 7080 times.
✗ Branch 13 not taken.
7080 b.isCouplingNeumann; }
253 );
254 }
255
256 /*!
257 * \brief Returns true if some equation is used to specify a
258 * Neumann condition.
259 */
260 87475360 bool hasNeumann() const
261 {
262
18/18
✓ Branch 0 taken 33772203 times.
✓ Branch 1 taken 15060291 times.
✓ Branch 2 taken 7517811 times.
✓ Branch 3 taken 1805736 times.
✓ Branch 4 taken 16225144 times.
✓ Branch 5 taken 349815 times.
✓ Branch 6 taken 10004055 times.
✓ Branch 7 taken 198354 times.
✓ Branch 8 taken 1320348 times.
✓ Branch 9 taken 11868 times.
✓ Branch 10 taken 247293 times.
✓ Branch 11 taken 393615 times.
✓ Branch 12 taken 327405 times.
✓ Branch 13 taken 20487 times.
✓ Branch 14 taken 165890 times.
✓ Branch 15 taken 304 times.
✓ Branch 16 taken 9035 times.
✓ Branch 17 taken 19348 times.
87475360 return std::any_of(boundaryInfo_.begin(),
263 boundaryInfo_.end(),
264
26/28
✓ Branch 0 taken 9158073 times.
✓ Branch 1 taken 14870879 times.
✓ Branch 2 taken 9069553 times.
✓ Branch 3 taken 88520 times.
✓ Branch 4 taken 8973809 times.
✓ Branch 5 taken 95744 times.
✓ Branch 6 taken 8410089 times.
✓ Branch 7 taken 563720 times.
✓ Branch 8 taken 4881705 times.
✓ Branch 9 taken 13145000 times.
✓ Branch 10 taken 12503577 times.
✓ Branch 11 taken 16983243 times.
✓ Branch 12 taken 16861837 times.
✓ Branch 13 taken 20337245 times.
✓ Branch 14 taken 226994 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 183322 times.
✓ Branch 17 taken 43672 times.
✓ Branch 18 taken 74101 times.
✓ Branch 19 taken 109221 times.
✓ Branch 20 taken 74101 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 926620 times.
✓ Branch 23 taken 33252 times.
✓ Branch 24 taken 1673944 times.
✓ Branch 25 taken 1025426 times.
✓ Branch 26 taken 1763538 times.
✓ Branch 27 taken 375532 times.
142452717 [](const BoundaryInfo& b){ return b.isNeumann ||
265
14/28
✗ Branch 0 not taken.
✓ Branch 1 taken 9158073 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 9069553 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 8973809 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 8410089 times.
✓ Branch 8 taken 4881705 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 12503577 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 16861837 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 226994 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 183322 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 74101 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 74101 times.
✓ Branch 22 taken 926620 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 1673944 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1763538 times.
74781263 b.isCouplingNeumann; }
266 );
267 }
268
269 /*!
270 * \brief Returns true if an equation is used to specify an
271 * Dirichlet coupling condition.
272 *
273 * \param eqIdx The index of the equation
274 */
275 1676984 bool isCouplingDirichlet(unsigned eqIdx) const
276
3/12
✗ Branch 0 not taken.
✓ Branch 1 taken 1022376 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 553102 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 101506 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
1676984 { return boundaryInfo_[eqIdx].isCouplingDirichlet; }
277
278 /*!
279 * \brief Returns true if some equation is used to specify an
280 * Dirichlet coupling condition.
281 */
282 bool hasCouplingDirichlet() const
283 {
284 return std::any_of(boundaryInfo_.begin(),
285 boundaryInfo_.end(),
286 [](const BoundaryInfo& b){ return b.isCouplingDirichlet; }
287 );
288 }
289
290 /*!
291 * \brief Returns true if an equation is used to specify an
292 * Neumann coupling condition.
293 *
294 * \param eqIdx The index of the equation
295 */
296 bool isCouplingNeumann(unsigned eqIdx) const
297 { return boundaryInfo_[eqIdx].isCouplingNeumann; }
298
299 /*!
300 * \brief Returns true if some equation is used to specify an
301 * Neumann coupling condition.
302 */
303 100840 bool hasCouplingNeumann() const
304 {
305
4/4
✓ Branch 0 taken 48952 times.
✓ Branch 1 taken 192 times.
✓ Branch 2 taken 51624 times.
✓ Branch 3 taken 72 times.
100840 return std::any_of(boundaryInfo_.begin(),
306 boundaryInfo_.end(),
307
4/28
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 48544 times.
✓ Branch 12 taken 864 times.
✓ Branch 13 taken 264 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 51168 times.
✗ Branch 27 not taken.
100840 [](const BoundaryInfo& b){ return b.isCouplingNeumann; }
308 );
309 }
310
311 /*!
312 * \brief Returns true if an equation is used to specify a
313 * coupling condition.
314 *
315 * \param eqIdx The index of the equation
316 */
317 bool isCoupling(unsigned eqIdx) const
318 {
319 return boundaryInfo_[eqIdx].isCouplingDirichlet
320 || boundaryInfo_[eqIdx].isCouplingNeumann;
321 }
322
323 /*!
324 * \brief Returns true if some equation is used to specify a
325 * coupling condition.
326 */
327 bool hasCoupling() const
328 {
329 for (int i = 0; i < numEq; ++i)
330 if (isCoupling(i))
331 return true;
332 return false;
333 }
334
335 /*!
336 * \brief Returns the index of the equation which should be used
337 * for the Dirichlet condition of the pvIdx's primary
338 * variable.
339 *
340 * \param pvIdx The index of the primary variable which is be set
341 * by the Dirichlet condition.
342 */
343 unsigned dirichletToEqIndex(unsigned pvIdx) const
344 { return pv2eqIdx_[pvIdx]; }
345
346 /*!
347 * \brief Returns the index of the primary variable which should
348 * be used for the Dirichlet condition given an equation
349 * index.
350 *
351 * \param eqIdx The index of the equation which is used to set
352 * the Dirichlet condition.
353 */
354 1872342 unsigned eqToDirichletIndex(unsigned eqIdx) const
355
3/10
✗ Branch 0 not taken.
✓ Branch 1 taken 1565181 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 248400 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 58710 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
1872342 { return eq2pvIdx_[eqIdx]; }
356
357 protected:
358 //! use bitfields to minimize the size
359 struct BoundaryInfo {
360 bool visited : 1;
361 bool isDirichlet : 1;
362 bool isNeumann : 1;
363 bool isOutflow : 1;
364 bool isCouplingDirichlet : 1;
365 bool isCouplingNeumann : 1;
366 };
367
368 std::array<BoundaryInfo, numEq> boundaryInfo_;
369 std::array<unsigned int, numEq> eq2pvIdx_, pv2eqIdx_;
370 };
371
372 } // end namespace Dumux
373
374 #endif
375