3.5-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
fcstaggered.hh
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3/*****************************************************************************
4 * See the file COPYING for full copying permissions. *
5 * *
6 * This program is free software: you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation, either version 3 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
18 *****************************************************************************/
27#ifndef DUMUX_DISCRETIZATION_FACECENTERED_STAGGERED_HH
28#define DUMUX_DISCRETIZATION_FACECENTERED_STAGGERED_HH
29
32
37
42
43namespace Dumux::Properties {
44
46// Create new type tags
47namespace TTag {
48struct FaceCenteredStaggeredModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
49} // end namespace TTag
50
52template<class TypeTag>
53struct GridGeometry<TypeTag, TTag::FaceCenteredStaggeredModel>
54{
55private:
56 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
58public:
60};
61
63template<class TypeTag>
64struct GridVolumeVariables<TypeTag, TTag::FaceCenteredStaggeredModel>
65{
66private:
67 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridVolumeVariablesCache>();
71public:
73};
74
75
77template<class TypeTag>
78struct GridFluxVariablesCache<TypeTag, TTag::FaceCenteredStaggeredModel>
79{
80private:
81 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
85public:
87};
88
90template<class TypeTag>
91struct GridVariables<TypeTag, TTag::FaceCenteredStaggeredModel>
92{
93private:
97public:
99};
100
102template<class TypeTag>
103struct BaseLocalResidual<TypeTag, TTag::FaceCenteredStaggeredModel> { using type = FaceCenteredLocalResidual<TypeTag>; };
104
106template<class TypeTag>
107struct ElementBoundaryTypes<TypeTag, TTag::FaceCenteredStaggeredModel>
108{
109private:
111 using BoundaryTypes = typename ProblemTraits<Problem>::BoundaryTypes;
112public:
114};
115
116} // namespace Dumux::Properties
117
118namespace Dumux::Detail {
119
120template<class Problem>
121struct ProblemTraits<Problem, DiscretizationMethods::FCStaggered>
122{
123private:
124 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
125 using Element = typename GG::GridView::template Codim<0>::Entity;
126 using SubControlVolumeFace = typename GG::SubControlVolumeFace;
127public:
128 using GridGeometry = GG;
129 // BoundaryTypes is whatever the problem returns from boundaryTypes(element, scv)
130 using BoundaryTypes = std::decay_t<decltype(std::declval<Problem>().boundaryTypes(std::declval<Element>(), std::declval<SubControlVolumeFace>()))>;
131};
132
133} // end namespace Detail
134
135#endif
Classes related to flux variables caching.
Calculates the element-wise residual for the box scheme.
The available discretization methods in Dumux.
Declares properties required for finite-volume models models.
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:150
Distance implementation details.
Definition: fclocalassembler.hh:42
Definition: common/properties.hh:37
The element-wise residual for the box scheme.
Definition: fclocalresidual.hh:46
The type of the base class of the local residual (specific to a discretization scheme)
Definition: common/properties.hh:65
Stores the boundary types on an element.
Definition: common/properties.hh:99
Definition: common/properties.hh:102
The type for a global container for the volume variables.
Definition: common/properties.hh:109
The global vector of flux variable containers.
Definition: common/properties.hh:119
The grid variables object managing variable data on the grid (volvars/fluxvars cache)
Definition: common/properties.hh:123
Definition: common/typetraits/problem.hh:35
typename Detail::template ProblemTraits< Problem, typename GridGeometry::DiscretizationMethod >::BoundaryTypes BoundaryTypes
Definition: common/typetraits/problem.hh:46
This class stores an array of BoundaryTypes objects.
Definition: facecentered/staggered/elementboundarytypes.hh:37
Base class for the finite volume geometry vector for face-centered staggered models This builds up th...
Definition: discretization/facecentered/staggered/fvgridgeometry.hh:97
Flux variable caches on a gridview.
Definition: discretization/facecentered/staggered/gridfluxvariablescache.hh:58
Definition: facecentered/staggered/gridvolumevariables.hh:39
Base class for the grid volume variables.
Definition: facecentered/staggered/gridvolumevariables.hh:55
std::tuple< FiniteVolumeModel > InheritsFrom
Definition: fcstaggered.hh:48
std::decay_t< decltype(std::declval< Problem >().boundaryTypes(std::declval< Element >(), std::declval< SubControlVolumeFace >()))> BoundaryTypes
Definition: fcstaggered.hh:130
The grid variable class for finite volume schemes storing variables on scv and scvf (volume and flux ...
Definition: discretization/fvgridvariables.hh:42
Type traits for problem classes.
Boundary types gathered on an element.
The grid volume variables class for face-centered staggered models.
Declares all properties used in Dumux.
Global flux variable cache.