3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
porenetwork/2p/model.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 *****************************************************************************/
54#ifndef DUMUX_PNM2P_MODEL_HH
55#define DUMUX_PNM2P_MODEL_HH
56
58
61
63
67
73
74#include "fluxvariablescache.hh"
76#include "iofields.hh"
77#include "volumevariables.hh"
78#include "spatialparams.hh"
79
80namespace Dumux::Properties {
81// \{
83// Type tags
85
87// Create new type tags
88namespace TTag {
89struct PNMTwoP { using InheritsFrom = std::tuple<PoreNetworkModel, TwoP>; };
90
92struct PNMTwoPNI { using InheritsFrom = std::tuple<PNMTwoP>; };
93} // end namespace TTag
94
96// properties for the isothermal two-phase model
98
100template<class TypeTag>
101struct VolumeVariables<TypeTag, TTag::PNMTwoP>
102{
103private:
111
113 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
114 // class used for scv-wise reconstruction of non-wetting phase saturations
116
118public:
120};
121
123template<class TypeTag>
124struct FluxVariablesCache<TypeTag, TTag::PNMTwoP>
126
128template<class TypeTag>
129struct GridFluxVariablesCache<TypeTag, TTag::PNMTwoP>
130{
131private:
132 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
135 using FluxVariablesCache = GetPropTypeOr<TypeTag,
137 >;
139public:
141};
142
145template<class TypeTag>
146struct SpatialParams<TypeTag, TTag::PNMTwoP>
147{
148private:
152public:
154};
155
157template<class TypeTag>
158struct AdvectionType<TypeTag, TTag::PNMTwoP>
159{
160private:
165
166public:
168};
169
170template<class TypeTag>
171struct EnergyLocalResidual<TypeTag, TTag::PNMTwoP> { using type = Dumux::EnergyLocalResidual<TypeTag> ; };
172
173template<class TypeTag>
174struct IOFields<TypeTag, TTag::PNMTwoP> { using type = PoreNetwork::TwoPIOFields; };
175
177// Property values for isothermal model required for the general non-isothermal model
179
181template<class TypeTag>
182struct ModelTraits<TypeTag, TTag::PNMTwoPNI>
183{
184private:
187public:
189};
190
192template<class TypeTag>
193struct VolumeVariables<TypeTag, TTag::PNMTwoPNI>
194{
195private:
204 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
205 // class used for scv-wise reconstruction of non-wetting phase saturations
208
210
211 template<class BaseTraits, class ETCM>
212 struct NITraits : public BaseTraits { using EffectiveThermalConductivityModel = ETCM; };
213
214public:
216};
217
219template<class TypeTag>
220struct IOFields<TypeTag, TTag::PNMTwoPNI> { using type = EnergyIOFields<PoreNetwork::TwoPIOFields>; };
221
222template<class TypeTag>
223struct ThermalConductivityModel<TypeTag, TTag::PNMTwoPNI>
224{
226};
227
228} // end namespace Dumux::Properties
229
230#endif
Classes related to flux variables caching.
This file contains the data which is required to calculate the fluxes of the pore network model over ...
Implementation of capillary pressure curves for multiple pore body geometries.
Implementation of the single-phase transmissibility laws for throats.
Implementation of the transmissibility laws for throats.
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
Definition: common/properties.hh:37
Traits class encapsulating model specifications.
Definition: common/properties.hh:51
A class helping models to define input and output fields.
Definition: common/properties.hh:61
The secondary variables within a sub-control volume.
Definition: common/properties.hh:105
Stores data associated with flux vars.
Definition: common/properties.hh:113
The global vector of flux variable containers.
Definition: common/properties.hh:117
The local residual of the energy equation.
Definition: common/properties.hh:137
The type for the calculation the advective fluxes.
Definition: common/properties.hh:139
The type of the spatial parameters object.
Definition: common/properties.hh:158
Model to be used for the calculation of the effective conductivity.
Definition: common/properties.hh:170
An empty flux variables cache.
Definition: fluxvariablescaching.hh:47
Hagen–Poiseuille-type flux law to describe the advective flux for pore-network models.
Definition: advection.hh:46
Relation for the saturation-dependent effective thermal conductivity.
Definition: somerton.hh:60
Implementation of capillary pressure curves for multiple pore body geometries.
Definition: multishapelocalrules.hh:55
Single-phase flow throat transmissibility based on Patzek & Silin (2001) https://doi....
Definition: transmissibility1p.hh:126
Flux variables cache for the two-phase-flow PNM Store data required for flux calculation.
Definition: porenetwork/2p/fluxvariablescache.hh:41
Flux variable caches traits.
Definition: porenetwork/2p/gridfluxvariablescache.hh:41
Flux variable caches on a gridview.
Definition: porenetwork/2p/gridfluxvariablescache.hh:59
Adds output fields specific to the PNM 2p model.
Definition: porenetwork/2p/iofields.hh:37
Definition: porenetwork/2p/model.hh:89
std::tuple< PoreNetworkModel, TwoP > InheritsFrom
Definition: porenetwork/2p/model.hh:89
The type tags for the corresponding non-isothermal problems.
Definition: porenetwork/2p/model.hh:92
std::tuple< PNMTwoP > InheritsFrom
Definition: porenetwork/2p/model.hh:92
The default class for spatial parameters for two-phase pore-network models.
Definition: porenetwork/2p/spatialparams.hh:239
Contains the quantities which are are constant within a finite volume (the pore body) in the two-phas...
Definition: porenetwork/2p/volumevariables.hh:41
Specifies a number properties of two-phase models.
Definition: porousmediumflow/2p/model.hh:78
Traits class for the two-phase model.
Definition: porousmediumflow/2p/model.hh:109
Class that computes the nonwetting saturation in an scv from the saturation at the global degree of f...
Definition: saturationreconstruction.hh:43
Adds I/O fields specific to non-isothermal models.
Definition: porousmediumflow/nonisothermal/iofields.hh:39
Definition: porousmediumflow/nonisothermal/localresidual.hh:36
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition: porousmediumflow/nonisothermal/model.hh:70
Declares all properties used in Dumux.
Defines common properties required for all pore-network models.
Adaption of the fully implicit scheme to the two-phase flow model.
The implicit non-isothermal model.
Base class for the flux variables.
Global flux variable cache.
Adds I/O fields specific to non-isothermal models.
Adds I/O fields specific to the tracer model.
Element-wise calculation of the residual for problems using the n-phase immiscible fully implicit mod...
Python wrapper for volume variables (finite volume schemes)
Defines the indices used by the non-isothermal two-phase two-component model.
TODO: docme!