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>
 
  100template<
template<std::
size_t> 
class SubDomainTypeTag>
 
  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.
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:310
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.
Definition staggeredtraits.hh:37
Distance implementation details.
Definition cvfelocalresidual.hh:25
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:57
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:97
typename JacobianTypeImpl< GetPropType< SubDomainTypeTag< 1 >, Properties::Scalar >, getPropValue< SubDomainTypeTag< 0 >, Properties::NumEqCellCenter >()>::type type
Definition staggeredtraits.hh:102
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