26#ifndef DUMUX_STAGGERED_MULTIDOMAIN_TRAITS_HH
27#define DUMUX_STAGGERED_MULTIDOMAIN_TRAITS_HH
33#include <dune/common/fmatrix.hh>
34#include <dune/common/indices.hh>
36#include <dune/istl/bcrsmatrix.hh>
37#include <dune/istl/multitypeblockvector.hh>
38#include <dune/istl/multitypeblockmatrix.hh>
50template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
54template<
template<std::
size_t>
class SubDomainTypeTag>
58template<
template<std::
size_t>
class SubDomainTypeTag>
64template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
68template<
template<std::
size_t>
class SubDomainTypeTag>
72template<
template<std::
size_t>
class SubDomainTypeTag>
78template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
82template<
template<std::
size_t>
class SubDomainTypeTag>
86template<
template<std::
size_t>
class SubDomainTypeTag>
91template<
class Scalar,
int numEq>
95 using MatrixBlock =
typename Dune::FieldMatrix<Scalar, numEq, numEq>;
97 using type =
typename Dune::BCRSMatrix<MatrixBlock>;
101template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
105template<
template<std::
size_t>
class SubDomainTypeTag>
110template<
template<std::
size_t>
class SubDomainTypeTag>
117template<
template<std::
size_t>
class SubDomainTypeTag, std::size_t i>
121template<
template<std::
size_t>
class SubDomainTypeTag>
125template<
template<std::
size_t>
class SubDomainTypeTag>
159template<
typename... SubDomainTypeTags>
168 template<std::
size_t id>
169 using SubDomainTypeTag =
typename std::tuple_element_t<id, std::tuple<SubDomainTypeTags...>>;
172 using Indices = std::make_index_sequence<numSubDomains>;
175 template<std::
size_t id>
178 template<std::
size_t id>
181 template<std::
size_t id>
191 template<std::
size_t id>
194 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>
Type traits to be used with matrix types.
Traits for multidomain problems.
make the local view function available whenever we use the grid geometry
Definition: adapt.hh:29
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(....
Definition: propertysystem.hh:149
Property to specify the type of scalar values.
Definition: common/properties.hh:53
A vector of primary variables.
Definition: common/properties.hh:59
Property to specify the type of a problem which has to be solved.
Definition: common/properties.hh:69
Type of the global jacobian matrix.
Definition: common/properties.hh:82
Vector containing all primary variable vector of the grid.
Definition: common/properties.hh:84
Definition: common/properties.hh:150
The grid variables object managing variable data on the grid (volvars/fluxvars cache)
Definition: common/properties.hh:190
The number of equations for cell-centered dofs.
Definition: common/properties.hh:277
The number of equations for face dofs.
Definition: common/properties.hh:279
The solution vector type for cell-centered dofs.
Definition: common/properties.hh:281
The solution vector type for face dofs.
Definition: common/properties.hh:283
The primary variables container type for cell-centered dofs.
Definition: common/properties.hh:287
The primary variables container type for face dofs.
Definition: common/properties.hh:289
Definition: utility.hh:40
Definition: staggeredtraits.hh:52
GetPropType< SubDomainTypeTag< i >, Properties::GridGeometry > type
Definition: staggeredtraits.hh:52
typename GetPropType< SubDomainTypeTag< 0 >, Properties::GridGeometry >::CellCenterFVGridGeometryType type
Definition: staggeredtraits.hh:56
typename GetPropType< SubDomainTypeTag< 0 >, Properties::GridGeometry >::FaceFVGridGeometryType type
Definition: staggeredtraits.hh:60
Definition: staggeredtraits.hh:66
GetPropType< SubDomainTypeTag< i >, Properties::GridVariables > type
Definition: staggeredtraits.hh:66
typename GetPropType< SubDomainTypeTag< 0 >, Properties::GridVariables >::CellCenterGridVariablesType type
Definition: staggeredtraits.hh:70
typename GetPropType< SubDomainTypeTag< 0 >, Properties::GridVariables >::FaceGridVariablesType type
Definition: staggeredtraits.hh:74
Definition: staggeredtraits.hh:80
GetPropType< SubDomainTypeTag< i >, Properties::PrimaryVariables > type
Definition: staggeredtraits.hh:80
GetPropType< SubDomainTypeTag< 0 >, Properties::CellCenterPrimaryVariables > type
Definition: staggeredtraits.hh:84
GetPropType< SubDomainTypeTag< 0 >, Properties::FacePrimaryVariables > type
Definition: staggeredtraits.hh:88
Definition: staggeredtraits.hh:93
typename Dune::BCRSMatrix< MatrixBlock > type
Definition: staggeredtraits.hh:97
Definition: staggeredtraits.hh:103
GetPropType< SubDomainTypeTag< i >, Properties::JacobianMatrix > type
Definition: staggeredtraits.hh:103
typename JacobianTypeImpl< GetPropType< SubDomainTypeTag< 0 >, Properties::Scalar >, getPropValue< SubDomainTypeTag< 0 >, Properties::NumEqCellCenter >()>::type type
Definition: staggeredtraits.hh:108
typename JacobianTypeImpl< GetPropType< SubDomainTypeTag< 1 >, Properties::Scalar >, getPropValue< SubDomainTypeTag< 0 >, Properties::NumEqFace >()>::type type
Definition: staggeredtraits.hh:113
Definition: staggeredtraits.hh:119
GetPropType< SubDomainTypeTag< i >, Properties::SolutionVector > type
Definition: staggeredtraits.hh:119
GetPropType< SubDomainTypeTag< 0 >, Properties::CellCenterSolutionVector > type
Definition: staggeredtraits.hh:123
GetPropType< SubDomainTypeTag< 0 >, Properties::FaceSolutionVector > type
Definition: staggeredtraits.hh:127
Definition: staggeredtraits.hh:161
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:215
typename makeFromIndexedType< std::common_type_t, SubDomainScalar, Indices >::type Scalar
the scalar type
Definition: staggeredtraits.hh:212
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:163
Definition: staggeredtraits.hh:193
SubDomainTypeTag< id > TypeTag
Definition: staggeredtraits.hh:195
typename Detail::Staggered::SubDomainFVGridGeometryImpl< SubDomainTypeTag, id >::type GridGeometry
Definition: staggeredtraits.hh:197
GetPropType< SubDomainTypeTag< id >, Properties::Problem > Problem
Definition: staggeredtraits.hh:196
typename Detail::Staggered::SubDomainSolutionVectorImpl< SubDomainTypeTag, id >::type SolutionVector
Definition: staggeredtraits.hh:200
Dune::index_constant< id > Index
Definition: staggeredtraits.hh:194
typename Detail::Staggered::SubDomainGridVariablesImpl< SubDomainTypeTag, id >::type GridVariables
Definition: staggeredtraits.hh:199
GridGeometry FVGridGeometry
Definition: staggeredtraits.hh:198
typename Detail::Staggered::SubDomainPrimaryVariablesImpl< SubDomainTypeTag, id >::type PrimaryVariables
Definition: staggeredtraits.hh:201
typename makeFromIndexedType< std::tuple, PtrType, Indices >::type type
Definition: traits.hh:94
typename makeFromIndexedType< std::tuple, PtrType, Indices >::type type
Definition: traits.hh:104
typename makeFromIndexedType< M, SubDomainDiagBlocks, Indices >::type type
Definition: traits.hh:114
Declares all properties used in Dumux.