3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
box.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 *****************************************************************************/
25#ifndef DUMUX_DISCRETIZTAION_BOX_HH
26#define DUMUX_DISCRETIZTAION_BOX_HH
27
28#include <type_traits>
29
30#include <dune/common/fvector.hh>
31#include <dune/geometry/multilineargeometry.hh>
32
36
38
41
47
49
50namespace Dumux {
51namespace Properties {
52
54// Create new type tags
55namespace TTag {
56struct BoxModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
57} // end namespace TTag
58
60template<class TypeTag>
61struct GridGeometry<TypeTag, TTag::BoxModel>
62{
63private:
64 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
67public:
69};
70
72template<class TypeTag>
73struct GridVolumeVariables<TypeTag, TTag::BoxModel>
74{
75private:
76 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridVolumeVariablesCache>();
80public:
82};
83
85template<class TypeTag>
86struct GridFluxVariablesCache<TypeTag, TTag::BoxModel>
87{
88private:
89 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
91
93 using FluxVariablesCache = GetPropTypeOr<TypeTag,
95 >;
96public:
98};
99
101template<class TypeTag>
102struct ElementBoundaryTypes<TypeTag, TTag::BoxModel>
103{
104private:
106 using BoundaryTypes = typename ProblemTraits<Problem>::BoundaryTypes;
107public:
109};
110
112template<class TypeTag>
113struct BaseLocalResidual<TypeTag, TTag::BoxModel>
115
116} // namespace Properties
117
118namespace Detail {
119
120template<class Problem>
121struct ProblemTraits<Problem, DiscretizationMethods::Box>
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 SubControlVolume = typename GG::SubControlVolume;
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<SubControlVolume>()))>;
131};
132
133} // end namespace Detail
134
135} // namespace Dumux
136
137#endif
Calculates the element-wise residual for control-volume finite element schemes.
Classes related to flux variables caching.
Boundary flag to store e.g. in sub control volume faces.
The available discretization methods in Dumux.
Declares properties required for finite-volume models models.
Adaption of the non-isothermal two-phase two-component flow model to problems with CO2.
Definition: adapt.hh:29
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:180
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:184
CVFE< CVFEMethods::PQ1 > Box
Definition: method.hh:83
The element-wise residual for control-volume finite element schemes.
Definition: cvfelocalresidual.hh:72
The type of the base class of the local residual (specific to a discretization scheme)
Definition: common/properties.hh:63
Stores the boundary types on an element.
Definition: common/properties.hh:97
Definition: common/properties.hh:100
The type for a global container for the volume variables.
Definition: common/properties.hh:107
Stores data associated with flux vars.
Definition: common/properties.hh:113
The global vector of flux variable containers.
Definition: common/properties.hh:117
Definition: common/typetraits/problem.hh:35
typename Detail::template ProblemTraits< Problem, typename GridGeometry::DiscretizationMethod >::BoundaryTypes BoundaryTypes
Definition: common/typetraits/problem.hh:46
std::tuple< FiniteVolumeModel > InheritsFrom
Definition: box.hh:56
std::decay_t< decltype(std::declval< Problem >().boundaryTypes(std::declval< Element >(), std::declval< SubControlVolume >()))> BoundaryTypes
Definition: box.hh:130
Base class for the finite volume geometry vector for box schemes This builds up the sub control volum...
Definition: discretization/box/fvgridgeometry.hh:75
This class stores an array of BoundaryTypes objects.
Definition: cvfe/elementboundarytypes.hh:40
Flux variable caches on a gridview.
Definition: discretization/cvfe/gridfluxvariablescache.hh:58
Definition: cvfe/gridvolumevariables.hh:41
Base class for the grid volume variables.
Definition: cvfe/gridvolumevariables.hh:54
An empty flux variables cache.
Definition: fluxvariablescaching.hh:47
Declares all properties used in Dumux.
Type traits for problem classes.
Boundary types gathered on an element.
Global flux variable cache.
The grid volume variables class for box models.
The local element solution class for the box method.
Base class for the finite volume geometry vector for box models This builds up the sub control volume...