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
Calculates the element-wise residual for control-volume finite element schemes.
Declares properties required for finite-volume models models.
The available discretization methods in Dumux.
Classes related to flux variables caching.
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
Declares all properties used in Dumux.
Type traits for problem classes.
Boundary types gathered on an element.
Flux variables cache class for control-volume finite element schemes.
Global flux variable cache.
The grid volume variables class for box models.