GCC Code Coverage Report


Directory: ../../../builds/dumux-repositories/
File: dumux/dumux/common/entitymap.hh
Date: 2025-04-12 19:19:20
Exec Total Coverage
Lines: 15 15 100.0%
Functions: 54 56 96.4%
Branches: 81 100 81.0%

Line Branch Exec Source
1 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 // vi: set et ts=4 sw=4 sts=4:
3 //
4 // SPDX-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5 // SPDX-License-Identifier: GPL-3.0-or-later
6 //
7 /*!
8 * \file
9 * \ingroup Core
10 * \brief A map from indices to entities using grid entity seeds
11 */
12 #ifndef DUMUX_ENTITY_INDEX_MAP_HH
13 #define DUMUX_ENTITY_INDEX_MAP_HH
14
15 #include <vector>
16 #include <utility>
17 #include <dune/geometry/dimension.hh>
18
19 namespace Dumux {
20
21 /*!
22 * \ingroup Core
23 * \brief A map from indices to entities using grid entity seeds
24 */
25 template <class GridView, int codim = 0>
26
3/4
✓ Branch 0 taken 466 times.
✓ Branch 1 taken 12 times.
✓ Branch 2 taken 26 times.
✗ Branch 3 not taken.
960 class EntityMap
27 {
28 public:
29 using Grid = typename GridView::Traits::Grid;
30 using Entity = typename Grid::template Codim<codim>::Entity;
31 using EntitySeed = typename Grid::template Codim<codim>::EntitySeed;
32
33 //! constructor moving a ready seed list in here
34 EntityMap(const Grid& grid, std::vector<EntitySeed>&& seeds)
35 : grid_(grid)
36 , seeds_(std::move(seeds))
37 {}
38
39 //! constructor with all entities of codim
40 template<class Mapper>
41 1317 EntityMap(const Grid& grid, const Mapper& mapper)
42
1/2
✓ Branch 1 taken 960 times.
✗ Branch 2 not taken.
1317 : grid_(grid)
43 {
44
1/2
✓ Branch 1 taken 960 times.
✗ Branch 2 not taken.
1317 update(mapper);
45 1317 }
46
47 //! update the map after the grid changed
48 void update(std::vector<EntitySeed>&& seeds)
49 { seeds_.swap(std::move(seeds)); }
50
51 //! update the map after the grid changed
52 template<class Mapper>
53 1317 void update(const Mapper& mapper)
54 {
55 1317 const auto& gv = grid_.leafGridView();
56
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
1317 seeds_.resize(gv.size(codim));
57
11/12
✓ Branch 2 taken 3892 times.
✓ Branch 3 taken 566598 times.
✓ Branch 5 taken 253548 times.
✓ Branch 6 taken 253388 times.
✓ Branch 7 taken 1575 times.
✓ Branch 8 taken 360165 times.
✓ Branch 10 taken 361731 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 361731 times.
✓ Branch 13 taken 141 times.
✓ Branch 1 taken 2543928 times.
✓ Branch 4 taken 80873 times.
11964235 for (const auto& entity : entities(gv, Dune::Codim<codim>()))
58
2/4
✓ Branch 1 taken 361731 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 361731 times.
✗ Branch 5 not taken.
6544067 seeds_[mapper.index(entity)] = entity.seed();
59 1317 }
60
61 //! get an element from an index i
62 893679992 Entity operator[](std::size_t i) const
63
59/68
✓ Branch 2 taken 1967302 times.
✓ Branch 3 taken 22474466 times.
✓ Branch 8 taken 107671 times.
✓ Branch 9 taken 19178 times.
✓ Branch 11 taken 153283 times.
✓ Branch 12 taken 2469 times.
✓ Branch 14 taken 668290 times.
✓ Branch 15 taken 450471 times.
✓ Branch 4 taken 10637672 times.
✓ Branch 7 taken 32168807 times.
✓ Branch 5 taken 22289 times.
✓ Branch 13 taken 59775 times.
✓ Branch 6 taken 14102 times.
✓ Branch 10 taken 30192 times.
✓ Branch 23 taken 2425246 times.
✓ Branch 24 taken 4994 times.
✓ Branch 27 taken 1738 times.
✓ Branch 28 taken 500566 times.
✓ Branch 25 taken 896156 times.
✓ Branch 29 taken 1396288 times.
✓ Branch 20 taken 1711922 times.
✓ Branch 21 taken 438306 times.
✓ Branch 1 taken 6509734 times.
✓ Branch 22 taken 308732 times.
✓ Branch 16 taken 26976 times.
✓ Branch 17 taken 1295523 times.
✓ Branch 19 taken 413391 times.
✓ Branch 18 taken 445366 times.
✓ Branch 26 taken 2120744 times.
✓ Branch 33 taken 1629 times.
✓ Branch 34 taken 18335012 times.
✓ Branch 36 taken 3138 times.
✓ Branch 37 taken 18228712 times.
✓ Branch 39 taken 331584 times.
✓ Branch 40 taken 317680 times.
✓ Branch 44 taken 147666 times.
✓ Branch 45 taken 213168 times.
✓ Branch 30 taken 52328 times.
✓ Branch 31 taken 18353156 times.
✓ Branch 38 taken 100275 times.
✓ Branch 41 taken 1230 times.
✓ Branch 42 taken 462770 times.
✓ Branch 49 taken 517616 times.
✓ Branch 50 taken 28 times.
✓ Branch 43 taken 20892 times.
✓ Branch 46 taken 50116 times.
✓ Branch 47 taken 28 times.
✓ Branch 35 taken 53138 times.
✓ Branch 32 taken 100962 times.
✗ Branch 51 not taken.
✓ Branch 48 taken 621952 times.
✓ Branch 53 taken 28 times.
✗ Branch 54 not taken.
✓ Branch 56 taken 146664 times.
✗ Branch 57 not taken.
✓ Branch 59 taken 146664 times.
✗ Branch 60 not taken.
✓ Branch 62 taken 145768 times.
✗ Branch 63 not taken.
✗ Branch 66 not taken.
✓ Branch 67 taken 864 times.
✓ Branch 71 taken 200 times.
✗ Branch 72 not taken.
✓ Branch 74 taken 100 times.
✗ Branch 75 not taken.
✓ Branch 77 taken 1354 times.
✗ Branch 78 not taken.
✓ Branch 52 taken 200 times.
893484992 { return grid_.entity(seeds_[i]); }
64
65 //! get the size of the map
66 2842657 std::size_t size() const
67
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 2483516 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 205281 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 153860 times.
2842657 { return seeds_.size(); }
68
69 private:
70 const Grid& grid_;
71 std::vector<EntitySeed> seeds_;
72 };
73
74 template<class GridView>
75 using ElementMap = EntityMap<GridView, 0>;
76
77 } // end namespace Dumux
78
79 #endif
80