version 3.10.0
Loading...
Searching...
No Matches
porenetwork/1pnc/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//
43
44#ifndef DUMUX_PNM1PNC_MODEL_HH
45#define DUMUX_PNM1PNC_MODEL_HH
46
48
50
54
58
65
66#include "iofields.hh"
67#include "volumevariables.hh"
68
69namespace Dumux::Properties {
71// Type tags
73
75// Create new type tags
76namespace TTag {
77struct PNMOnePNC { using InheritsFrom = std::tuple<PoreNetworkModel, OnePNC>; };
78
80struct PNMOnePNCNI { using InheritsFrom = std::tuple<PNMOnePNC>; };
81} // end namespace TTag
82
84// properties for the isothermal single phase model
86
89template<class TypeTag>
90struct SpatialParams<TypeTag, TTag::PNMOnePNC>
91{
92private:
95public:
97};
98
100template<class TypeTag>
101struct AdvectionType<TypeTag, TTag::PNMOnePNC>
102{
103private:
105 using TransmissibilityLaw = PoreNetwork::TransmissibilityPatzekSilin<Scalar, false/*considerPoreBodyResistance*/>;
106public:
108};
109
111template<class TypeTag>
112struct ReplaceCompEqIdx<TypeTag, TTag::PNMOnePNC>
113{
114private:
116public:
117 static constexpr auto value = FluidSystem::numComponents;
118};
119
121template<class TypeTag>
122struct MolecularDiffusionType<TypeTag, TTag::PNMOnePNC>
123{
124private:
127public:
128 using type = PoreNetwork::PNMFicksLaw<Scalar, ModelTraits::numFluidPhases(), ModelTraits::numFluidComponents()>;
129};
130
132template<class TypeTag>
133struct VolumeVariables<TypeTag, TTag::PNMOnePNC>
134{
135private:
143 static_assert(FSY::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid system");
144 static_assert(FST::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid state");
145 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
146 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
148
151 template<class BaseTraits, class DT, class EDM>
152 struct NCTraits : public BaseTraits
153 {
154 using DiffusionType = DT;
155 using EffectiveDiffusivityModel = EDM;
156 };
157
158public:
160};
161
163template<class TypeTag>
166
167template<class TypeTag>
168struct UseMoles<TypeTag, TTag::PNMOnePNC> { static constexpr bool value = true; };
169
171// Property values for isothermal model required for the general non-isothermal model
173
175template<class TypeTag>
190
191template<class TypeTag>
192struct VolumeVariables<TypeTag, TTag::PNMOnePNCNI>
193{
194private:
202 static_assert(FSY::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid system");
203 static_assert(FST::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid state");
204 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
205 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
207
211 template<class BaseTraits, class DT, class EDM, class ETCM>
212 struct NCNITraits : public BaseTraits
213 {
214 using DiffusionType = DT;
215 using EffectiveDiffusivityModel = EDM;
216 using EffectiveThermalConductivityModel = ETCM;
217 };
218
219public:
221};
222
223template<class TypeTag>
224struct IOFields<TypeTag, TTag::PNMOnePNCNI>
225{
226private:
228 using IsothermalFields = PoreNetwork::OnePNCIOFields<FluidSystem>;
229public:
231};
232
233template<class TypeTag>
234struct ThermalConductivityModel<TypeTag, TTag::PNMOnePNCNI>
235{
237};
238
239// template<class TypeTag>
240// struct HeatConductionType<TypeTag, TTag::PNMOnePNCNI>
241// {
242// TODO uncomment this as soon as there is a generalized approach for component enthalpies in all fluid systems
243// using type = PoreNetwork::PNMFouriersLaw<GetPropType<TypeTag, MolecularDiffusionType>>;
244// }; //!< Use Fourier's law and also consider enthalpy transport by molecular diffusion
245
246} // end namespace Dumux::Properties
247#endif
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
The default class for spatial parameters for single-phase pore-network models.
Definition porenetwork/1p/spatialparams.hh:44
Adds output fields specific to the PNM 1pnc model.
Definition porenetwork/1pnc/iofields.hh:26
Contains the quantities which are are constant within a finite volume in the one-phase,...
Definition porenetwork/1pnc/volumevariables.hh:32
Specialization of Fick's Law for the pore-network model.
Definition flux/porenetwork/fickslaw.hh:30
Single-phase flow throat transmissibility based on Patzek & Silin (2001) https://doi....
Definition transmissibility1p.hh:114
Effective thermal conductivity based on weighted arithmetic average.
Definition thermalconductivityaverage.hh:49
Defines all properties used in Dumux.
Relation for the effective diffusion coefficient after Millington and Quirk.
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
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Type tag for numeric models.
Definition grid.hh:24
The energy balance equation for a porous solid.
Definition common/properties.hh:26
A one-phase-flow, isothermal pore-network model using the fully implicit scheme.
The spatial parameters for single-phase pore-network models.
Adds output fields specific to the PNM 1pnc model.
Contains the quantities which are are constant within a finite volume in the one-phase,...
Defines common properties required for all pore-network models.
Adds I/O fields specific to the OnePNC model.
Adaption of the fully implicit model to the one-phase n-component flow 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.
Specifies a number properties of models that consider a single-phase with multiple components.
Definition porousmediumflow/1pnc/model.hh:81
Traits class for the volume variables of the single-phase model.
Definition porousmediumflow/1p/model.hh:83
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, TransmissibilityLaw > type
Definition porenetwork/1pnc/model.hh:107
PoreNetwork::OnePNCIOFields< GetPropType< TypeTag, Properties::FluidSystem > > type
Definition porenetwork/1pnc/model.hh:165
EnergyIOFields< IsothermalFields > type
Definition porenetwork/1pnc/model.hh:230
PorousMediumFlowNIModelTraits< IsothermalTraits, ThermalDispersionModel > type
Definition porenetwork/1pnc/model.hh:188
PoreNetwork::PNMFicksLaw< Scalar, ModelTraits::numFluidPhases(), ModelTraits::numFluidComponents()> type
Definition porenetwork/1pnc/model.hh:128
static constexpr auto value
Definition porenetwork/1pnc/model.hh:117
PoreNetwork::OnePDefaultSpatialParams< GridGeometry, Scalar > type
Definition porenetwork/1pnc/model.hh:96
Definition porenetwork/1pnc/model.hh:77
std::tuple< PoreNetworkModel, OnePNC > InheritsFrom
Definition porenetwork/1pnc/model.hh:77
The type tags for the corresponding non-isothermal problems.
Definition porenetwork/1pnc/model.hh:80
std::tuple< PNMOnePNC > InheritsFrom
Definition porenetwork/1pnc/model.hh:80
ThermalConductivityAverage< GetPropType< TypeTag, Properties::Scalar > > type
Definition porenetwork/1pnc/model.hh:236
static constexpr bool value
Definition porenetwork/1pnc/model.hh:168
PoreNetwork::OnePNCVolumeVariables< NCTraits< BaseTraits, DT, EDM > > type
Definition porenetwork/1pnc/model.hh:159
PoreNetwork::OnePNCVolumeVariables< NCNITraits< BaseTraits, DT, EDM, ETCM > > type
Definition porenetwork/1pnc/model.hh:220
Implementation of the single-phase transmissibility laws for throats.