version 3.11-dev
Loading...
Searching...
No Matches
assemblerview.hh
Go to the documentation of this file.
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//
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
20
21namespace Dumux {
22
31template<typename MDAssembler, std::size_t domainId>
33{
34 static constexpr Dune::index_constant<domainId> myId{};
35
36 template<class A>
37 using HasStaticIsImplicitCheck = decltype(A::isImplicit());
38
39 template<class A>
40 static constexpr bool hasStaticIsImplicit = Dune::Std::is_detected<HasStaticIsImplicitCheck, A>::value;
41
42public:
43 using CouplingManager = typename MDAssembler::CouplingManager;
44 using SolutionVector = typename MDAssembler::SolutionVector;
45
46 MultiDomainAssemblerSubDomainView(MDAssembler& assembler, Dune::index_constant<domainId>)
47 : assembler_{assembler}
48 {}
49
50 template<std::size_t i>
51 auto localResidual(Dune::index_constant<i> id) const { return assembler_.localResidual(id); }
52 auto localResidual() const { return assembler_.localResidual(myId); }
53
54 template<std::size_t i>
55 const auto& problem(Dune::index_constant<i> id) const { return assembler_.problem(id); }
56 const auto& problem() const { return assembler_.problem(myId); }
57
59 template<std::size_t i>
60 const auto& gridDiscretization(Dune::index_constant<i> id) const
61 { return Dumux::gridDiscretization(assembler_, id); }
62 const auto& gridDiscretization() const { return gridDiscretization(myId); }
63
64 template<std::size_t i>
65 const auto& gridGeometry(Dune::index_constant<i> id) const { return gridDiscretization(id); }
66 const auto& gridGeometry() const { return gridDiscretization(myId); }
67
68 template<std::size_t i>
69 const auto& gridVariables(Dune::index_constant<i> id) const { return assembler_.gridVariables(id); }
70 const auto& gridVariables() const { return assembler_.gridVariables(myId); }
71
72 const auto& prevSol() const { return assembler_.prevSol(); }
73 bool isStationaryProblem() const { return assembler_.isStationaryProblem(); }
74
75 template<class A = MDAssembler, typename std::enable_if_t<hasStaticIsImplicit<A>, int> = 0>
76 static constexpr bool isImplicit() { return MDAssembler::isImplicit(); }
77
78 template<class A = MDAssembler, typename std::enable_if_t<!hasStaticIsImplicit<A>, int> = 0>
79 bool isImplicit() const { return assembler_.isImplicit(); }
80
81private:
82 MDAssembler& assembler_;
83};
84
85} // end namespace Dumux
86
87#endif
const auto & gridDiscretization(Dune::index_constant< i > id) const
the grid discretization of domain i
Definition assemblerview.hh:60
bool isImplicit() const
Definition assemblerview.hh:79
typename ThisType::CouplingManager CouplingManager
Definition assemblerview.hh:43
const auto & gridVariables(Dune::index_constant< i > id) const
Definition assemblerview.hh:69
const auto & gridGeometry(Dune::index_constant< i > id) const
Definition assemblerview.hh:65
const auto & problem(Dune::index_constant< i > id) const
Definition assemblerview.hh:55
MultiDomainAssemblerSubDomainView(MDAssembler &assembler, Dune::index_constant< domainId >)
Definition assemblerview.hh:46
const auto & gridGeometry() const
Definition assemblerview.hh:66
auto localResidual() const
Definition assemblerview.hh:52
bool isStationaryProblem() const
Definition assemblerview.hh:73
static constexpr bool isImplicit()
Definition assemblerview.hh:76
const auto & prevSol() const
Definition assemblerview.hh:72
const auto & problem() const
Definition assemblerview.hh:56
const auto & gridDiscretization() const
Definition assemblerview.hh:62
auto localResidual(Dune::index_constant< i > id) const
Definition assemblerview.hh:51
typename ThisType::SolutionVector SolutionVector
Definition assemblerview.hh:44
const auto & gridVariables() const
Definition assemblerview.hh:70
Type traits for classes providing a grid discretization.
decltype(auto) gridDiscretization(const T &t, Args &&... args)
The grid discretization.
Definition griddiscretization.hh:65
Definition adapt.hh:17