3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
cctpfa.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 *****************************************************************************/
26#ifndef DUMUX_DISCRETIZATION_CC_TPFA_HH
27#define DUMUX_DISCRETIZATION_CC_TPFA_HH
28
32
34
37
44
46
47namespace Dumux {
48namespace Properties {
49
51// Create new type tags
52namespace TTag {
53struct CCTpfaModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
54} // end namespace TTag
55
57template<class TypeTag>
58struct GridGeometry<TypeTag, TTag::CCTpfaModel>
59{
60private:
61 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
63public:
65};
66
68template<class TypeTag>
69struct GridVolumeVariables<TypeTag, TTag::CCTpfaModel>
70{
71private:
72 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridVolumeVariablesCache>();
75public:
77};
78
80template<class TypeTag>
81struct GridFluxVariablesCache<TypeTag, TTag::CCTpfaModel>
82{
83private:
84 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
86
88 using FluxVariablesCache = GetPropTypeOr<TypeTag,
90 >;
91 using FluxVariablesCacheFiller = GetPropTypeOr<TypeTag,
93 >;
94public:
96};
97
99template<class TypeTag>
100struct ElementBoundaryTypes<TypeTag, TTag::CCTpfaModel> { using type = CCElementBoundaryTypes; };
101
103template<class TypeTag>
104struct BaseLocalResidual<TypeTag, TTag::CCTpfaModel> { using type = CCLocalResidual<TypeTag>; };
105} // namespace Properties
106
107namespace Detail {
108
109template<class Problem>
110struct ProblemTraits<Problem, DiscretizationMethods::CCTpfa>
111{
112private:
113 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
114 using Element = typename GG::GridView::template Codim<0>::Entity;
115 using SubControlVolumeFace = typename GG::SubControlVolumeFace;
116public:
117 using GridGeometry = GG;
118 // BoundaryTypes is whatever the problem returns from boundaryTypes(element, scvf)
119 using BoundaryTypes = std::decay_t<decltype(std::declval<Problem>().boundaryTypes(std::declval<Element>(), std::declval<SubControlVolumeFace>()))>;
120};
121
122} // end namespace Detail
123
124} // namespace Dumux
125
126#endif
Calculates the element-wise residual for cell-centered discretization 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
Calculates the element-wise residual for the cell-centered discretization schemes.
Definition: cclocalresidual.hh:43
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 engine behind the global flux cache (how to fill caches for the stencil)
Definition: common/properties.hh:115
The global vector of flux variable containers.
Definition: common/properties.hh:117
Definition: common/typetraits/problem.hh:35
Definition: cctpfa.hh:53
std::tuple< FiniteVolumeModel > InheritsFrom
Definition: cctpfa.hh:53
std::decay_t< decltype(std::declval< Problem >().boundaryTypes(std::declval< Element >(), std::declval< SubControlVolumeFace >()))> BoundaryTypes
Definition: cctpfa.hh:119
Boundary types gathered on an element.
Definition: cellcentered/elementboundarytypes.hh:38
The finite volume geometry (scvs and scvfs) for cell-centered TPFA models on a grid view This builds ...
Definition: discretization/cellcentered/tpfa/fvgridgeometry.hh:81
Flux variable caches on a gridview.
Definition: discretization/cellcentered/tpfa/gridfluxvariablescache.hh:60
Base class for the grid volume variables.
Definition: cellcentered/tpfa/gridvolumevariables.hh:56
The empty filler class corresponding to EmptyCache.
Definition: fluxvariablescaching.hh:32
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.
Flux variable caches on a gridview.
The grid volume variables class for cell centered tpfa models.
The finite volume geometry (scvs and scvfs) for cell-centered TPFA models on a grid view This builds ...
Sub control volumes for cell-centered discretization schemes.
The sub control volume face.