version 3.10-dev
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//
47#ifndef DUMUX_3P_MODEL_HH
48#define DUMUX_3P_MODEL_HH
49
51
54
60
61#include "indices.hh"
62#include "volumevariables.hh"
63#include "iofields.hh"
64
65namespace Dumux {
66
72{
74
75 static constexpr int numEq() { return 3; }
76 static constexpr int numFluidPhases() { return 3; }
77 static constexpr int numFluidComponents() { return 3; }
78
79 static constexpr bool enableAdvection() { return true; }
80 static constexpr bool enableMolecularDiffusion() { return false; }
81 static constexpr bool enableEnergyBalance() { return false; }
82};
83
94template<class PV, class FSY, class FST, class SSY, class SST, class PT, class MT>
96{
97 using PrimaryVariables = PV;
98 using FluidSystem = FSY;
99 using FluidState = FST;
100 using SolidSystem = SSY;
103 using ModelTraits = MT;
104};
105
106namespace Properties {
107
109// Type tags
111namespace TTag {
113struct ThreeP { using InheritsFrom = std::tuple<PorousMediumFlow>; };
115struct ThreePNI { using InheritsFrom = std::tuple<ThreeP>; };
116} // end namespace TTag
117
119// Properties for the isothermal 3p model
121
123template<class TypeTag>
124struct ModelTraits<TypeTag, TTag::ThreeP>
125{
126 private:
128 static_assert(FluidSystem::numPhases == 3, "Only fluid systems with 3 phases are supported by the 3p model!");
129 static_assert(FluidSystem::numComponents == 3, "Only fluid systems with 3 components are supported by the 3p model!");
130 public:
132};
133
135template<class TypeTag>
136struct LocalResidual<TypeTag, TTag::ThreeP> { using type = ImmiscibleLocalResidual<TypeTag>; };
137
139template<class TypeTag>
140struct VolumeVariables<TypeTag, TTag::ThreeP>
141{
142private:
150
152public:
154};
155
163template<class TypeTag>
164struct FluidState<TypeTag, TTag::ThreeP>
165{
166private:
169public:
171};
172
174template<class TypeTag>
175struct IOFields<TypeTag, TTag::ThreeP> { using type = ThreePIOFields; };
176
178// Properties for the non-isothermal 3p model
180
182template<class TypeTag>
183struct ThermalConductivityModel<TypeTag, TTag::ThreePNI>
184{
185private:
187public:
189};
190
192template<class TypeTag>
193struct IOFields<TypeTag, TTag::ThreePNI> { using type = EnergyIOFields<ThreePIOFields>; };
194
196template<class TypeTag>
197struct ModelTraits<TypeTag, TTag::ThreePNI>
198{
199private:
201 static_assert(FluidSystem::numPhases == 3, "Only fluid systems with 3 phases are supported by the 3p model!");
202 static_assert(FluidSystem::numComponents == 3, "Only fluid systems with 3 components are supported by the 3p model!");
203public:
205};
206
208template<class TypeTag>
209struct VolumeVariables<TypeTag, TTag::ThreePNI>
210{
211private:
221
222 template<class BaseTraits, class ETCM>
223 struct NITraits : public BaseTraits { using EffectiveThermalConductivityModel = ETCM; };
224public:
226};
227
228} // end namespace Properties
229} // end namespace Dumux
230
231#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
Effective thermal conductivity after Somerton.
Definition: thermalconductivitysomerton3p.hh:46
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:296
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:76
The type tags for the isothermal three-phase model.
Definition: porousmediumflow/3p/model.hh:113
std::tuple< PorousMediumFlow > InheritsFrom
Definition: porousmediumflow/3p/model.hh:113
The type tags for the non-isothermal three-phase model.
Definition: porousmediumflow/3p/model.hh:115
std::tuple< ThreeP > InheritsFrom
Definition: porousmediumflow/3p/model.hh:115
Specifies a number properties of three-phase models.
Definition: porousmediumflow/3p/model.hh:72
static constexpr int numFluidPhases()
Definition: porousmediumflow/3p/model.hh:76
static constexpr bool enableAdvection()
Definition: porousmediumflow/3p/model.hh:79
static constexpr int numFluidComponents()
Definition: porousmediumflow/3p/model.hh:77
static constexpr int numEq()
Definition: porousmediumflow/3p/model.hh:75
static constexpr bool enableEnergyBalance()
Definition: porousmediumflow/3p/model.hh:81
static constexpr bool enableMolecularDiffusion()
Definition: porousmediumflow/3p/model.hh:80
Traits class for the two-phase model.
Definition: porousmediumflow/3p/model.hh:96
PT PermeabilityType
Definition: porousmediumflow/3p/model.hh:102
FST FluidState
Definition: porousmediumflow/3p/model.hh:99
SST SolidState
Definition: porousmediumflow/3p/model.hh:101
MT ModelTraits
Definition: porousmediumflow/3p/model.hh:103
SSY SolidSystem
Definition: porousmediumflow/3p/model.hh:100
PV PrimaryVariables
Definition: porousmediumflow/3p/model.hh:97
FSY FluidSystem
Definition: porousmediumflow/3p/model.hh:98