3.4
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
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 ...
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.
The two-phase spatial parameters for pore-network models.
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.
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...
Base class for the model specific class which provides access to all volume averaged quantities.
Defines the indices used by the non-isothermal two-phase two-component model.