GCC Code Coverage Report


Directory: ../../../builds/dumux-repositories/
File: dumux/dumux/multidomain/assemblerview.hh
Date: 2025-04-19 19:19:10
Exec Total Coverage
Lines: 9 9 100.0%
Functions: 0 0 -%
Branches: 94 128 73.4%

Line Branch Exec Source
1 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 // vi: set et ts=4 sw=4 sts=4:
3 //
4 // SPDX-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 MultiDomain
10 * \ingroup Assembly
11 * \brief Subdomain-specific views on multidomain assemblers.
12 */
13 #ifndef DUMUX_MULTIDOMAIN_ASSEMBLER_VIEW_HH
14 #define DUMUX_MULTIDOMAIN_ASSEMBLER_VIEW_HH
15
16 #include <dune/common/hybridutilities.hh>
17 #include <dune/common/std/type_traits.hh>
18
19 namespace Dumux {
20
21 /*!
22 * \ingroup MultiDomain
23 * \ingroup Assembly
24 * \brief Subdomain-specific view on a multidomain assembler.
25 * Allows retrieval of sub-domain specific objects w/o passing a domain id.
26 * \todo This is not necessarily fv-specifiv (could be in other header).
27 * \todo Can we get rid of some of the interfaces?
28 */
29 template<typename MDAssembler, std::size_t domainId>
30 class MultiDomainAssemblerSubDomainView
31 {
32 static constexpr Dune::index_constant<domainId> myId{};
33
34 template<class A>
35 using HasStaticIsImplicitCheck = decltype(A::isImplicit());
36
37 template<class A>
38 static constexpr bool hasStaticIsImplicit = Dune::Std::is_detected<HasStaticIsImplicitCheck, A>::value;
39
40 public:
41 using CouplingManager = typename MDAssembler::CouplingManager;
42 using SolutionVector = typename MDAssembler::SolutionVector;
43
44 39027620 MultiDomainAssemblerSubDomainView(MDAssembler& assembler, Dune::index_constant<domainId>)
45
1/2
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
39027620 : assembler_{assembler}
46 {}
47
48 template<std::size_t i>
49
6/12
✓ Branch 1 taken 7667643 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 24470694 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1627320 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 150616 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 163489 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2892000 times.
✗ Branch 17 not taken.
38759495 auto localResidual(Dune::index_constant<i> id) const { return assembler_.localResidual(id); }
50 auto localResidual() const { return assembler_.localResidual(myId); }
51
52 template<std::size_t i>
53
49/53
✓ Branch 0 taken 531289 times.
✓ Branch 1 taken 52191572 times.
✓ Branch 2 taken 14896 times.
✓ Branch 3 taken 10609997 times.
✓ Branch 4 taken 6908877 times.
✓ Branch 5 taken 6827966 times.
✓ Branch 6 taken 1632828 times.
✓ Branch 7 taken 61550597 times.
✓ Branch 9 taken 8575587 times.
✓ Branch 10 taken 42 times.
✓ Branch 12 taken 5507660 times.
✓ Branch 13 taken 1658726 times.
✓ Branch 15 taken 20538027 times.
✓ Branch 16 taken 46 times.
✓ Branch 18 taken 10030772 times.
✓ Branch 19 taken 15 times.
✓ Branch 21 taken 1308542 times.
✓ Branch 22 taken 16 times.
✓ Branch 24 taken 712274 times.
✓ Branch 25 taken 858511 times.
✓ Branch 29 taken 3094066 times.
✓ Branch 30 taken 119 times.
✓ Branch 32 taken 15 times.
✓ Branch 33 taken 5 times.
✓ Branch 11 taken 2769786 times.
✓ Branch 14 taken 325729 times.
✓ Branch 20 taken 4290222 times.
✓ Branch 23 taken 325729 times.
✓ Branch 17 taken 71 times.
✓ Branch 26 taken 5711491 times.
✓ Branch 27 taken 929333 times.
✓ Branch 28 taken 712454 times.
✓ Branch 31 taken 1203230 times.
✓ Branch 8 taken 102 times.
✓ Branch 36 taken 4 times.
✓ Branch 37 taken 413043 times.
✓ Branch 39 taken 3 times.
✓ Branch 40 taken 413045 times.
✓ Branch 34 taken 3 times.
✓ Branch 41 taken 2 times.
✓ Branch 43 taken 4 times.
✓ Branch 44 taken 1 times.
✓ Branch 35 taken 15 times.
✓ Branch 38 taken 16 times.
✓ Branch 42 taken 1 times.
✓ Branch 45 taken 1 times.
✓ Branch 47 taken 1 times.
✗ Branch 48 not taken.
✗ Branch 46 not taken.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
697927768 const auto& problem(Dune::index_constant<i> id) const { return assembler_.problem(id); }
54 const auto& problem() const { return assembler_.problem(myId); }
55
56 template<std::size_t i>
57
4/8
✓ Branch 1 taken 7667055 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25284622 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 962929 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 2892000 times.
✗ Branch 11 not taken.
38594339 const auto& gridGeometry(Dune::index_constant<i> id) const { return assembler_.gridGeometry(id); }
58 const auto& gridGeometry() const { return assembler_.gridGeometry(myId); }
59
60 template<std::size_t i>
61
8/16
✓ Branch 1 taken 7667307 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 24734224 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 871842 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1524056 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 100012 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 100264 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 105781 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1928000 times.
✗ Branch 23 not taken.
41595597 const auto& gridVariables(Dune::index_constant<i> id) const { return assembler_.gridVariables(id); }
62 const auto& gridVariables() const { return assembler_.gridVariables(myId); }
63
64
5/9
✓ Branch 3 taken 264000 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 100000 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 100000 times.
✗ Branch 10 not taken.
✗ Branch 2 not taken.
✓ Branch 5 taken 100000 times.
✓ Branch 8 taken 617000 times.
5845089 const auto& prevSol() const { return assembler_.prevSol(); }
65
17/20
✓ Branch 0 taken 62725127 times.
✓ Branch 1 taken 18147401 times.
✓ Branch 2 taken 181957574 times.
✓ Branch 3 taken 31482039 times.
✓ Branch 4 taken 3557360 times.
✓ Branch 5 taken 6206731 times.
✓ Branch 6 taken 33405966 times.
✓ Branch 7 taken 20454957 times.
✓ Branch 8 taken 2907828 times.
✓ Branch 9 taken 11873984 times.
✓ Branch 10 taken 2919655 times.
✓ Branch 11 taken 32259 times.
✓ Branch 12 taken 371200 times.
✓ Branch 13 taken 150000 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2892000 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 100000 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 1928000 times.
383925970 bool isStationaryProblem() const { return assembler_.isStationaryProblem(); }
66
67 template<class A = MDAssembler, typename std::enable_if_t<hasStaticIsImplicit<A>, int> = 0>
68 static constexpr bool isImplicit() { return MDAssembler::isImplicit(); }
69
70 template<class A = MDAssembler, typename std::enable_if_t<!hasStaticIsImplicit<A>, int> = 0>
71
4/8
✗ Branch 1 not taken.
✓ Branch 2 taken 3456 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 3456 times.
✓ Branch 7 taken 165888 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 13824 times.
✗ Branch 11 not taken.
203008 bool isImplicit() const { return assembler_.isImplicit(); }
72
73 private:
74 MDAssembler& assembler_;
75 };
76
77 } // end namespace Dumux
78
79 #endif
80