15#ifndef DUMUX_DISCRETIZATION_STAGGERD_HH
16#define DUMUX_DISCRETIZATION_STAGGERD_HH
36#include <dune/istl/multitypeblockvector.hh>
37#include <dune/istl/multitypeblockmatrix.hh>
42class CCElementBoundaryTypes;
53template<
class TypeTag>
54struct GridFaceVariables<TypeTag, TTag::StaggeredModel>
59 static constexpr auto enableCache = getPropValue<TypeTag, Properties::EnableGridFaceVariablesCache>();
65template<
class TypeTag>
66struct EnableGridFaceVariablesCache<TypeTag, TTag::StaggeredModel> {
static constexpr bool value =
true; };
69template<
class TypeTag>
70struct GridFluxVariablesCache<TypeTag, TTag::StaggeredModel>
81 static constexpr auto enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
82 static constexpr auto upwindSchemeOrder = getPropValue<TypeTag, Properties::UpwindSchemeOrder>();
88template<
class TypeTag>
98template<
class TypeTag>
99struct GridVariables<TypeTag, TTag::StaggeredModel>
111template<
class TypeTag>
115template<
class TypeTag>
119template<
class TypeTag>
120struct CellCenterPrimaryVariables<TypeTag, TTag::StaggeredModel>
122 using type = Dune::FieldVector<GetPropType<TypeTag, Properties::Scalar>,
123 getPropValue<TypeTag, Properties::NumEqCellCenter>()>;
127template<
class TypeTag>
128struct FacePrimaryVariables<TypeTag, TTag::StaggeredModel>
130 using type = Dune::FieldVector<GetPropType<TypeTag, Properties::Scalar>,
131 getPropValue<TypeTag, Properties::NumEqFace>()>;
138template<
class TypeTag>
139struct CellCenterSolutionVector<TypeTag, TTag::StaggeredModel>
140{
using type = Dune::BlockVector<GetPropType<TypeTag, Properties::CellCenterPrimaryVariables>>; };
143template<
class TypeTag>
144struct FaceSolutionVector<TypeTag, TTag::StaggeredModel>
145{
using type = Dune::BlockVector<GetPropType<TypeTag, Properties::FacePrimaryVariables>>; };
148template<
class TypeTag>
149struct SolutionVector<TypeTag, TTag::StaggeredModel>
159template<
class TypeTag>
160struct JacobianMatrix<TypeTag, TTag::StaggeredModel>
165 static constexpr auto numEqCellCenter = getPropValue<TypeTag, Properties::NumEqCellCenter>();
166 static constexpr auto numEqFace = getPropValue<TypeTag, Properties::NumEqFace>();
195template<
class Problem>
199 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
200 using Element =
typename GG::GridView::template Codim<0>::Entity;
201 using SubControlVolumeFace =
typename GG::SubControlVolumeFace;
205 using BoundaryTypes = std::decay_t<decltype(std::declval<Problem>().boundaryTypes(std::declval<Element>(), std::declval<SubControlVolumeFace>()))>;
Boundary types gathered on an element.
Boundary types gathered on an element.
Definition: cellcentered/elementboundarytypes.hh:26
The global face variables class for staggered models.
Definition: facesolution.hh:28
Face variables cache class for staggered models.
Definition: gridfacevariables.hh:47
Flux variables cache class for staggered models.
Definition: discretization/staggered/gridfluxvariablescache.hh:51
Class storing data associated to scvs and scvfs.
Definition: discretization/staggered/gridvariables.hh:183
Calculates the element-wise residual for the staggered FV scheme.
Definition: staggeredlocalresidual.hh:29
Definition: common/pdesolver.hh:26
Definition: variablesbackend.hh:34
Defines all properties used in Dumux.
Type traits for problem classes.
Sub control volumes for cell-centered discretization schemes.
Classes related to flux variables caching.
Declares properties required for finite-volume models models.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:296
typename GetPropOr< TypeTag, Property, T >::type GetPropTypeOr
get the type alias defined in the property or the type T if the property is undefined
Definition: propertysystem.hh:303
The available discretization methods in Dumux.
Calculates the element-wise residual for the staggered FV scheme.
std::decay_t< decltype(std::declval< Problem >().boundaryTypes(std::declval< Element >(), std::declval< SubControlVolumeFace >()))> BoundaryTypes
Definition: staggered.hh:205
GG GridGeometry
Definition: staggered.hh:203
Definition: common/typetraits/problem.hh:23
The empty filler class corresponding to EmptyCache.
Definition: fluxvariablescaching.hh:20
An empty flux variables cache.
Definition: fluxvariablescaching.hh:35
Dune::FieldVector< GetPropType< TypeTag, Properties::Scalar >, getPropValue< TypeTag, Properties::NumEqCellCenter >()> type
Definition: staggered.hh:123
Dune::BlockVector< GetPropType< TypeTag, Properties::CellCenterPrimaryVariables > > type
Definition: staggered.hh:140
Dune::FieldVector< GetPropType< TypeTag, Properties::Scalar >, getPropValue< TypeTag, Properties::NumEqFace >()> type
Definition: staggered.hh:131
Dune::BlockVector< GetPropType< TypeTag, Properties::FacePrimaryVariables > > type
Definition: staggered.hh:145
typename Dune::BCRSMatrix< MatrixLittleBlockCCToFace > MatrixBlockCCToFace
Definition: staggered.hh:178
typename Dune::MultiTypeBlockVector< MatrixBlockFaceToFace, MatrixBlockFaceToCC > RowFace
Definition: staggered.hh:184
typename Dune::BCRSMatrix< MatrixLittleBlockFaceToFace > MatrixBlockFaceToFace
Definition: staggered.hh:180
typename Dune::FieldMatrix< Scalar, numEqCellCenter, numEqFace > MatrixLittleBlockCCToFace
Definition: staggered.hh:171
typename Dune::MultiTypeBlockMatrix< RowFace, RowCellCenter > type
Definition: staggered.hh:188
typename Dune::BCRSMatrix< MatrixLittleBlockCCToCC > MatrixBlockCCToCC
Definition: staggered.hh:177
typename Dune::FieldMatrix< Scalar, numEqFace, numEqCellCenter > MatrixLittleBlockFaceToCC
Definition: staggered.hh:174
typename Dune::FieldMatrix< Scalar, numEqFace, numEqFace > MatrixLittleBlockFaceToFace
Definition: staggered.hh:173
typename Dune::MultiTypeBlockVector< MatrixBlockCCToFace, MatrixBlockCCToCC > RowCellCenter
Definition: staggered.hh:185
typename Dune::BCRSMatrix< MatrixLittleBlockFaceToCC > MatrixBlockFaceToCC
Definition: staggered.hh:181
typename Dune::FieldMatrix< Scalar, numEqCellCenter, numEqCellCenter > MatrixLittleBlockCCToCC
Definition: staggered.hh:170
Definition: staggered.hh:49
std::tuple< FiniteVolumeModel > InheritsFrom
Definition: staggered.hh:49