version 3.10.0
Loading...
Searching...
No Matches
porenetwork/2pnc/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-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
44
45#ifndef DUMUX_PNM_2P_NC_MODEL_HH
46#define DUMUX_PNM_2P_NC_MODEL_HH
47
51
55
62
67
68
69#include "iofields.hh"
70#include "volumevariables.hh"
71
72namespace Dumux::Properties{
73// \{
75// Type tags
77
79// Create new type tags
80namespace TTag {
81struct PNMTwoPNC { using InheritsFrom = std::tuple<PoreNetworkModel, TwoPNC>; };
82
84struct PNMTwoPNCNI { using InheritsFrom = std::tuple<PNMTwoPNC>; };
85} // end namespace TTag
86
88// Property tags
90
92template<class TypeTag>
93struct VolumeVariables<TypeTag, TTag::PNMTwoPNC>
94{
95private:
104 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
105 // class used for scv-wise reconstruction of nonwetting phase saturations
108
111
112 template<class BaseTraits, class DT, class EDM>
113 struct NCTraits : public BaseTraits
114 {
115 using DiffusionType = DT;
116 using EffectiveDiffusivityModel = EDM;
117 };
118public:
120};
121
123template<class TypeTag>
124struct PrimaryVariables<TypeTag, TTag::PNMTwoPNC>
125{
126private:
127 using PrimaryVariablesVector = Dune::FieldVector<GetPropType<TypeTag, Properties::Scalar>,
129public:
131};
132
135template<class TypeTag>
136struct SpatialParams<TypeTag, TTag::PNMTwoPNC>
137{
138private:
142public:
144};
145
147template<class TypeTag>
159
160template<class TypeTag>
161struct IOFields<TypeTag, TTag::PNMTwoPNC> { using type = PoreNetwork::TwoPNCIOFields; };
162
164template<class TypeTag>
165struct GridFluxVariablesCache<TypeTag, TTag::PNMTwoPNC>
166{
167private:
168 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
171 using FluxVariablesCache = GetPropTypeOr<TypeTag,
172 Properties::FluxVariablesCache, FluxVariablesCaching::EmptyCache<Scalar>
173 >;
175public:
177};
178
180template<class TypeTag>
183
185template<class TypeTag>
186struct MolecularDiffusionType<TypeTag, TTag::PNMTwoPNC>
187{
188private:
191public:
192 using type = PoreNetwork::PNMFicksLaw<Scalar, ModelTraits::numFluidPhases(), ModelTraits::numFluidComponents()>;
193};
194
196// Property values for isothermal model required for the general non-isothermal model
198template<class TypeTag>
199struct ModelTraits<TypeTag, TTag::PNMTwoPNCNI>
200{
201private:
204 static_assert(FluidSystem::numPhases == 2, "Only fluid systems with 2 fluid phases are supported by the 2p-nc model!");
205 using IsothermalTraits = TwoPNCModelTraits<FluidSystem::numComponents,
209public:
211};
212
214template<class TypeTag>
215struct VolumeVariables<TypeTag, TTag::PNMTwoPNCNI>
216{
217private:
226 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
227 // class used for scv-wise reconstruction of nonwetting phase saturations
230
234
235 template<class BaseTraits, class DT, class EDM, class ETCM>
236 struct NCNITraits : public BaseTraits
237 {
238 using DiffusionType = DT;
239 using EffectiveDiffusivityModel = EDM;
240 using EffectiveThermalConductivityModel = ETCM;
241 };
242public:
244};
245
247template<class TypeTag>
248struct IOFields<TypeTag, TTag::PNMTwoPNCNI> { using type = EnergyIOFields<PoreNetwork::TwoPNCIOFields>; };
249
250// Somerton is used as default model to compute the effective thermal heat conductivity
251template<class TypeTag>
252struct ThermalConductivityModel<TypeTag, TTag::PNMTwoPNCNI>
253{
255};
256
257} // end namespace Dumux::Properties
258
259#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
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
Specialization of Fick's Law for the pore-network model.
Definition flux/porenetwork/fickslaw.hh:30
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 2pnc model.
Definition porenetwork/2pnc/iofields.hh:25
Contains the quantities which are constant within a finite volume in the two-phase n-components model...
Definition porenetwork/2pnc/volumevariables.hh:28
A primary variable vector with a state to allow variable switches.
Definition switchableprimaryvariables.hh:28
Effective thermal conductivity after Somerton.
Definition somerton.hh:52
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.
This file contains the data which is required to calculate diffusive mass fluxes due to molecular dif...
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:310
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.
Type tag for numeric models.
Definition grid.hh:24
The energy balance equation for a porous solid.
Definition common/properties.hh:26
Flux variables cache for the two-phase-flow PNM.
Global flux variable cache.
The two-phase spatial parameters for pore-network models.
Adds output fields specific to the PNM 2pnc model.
Contains the quantities which are constant within a finite volume in the two-phase n-components model...
Defines common properties required for all pore-network models.
Adaption of the fully implicit scheme to the two-phase n-component fully implicit model.
Element-wise calculation of the local residual for problems using compositional fully implicit model.
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.
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
PoreNetwork::CreepingFlow< Scalar, S, W, N > type
Definition porenetwork/2pnc/model.hh:157
PoreNetwork::TwoPFluxVariablesCache< GetPropType< TypeTag, Properties::AdvectionType > > type
Definition porenetwork/2pnc/model.hh:182
PoreNetwork::PNMTwoPGridFluxVariablesCache< Problem, FluxVariablesCache, enableCache, Traits > type
Definition porenetwork/2pnc/model.hh:176
PoreNetwork::TwoPNCIOFields type
Definition porenetwork/2pnc/model.hh:161
EnergyIOFields< PoreNetwork::TwoPNCIOFields > type
Definition porenetwork/2pnc/model.hh:248
PorousMediumFlowNIModelTraits< IsothermalTraits > type
Definition porenetwork/2pnc/model.hh:210
PoreNetwork::PNMFicksLaw< Scalar, ModelTraits::numFluidPhases(), ModelTraits::numFluidComponents()> type
Definition porenetwork/2pnc/model.hh:192
SwitchablePrimaryVariables< PrimaryVariablesVector, int > type
Definition porenetwork/2pnc/model.hh:130
PoreNetwork::TwoPDefaultSpatialParams< GridGeometry, Scalar, LocalRules > type
Definition porenetwork/2pnc/model.hh:143
Definition porenetwork/2pnc/model.hh:81
std::tuple< PoreNetworkModel, TwoPNC > InheritsFrom
Definition porenetwork/2pnc/model.hh:81
The type tags for the corresponding non-isothermal problems.
Definition porenetwork/2pnc/model.hh:84
std::tuple< PNMTwoPNC > InheritsFrom
Definition porenetwork/2pnc/model.hh:84
ThermalConductivitySomertonTwoP< GetPropType< TypeTag, Properties::Scalar > > type
Definition porenetwork/2pnc/model.hh:254
PoreNetwork::TwoPNCVolumeVariables< NCTraits< BaseTraits, DT, EDM > > type
Definition porenetwork/2pnc/model.hh:119
PoreNetwork::TwoPNCVolumeVariables< NCNITraits< BaseTraits, DT, EDM, ETCM > > type
Definition porenetwork/2pnc/model.hh:243
Specifies a number properties of two-phase n-component models.
Definition porousmediumflow/2pnc/model.hh:114
Traits class for the two-phase model.
Definition porousmediumflow/2p/model.hh:107
A primary variable vector with a state to allow variable switches.
Implementation of the single-phase transmissibility laws for throats.
Implementation of the transmissibility laws for throats.