version 3.10-dev
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// SPDX-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
42#ifndef DUMUX_PNM2P_MODEL_HH
43#define DUMUX_PNM2P_MODEL_HH
44
46
49
51
55
61
62#include "fluxvariablescache.hh"
64#include "iofields.hh"
65#include "volumevariables.hh"
66#include "spatialparams.hh"
67
68namespace Dumux::Properties {
69// \{
71// Type tags
73
75// Create new type tags
76namespace TTag {
77struct PNMTwoP { using InheritsFrom = std::tuple<PoreNetworkModel, TwoP>; };
78
80struct PNMTwoPNI { using InheritsFrom = std::tuple<PNMTwoP>; };
81} // end namespace TTag
82
84// properties for the isothermal two-phase model
86
88template<class TypeTag>
89struct VolumeVariables<TypeTag, TTag::PNMTwoP>
90{
91private:
99
101 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
102 // class used for scv-wise reconstruction of non-wetting phase saturations
104
106public:
108};
109
111template<class TypeTag>
112struct FluxVariablesCache<TypeTag, TTag::PNMTwoP>
114
116template<class TypeTag>
117struct GridFluxVariablesCache<TypeTag, TTag::PNMTwoP>
118{
119private:
120 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
123 using FluxVariablesCache = GetPropTypeOr<TypeTag,
124 Properties::FluxVariablesCache, FluxVariablesCaching::EmptyCache<Scalar>
125 >;
127public:
129};
130
133template<class TypeTag>
134struct SpatialParams<TypeTag, TTag::PNMTwoP>
135{
136private:
140public:
142};
143
145template<class TypeTag>
146struct AdvectionType<TypeTag, TTag::PNMTwoP>
147{
148private:
153
154public:
156};
157
158template<class TypeTag>
159struct EnergyLocalResidual<TypeTag, TTag::PNMTwoP> { using type = Dumux::EnergyLocalResidual<TypeTag> ; };
160
161template<class TypeTag>
162struct IOFields<TypeTag, TTag::PNMTwoP> { using type = PoreNetwork::TwoPIOFields; };
163
165// Property values for isothermal model required for the general non-isothermal model
167
169template<class TypeTag>
170struct ModelTraits<TypeTag, TTag::PNMTwoPNI>
171{
172private:
175public:
177};
178
180template<class TypeTag>
181struct VolumeVariables<TypeTag, TTag::PNMTwoPNI>
182{
183private:
192 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
193 // class used for scv-wise reconstruction of non-wetting phase saturations
196
198
199 template<class BaseTraits, class ETCM>
200 struct NITraits : public BaseTraits { using EffectiveThermalConductivityModel = ETCM; };
201
202public:
204};
205
207template<class TypeTag>
208struct IOFields<TypeTag, TTag::PNMTwoPNI> { using type = EnergyIOFields<PoreNetwork::TwoPIOFields>; };
209
210template<class TypeTag>
211struct ThermalConductivityModel<TypeTag, TTag::PNMTwoPNI>
212{
214};
215
216} // end namespace Dumux::Properties
217
218#endif
This file contains the data which is required to calculate the fluxes of the pore network model over ...
Adds I/O fields specific to non-isothermal models.
Definition: porousmediumflow/nonisothermal/iofields.hh:27
Definition: porousmediumflow/nonisothermal/localresidual.hh:24
Hagen–Poiseuille-type flux law to describe the advective flux for pore-network models.
Definition: advection.hh:34
Implementation of capillary pressure curves for multiple pore body geometries.
Definition: multishapelocalrules.hh:43
Flux variable caches on a gridview.
Definition: porenetwork/2p/gridfluxvariablescache.hh:47
Single-phase flow throat transmissibility based on Patzek & Silin (2001) https://doi....
Definition: transmissibility1p.hh:114
The default class for spatial parameters for two-phase pore-network models.
Definition: porenetwork/2p/spatialparams.hh:227
Flux variables cache for the two-phase-flow PNM Store data required for flux calculation.
Definition: porenetwork/2p/fluxvariablescache.hh:29
Adds output fields specific to the PNM 2p model.
Definition: porenetwork/2p/iofields.hh:25
Contains the quantities which are are constant within a finite volume (the pore body) in the two-phas...
Definition: porenetwork/2p/volumevariables.hh:29
Effective thermal conductivity after Somerton.
Definition: somerton.hh:46
Class that computes the nonwetting saturation in an scv from the saturation at the global degree of f...
Definition: saturationreconstruction.hh:31
Defines all properties used in Dumux.
Classes related to flux variables caching.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:296
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:303
Implementation of capillary pressure curves for multiple pore body geometries.
The energy balance equation for a porous solid.
Definition: common/properties.hh:26
Global flux variable cache.
Defines common properties required for all pore-network models.
Adaption of the fully implicit scheme to the two-phase flow model.
Base class for the flux variables.
Element-wise calculation of the residual for problems using the n-phase immiscible fully implicit mod...
Defines the indices used by the non-isothermal two-phase two-component model.
Adds I/O fields specific to non-isothermal models.
The implicit non-isothermal model.
Adds I/O fields specific to the tracer model.
Python wrapper for volume variables (finite volume schemes)
TODO: docme!
An empty flux variables cache.
Definition: fluxvariablescaching.hh:35
Flux variable caches traits.
Definition: porenetwork/2p/gridfluxvariablescache.hh:29
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition: porousmediumflow/nonisothermal/model.hh:76
Definition: porenetwork/2p/model.hh:77
std::tuple< PoreNetworkModel, TwoP > InheritsFrom
Definition: porenetwork/2p/model.hh:77
The type tags for the corresponding non-isothermal problems.
Definition: porenetwork/2p/model.hh:80
std::tuple< PNMTwoP > InheritsFrom
Definition: porenetwork/2p/model.hh:80
Specifies a number properties of two-phase models.
Definition: porousmediumflow/2p/model.hh:76
Traits class for the two-phase model.
Definition: porousmediumflow/2p/model.hh:107
Implementation of the single-phase transmissibility laws for throats.
Implementation of the transmissibility laws for throats.