14#ifndef DUMUX_STAGGERED_MULTIDOMAIN_TRAITS_HH
15#define DUMUX_STAGGERED_MULTIDOMAIN_TRAITS_HH
21#include <dune/common/fmatrix.hh>
22#include <dune/common/indices.hh>
24#include <dune/istl/bcrsmatrix.hh>
25#include <dune/istl/multitypeblockvector.hh>
26#include <dune/istl/multitypeblockmatrix.hh>
40template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
44template<
template<std::
size_t>
class SubDomainTypeTag>
48template<
template<std::
size_t>
class SubDomainTypeTag>
54template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
58template<
template<std::
size_t>
class SubDomainTypeTag>
62template<
template<std::
size_t>
class SubDomainTypeTag>
68template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
72template<
template<std::
size_t>
class SubDomainTypeTag>
76template<
template<std::
size_t>
class SubDomainTypeTag>
81template<
class Scalar,
int numEq>
85 using MatrixBlock =
typename Dune::FieldMatrix<Scalar, numEq, numEq>;
91template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
95template<
template<std::
size_t>
class SubDomainTypeTag>
98 getPropValue<SubDomainTypeTag<0>, Properties::NumEqFace>()>
::type; };
100template<
template<std::
size_t>
class SubDomainTypeTag>
103 getPropValue<SubDomainTypeTag<0>, Properties::NumEqCellCenter>()>
::type; };
107template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
111template<
template<std::
size_t>
class SubDomainTypeTag>
115template<
template<std::
size_t>
class SubDomainTypeTag>
152template<
typename... SubDomainTypeTags>
161 template<std::
size_t id>
162 using SubDomainTypeTag =
typename std::tuple_element_t<id, std::tuple<SubDomainTypeTags...>>;
165 using Indices = std::make_index_sequence<numSubDomains>;
168 template<std::
size_t id>
171 template<std::
size_t id>
174 template<std::
size_t id>
177 template<std::
size_t id>
187 template<std::
size_t id>
190 using Index = Dune::index_constant<id>;
228 template<
template<std::
size_t>
class T>
232 template<
template<std::
size_t>
class T>
236 template<
template<std::
size_t>
class T>
Defines all properties used in Dumux.
Helper to extract native Dune vector types from particular Dumux types.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:296
Type traits to be used with matrix types.
Traits for multidomain problems.
typename makeFromIndexedType< M, SubDomainDiagBlocks, Indices >::type type
Definition: multidomain/traits.hh:99
typename makeFromIndexedType< std::tuple, PtrType, Indices >::type type
Definition: multidomain/traits.hh:89
typename makeFromIndexedType< std::tuple, PtrType, Indices >::type type
Definition: multidomain/traits.hh:79
Definition: dunevectors.hh:56
typename NativeDuneVectorTypeImpl< V, Dune::Std::is_detected< Detail::DuneVectors::StateDetector, V >{} >::type type
Definition: dunevectors.hh:59
Definition: staggeredtraits.hh:83
typename Dune::BCRSMatrix< MatrixBlock > type
Definition: staggeredtraits.hh:87
typename GetPropType< SubDomainTypeTag< 0 >, Properties::GridGeometry >::FaceFVGridGeometryType type
Definition: staggeredtraits.hh:46
typename GetPropType< SubDomainTypeTag< 0 >, Properties::GridGeometry >::CellCenterFVGridGeometryType type
Definition: staggeredtraits.hh:50
Definition: staggeredtraits.hh:42
GetPropType< SubDomainTypeTag< i >, Properties::GridGeometry > type
Definition: staggeredtraits.hh:42
typename GetPropType< SubDomainTypeTag< 0 >, Properties::GridVariables >::FaceGridVariablesType type
Definition: staggeredtraits.hh:60
typename GetPropType< SubDomainTypeTag< 0 >, Properties::GridVariables >::CellCenterGridVariablesType type
Definition: staggeredtraits.hh:64
Definition: staggeredtraits.hh:56
GetPropType< SubDomainTypeTag< i >, Properties::GridVariables > type
Definition: staggeredtraits.hh:56
typename JacobianTypeImpl< GetPropType< SubDomainTypeTag< 0 >, Properties::Scalar >, getPropValue< SubDomainTypeTag< 0 >, Properties::NumEqFace >()>::type type
Definition: staggeredtraits.hh:98
typename JacobianTypeImpl< GetPropType< SubDomainTypeTag< 1 >, Properties::Scalar >, getPropValue< SubDomainTypeTag< 0 >, Properties::NumEqCellCenter >()>::type type
Definition: staggeredtraits.hh:103
Definition: staggeredtraits.hh:93
GetPropType< SubDomainTypeTag< i >, Properties::JacobianMatrix > type
Definition: staggeredtraits.hh:93
GetPropType< SubDomainTypeTag< 0 >, Properties::FacePrimaryVariables > type
Definition: staggeredtraits.hh:74
GetPropType< SubDomainTypeTag< 0 >, Properties::CellCenterPrimaryVariables > type
Definition: staggeredtraits.hh:78
Definition: staggeredtraits.hh:70
GetPropType< SubDomainTypeTag< i >, Properties::PrimaryVariables > type
Definition: staggeredtraits.hh:70
GetPropType< SubDomainTypeTag< 0 >, Properties::FaceSolutionVector > type
Definition: staggeredtraits.hh:113
GetPropType< SubDomainTypeTag< 0 >, Properties::CellCenterSolutionVector > type
Definition: staggeredtraits.hh:117
Definition: staggeredtraits.hh:109
GetPropType< SubDomainTypeTag< i >, Properties::SolutionVector > type
Definition: staggeredtraits.hh:109
Definition: staggeredtraits.hh:189
SubDomainTypeTag< id > TypeTag
Definition: staggeredtraits.hh:191
GetPropType< SubDomainTypeTag< id >, Properties::LocalResidual > LocalResidual
Definition: staggeredtraits.hh:193
typename Detail::Staggered::SubDomainFVGridGeometryImpl< SubDomainTypeTag, id >::type GridGeometry
Definition: staggeredtraits.hh:194
GetPropType< SubDomainTypeTag< id >, Properties::Problem > Problem
Definition: staggeredtraits.hh:192
typename Detail::Staggered::SubDomainSolutionVectorImpl< SubDomainTypeTag, id >::type SolutionVector
Definition: staggeredtraits.hh:196
Dune::index_constant< id > Index
Definition: staggeredtraits.hh:190
typename Detail::Staggered::SubDomainGridVariablesImpl< SubDomainTypeTag, id >::type GridVariables
Definition: staggeredtraits.hh:195
typename Detail::NativeDuneVectorType< SolutionVector >::type ResidualVector
Definition: staggeredtraits.hh:197
typename Detail::Staggered::SubDomainPrimaryVariablesImpl< SubDomainTypeTag, id >::type PrimaryVariables
Definition: staggeredtraits.hh:198
Definition: staggeredtraits.hh:154
typename makeFromIndexedType< Dune::MultiTypeBlockVector, SubDomainResidualVector, Indices >::type ResidualVector
the residual vector type
Definition: staggeredtraits.hh:215
typename Detail::MultiDomainTupleSharedPtr< T, Indices >::type TupleOfSharedPtr
helper alias to create tuple<std::shared_ptr<...>> from indexed type
Definition: staggeredtraits.hh:233
typename Detail::MultiDomainMatrixType< SubDomainJacobianMatrix, Indices, Scalar >::type JacobianMatrix
the jacobian type
Definition: staggeredtraits.hh:218
typename makeFromIndexedType< std::tuple, T, Indices >::type Tuple
helper alias to create tuple<...> from indexed type
Definition: staggeredtraits.hh:229
typename makeFromIndexedType< Dune::MultiTypeBlockVector, SubDomainSolutionVector, Indices >::type SolutionVector
the solution vector type
Definition: staggeredtraits.hh:212
typename makeFromIndexedType< std::common_type_t, SubDomainScalar, Indices >::type Scalar
the scalar type
Definition: staggeredtraits.hh:209
typename Detail::MultiDomainTupleSharedPtrConst< T, Indices >::type TupleOfSharedPtrConst
helper alias to create tuple<std::shared_ptr<const ...>> from indexed type
Definition: staggeredtraits.hh:237
static constexpr std::size_t numSubDomains
the number of subdomains
Definition: staggeredtraits.hh:156
Definition: utility.hh:28