3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
ccmpfa.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_DISCRETIZATION_CC_MPFA_HH
26#define DUMUX_DISCRETIZATION_CC_MPFA_HH
27
28#include <dune/common/reservedvector.hh>
29
33
35
37
40
48
50
52
53namespace Dumux {
54namespace Properties {
55
57// Create new type tags
58namespace TTag {
59struct CCMpfaModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
60} // end namespace TTag
61
63template<class TypeTag>
64struct DualGridNodalIndexSet<TypeTag, TTag::CCMpfaModel>
65{
66private:
69
70public:
72};
73
75template<class TypeTag>
76struct PrimaryInteractionVolume<TypeTag, TTag::CCMpfaModel>
77{
78private:
81
82 // use the default traits
84public:
86};
87
89template<class TypeTag>
90struct SecondaryInteractionVolume<TypeTag, TTag::CCMpfaModel>
91{
92private:
95
96 // use the default traits
98public:
100};
101
103template<class TypeTag>
115
117template<class TypeTag>
118struct GridVolumeVariables<TypeTag, TTag::CCMpfaModel>
119{
120private:
121 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridVolumeVariablesCache>();
124public:
126};
127
129template<class TypeTag>
130struct GridFluxVariablesCache<TypeTag, TTag::CCMpfaModel>
131{
132private:
133 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
135
137 using FluxVariablesCache = GetPropTypeOr<TypeTag,
139 >;
140 using FluxVariablesCacheFiller = GetPropTypeOr<TypeTag,
142 >;
143
144 using PrimaryInteractionVolume = GetPropType<TypeTag, Properties::PrimaryInteractionVolume>;
145 using SecondaryInteractionVolume = GetPropType<TypeTag, Properties::SecondaryInteractionVolume>;
146
148 using PrimaryMatVecTraits = typename PrimaryInteractionVolume::Traits::MatVecTraits;
149 using SecondaryMatVecTraits = typename SecondaryInteractionVolume::Traits::MatVecTraits;
150
153
154 using Traits = CCMpfaDefaultGridFluxVariablesCacheTraits<Problem,
155 FluxVariablesCache, FluxVariablesCacheFiller,
156 PrimaryInteractionVolume, SecondaryInteractionVolume,
157 PrimaryIvDataHandle, SecondaryIvDataHandle>;
158public:
160};
161
163template<class TypeTag>
164struct ElementBoundaryTypes<TypeTag, TTag::CCMpfaModel> { using type = CCElementBoundaryTypes; };
165
167template<class TypeTag>
168struct BaseLocalResidual<TypeTag, TTag::CCMpfaModel> { using type = CCLocalResidual<TypeTag>; };
169} // namespace Properties
170
171namespace Detail {
172
173template<class Problem>
175{
176private:
177 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
178 using Element = typename GG::GridView::template Codim<0>::Entity;
179 using SubControlVolumeFace = typename GG::SubControlVolumeFace;
180public:
181 using GridGeometry = GG;
182 // BoundaryTypes is whatever the problem returns from boundaryTypes(element, scvf)
183 using BoundaryTypes = std::decay_t<decltype(std::declval<Problem>().boundaryTypes(std::declval<Element>(), std::declval<SubControlVolumeFace>()))>;
184};
185
186} // end namespace Detail
187
188} // namespace Dumux
189
190#endif
Calculates the element-wise residual for cell-centered discretization schemes.
Defines the default element and vertex mapper types.
Data handle class for interaction volumes of mpfa methods. This class is passed to interaction volume...
The available mpfa schemes in Dumux.
Class for the index sets of the dual grid in mpfa schemes.
Declares properties required for finite-volume models models.
Classes related to flux variables caching.
Adaption of the non-isothermal two-phase two-component flow model to problems with CO2.
Definition adapt.hh:29
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:188
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
Type tag for numeric models.
Definition grid.hh:36
Definition cellcentered/mpfa/elementvolumevariables.hh:36
Definition method.hh:32
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
The primary interaction volume type.
Definition common/properties.hh:127
The secondary interaction volume type used e.g. on the boundaries.
Definition common/properties.hh:129
The type used for the nodal index sets of the dual grid.
Definition common/properties.hh:131
Definition common/typetraits/problem.hh:35
std::tuple< FiniteVolumeModel > InheritsFrom
Definition ccmpfa.hh:59
CCMpfaDualGridNodalIndexSet< Traits > type
Definition ccmpfa.hh:71
CCMpfaOInteractionVolume< Traits > type
Definition ccmpfa.hh:85
CCMpfaOInteractionVolume< Traits > type
Definition ccmpfa.hh:99
CCMpfaFVGridGeometry< GridView, Traits, getPropValue< TypeTag, Properties::EnableGridGeometryCache >()> type
Definition ccmpfa.hh:113
CCMpfaGridVolumeVariables< Problem, VolumeVariables, enableCache > type
Definition ccmpfa.hh:125
CCMpfaGridFluxVariablesCache< Traits, enableCache > type
Definition ccmpfa.hh:159
CCElementBoundaryTypes type
Definition ccmpfa.hh:164
CCLocalResidual< TypeTag > type
Definition ccmpfa.hh:168
std::decay_t< decltype(std::declval< Problem >().boundaryTypes(std::declval< Element >(), std::declval< SubControlVolumeFace >()))> BoundaryTypes
Definition ccmpfa.hh:183
Boundary types gathered on an element.
Definition cellcentered/elementboundarytypes.hh:38
Default traits to be used in conjunction with the dual grid nodal index set.
Definition dualgridindexset.hh:45
The finite volume geometry (scvs and scvfs) for cell-centered mpfa models on a grid view This builds ...
Definition discretization/cellcentered/mpfa/fvgridgeometry.hh:52
Traits class to be used for the CCMpfaFVGridGeometry.
Definition cellcentered/mpfa/fvgridgeometrytraits.hh:50
Data handle physics traits.
Definition discretization/cellcentered/mpfa/gridfluxvariablescache.hh:39
Data handle physics traits.
Definition discretization/cellcentered/mpfa/gridfluxvariablescache.hh:57
Flux variable caches on a gridview.
Definition discretization/cellcentered/mpfa/gridfluxvariablescache.hh:85
Base class for the grid volume variables.
Definition cellcentered/mpfa/gridvolumevariables.hh:60
Class for the interaction volume data handle.
Definition interactionvolumedatahandle.hh:229
Forward declaration of the o-method's interaction volume.
Definition discretization/cellcentered/mpfa/omethod/interactionvolume.hh:115
The default interaction volume traits class for the mpfa-o method. This uses dynamic types types for ...
Definition discretization/cellcentered/mpfa/omethod/interactionvolume.hh:60
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.
The local element solution class for cell-centered methods.
The finite volume geometry (scvs and scvfs) for cell-centered mpfa models on a grid view This builds ...
Flux variable caches on a gridview.
The grid volume variables class for cell centered mpfa models.
Traits class to be used in conjunction with the CCMpfaFVGridGeometry.
Class for the interaction volume of the mpfa-o scheme.