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 StaggeredDiscretization | ||
10 | * \copydoc Dumux::FreeFlowStaggeredSubControlVolumeFace | ||
11 | */ | ||
12 | #ifndef DUMUX_DISCRETIZATION_STAGGERED_FREE_FLOW_SUBCONTROLVOLUMEFACE_HH | ||
13 | #define DUMUX_DISCRETIZATION_STAGGERED_FREE_FLOW_SUBCONTROLVOLUMEFACE_HH | ||
14 | |||
15 | #include <array> | ||
16 | #include <utility> | ||
17 | #include <dune/common/fvector.hh> | ||
18 | #include <dune/geometry/type.hh> | ||
19 | #include <dune/geometry/multilineargeometry.hh> | ||
20 | |||
21 | #include <dumux/common/indextraits.hh> | ||
22 | #include <dumux/discretization/staggered/subcontrolvolumeface.hh> | ||
23 | #include <dumux/discretization/staggered/freeflow/staggeredgeometryhelper.hh> | ||
24 | |||
25 | #include <typeinfo> | ||
26 | |||
27 | namespace Dumux { | ||
28 | |||
29 | /*! | ||
30 | * \ingroup StaggeredDiscretization | ||
31 | * \brief Default traits class to be used for the sub-control volume faces | ||
32 | * for the free-flow staggered finite volume scheme | ||
33 | * \tparam GridView the type of the grid view | ||
34 | * \tparam upwindSchemeOrder the order of the upwind scheme | ||
35 | */ | ||
36 | template<class GridView, int upwindSchemeOrder> | ||
37 | struct FreeFlowStaggeredDefaultScvfGeometryTraits | ||
38 | { | ||
39 | using GridIndexType = typename IndexTraits<GridView>::GridIndex; | ||
40 | using LocalIndexType = typename IndexTraits<GridView>::LocalIndex; | ||
41 | using Scalar = typename GridView::ctype; | ||
42 | using GeometryHelper = FreeFlowStaggeredGeometryHelper<GridView, upwindSchemeOrder>; | ||
43 | using PairData = typename GeometryHelper::PairData; | ||
44 | using AxisData = typename GeometryHelper::AxisData; | ||
45 | |||
46 | using Grid = typename GridView::Grid; | ||
47 | static constexpr int dim = Grid::dimension; | ||
48 | static constexpr int dimWorld = Grid::dimensionworld; | ||
49 | |||
50 | using Element = typename GridView::template Codim<0>::Entity; | ||
51 | using GlobalPosition = typename Element::Geometry::GlobalCoordinate; | ||
52 | using Geometry = Dune::AxisAlignedCubeGeometry<Scalar, dim-1, dimWorld>; | ||
53 | }; | ||
54 | |||
55 | /*! | ||
56 | * \ingroup StaggeredDiscretization | ||
57 | * \brief Helper function to turn a given cell scvface into a fake boundary face | ||
58 | * \note This function is considered internal to staggered freeflow and may change or be deleted at any time without deprecation warning | ||
59 | */ | ||
60 | template<class SubControlVolumeFace> | ||
61 | 17557066 | SubControlVolumeFace makeStaggeredBoundaryFace(const SubControlVolumeFace& scvf, | |
62 | const typename SubControlVolumeFace::GlobalPosition& newCenter) | ||
63 | { | ||
64 |
0/9✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 8 not taken.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
|
17557066 | auto bf = scvf; |
65 | 17557066 | bf.setCenter(newCenter); | |
66 | 17557066 | bf.setBoundary(true); | |
67 | 17557066 | bf.setIsGhostFace(true); | |
68 | return bf; | ||
69 | } | ||
70 | |||
71 | /*! | ||
72 | * \ingroup StaggeredDiscretization | ||
73 | * \brief Class for a sub control volume face in the staggered method, i.e a part of the boundary | ||
74 | * of a sub control volume we compute fluxes on. This is a specialization for free flow models. | ||
75 | */ | ||
76 | template<class GV, | ||
77 | int upwindSchemeOrder, | ||
78 | class T = FreeFlowStaggeredDefaultScvfGeometryTraits<GV, upwindSchemeOrder>> | ||
79 | 17939804 | class FreeFlowStaggeredSubControlVolumeFace | |
80 | { | ||
81 | using ThisType = FreeFlowStaggeredSubControlVolumeFace<GV, upwindSchemeOrder, T>; | ||
82 | using Geometry = typename T::Geometry; | ||
83 | using GridIndexType = typename IndexTraits<GV>::GridIndex; | ||
84 | using LocalIndexType = typename IndexTraits<GV>::LocalIndex; | ||
85 | |||
86 | using PairData = typename T::PairData; | ||
87 | using AxisData = typename T::AxisData; | ||
88 | |||
89 | using Scalar = typename T::Scalar; | ||
90 | static const int dim = GV::dimension; | ||
91 | |||
92 | static constexpr int numPairs = 2 * (dim - 1); | ||
93 | |||
94 | static constexpr bool useHigherOrder = upwindSchemeOrder > 1; | ||
95 | |||
96 | public: | ||
97 | using GlobalPosition = typename T::GlobalPosition; | ||
98 | |||
99 | static constexpr int numCornersPerFace = 2 * (dim - 1); | ||
100 | |||
101 | //! State the traits public and thus export all types | ||
102 | using Traits = T; | ||
103 | |||
104 | // The default constructor | ||
105 | FreeFlowStaggeredSubControlVolumeFace() = default; | ||
106 | |||
107 | //! Constructor with intersection | ||
108 | template <class Intersection> | ||
109 | 382738 | FreeFlowStaggeredSubControlVolumeFace(const Intersection& is, | |
110 | const typename Intersection::Geometry& isGeometry, | ||
111 | GridIndexType scvfIndex, | ||
112 | const std::vector<GridIndexType>& scvIndices, | ||
113 | const typename T::GeometryHelper& geometryHelper) | ||
114 | 382738 | : area_(isGeometry.volume()), | |
115 |
2/2✓ Branch 0 taken 177369 times.
✓ Branch 1 taken 177369 times.
|
382738 | center_(isGeometry.center()), |
116 | 382738 | unitOuterNormal_(is.centerUnitOuterNormal()), | |
117 | 382738 | scvfIndex_(scvfIndex), | |
118 |
2/2✓ Branch 1 taken 28375 times.
✓ Branch 2 taken 375 times.
|
382738 | scvIndices_(scvIndices), |
119 |
2/2✓ Branch 0 taken 375 times.
✓ Branch 1 taken 375 times.
|
382738 | boundary_(is.boundary()), |
120 |
2/2✓ Branch 0 taken 375 times.
✓ Branch 1 taken 375 times.
|
382738 | axisData_(geometryHelper.axisData()), |
121 |
2/2✓ Branch 0 taken 375 times.
✓ Branch 1 taken 375 times.
|
382738 | pairData_(std::move(geometryHelper.pairData())), |
122 |
2/2✓ Branch 0 taken 375 times.
✓ Branch 1 taken 375 times.
|
382738 | localFaceIdx_(geometryHelper.localFaceIndex()), |
123 | 382738 | dirIdx_(geometryHelper.directionIndex()), | |
124 | 382738 | outerNormalSign_(sign(unitOuterNormal_[directionIndex()])), | |
125 | 382738 | isGhostFace_(false) | |
126 | { | ||
127 | 766226 | dimensions[0] = (isGeometry.corner(1) - isGeometry.corner(0)).two_norm(); | |
128 | if constexpr (dim == 3) | ||
129 | 1500 | dimensions[1] = (isGeometry.corner(2) - isGeometry.corner(0)).two_norm(); | |
130 | 382738 | } | |
131 | |||
132 | //! The center of the sub control volume face | ||
133 |
1/2✓ Branch 1 taken 268800 times.
✗ Branch 2 not taken.
|
88557996 | const GlobalPosition& center() const |
134 | { | ||
135 |
28/92✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 9970 times.
✓ Branch 14 taken 115050 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 19 taken 251634 times.
✓ Branch 20 taken 1710 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✓ Branch 25 taken 10 times.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✓ Branch 31 taken 10 times.
✗ Branch 32 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✓ Branch 37 taken 10 times.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✓ Branch 43 taken 10 times.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 49 taken 10 times.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 55 taken 10 times.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 61 taken 10 times.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✓ Branch 67 taken 10 times.
✗ Branch 68 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✓ Branch 73 taken 10 times.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✓ Branch 79 taken 10 times.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 85 taken 10 times.
✗ Branch 86 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✓ Branch 91 taken 10 times.
✗ Branch 92 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✓ Branch 97 taken 10 times.
✗ Branch 98 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✓ Branch 103 taken 10 times.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✓ Branch 109 taken 10 times.
✗ Branch 110 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✓ Branch 115 taken 10 times.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✓ Branch 121 taken 5 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 5 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 5 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 5 times.
✗ Branch 131 not taken.
✗ Branch 15 not taken.
✓ Branch 18 taken 1680168 times.
✓ Branch 21 taken 20 times.
✗ Branch 12 not taken.
|
859602041 | return center_; |
136 | } | ||
137 | |||
138 | //! The position of the dof living on the face | ||
139 | const GlobalPosition& dofPosition() const | ||
140 | { | ||
141 |
2/2✓ Branch 0 taken 864004 times.
✓ Branch 1 taken 1318948 times.
|
2377675 | return center_; |
142 | } | ||
143 | |||
144 | //! The integration point for flux evaluations in global coordinates | ||
145 |
2/10✓ Branch 1 taken 120800 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 7 taken 475916 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
|
421176812 | const GlobalPosition& ipGlobal() const |
146 | { | ||
147 | // Return center for now | ||
148 |
112/176✓ Branch 8 taken 3418829 times.
✓ Branch 9 taken 101091373 times.
✓ Branch 10 taken 916330 times.
✓ Branch 11 taken 60179215 times.
✓ Branch 12 taken 70647 times.
✓ Branch 13 taken 20385 times.
✓ Branch 14 taken 68900 times.
✓ Branch 15 taken 23117 times.
✓ Branch 16 taken 37420 times.
✓ Branch 17 taken 6517 times.
✓ Branch 18 taken 10707 times.
✓ Branch 19 taken 2693 times.
✓ Branch 20 taken 968 times.
✓ Branch 21 taken 981 times.
✓ Branch 22 taken 5 times.
✓ Branch 23 taken 15 times.
✓ Branch 24 taken 5 times.
✓ Branch 25 taken 15 times.
✓ Branch 26 taken 5 times.
✓ Branch 27 taken 15 times.
✓ Branch 28 taken 5 times.
✓ Branch 29 taken 15 times.
✓ Branch 30 taken 5 times.
✓ Branch 31 taken 15 times.
✓ Branch 32 taken 5 times.
✓ Branch 33 taken 15 times.
✓ Branch 34 taken 5 times.
✓ Branch 35 taken 15 times.
✓ Branch 36 taken 5 times.
✓ Branch 37 taken 15 times.
✓ Branch 38 taken 5 times.
✓ Branch 39 taken 15 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 10 times.
✓ Branch 65 taken 30 times.
✓ Branch 66 taken 40 times.
✗ Branch 67 not taken.
✓ Branch 68 taken 1 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 10 times.
✓ Branch 71 taken 30 times.
✓ Branch 72 taken 40 times.
✗ Branch 73 not taken.
✓ Branch 74 taken 1 times.
✗ Branch 75 not taken.
✓ Branch 76 taken 10 times.
✓ Branch 77 taken 30 times.
✓ Branch 78 taken 40 times.
✗ Branch 79 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 82 taken 10 times.
✓ Branch 83 taken 30 times.
✓ Branch 84 taken 40 times.
✗ Branch 85 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 88 taken 10 times.
✓ Branch 89 taken 30 times.
✓ Branch 90 taken 40 times.
✗ Branch 91 not taken.
✓ Branch 92 taken 1 times.
✗ Branch 93 not taken.
✓ Branch 94 taken 10 times.
✓ Branch 95 taken 30 times.
✓ Branch 96 taken 40 times.
✗ Branch 97 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 100 taken 10 times.
✓ Branch 101 taken 30 times.
✓ Branch 102 taken 40 times.
✗ Branch 103 not taken.
✓ Branch 104 taken 1 times.
✗ Branch 105 not taken.
✓ Branch 106 taken 10 times.
✓ Branch 107 taken 30 times.
✓ Branch 108 taken 40 times.
✗ Branch 109 not taken.
✓ Branch 110 taken 1 times.
✗ Branch 111 not taken.
✓ Branch 112 taken 10 times.
✓ Branch 113 taken 30 times.
✓ Branch 114 taken 40 times.
✗ Branch 115 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✓ Branch 120 taken 10 times.
✓ Branch 121 taken 30 times.
✓ Branch 122 taken 40 times.
✗ Branch 123 not taken.
✓ Branch 124 taken 1 times.
✗ Branch 125 not taken.
✗ Branch 126 not taken.
✗ Branch 127 not taken.
✓ Branch 128 taken 10 times.
✓ Branch 129 taken 30 times.
✓ Branch 130 taken 40 times.
✗ Branch 131 not taken.
✓ Branch 132 taken 1 times.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✗ Branch 135 not taken.
✓ Branch 136 taken 10 times.
✓ Branch 137 taken 30 times.
✓ Branch 138 taken 40 times.
✗ Branch 139 not taken.
✓ Branch 140 taken 1 times.
✗ Branch 141 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✓ Branch 144 taken 10 times.
✓ Branch 145 taken 30 times.
✓ Branch 146 taken 40 times.
✗ Branch 147 not taken.
✓ Branch 148 taken 1 times.
✗ Branch 149 not taken.
✓ Branch 150 taken 10 times.
✓ Branch 151 taken 30 times.
✓ Branch 152 taken 40 times.
✗ Branch 153 not taken.
✓ Branch 154 taken 1 times.
✗ Branch 155 not taken.
✓ Branch 156 taken 10 times.
✓ Branch 157 taken 30 times.
✓ Branch 158 taken 40 times.
✗ Branch 159 not taken.
✓ Branch 160 taken 1 times.
✗ Branch 161 not taken.
✓ Branch 162 taken 10 times.
✓ Branch 163 taken 30 times.
✓ Branch 164 taken 40 times.
✗ Branch 165 not taken.
✓ Branch 166 taken 1 times.
✗ Branch 167 not taken.
✓ Branch 188 taken 15 times.
✓ Branch 189 taken 5 times.
✓ Branch 190 taken 15 times.
✓ Branch 191 taken 5 times.
✓ Branch 192 taken 15 times.
✓ Branch 193 taken 5 times.
✓ Branch 194 taken 15 times.
✓ Branch 195 taken 5 times.
✓ Branch 0 taken 4219847 times.
✓ Branch 1 taken 1658998 times.
✓ Branch 2 taken 7973215 times.
✓ Branch 3 taken 35827622 times.
✓ Branch 4 taken 7183327 times.
✓ Branch 5 taken 67929796 times.
✓ Branch 6 taken 7628094 times.
✓ Branch 7 taken 89322116 times.
|
1010743095 | return center_; |
149 | } | ||
150 | |||
151 | //! The area of the sub control volume face | ||
152 | 1743375240 | Scalar area() const | |
153 | { | ||
154 |
0/13✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 5 not taken.
✗ Branch 8 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
|
1740816670 | return area_; |
155 | } | ||
156 | |||
157 | //! Returns boolean if the sub control volume face is on the boundary | ||
158 | 3054004175 | bool boundary() const | |
159 | { | ||
160 |
182/222✓ Branch 0 taken 9482 times.
✓ Branch 1 taken 305512 times.
✓ Branch 2 taken 276913480 times.
✓ Branch 3 taken 8919454 times.
✓ Branch 4 taken 284552144 times.
✓ Branch 5 taken 346942 times.
✓ Branch 6 taken 22800 times.
✓ Branch 7 taken 406696 times.
✓ Branch 8 taken 12206567 times.
✓ Branch 9 taken 249716310 times.
✓ Branch 10 taken 6410072 times.
✓ Branch 11 taken 268713820 times.
✓ Branch 12 taken 12351308 times.
✓ Branch 13 taken 277463948 times.
✓ Branch 14 taken 193992513 times.
✓ Branch 15 taken 76117775 times.
✓ Branch 16 taken 43115378 times.
✓ Branch 17 taken 148121999 times.
✓ Branch 18 taken 45619644 times.
✓ Branch 19 taken 218280188 times.
✓ Branch 20 taken 9687280 times.
✓ Branch 21 taken 211476840 times.
✓ Branch 22 taken 9894198 times.
✓ Branch 23 taken 100298370 times.
✓ Branch 24 taken 16172880 times.
✓ Branch 25 taken 70506550 times.
✓ Branch 26 taken 79240854 times.
✓ Branch 27 taken 25511588 times.
✓ Branch 28 taken 100101350 times.
✓ Branch 29 taken 12427942 times.
✓ Branch 30 taken 62251260 times.
✓ Branch 31 taken 68097496 times.
✓ Branch 32 taken 50364916 times.
✓ Branch 33 taken 31118796 times.
✓ Branch 34 taken 19489924 times.
✓ Branch 35 taken 27623132 times.
✓ Branch 36 taken 1878794 times.
✓ Branch 37 taken 19458244 times.
✓ Branch 38 taken 374329 times.
✓ Branch 39 taken 2467226 times.
✓ Branch 40 taken 1228806 times.
✓ Branch 41 taken 3044018 times.
✓ Branch 42 taken 839268 times.
✓ Branch 43 taken 3190406 times.
✓ Branch 44 taken 383270 times.
✓ Branch 45 taken 760498 times.
✓ Branch 46 taken 394894 times.
✓ Branch 47 taken 871306 times.
✓ Branch 48 taken 45090 times.
✓ Branch 49 taken 520510 times.
✓ Branch 50 taken 33936 times.
✓ Branch 51 taken 388392 times.
✓ Branch 52 taken 18260 times.
✓ Branch 53 taken 224240 times.
✓ Branch 54 taken 1940 times.
✓ Branch 55 taken 23724 times.
✓ Branch 56 taken 20 times.
✓ Branch 57 taken 44 times.
✓ Branch 58 taken 20 times.
✓ Branch 59 taken 44 times.
✓ Branch 60 taken 20 times.
✓ Branch 61 taken 44 times.
✓ Branch 62 taken 20 times.
✓ Branch 63 taken 44 times.
✓ Branch 64 taken 20 times.
✓ Branch 65 taken 44 times.
✓ Branch 66 taken 20 times.
✓ Branch 67 taken 44 times.
✓ Branch 68 taken 20 times.
✓ Branch 69 taken 44 times.
✓ Branch 70 taken 20 times.
✓ Branch 71 taken 44 times.
✓ Branch 72 taken 20 times.
✓ Branch 73 taken 44 times.
✓ Branch 74 taken 20 times.
✓ Branch 75 taken 44 times.
✓ Branch 76 taken 20 times.
✓ Branch 77 taken 44 times.
✓ Branch 78 taken 20 times.
✓ Branch 79 taken 44 times.
✓ Branch 80 taken 20 times.
✓ Branch 81 taken 44 times.
✓ Branch 82 taken 20 times.
✓ Branch 83 taken 44 times.
✓ Branch 84 taken 20 times.
✓ Branch 85 taken 44 times.
✓ Branch 86 taken 20 times.
✓ Branch 87 taken 44 times.
✓ Branch 88 taken 20 times.
✓ Branch 89 taken 44 times.
✓ Branch 90 taken 20 times.
✓ Branch 91 taken 44 times.
✓ Branch 92 taken 20 times.
✓ Branch 93 taken 44 times.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 96 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 99 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 105 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 108 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 111 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 117 not taken.
✓ Branch 118 taken 20 times.
✓ Branch 119 taken 80 times.
✓ Branch 120 taken 40 times.
✓ Branch 121 taken 160 times.
✓ Branch 122 taken 20 times.
✓ Branch 123 taken 80 times.
✓ Branch 124 taken 40 times.
✓ Branch 125 taken 160 times.
✓ Branch 126 taken 20 times.
✓ Branch 127 taken 80 times.
✓ Branch 128 taken 40 times.
✓ Branch 129 taken 160 times.
✓ Branch 130 taken 20 times.
✓ Branch 131 taken 80 times.
✓ Branch 132 taken 40 times.
✓ Branch 133 taken 160 times.
✓ Branch 134 taken 20 times.
✓ Branch 135 taken 80 times.
✓ Branch 136 taken 40 times.
✓ Branch 137 taken 160 times.
✓ Branch 138 taken 20 times.
✓ Branch 139 taken 80 times.
✓ Branch 140 taken 40 times.
✓ Branch 141 taken 160 times.
✓ Branch 142 taken 20 times.
✓ Branch 143 taken 80 times.
✓ Branch 144 taken 40 times.
✓ Branch 145 taken 160 times.
✓ Branch 146 taken 20 times.
✓ Branch 147 taken 80 times.
✓ Branch 148 taken 40 times.
✓ Branch 149 taken 160 times.
✓ Branch 150 taken 20 times.
✓ Branch 151 taken 80 times.
✓ Branch 152 taken 40 times.
✓ Branch 153 taken 160 times.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✓ Branch 156 taken 20 times.
✓ Branch 157 taken 80 times.
✓ Branch 158 taken 40 times.
✓ Branch 159 taken 160 times.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✓ Branch 162 taken 20 times.
✓ Branch 163 taken 80 times.
✓ Branch 164 taken 40 times.
✓ Branch 165 taken 160 times.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✓ Branch 168 taken 20 times.
✓ Branch 169 taken 80 times.
✓ Branch 170 taken 40 times.
✓ Branch 171 taken 160 times.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✓ Branch 174 taken 20 times.
✓ Branch 175 taken 80 times.
✓ Branch 176 taken 40 times.
✓ Branch 177 taken 160 times.
✓ Branch 178 taken 20 times.
✓ Branch 179 taken 80 times.
✓ Branch 180 taken 40 times.
✓ Branch 181 taken 160 times.
✓ Branch 182 taken 20 times.
✓ Branch 183 taken 80 times.
✓ Branch 184 taken 40 times.
✓ Branch 185 taken 160 times.
✓ Branch 186 taken 20 times.
✓ Branch 187 taken 80 times.
✓ Branch 188 taken 40 times.
✓ Branch 189 taken 160 times.
✓ Branch 190 taken 20 times.
✓ Branch 191 taken 80 times.
✓ Branch 192 taken 40 times.
✓ Branch 193 taken 160 times.
✗ Branch 194 not taken.
✗ Branch 195 not taken.
✓ Branch 196 taken 20 times.
✓ Branch 197 taken 80 times.
✓ Branch 198 taken 40 times.
✓ Branch 199 taken 160 times.
✗ Branch 200 not taken.
✗ Branch 201 not taken.
✓ Branch 202 taken 20 times.
✓ Branch 203 taken 80 times.
✓ Branch 204 taken 40 times.
✓ Branch 205 taken 160 times.
✗ Branch 206 not taken.
✗ Branch 207 not taken.
✓ Branch 208 taken 20 times.
✓ Branch 209 taken 80 times.
✓ Branch 210 taken 40 times.
✓ Branch 211 taken 160 times.
✗ Branch 212 not taken.
✗ Branch 213 not taken.
✓ Branch 214 taken 20 times.
✓ Branch 215 taken 80 times.
✓ Branch 216 taken 20 times.
✓ Branch 217 taken 80 times.
✓ Branch 218 taken 20 times.
✓ Branch 219 taken 80 times.
✓ Branch 220 taken 20 times.
✓ Branch 221 taken 80 times.
|
3054004175 | return boundary_; |
161 | } | ||
162 | |||
163 | //! The unit outer normal vector | ||
164 | 100 | const GlobalPosition& unitOuterNormal() const | |
165 | { | ||
166 | 3156 | return unitOuterNormal_; | |
167 | } | ||
168 | |||
169 | //! Index of the inside sub control volume for spatial param evaluation | ||
170 | 4786421125 | GridIndexType insideScvIdx() const | |
171 | { | ||
172 |
37/56✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 10 taken 238649564 times.
✓ Branch 11 taken 46248708 times.
✓ Branch 13 taken 5 times.
✓ Branch 14 taken 16260349 times.
✓ Branch 16 taken 63837422 times.
✓ Branch 17 taken 40796604 times.
✓ Branch 19 taken 1396466 times.
✓ Branch 20 taken 7777287 times.
✓ Branch 22 taken 17611028 times.
✓ Branch 23 taken 59379936 times.
✓ Branch 25 taken 34067004 times.
✓ Branch 26 taken 54457822 times.
✓ Branch 28 taken 13432822 times.
✓ Branch 29 taken 21045086 times.
✓ Branch 31 taken 3300 times.
✓ Branch 32 taken 3000 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 428996 times.
✓ Branch 37 taken 93296 times.
✓ Branch 38 taken 166600 times.
✓ Branch 40 taken 527932 times.
✓ Branch 41 taken 462924 times.
✓ Branch 43 taken 12360 times.
✓ Branch 44 taken 152440 times.
✓ Branch 46 taken 156340 times.
✗ Branch 47 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✓ Branch 53 taken 5340 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 0 not taken.
✗ Branch 6 not taken.
✗ Branch 9 not taken.
✓ Branch 18 taken 15186246 times.
✓ Branch 21 taken 10466604 times.
✓ Branch 33 taken 6800 times.
✓ Branch 15 taken 140306149 times.
✓ Branch 24 taken 79280022 times.
✓ Branch 39 taken 350220 times.
✓ Branch 36 taken 6192882 times.
✓ Branch 45 taken 13980 times.
✓ Branch 42 taken 230288 times.
✓ Branch 54 taken 55860 times.
✓ Branch 27 taken 508168 times.
|
4641246758 | return scvIndices_[0]; |
173 | } | ||
174 | |||
175 | //! index of the outside sub control volume for spatial param evaluation | ||
176 | 2593914610 | GridIndexType outsideScvIdx() const | |
177 | { | ||
178 |
30/50✓ Branch 0 taken 20 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 20 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✓ Branch 9 taken 59452 times.
✓ Branch 10 taken 24660 times.
✓ Branch 11 taken 85684 times.
✓ Branch 12 taken 21140 times.
✓ Branch 13 taken 203956 times.
✓ Branch 14 taken 52676 times.
✓ Branch 15 taken 182196 times.
✓ Branch 16 taken 20 times.
✓ Branch 17 taken 11940 times.
✓ Branch 18 taken 63440 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 20 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 20 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 20 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 20 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 20 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 20 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 20 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 20 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 20 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 20 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 20 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 20 times.
✗ Branch 43 not taken.
✓ Branch 44 taken 20 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 20 times.
✗ Branch 47 not taken.
✓ Branch 50 taken 80 times.
✗ Branch 51 not taken.
|
2652143540 | return scvIndices_[1]; |
179 | } | ||
180 | |||
181 | //! The global index of this sub control volume face | ||
182 | 1751608471 | GridIndexType index() const | |
183 | { | ||
184 |
38/45✓ Branch 1 taken 126520781 times.
✓ Branch 2 taken 76172184 times.
✓ Branch 3 taken 161011852 times.
✓ Branch 4 taken 88929601 times.
✓ Branch 5 taken 54363236 times.
✓ Branch 6 taken 95084685 times.
✓ Branch 7 taken 47270202 times.
✓ Branch 8 taken 97269581 times.
✓ Branch 9 taken 57471149 times.
✓ Branch 10 taken 92932704 times.
✓ Branch 11 taken 95507446 times.
✓ Branch 12 taken 57058141 times.
✓ Branch 13 taken 37102358 times.
✓ Branch 14 taken 12893240 times.
✓ Branch 15 taken 2234880 times.
✓ Branch 16 taken 3160622 times.
✓ Branch 17 taken 594920 times.
✓ Branch 18 taken 411159 times.
✓ Branch 19 taken 636750 times.
✓ Branch 20 taken 810083 times.
✓ Branch 21 taken 1062430 times.
✓ Branch 22 taken 5254845 times.
✓ Branch 23 taken 3403524 times.
✓ Branch 24 taken 645081 times.
✓ Branch 25 taken 660 times.
✓ Branch 26 taken 33 times.
✓ Branch 27 taken 68 times.
✓ Branch 28 taken 665 times.
✓ Branch 29 taken 8 times.
✓ Branch 30 taken 5 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 5 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 5 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 5 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 5 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 5 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 5 times.
✓ Branch 44 taken 4800 times.
✗ Branch 45 not taken.
✓ Branch 0 taken 19 times.
|
1769212855 | return scvfIndex_; |
185 | } | ||
186 | |||
187 | //! The local index of this sub control volume face | ||
188 | 95503390 | LocalIndexType localFaceIdx() const | |
189 | { | ||
190 |
5/9✗ Branch 0 not taken.
✓ Branch 1 taken 12 times.
✓ Branch 4 taken 41368532 times.
✓ Branch 5 taken 372400 times.
✓ Branch 7 taken 41339992 times.
✓ Branch 8 taken 1484000 times.
✗ Branch 2 not taken.
✗ Branch 6 not taken.
✗ Branch 9 not taken.
|
95503390 | return localFaceIdx_; |
191 | } | ||
192 | |||
193 | //! Returns the direction index of the facet (0 = x, 1 = y, 2 = z) | ||
194 | 382738 | unsigned int directionIndex() const | |
195 | { | ||
196 |
138/177✓ Branch 0 taken 8287818 times.
✓ Branch 1 taken 111913 times.
✓ Branch 2 taken 15 times.
✓ Branch 3 taken 8287808 times.
✓ Branch 4 taken 15 times.
✓ Branch 5 taken 5 times.
✓ Branch 6 taken 15 times.
✓ Branch 7 taken 5353 times.
✓ Branch 8 taken 15 times.
✓ Branch 9 taken 5 times.
✓ Branch 10 taken 15 times.
✓ Branch 11 taken 8184039 times.
✓ Branch 12 taken 611259 times.
✓ Branch 13 taken 30025 times.
✓ Branch 14 taken 399875 times.
✓ Branch 15 taken 5 times.
✓ Branch 16 taken 15 times.
✓ Branch 17 taken 52216 times.
✓ Branch 18 taken 4989463 times.
✓ Branch 19 taken 221053 times.
✓ Branch 20 taken 5304127 times.
✓ Branch 21 taken 1743 times.
✓ Branch 22 taken 243031 times.
✓ Branch 23 taken 3809293 times.
✓ Branch 24 taken 221063 times.
✓ Branch 25 taken 1587601 times.
✓ Branch 26 taken 15 times.
✓ Branch 27 taken 8859 times.
✓ Branch 28 taken 7691 times.
✓ Branch 29 taken 9186850 times.
✓ Branch 30 taken 364769 times.
✓ Branch 31 taken 4186708 times.
✓ Branch 32 taken 3148673 times.
✓ Branch 33 taken 6181859 times.
✓ Branch 34 taken 7284796 times.
✓ Branch 35 taken 2668748 times.
✓ Branch 36 taken 4795197 times.
✓ Branch 37 taken 3641171 times.
✓ Branch 38 taken 1046043 times.
✓ Branch 39 taken 2057985 times.
✓ Branch 40 taken 313651 times.
✓ Branch 41 taken 330233 times.
✓ Branch 42 taken 70693 times.
✓ Branch 43 taken 536495 times.
✓ Branch 44 taken 643531 times.
✓ Branch 45 taken 840553 times.
✓ Branch 46 taken 1135767 times.
✓ Branch 47 taken 5 times.
✓ Branch 49 taken 122612 times.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 84 taken 20 times.
✓ Branch 85 taken 80 times.
✓ Branch 86 taken 40 times.
✓ Branch 87 taken 160 times.
✓ Branch 89 taken 20 times.
✓ Branch 90 taken 80 times.
✓ Branch 91 taken 40 times.
✓ Branch 92 taken 160 times.
✓ Branch 94 taken 20 times.
✓ Branch 95 taken 80 times.
✓ Branch 96 taken 40 times.
✓ Branch 97 taken 160 times.
✓ Branch 99 taken 20 times.
✓ Branch 100 taken 80 times.
✓ Branch 101 taken 40 times.
✓ Branch 102 taken 160 times.
✓ Branch 104 taken 20 times.
✓ Branch 105 taken 80 times.
✓ Branch 106 taken 40 times.
✓ Branch 107 taken 160 times.
✓ Branch 109 taken 20 times.
✓ Branch 110 taken 80 times.
✓ Branch 111 taken 40 times.
✓ Branch 112 taken 160 times.
✓ Branch 114 taken 20 times.
✓ Branch 115 taken 80 times.
✓ Branch 116 taken 40 times.
✓ Branch 117 taken 160 times.
✓ Branch 119 taken 20 times.
✓ Branch 120 taken 80 times.
✓ Branch 121 taken 40 times.
✓ Branch 122 taken 160 times.
✓ Branch 124 taken 20 times.
✓ Branch 125 taken 80 times.
✓ Branch 126 taken 40 times.
✓ Branch 127 taken 160 times.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✓ Branch 132 taken 20 times.
✓ Branch 133 taken 80 times.
✓ Branch 134 taken 40 times.
✓ Branch 135 taken 160 times.
✗ Branch 138 not taken.
✗ Branch 139 not taken.
✓ Branch 140 taken 20 times.
✓ Branch 141 taken 80 times.
✓ Branch 142 taken 40 times.
✓ Branch 143 taken 160 times.
✗ Branch 146 not taken.
✗ Branch 147 not taken.
✓ Branch 148 taken 20 times.
✓ Branch 149 taken 80 times.
✓ Branch 150 taken 40 times.
✓ Branch 151 taken 160 times.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✓ Branch 156 taken 20 times.
✓ Branch 157 taken 80 times.
✓ Branch 158 taken 40 times.
✓ Branch 159 taken 160 times.
✓ Branch 161 taken 20 times.
✓ Branch 162 taken 80 times.
✓ Branch 163 taken 40 times.
✓ Branch 164 taken 160 times.
✓ Branch 166 taken 20 times.
✓ Branch 167 taken 80 times.
✓ Branch 168 taken 40 times.
✓ Branch 169 taken 160 times.
✓ Branch 171 taken 20 times.
✓ Branch 172 taken 80 times.
✓ Branch 173 taken 40 times.
✓ Branch 174 taken 160 times.
✓ Branch 176 taken 20 times.
✓ Branch 177 taken 80 times.
✓ Branch 178 taken 40 times.
✓ Branch 179 taken 160 times.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✓ Branch 184 taken 20 times.
✓ Branch 185 taken 80 times.
✓ Branch 186 taken 40 times.
✓ Branch 187 taken 160 times.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✓ Branch 192 taken 20 times.
✓ Branch 193 taken 80 times.
✓ Branch 194 taken 40 times.
✓ Branch 195 taken 160 times.
✗ Branch 198 not taken.
✗ Branch 199 not taken.
✓ Branch 200 taken 20 times.
✓ Branch 201 taken 80 times.
✓ Branch 202 taken 40 times.
✓ Branch 203 taken 160 times.
✗ Branch 206 not taken.
✗ Branch 207 not taken.
✓ Branch 208 taken 20 times.
✓ Branch 209 taken 80 times.
✓ Branch 210 taken 20 times.
✓ Branch 211 taken 80 times.
✓ Branch 212 taken 20 times.
✓ Branch 213 taken 80 times.
✓ Branch 214 taken 20 times.
✓ Branch 215 taken 80 times.
✓ Branch 48 taken 9516 times.
|
269209137 | return dirIdx_; |
197 | } | ||
198 | |||
199 | //! Returns whether the unitNormal of the face points in positive coordinate direction | ||
200 | 284898272 | bool normalInPosCoordDir() const | |
201 | { | ||
202 | 284898272 | return directionSign() > 0; | |
203 | } | ||
204 | |||
205 | //! Returns the sign of the unit outer normal's vector | ||
206 | 3298670525 | int directionSign() const | |
207 | { | ||
208 |
19/19✓ Branch 0 taken 142275652 times.
✓ Branch 1 taken 142622620 times.
✓ Branch 2 taken 27 times.
✓ Branch 3 taken 159857531 times.
✓ Branch 7 taken 71778 times.
✓ Branch 8 taken 119741642 times.
✓ Branch 10 taken 4340649 times.
✓ Branch 11 taken 127294218 times.
✓ Branch 16 taken 15200 times.
✓ Branch 17 taken 1152762 times.
✓ Branch 9 taken 3 times.
✓ Branch 4 taken 21 times.
✓ Branch 5 taken 35919094 times.
✓ Branch 13 taken 3019686 times.
✓ Branch 14 taken 47531653 times.
✓ Branch 19 taken 1835 times.
✓ Branch 20 taken 1024457 times.
✓ Branch 6 taken 44945749 times.
✓ Branch 12 taken 46705 times.
|
2592299151 | return outerNormalSign_; |
209 | } | ||
210 | |||
211 | //! Returns the data for one sub face | ||
212 | 3572575547 | const PairData& pairData(const int idx) const | |
213 | { | ||
214 |
14/33✗ Branch 0 not taken.
✓ Branch 1 taken 48 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 11 taken 346772 times.
✓ Branch 12 taken 280656308 times.
✓ Branch 15 taken 3895241 times.
✓ Branch 16 taken 285919951 times.
✓ Branch 19 taken 14778138 times.
✓ Branch 20 taken 203712540 times.
✓ Branch 22 taken 69029300 times.
✓ Branch 23 taken 3828860 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 2 not taken.
✓ Branch 4 taken 48 times.
✓ Branch 7 taken 96 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 21193 times.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✓ Branch 21 taken 3703040 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
|
2153971208 | return pairData_[idx]; |
215 | } | ||
216 | |||
217 | //! Return an array of all pair data | ||
218 | const std::array<PairData, numPairs>& pairData() const | ||
219 | { | ||
220 |
56/56✓ Branch 20 taken 400 times.
✓ Branch 21 taken 200 times.
✓ Branch 22 taken 400 times.
✓ Branch 23 taken 200 times.
✓ Branch 24 taken 400 times.
✓ Branch 25 taken 200 times.
✓ Branch 26 taken 400 times.
✓ Branch 27 taken 200 times.
✓ Branch 28 taken 400 times.
✓ Branch 29 taken 200 times.
✓ Branch 30 taken 400 times.
✓ Branch 31 taken 200 times.
✓ Branch 32 taken 400 times.
✓ Branch 33 taken 200 times.
✓ Branch 34 taken 400 times.
✓ Branch 35 taken 200 times.
✓ Branch 36 taken 400 times.
✓ Branch 37 taken 200 times.
✓ Branch 38 taken 400 times.
✓ Branch 39 taken 200 times.
✓ Branch 40 taken 400 times.
✓ Branch 41 taken 200 times.
✓ Branch 42 taken 400 times.
✓ Branch 43 taken 200 times.
✓ Branch 44 taken 400 times.
✓ Branch 45 taken 200 times.
✓ Branch 46 taken 400 times.
✓ Branch 47 taken 200 times.
✓ Branch 48 taken 400 times.
✓ Branch 49 taken 200 times.
✓ Branch 50 taken 400 times.
✓ Branch 51 taken 200 times.
✓ Branch 52 taken 400 times.
✓ Branch 53 taken 200 times.
✓ Branch 54 taken 400 times.
✓ Branch 55 taken 200 times.
✓ Branch 56 taken 400 times.
✓ Branch 57 taken 200 times.
✓ Branch 58 taken 400 times.
✓ Branch 59 taken 200 times.
✓ Branch 60 taken 400 times.
✓ Branch 61 taken 200 times.
✓ Branch 62 taken 400 times.
✓ Branch 63 taken 200 times.
✓ Branch 64 taken 400 times.
✓ Branch 65 taken 200 times.
✓ Branch 66 taken 400 times.
✓ Branch 67 taken 200 times.
✓ Branch 0 taken 2809014 times.
✓ Branch 1 taken 142769390 times.
✓ Branch 2 taken 154610512 times.
✓ Branch 3 taken 77305244 times.
✓ Branch 4 taken 137428 times.
✓ Branch 5 taken 1822376 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 12 times.
|
381172720 | return pairData_; |
221 | } | ||
222 | |||
223 | //! Return an array of all pair data | ||
224 | const AxisData& axisData() const | ||
225 | { | ||
226 | return axisData_; | ||
227 | } | ||
228 | |||
229 | //! Returns true if the face is a ghost face | ||
230 | bool isGhostFace() const | ||
231 | { | ||
232 | return isGhostFace_; | ||
233 | } | ||
234 | |||
235 | //! Returns the length of the face in a certain direction (adaptation of area() for 3d) | ||
236 | 289679875 | Scalar faceLength(const int localSubFaceIdx) const | |
237 | { | ||
238 |
2/2✓ Branch 0 taken 24 times.
✓ Branch 1 taken 24 times.
|
48 | if (dim == 3 && localSubFaceIdx > 1) |
239 | 24 | return dimensions[1]; | |
240 | else | ||
241 | 289679851 | return dimensions[0]; | |
242 | } | ||
243 | |||
244 | /*! | ||
245 | * \brief Check if the face has a parallel neighbor | ||
246 | * | ||
247 | * \param localSubFaceIdx The local index of the subface | ||
248 | * \param parallelDegreeIdx The index describing how many faces away from the self face | ||
249 | */ | ||
250 |
48/48✓ Branch 0 taken 12564803 times.
✓ Branch 1 taken 253695864 times.
✓ Branch 2 taken 146930936 times.
✓ Branch 3 taken 8237885 times.
✓ Branch 4 taken 21417 times.
✓ Branch 5 taken 80 times.
✓ Branch 6 taken 1616424 times.
✓ Branch 7 taken 37857 times.
✓ Branch 8 taken 45555 times.
✓ Branch 9 taken 2171605 times.
✓ Branch 10 taken 6393656 times.
✓ Branch 11 taken 190744 times.
✓ Branch 12 taken 320 times.
✓ Branch 13 taken 80 times.
✓ Branch 14 taken 320 times.
✓ Branch 15 taken 80 times.
✓ Branch 16 taken 320 times.
✓ Branch 17 taken 80 times.
✓ Branch 18 taken 320 times.
✓ Branch 19 taken 80 times.
✓ Branch 20 taken 320 times.
✓ Branch 21 taken 80 times.
✓ Branch 22 taken 320 times.
✓ Branch 23 taken 80 times.
✓ Branch 24 taken 320 times.
✓ Branch 25 taken 80 times.
✓ Branch 26 taken 320 times.
✓ Branch 27 taken 80 times.
✓ Branch 28 taken 320 times.
✓ Branch 29 taken 80 times.
✓ Branch 30 taken 320 times.
✓ Branch 31 taken 80 times.
✓ Branch 32 taken 320 times.
✓ Branch 33 taken 80 times.
✓ Branch 34 taken 320 times.
✓ Branch 35 taken 80 times.
✓ Branch 36 taken 320 times.
✓ Branch 37 taken 80 times.
✓ Branch 38 taken 320 times.
✓ Branch 39 taken 80 times.
✓ Branch 40 taken 320 times.
✓ Branch 41 taken 80 times.
✓ Branch 42 taken 320 times.
✓ Branch 43 taken 80 times.
✓ Branch 44 taken 320 times.
✓ Branch 45 taken 80 times.
✓ Branch 46 taken 320 times.
✓ Branch 47 taken 80 times.
|
431914026 | bool hasParallelNeighbor(const int localSubFaceIdx, const int parallelDegreeIdx) const |
251 | { | ||
252 |
48/48✓ Branch 0 taken 12564803 times.
✓ Branch 1 taken 253695864 times.
✓ Branch 2 taken 143123173 times.
✓ Branch 3 taken 9874123 times.
✓ Branch 4 taken 3829180 times.
✓ Branch 5 taken 21177 times.
✓ Branch 6 taken 21417 times.
✓ Branch 7 taken 80 times.
✓ Branch 8 taken 1616424 times.
✓ Branch 9 taken 37857 times.
✓ Branch 10 taken 2116073 times.
✓ Branch 11 taken 53958 times.
✓ Branch 12 taken 45555 times.
✓ Branch 13 taken 2171605 times.
✓ Branch 14 taken 6393656 times.
✓ Branch 15 taken 190744 times.
✓ Branch 16 taken 320 times.
✓ Branch 17 taken 80 times.
✓ Branch 18 taken 320 times.
✓ Branch 19 taken 80 times.
✓ Branch 20 taken 320 times.
✓ Branch 21 taken 80 times.
✓ Branch 22 taken 320 times.
✓ Branch 23 taken 80 times.
✓ Branch 24 taken 320 times.
✓ Branch 25 taken 80 times.
✓ Branch 26 taken 320 times.
✓ Branch 27 taken 80 times.
✓ Branch 28 taken 320 times.
✓ Branch 29 taken 80 times.
✓ Branch 30 taken 320 times.
✓ Branch 31 taken 80 times.
✓ Branch 32 taken 320 times.
✓ Branch 33 taken 80 times.
✓ Branch 34 taken 320 times.
✓ Branch 35 taken 80 times.
✓ Branch 36 taken 320 times.
✓ Branch 37 taken 80 times.
✓ Branch 38 taken 320 times.
✓ Branch 39 taken 80 times.
✓ Branch 40 taken 320 times.
✓ Branch 41 taken 80 times.
✓ Branch 42 taken 320 times.
✓ Branch 43 taken 80 times.
✓ Branch 44 taken 320 times.
✓ Branch 45 taken 80 times.
✓ Branch 46 taken 320 times.
✓ Branch 47 taken 80 times.
|
435762089 | return pairData(localSubFaceIdx).hasParallelNeighbor[parallelDegreeIdx]; |
253 | } | ||
254 | |||
255 | /*! | ||
256 | * \brief Check if the face has a half parallel neighbor | ||
257 | * | ||
258 | * \param localSubFaceIdx The local index of the subface | ||
259 | * | ||
260 | * ------------ | ||
261 | * | | | ||
262 | * | | | ||
263 | * | | | ||
264 | * ----------------------- | ||
265 | * | yyyyyyyy s | | ||
266 | * | yyyyyyyy s | | ||
267 | * | yyyyyyyy s | | ||
268 | * ----------------------- | ||
269 | * In this corner geometry, hasParallelNeighbor will return true for subcontrolvolumeface s belonging to the | ||
270 | * element filled by 'y's, but hasParallelNeighbor will return false for the subcontrolvolumeface that has the | ||
271 | * same dofIndex. We name this situation hasHalfParallelNeighbor. | ||
272 | */ | ||
273 |
7/10✓ Branch 0 taken 10696 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10696 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 266260267 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3823512 times.
✓ Branch 7 taken 5348 times.
✓ Branch 8 taken 21097 times.
✓ Branch 9 taken 5348 times.
|
270131616 | bool hasHalfParallelNeighbor(const int localSubFaceIdx) const |
274 | { | ||
275 |
7/10✓ Branch 0 taken 10696 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10696 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 266260267 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3823512 times.
✓ Branch 7 taken 5348 times.
✓ Branch 8 taken 21097 times.
✓ Branch 9 taken 5348 times.
|
270131616 | return pairData(localSubFaceIdx).hasHalfParallelNeighbor; |
276 | } | ||
277 | |||
278 | /*! | ||
279 | * \brief Check if the face has a corner parallel neighbor | ||
280 | * | ||
281 | * \param localSubFaceIdx The local index of the subface | ||
282 | * | ||
283 | * ------------ | ||
284 | * | yyyyyyyy s | ||
285 | * | yyyyyyyy s | ||
286 | * | yyyyyyyy s | ||
287 | * ----------------------- | ||
288 | * | | | | ||
289 | * | | | | ||
290 | * | | | | ||
291 | * ----------------------- | ||
292 | * In this corner geometry, hasParallelNeighbor will return true for subcontrolvolumeface s belonging to the | ||
293 | * element filled by 'y's. However, as there also might be a boundary velocity value known at the corner, which | ||
294 | * can be used instead of the standard parallel velocity in some cases, we want to identify this situation. We | ||
295 | * name it cornerParallelNeighbor. | ||
296 | */ | ||
297 |
2/8✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 266260267 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 3823512 times.
|
270083779 | bool hasCornerParallelNeighbor(const int localSubFaceIdx) const |
298 | { | ||
299 |
3/10✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 266260267 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 3823512 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 21097 times.
|
270104876 | return pairData(localSubFaceIdx).hasCornerParallelNeighbor; |
300 | } | ||
301 | |||
302 | /*! | ||
303 | * \brief Check if the face has an outer normal neighbor | ||
304 | * | ||
305 | * \param localSubFaceIdx The local index of the subface | ||
306 | */ | ||
307 |
48/48✓ Branch 0 taken 147424376 times.
✓ Branch 1 taken 7186488 times.
✓ Branch 2 taken 320 times.
✓ Branch 3 taken 80 times.
✓ Branch 4 taken 320 times.
✓ Branch 5 taken 80 times.
✓ Branch 6 taken 320 times.
✓ Branch 7 taken 80 times.
✓ Branch 8 taken 320 times.
✓ Branch 9 taken 80 times.
✓ Branch 10 taken 320 times.
✓ Branch 11 taken 80 times.
✓ Branch 12 taken 320 times.
✓ Branch 13 taken 80 times.
✓ Branch 14 taken 320 times.
✓ Branch 15 taken 80 times.
✓ Branch 16 taken 320 times.
✓ Branch 17 taken 80 times.
✓ Branch 18 taken 320 times.
✓ Branch 19 taken 80 times.
✓ Branch 20 taken 320 times.
✓ Branch 21 taken 80 times.
✓ Branch 22 taken 320 times.
✓ Branch 23 taken 80 times.
✓ Branch 24 taken 320 times.
✓ Branch 25 taken 80 times.
✓ Branch 26 taken 320 times.
✓ Branch 27 taken 80 times.
✓ Branch 28 taken 320 times.
✓ Branch 29 taken 80 times.
✓ Branch 30 taken 320 times.
✓ Branch 31 taken 80 times.
✓ Branch 32 taken 320 times.
✓ Branch 33 taken 80 times.
✓ Branch 34 taken 320 times.
✓ Branch 35 taken 80 times.
✓ Branch 36 taken 320 times.
✓ Branch 37 taken 80 times.
✓ Branch 38 taken 320 times.
✓ Branch 39 taken 80 times.
✓ Branch 40 taken 320 times.
✓ Branch 41 taken 80 times.
✓ Branch 42 taken 320 times.
✓ Branch 43 taken 80 times.
✓ Branch 44 taken 320 times.
✓ Branch 45 taken 80 times.
✓ Branch 46 taken 320 times.
✓ Branch 47 taken 80 times.
|
154620064 | bool hasOuterLateral(const int localSubFaceIdx) const |
308 | { | ||
309 |
48/48✓ Branch 0 taken 147424376 times.
✓ Branch 1 taken 7186488 times.
✓ Branch 2 taken 320 times.
✓ Branch 3 taken 80 times.
✓ Branch 4 taken 320 times.
✓ Branch 5 taken 80 times.
✓ Branch 6 taken 320 times.
✓ Branch 7 taken 80 times.
✓ Branch 8 taken 320 times.
✓ Branch 9 taken 80 times.
✓ Branch 10 taken 320 times.
✓ Branch 11 taken 80 times.
✓ Branch 12 taken 320 times.
✓ Branch 13 taken 80 times.
✓ Branch 14 taken 320 times.
✓ Branch 15 taken 80 times.
✓ Branch 16 taken 320 times.
✓ Branch 17 taken 80 times.
✓ Branch 18 taken 320 times.
✓ Branch 19 taken 80 times.
✓ Branch 20 taken 320 times.
✓ Branch 21 taken 80 times.
✓ Branch 22 taken 320 times.
✓ Branch 23 taken 80 times.
✓ Branch 24 taken 320 times.
✓ Branch 25 taken 80 times.
✓ Branch 26 taken 320 times.
✓ Branch 27 taken 80 times.
✓ Branch 28 taken 320 times.
✓ Branch 29 taken 80 times.
✓ Branch 30 taken 320 times.
✓ Branch 31 taken 80 times.
✓ Branch 32 taken 320 times.
✓ Branch 33 taken 80 times.
✓ Branch 34 taken 320 times.
✓ Branch 35 taken 80 times.
✓ Branch 36 taken 320 times.
✓ Branch 37 taken 80 times.
✓ Branch 38 taken 320 times.
✓ Branch 39 taken 80 times.
✓ Branch 40 taken 320 times.
✓ Branch 41 taken 80 times.
✓ Branch 42 taken 320 times.
✓ Branch 43 taken 80 times.
✓ Branch 44 taken 320 times.
✓ Branch 45 taken 80 times.
✓ Branch 46 taken 320 times.
✓ Branch 47 taken 80 times.
|
154620064 | return pairData(localSubFaceIdx).hasOuterLateral; |
310 | } | ||
311 | |||
312 | /*! | ||
313 | * \brief Check if the face has a backward neighbor | ||
314 | * | ||
315 | * \param backwardIdx The index describing how many faces backward this dof is from the opposite face | ||
316 | */ | ||
317 | template<bool enable = useHigherOrder, std::enable_if_t<enable, int> = 0> | ||
318 | 2521770 | bool hasBackwardNeighbor(const int backwardIdx) const | |
319 | { | ||
320 |
4/4✓ Branch 0 taken 18200 times.
✓ Branch 1 taken 550 times.
✓ Branch 2 taken 1612734 times.
✓ Branch 3 taken 33266 times.
|
2521770 | return axisData().hasBackwardNeighbor[backwardIdx]; |
321 | } | ||
322 | |||
323 | /*! | ||
324 | * \brief Check if the face has a forward neighbor | ||
325 | * | ||
326 | * \param forwardIdx The index describing how many faces forward this dof is of the self face | ||
327 | */ | ||
328 | template<bool enable = useHigherOrder, std::enable_if_t<enable, int> = 0> | ||
329 | 2755326 | bool hasForwardNeighbor(const int forwardIdx) const | |
330 | { | ||
331 |
4/4✓ Branch 0 taken 550 times.
✓ Branch 1 taken 18200 times.
✓ Branch 2 taken 1618334 times.
✓ Branch 3 taken 27666 times.
|
2755326 | return axisData().hasForwardNeighbor[forwardIdx]; |
332 | } | ||
333 | |||
334 | //! Returns the dof of the face | ||
335 | 141724051 | GridIndexType dofIndex() const | |
336 | { | ||
337 |
72/81✓ Branch 1 taken 3822668 times.
✓ Branch 2 taken 53412 times.
✓ Branch 28 taken 4996 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 4996 times.
✗ Branch 32 not taken.
✓ Branch 33 taken 18928 times.
✓ Branch 34 taken 22180 times.
✓ Branch 35 taken 18368 times.
✓ Branch 36 taken 22180 times.
✓ Branch 37 taken 40 times.
✓ Branch 38 taken 60 times.
✓ Branch 39 taken 40 times.
✓ Branch 40 taken 60 times.
✓ Branch 41 taken 40 times.
✓ Branch 42 taken 60 times.
✓ Branch 43 taken 40 times.
✓ Branch 44 taken 60 times.
✓ Branch 45 taken 40 times.
✓ Branch 46 taken 60 times.
✓ Branch 47 taken 40 times.
✓ Branch 48 taken 60 times.
✓ Branch 49 taken 40 times.
✓ Branch 50 taken 60 times.
✓ Branch 51 taken 40 times.
✓ Branch 52 taken 60 times.
✓ Branch 53 taken 40 times.
✓ Branch 54 taken 60 times.
✓ Branch 55 taken 40 times.
✓ Branch 56 taken 60 times.
✓ Branch 57 taken 40 times.
✓ Branch 58 taken 60 times.
✓ Branch 59 taken 40 times.
✓ Branch 60 taken 60 times.
✓ Branch 61 taken 40 times.
✓ Branch 62 taken 60 times.
✓ Branch 63 taken 40 times.
✓ Branch 64 taken 60 times.
✓ Branch 65 taken 40 times.
✓ Branch 66 taken 60 times.
✓ Branch 67 taken 40 times.
✓ Branch 68 taken 60 times.
✓ Branch 69 taken 40 times.
✓ Branch 70 taken 60 times.
✓ Branch 71 taken 40 times.
✓ Branch 72 taken 60 times.
✓ Branch 73 taken 40 times.
✓ Branch 74 taken 60 times.
✓ Branch 75 taken 40 times.
✓ Branch 76 taken 60 times.
✓ Branch 77 taken 40 times.
✓ Branch 78 taken 60 times.
✓ Branch 79 taken 40 times.
✓ Branch 80 taken 60 times.
✓ Branch 4 taken 3946288 times.
✓ Branch 5 taken 1496000 times.
✓ Branch 9 taken 74144 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 8678688 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 8961888 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 53635 times.
✓ Branch 19 taken 58765 times.
✓ Branch 20 taken 11362 times.
✓ Branch 21 taken 277438 times.
✓ Branch 22 taken 1453568 times.
✗ Branch 23 not taken.
✗ Branch 3 not taken.
✗ Branch 6 not taken.
✓ Branch 8 taken 1496000 times.
✓ Branch 12 taken 283200 times.
✓ Branch 25 taken 1453568 times.
✗ Branch 26 not taken.
✓ Branch 0 taken 4880 times.
✓ Branch 7 taken 156160 times.
✓ Branch 11 taken 1024 times.
✓ Branch 15 taken 1024 times.
✓ Branch 24 taken 2419200 times.
✓ Branch 27 taken 2419200 times.
✓ Branch 30 taken 560 times.
|
123725507 | return axisData().selfDof; |
338 | } | ||
339 | |||
340 | //! Returns the dof of the opposing face | ||
341 | 77310044 | GridIndexType dofIndexOpposingFace() const | |
342 | { | ||
343 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
77310044 | return axisData().oppositeDof; |
344 | } | ||
345 | |||
346 | //! Returns the dof the first forward face | ||
347 | GridIndexType dofIndexForwardFace() const | ||
348 | { | ||
349 | return axisData().inAxisForwardDofs[0]; | ||
350 | } | ||
351 | |||
352 | //! Returns the dof of the first backward face | ||
353 | GridIndexType dofIndexBackwardFace() const | ||
354 | { | ||
355 | return axisData().inAxisBackwardDofs[0]; | ||
356 | } | ||
357 | |||
358 | //! Returns the distance between the face and the opposite one | ||
359 | 147503500 | Scalar selfToOppositeDistance() const | |
360 | { | ||
361 |
2/3✓ Branch 0 taken 51 times.
✓ Branch 1 taken 145578305 times.
✗ Branch 2 not taken.
|
147503500 | return axisData().selfToOppositeDistance; |
362 | } | ||
363 | |||
364 | /*! | ||
365 | * \brief Returns the distance between the parallel dofs | ||
366 | * | ||
367 | * \param localSubFaceIdx The local index of the subface | ||
368 | * \param parallelDegreeIdx The index describing how many faces away from the self | ||
369 | */ | ||
370 | 289679923 | Scalar parallelDofsDistance(const int localSubFaceIdx, const int parallelDegreeIdx) const | |
371 | { | ||
372 |
2/2✓ Branch 0 taken 48 times.
✓ Branch 1 taken 48 times.
|
96 | if (parallelDegreeIdx == 0) |
373 |
2/2✓ Branch 0 taken 21097 times.
✓ Branch 1 taken 1657335 times.
|
285784683 | return (faceLength(localSubFaceIdx) + pairData(localSubFaceIdx).parallelCellWidths[0]) * 0.5; |
374 | // pairData(localSubFaceIdx).parallelCellWidths[0]) will return 0.0 if the subface perpendicular the scvf lies on a boundary | ||
375 | else | ||
376 | { | ||
377 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 48 times.
|
48 | assert((parallelDegreeIdx == 1) && "Only the width of the first two parallel cells (indices 0 and 1) is stored for each scvf."); |
378 | 2171573 | return (pairData(localSubFaceIdx).parallelCellWidths[0] + pairData(localSubFaceIdx).parallelCellWidths[1]) * 0.5; | |
379 | } | ||
380 | } | ||
381 | |||
382 | //! set the center to a different position | ||
383 | 17557066 | void setCenter(const GlobalPosition& center) | |
384 | 17557066 | { center_ = center; } | |
385 | |||
386 | //! set the boundary flag | ||
387 | 17557066 | void setBoundary(bool boundaryFlag) | |
388 | 17557066 | { boundary_ = boundaryFlag; } | |
389 | |||
390 | //! set the ghost face flag | ||
391 | 17557066 | void setIsGhostFace(bool isGhostFaceFlag) | |
392 |
5/21✓ Branch 1 taken 120800 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11928 times.
✓ Branch 5 taken 2940 times.
✓ Branch 7 taken 475916 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 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 0 not taken.
✗ Branch 3 not taken.
✓ Branch 6 taken 508848 times.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
|
17557066 | { isGhostFace_ = isGhostFaceFlag; } |
393 | |||
394 | private: | ||
395 | std::array<Scalar, dim-1> dimensions; | ||
396 | Scalar area_; | ||
397 | GlobalPosition center_; | ||
398 | GlobalPosition unitOuterNormal_; | ||
399 | GridIndexType scvfIndex_; | ||
400 | std::vector<GridIndexType> scvIndices_; | ||
401 | bool boundary_; | ||
402 | |||
403 | Scalar selfToOppositeDistance_; | ||
404 | AxisData axisData_; | ||
405 | std::array<PairData, numPairs> pairData_; | ||
406 | |||
407 | int localFaceIdx_; | ||
408 | unsigned int dirIdx_; | ||
409 | int outerNormalSign_; | ||
410 | bool isGhostFace_; | ||
411 | }; | ||
412 | |||
413 | } // end namespace Dumux | ||
414 | |||
415 | #endif | ||
416 |