version 3.7
porousmediumflow/3p/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//
37#ifndef DUMUX_3P_MODEL_HH
38#define DUMUX_3P_MODEL_HH
39
41
44
50
51#include "indices.hh"
52#include "volumevariables.hh"
53#include "iofields.hh"
54
55namespace Dumux {
56
62{
64
65 static constexpr int numEq() { return 3; }
66 static constexpr int numFluidPhases() { return 3; }
67 static constexpr int numFluidComponents() { return 3; }
68
69 static constexpr bool enableAdvection() { return true; }
70 static constexpr bool enableMolecularDiffusion() { return false; }
71 static constexpr bool enableEnergyBalance() { return false; }
72};
73
84template<class PV, class FSY, class FST, class SSY, class SST, class PT, class MT>
86{
87 using PrimaryVariables = PV;
88 using FluidSystem = FSY;
89 using FluidState = FST;
90 using SolidSystem = SSY;
91 using SolidState = SST;
92 using PermeabilityType = PT;
93 using ModelTraits = MT;
94};
95
96namespace Properties {
97
99// Type tags
101namespace TTag {
103struct ThreeP { using InheritsFrom = std::tuple<PorousMediumFlow>; };
105struct ThreePNI { using InheritsFrom = std::tuple<ThreeP>; };
106} // end namespace TTag
107
109// Properties for the isothermal 3p model
111
113template<class TypeTag>
114struct ModelTraits<TypeTag, TTag::ThreeP>
115{
116 private:
118 static_assert(FluidSystem::numPhases == 3, "Only fluid systems with 3 phases are supported by the 3p model!");
119 static_assert(FluidSystem::numComponents == 3, "Only fluid systems with 3 components are supported by the 3p model!");
120 public:
122};
123
125template<class TypeTag>
126struct LocalResidual<TypeTag, TTag::ThreeP> { using type = ImmiscibleLocalResidual<TypeTag>; };
127
129template<class TypeTag>
130struct VolumeVariables<TypeTag, TTag::ThreeP>
131{
132private:
140
142public:
144};
145
153template<class TypeTag>
154struct FluidState<TypeTag, TTag::ThreeP>
155{
156private:
159public:
161};
162
164template<class TypeTag>
165struct IOFields<TypeTag, TTag::ThreeP> { using type = ThreePIOFields; };
166
168// Properties for the non-isothermal 3p model
170
172template<class TypeTag>
173struct ThermalConductivityModel<TypeTag, TTag::ThreePNI>
174{
175private:
177public:
179};
180
182template<class TypeTag>
183struct IOFields<TypeTag, TTag::ThreePNI> { using type = EnergyIOFields<ThreePIOFields>; };
184
186template<class TypeTag>
187struct ModelTraits<TypeTag, TTag::ThreePNI>
188{
189private:
191 static_assert(FluidSystem::numPhases == 3, "Only fluid systems with 3 phases are supported by the 3p model!");
192 static_assert(FluidSystem::numComponents == 3, "Only fluid systems with 3 components are supported by the 3p model!");
193public:
195};
196
198template<class TypeTag>
199struct VolumeVariables<TypeTag, TTag::ThreePNI>
200{
201private:
211
212 template<class BaseTraits, class ETCM>
213 struct NITraits : public BaseTraits { using EffectiveThermalConductivityModel = ETCM; };
214public:
216};
217
218} // end namespace Properties
219} // end namespace Dumux
220
221#endif
Adds I/O fields specific to non-isothermal models.
Definition: porousmediumflow/nonisothermal/iofields.hh:27
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Definition: immiscible.hh:30
Element-wise calculation of the residual for problems using the n-phase immiscible fully implicit mod...
Definition: porousmediumflow/immiscible/localresidual.hh:28
Relation for the saturation-dependent effective thermal conductivity.
Definition: somerton.hh:48
Adds I/O fields specific to the three-phase model.
Definition: porousmediumflow/3p/iofields.hh:25
The common indices for the isothermal three-phase model.
Definition: porousmediumflow/3p/indices.hh:23
Contains the quantities which are constant within a finite volume in the three-phase model.
Definition: porousmediumflow/3p/volumevariables.hh:32
Defines all properties used in Dumux.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:267
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Definition: adapt.hh:17
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.
Defines a type tag and some properties for models using the box scheme.
Defines the primary variable and equation indices used by the isothermal tracer model.
Adds I/O fields specific to the tracer model.
Python wrapper for volume variables (finite volume schemes)
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition: porousmediumflow/nonisothermal/model.hh:58
The type tags for the isothermal three-phase model.
Definition: porousmediumflow/3p/model.hh:103
std::tuple< PorousMediumFlow > InheritsFrom
Definition: porousmediumflow/3p/model.hh:103
The type tags for the non-isothermal three-phase model.
Definition: porousmediumflow/3p/model.hh:105
std::tuple< ThreeP > InheritsFrom
Definition: porousmediumflow/3p/model.hh:105
Specifies a number properties of three-phase models.
Definition: porousmediumflow/3p/model.hh:62
static constexpr int numFluidPhases()
Definition: porousmediumflow/3p/model.hh:66
static constexpr bool enableAdvection()
Definition: porousmediumflow/3p/model.hh:69
static constexpr int numFluidComponents()
Definition: porousmediumflow/3p/model.hh:67
static constexpr int numEq()
Definition: porousmediumflow/3p/model.hh:65
static constexpr bool enableEnergyBalance()
Definition: porousmediumflow/3p/model.hh:71
static constexpr bool enableMolecularDiffusion()
Definition: porousmediumflow/3p/model.hh:70
Traits class for the two-phase model.
Definition: porousmediumflow/3p/model.hh:86
PT PermeabilityType
Definition: porousmediumflow/3p/model.hh:92
FST FluidState
Definition: porousmediumflow/3p/model.hh:89
SST SolidState
Definition: porousmediumflow/3p/model.hh:91
MT ModelTraits
Definition: porousmediumflow/3p/model.hh:93
SSY SolidSystem
Definition: porousmediumflow/3p/model.hh:90
PV PrimaryVariables
Definition: porousmediumflow/3p/model.hh:87
FSY FluidSystem
Definition: porousmediumflow/3p/model.hh:88
Relation for the saturation-dependent effective thermal conductivity.