3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
fcdiamond.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_FACECENTERED_DIAMOND_HH
27#define DUMUX_DISCRETIZATION_FACECENTERED_DIAMOND_HH
28
31
36
42
43namespace Dumux::Properties {
44
46// Create new type tags
47namespace TTag {
48struct FaceCenteredDiamondModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
49} // end namespace TTag
50
52template<class TypeTag>
53struct GridGeometry<TypeTag, TTag::FaceCenteredDiamondModel>
54{
55private:
56 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
58public:
60};
61
63template<class TypeTag>
64struct GridVolumeVariables<TypeTag, TTag::FaceCenteredDiamondModel>
65{
66private:
67 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridVolumeVariablesCache>();
71public:
73};
74
76template<class TypeTag>
77struct GridFluxVariablesCache<TypeTag, TTag::FaceCenteredDiamondModel>
78{
79private:
80 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
82
84 using FluxVariablesCache = GetPropTypeOr<TypeTag,
86 >;
87public:
89};
90
92template<class TypeTag>
93struct GridVariables<TypeTag, TTag::FaceCenteredDiamondModel>
94{
95private:
99public:
101};
102
104template<class TypeTag>
105struct BaseLocalResidual<TypeTag, TTag::FaceCenteredDiamondModel>
107
109template<class TypeTag>
110struct FluxVariablesCache<TypeTag, TTag::FaceCenteredDiamondModel>
111{
112private:
115public:
117};
118
120template<class TypeTag>
121struct ElementBoundaryTypes<TypeTag, TTag::FaceCenteredDiamondModel>
122{
123private:
125 using BoundaryTypes = typename ProblemTraits<Problem>::BoundaryTypes;
126public:
128};
129
130} // namespace Dumux::Properties
131
132namespace Dumux::Detail {
133
134template<class Problem>
135struct ProblemTraits<Problem, DiscretizationMethods::FCDiamond>
136{
137private:
138 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
139 using Element = typename GG::GridView::template Codim<0>::Entity;
140 using SubControlVolumeFace = typename GG::SubControlVolumeFace;
141public:
142 using GridGeometry = GG;
143 // BoundaryTypes is whatever the problem returns from boundaryTypes(element, scv)
144 using BoundaryTypes = std::decay_t<decltype(std::declval<Problem>().boundaryTypes(std::declval<Element>(), std::declval<SubControlVolumeFace>()))>;
145};
146
147} // end namespace Dumux::Detail
148
149#endif
Classes related to flux variables caching.
Calculates the element-wise residual for control-volume finite element schemes.
The available discretization methods in Dumux.
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: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
Distance implementation details.
Definition: cvfelocalresidual.hh:37
Definition: common/properties.hh:37
CVFE< CVFEMethods::CR_RT > FCDiamond
Definition: method.hh:90
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
The grid variables object managing variable data on the grid (volvars/fluxvars cache)
Definition: common/properties.hh:121
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: cvfe/elementboundarytypes.hh:40
Flux variables cache class for control-volume finite element schemes. For control-volume finite eleme...
Definition: discretization/cvfe/fluxvariablescache.hh:39
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
Grid geometry for the diamond discretization.
Definition: discretization/facecentered/diamond/fvgridgeometry.hh:77
std::tuple< FiniteVolumeModel > InheritsFrom
Definition: fcdiamond.hh:48
std::decay_t< decltype(std::declval< Problem >().boundaryTypes(std::declval< Element >(), std::declval< SubControlVolumeFace >()))> BoundaryTypes
Definition: fcdiamond.hh:144
The grid variable class for finite volume schemes storing variables on scv and scvf (volume and flux ...
Definition: discretization/fvgridvariables.hh:42
An empty flux variables cache.
Definition: fluxvariablescaching.hh:47
Type traits for problem classes.
Boundary types gathered on an element.
The grid volume variables class for box models.
Declares all properties used in Dumux.
Global flux variable cache.
Flux variables cache class for control-volume finite element schemes.