Loading [MathJax]/extensions/tex2jax.js
3.4
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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
60
62
67
73
74#include "fluxvariablescache.hh"
76#include "iofields.hh"
77#include "volumevariables.hh"
78
79namespace Dumux::Properties {
80// \{
82// Type tags
84
86// Create new type tags
87namespace TTag {
88struct PNMTwoP { using InheritsFrom = std::tuple<PoreNetworkModel, TwoP>; };
89
91struct PNMTwoPNI { using InheritsFrom = std::tuple<PNMTwoP>; };
92} // end namespace TTag
93
95// properties for the isothermal two-phase model
97
99template<class TypeTag>
100struct VolumeVariables<TypeTag, TTag::PNMTwoP>
101{
102private:
110
112 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
113 // class used for scv-wise reconstruction of non-wetting phase saturations
115
117public:
119};
120
122template<class TypeTag>
123struct FluxVariablesCache<TypeTag, TTag::PNMTwoP>
125
127template<class TypeTag>
128struct GridFluxVariablesCache<TypeTag, TTag::PNMTwoP>
129{
130private:
131 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
135public:
137};
138
141template<class TypeTag>
142struct SpatialParams<TypeTag, TTag::PNMTwoP>
143{
144private:
148public:
150};
151
153template<class TypeTag>
154struct AdvectionType<TypeTag, TTag::PNMTwoP>
155{
156private:
161
162public:
164};
165
166template<class TypeTag>
167struct EnergyLocalResidual<TypeTag, TTag::PNMTwoP> { using type = Dumux::EnergyLocalResidual<TypeTag> ; };
168
169template<class TypeTag>
170struct IOFields<TypeTag, TTag::PNMTwoP> { using type = Dumux::PoreNetwork::TwoPIOFields; };
171
173// Property values for isothermal model required for the general non-isothermal model
175
177template<class TypeTag>
178struct ModelTraits<TypeTag, TTag::PNMTwoPNI>
179{
180private:
183public:
185};
186
188template<class TypeTag>
189struct VolumeVariables<TypeTag, TTag::PNMTwoPNI>
190{
191private:
200 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
201 // class used for scv-wise reconstruction of non-wetting phase saturations
204
206
207 template<class BaseTraits, class ETCM>
208 struct NITraits : public BaseTraits { using EffectiveThermalConductivityModel = ETCM; };
209
210public:
212};
213
215template<class TypeTag>
216struct IOFields<TypeTag, TTag::PNMTwoPNI> { using type = EnergyIOFields<Dumux::PoreNetwork::TwoPIOFields>; };
217
218template<class TypeTag>
219struct ThermalConductivityModel<TypeTag, TTag::PNMTwoPNI>
220{
222};
223
224} // end namespace Dumux::Properties
225
226#endif
This file contains the data which is required to calculate the fluxes of the pore network model over ...
The two-phase spatial parameters for pore-network models.
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 Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:150
Definition: common/properties.hh:37
Traits class encapsulating model specifications.
Definition: common/properties.hh:53
A class helping models to define input and output fields.
Definition: common/properties.hh:63
The secondary variables within a sub-control volume.
Definition: common/properties.hh:103
Stores data associated with flux vars.
Definition: common/properties.hh:111
The global vector of flux variable containers.
Definition: common/properties.hh:115
The local residual of the energy equation.
Definition: common/properties.hh:135
The type for the calculation the advective fluxes.
Definition: common/properties.hh:137
The type of the spatial parameters object.
Definition: common/properties.hh:150
Model to be used for the calculation of the effective conductivity.
Definition: common/properties.hh:162
Definition: advection.hh:47
Relation for the saturation-dependent effective thermal conductivity.
Definition: somerton.hh:60
Definition: multishapelocalrules.hh:46
Single-phase flow throat transmissibility based on Patzek & Silin (2001) https://doi....
Definition: transmissibility1p.hh:123
Definition: porenetwork2p.hh:211
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:88
std::tuple< PoreNetworkModel, TwoP > InheritsFrom
Definition: porenetwork/2p/model.hh:88
The type tags for the corresponding non-isothermal problems.
Definition: porenetwork/2p/model.hh:91
std::tuple< PNMTwoP > InheritsFrom
Definition: porenetwork/2p/model.hh:91
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:86
Traits class for the two-phase model.
Definition: porousmediumflow/2p/model.hh:117
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.
Defines the indices used by the non-isothermal two-phase two-component model.
Element-wise calculation of the residual for problems using the n-phase immiscible fully implicit mod...
Adds I/O fields specific to non-isothermal models.
Adds I/O fields specific to the tracer model.
Base class for the model specific class which provides access to all volume averaged quantities.