3.1-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
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
32
34
36
39
47
49
50namespace Dumux {
51namespace Properties {
52
54// Create new type tags
55namespace TTag {
56struct CCMpfaModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
57} // end namespace TTag
58
60template<class TypeTag>
61struct DualGridNodalIndexSet<TypeTag, TTag::CCMpfaModel>
62{
63private:
66
67public:
69};
70
72template<class TypeTag>
73struct PrimaryInteractionVolume<TypeTag, TTag::CCMpfaModel>
74{
75private:
78
79 // use the default traits
81public:
83};
84
86template<class TypeTag>
87struct SecondaryInteractionVolume<TypeTag, TTag::CCMpfaModel>
88{
89private:
92
93 // use the default traits
95public:
97};
98
99// Dumux 3.1 changes the property `FVGridGeometry` to `GridGeometry`.
100// For ensuring backward compatibility on the user side, it is necessary to
101// stick to the old name for the specializations, see the discussion in MR 1647.
102// Use diagnostic pragmas to prevent the emission of a warning message.
103// TODO after 3.1: Rename to GridGeometry, remove the pragmas and this comment.
104#pragma GCC diagnostic push
105#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
107template<class TypeTag>
108struct FVGridGeometry<TypeTag, TTag::CCMpfaModel>
109{
110private:
116public:
118};
119#pragma GCC diagnostic pop
120
122template<class TypeTag>
123struct GridVolumeVariables<TypeTag, TTag::CCMpfaModel>
124{
125private:
126 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridVolumeVariablesCache>();
129public:
131};
132
134template<class TypeTag>
135struct GridFluxVariablesCache<TypeTag, TTag::CCMpfaModel>
136{
137private:
138 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
141 using FluxVariablesCacheFiller = GetPropType<TypeTag, Properties::FluxVariablesCacheFiller>;
142
143 using PrimaryInteractionVolume = GetPropType<TypeTag, Properties::PrimaryInteractionVolume>;
144 using SecondaryInteractionVolume = GetPropType<TypeTag, Properties::SecondaryInteractionVolume>;
145
147 using PrimaryMatVecTraits = typename PrimaryInteractionVolume::Traits::MatVecTraits;
148 using SecondaryMatVecTraits = typename SecondaryInteractionVolume::Traits::MatVecTraits;
149
152
154 FluxVariablesCache, FluxVariablesCacheFiller,
155 PrimaryInteractionVolume, SecondaryInteractionVolume,
157public:
159};
160
162template<class TypeTag>
163struct ElementBoundaryTypes<TypeTag, TTag::CCMpfaModel> { using type = CCElementBoundaryTypes; };
164
166template<class TypeTag>
167struct BaseLocalResidual<TypeTag, TTag::CCMpfaModel> { using type = CCLocalResidual<TypeTag>; };
168} // namespace Properties
169} // namespace Dumux
170
171#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.
make the local view function available whenever we use the grid geometry
Definition: adapt.hh:29
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(....
Definition: propertysystem.hh:149
Calculates the element-wise residual for the cell-centered discretization schemes.
Definition: cclocalresidual.hh:42
The type of the base class of the local residual (specific to a discretization scheme)
Definition: common/properties.hh:80
Stores the boundary types on an element.
Definition: common/properties.hh:112
The type of the global finite volume geometry.
Definition: common/properties.hh:125
The type for a global container for the volume variables.
Definition: common/properties.hh:176
The global vector of flux variable containers.
Definition: common/properties.hh:186
The primary interaction volume type.
Definition: common/properties.hh:196
The secondary interaction volume type used e.g. on the boundaries.
Definition: common/properties.hh:198
The type used for the nodal index sets of the dual grid.
Definition: common/properties.hh:200
Definition: ccmpfa.hh:56
std::tuple< FiniteVolumeModel > InheritsFrom
Definition: ccmpfa.hh:56
Boundary types gathered on an element.
Definition: discretization/cellcentered/elementboundarytypes.hh:38
Default traits to be used in conjuntion with the dual grid nodal index set.
Definition: dualgridindexset.hh:45
Nodal index set for mpfa schemes, constructed around grid vertices.
Definition: dualgridindexset.hh:70
The finite volume geometry (scvs and scvfs) for cell-centered mpfa models on a grid view This builds ...
Definition: discretization/cellcentered/mpfa/fvgridgeometry.hh:51
Traits class to be used for the CCMpfaFVGridGeometry.
Definition: cellcentered/mpfa/fvgridgeometrytraits.hh:50
Data handle physics traits.
Definition: cellcentered/mpfa/gridfluxvariablescache.hh:39
Data handle physics traits.
Definition: cellcentered/mpfa/gridfluxvariablescache.hh:57
Flux variable caches on a gridview.
Definition: 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.
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.