13#ifndef DUMUX_MULTIDOMAIN_ASSEMBLER_VIEW_HH
14#define DUMUX_MULTIDOMAIN_ASSEMBLER_VIEW_HH
16#include <dune/common/hybridutilities.hh>
17#include <dune/common/std/type_traits.hh>
31template<
typename MDAssembler, std::
size_t domainId>
34 static constexpr Dune::index_constant<domainId> myId{};
37 using HasStaticIsImplicitCheck =
decltype(A::isImplicit());
40 static constexpr bool hasStaticIsImplicit = Dune::Std::is_detected<HasStaticIsImplicitCheck, A>::value;
47 : assembler_{assembler}
50 template<std::
size_t i>
51 auto localResidual(Dune::index_constant<i>
id)
const {
return assembler_.localResidual(
id); }
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); }
59 template<std::
size_t i>
64 template<std::
size_t i>
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); }
72 const auto&
prevSol()
const {
return assembler_.prevSol(); }
75 template<
class A = MDAssembler,
typename std::enable_if_t<hasStaticIsImplicit<A>,
int> = 0>
76 static constexpr bool isImplicit() {
return MDAssembler::isImplicit(); }
78 template<
class A = MDAssembler,
typename std::enable_if_t<!hasStaticIsImplicit<A>,
int> = 0>
79 bool isImplicit()
const {
return assembler_.isImplicit(); }
82 MDAssembler& assembler_;
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