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 |