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:31
Defines all properties used in Dumux.
Type traits for problem classes.
Sub control volumes for cell-centered discretization schemes.
Base class for the finite volume geometry vector for staggered models This builds up the sub control ...
Flux variables cache class for staggered models.
Class storing data associated to scvs and scvfs.
Class for a sub control volume face in the staggered method, i.e a part of the boundary of a sub cont...
The global face variables class for staggered models.
Classes related to flux variables caching.
Declares properties required for finite-volume models models.
Face variables cache class for staggered 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:122
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:130
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