3.4
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
51namespace Dumux {
52namespace Properties {
53
55// Create new type tags
56namespace TTag {
57struct CCMpfaModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
58} // end namespace TTag
59
61template<class TypeTag>
62struct DualGridNodalIndexSet<TypeTag, TTag::CCMpfaModel>
63{
64private:
67
68public:
70};
71
73template<class TypeTag>
74struct PrimaryInteractionVolume<TypeTag, TTag::CCMpfaModel>
75{
76private:
79
80 // use the default traits
82public:
84};
85
87template<class TypeTag>
88struct SecondaryInteractionVolume<TypeTag, TTag::CCMpfaModel>
89{
90private:
93
94 // use the default traits
96public:
98};
99
101template<class TypeTag>
113
115template<class TypeTag>
116struct GridVolumeVariables<TypeTag, TTag::CCMpfaModel>
117{
118private:
119 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridVolumeVariablesCache>();
122public:
124};
125
127template<class TypeTag>
128struct GridFluxVariablesCache<TypeTag, TTag::CCMpfaModel>
129{
130private:
131 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
134 using FluxVariablesCacheFiller = GetPropType<TypeTag, Properties::FluxVariablesCacheFiller>;
135
136 using PrimaryInteractionVolume = GetPropType<TypeTag, Properties::PrimaryInteractionVolume>;
137 using SecondaryInteractionVolume = GetPropType<TypeTag, Properties::SecondaryInteractionVolume>;
138
140 using PrimaryMatVecTraits = typename PrimaryInteractionVolume::Traits::MatVecTraits;
141 using SecondaryMatVecTraits = typename SecondaryInteractionVolume::Traits::MatVecTraits;
142
145
146 using Traits = CCMpfaDefaultGridFluxVariablesCacheTraits<Problem,
147 FluxVariablesCache, FluxVariablesCacheFiller,
148 PrimaryInteractionVolume, SecondaryInteractionVolume,
149 PrimaryIvDataHandle, SecondaryIvDataHandle>;
150public:
152};
153
155template<class TypeTag>
156struct ElementBoundaryTypes<TypeTag, TTag::CCMpfaModel> { using type = CCElementBoundaryTypes; };
157
159template<class TypeTag>
160struct BaseLocalResidual<TypeTag, TTag::CCMpfaModel> { using type = CCLocalResidual<TypeTag>; };
161} // namespace Properties
162
163namespace Detail {
164
165template<class Problem>
167{
168private:
169 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
170 using Element = typename GG::GridView::template Codim<0>::Entity;
171 using SubControlVolumeFace = typename GG::SubControlVolumeFace;
172public:
173 using GridGeometry = GG;
174 // BoundaryTypes is whatever the problem returns from boundaryTypes(element, scvf)
175 using BoundaryTypes = std::decay_t<decltype(std::declval<Problem>().boundaryTypes(std::declval<Element>(), std::declval<SubControlVolumeFace>()))>;
176};
177
178} // end namespace Detail
179
180} // namespace Dumux
181
182#endif
Calculates the element-wise residual for cell-centered discretization schemes.
Defines the default element and vertex mapper types.
Class for the index sets of the dual grid in mpfa schemes.
Data handle class for interaction volumes of mpfa methods. This class is passed to interaction volume...
The available mpfa schemes in Dumux.
Declares properties required for finite-volume models models.
DiscretizationMethod
The available discretization methods in Dumux.
Definition method.hh:37
@ ccmpfa
Definition method.hh:38
Definition adapt.hh:29
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:154
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property
Definition propertysystem.hh:150
Definition gridcapabilities.hh:60
Definition common/properties.hh:37
Type tag for numeric models.
Definition grid.hh:36
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:65
Stores the boundary types on an element.
Definition common/properties.hh:95
Definition common/properties.hh:98
The type for a global container for the volume variables.
Definition common/properties.hh:105
The global vector of flux variable containers.
Definition common/properties.hh:115
The primary interaction volume type.
Definition common/properties.hh:125
The secondary interaction volume type used e.g. on the boundaries.
Definition common/properties.hh:127
The type used for the nodal index sets of the dual grid.
Definition common/properties.hh:129
Definition common/typetraits/problem.hh:35
std::tuple< FiniteVolumeModel > InheritsFrom
Definition ccmpfa.hh:57
CCMpfaDualGridNodalIndexSet< Traits > type
Definition ccmpfa.hh:69
CCMpfaOInteractionVolume< Traits > type
Definition ccmpfa.hh:83
CCMpfaOInteractionVolume< Traits > type
Definition ccmpfa.hh:97
CCMpfaFVGridGeometry< GridView, Traits, getPropValue< TypeTag, Properties::EnableGridGeometryCache >()> type
Definition ccmpfa.hh:111
CCMpfaGridVolumeVariables< Problem, VolumeVariables, enableCache > type
Definition ccmpfa.hh:123
CCMpfaGridFluxVariablesCache< Traits, enableCache > type
Definition ccmpfa.hh:151
CCElementBoundaryTypes type
Definition ccmpfa.hh:156
CCLocalResidual< TypeTag > type
Definition ccmpfa.hh:160
std::decay_t< decltype(std::declval< Problem >().boundaryTypes(std::declval< Element >(), std::declval< SubControlVolumeFace >()))> BoundaryTypes
Definition ccmpfa.hh:175
Boundary types gathered on an element.
Definition cellcentered/elementboundarytypes.hh:38
Default traits to be used in conjuntion 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:50
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:56
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
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.