3.3.0
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
porousmediumflow/1p/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 * See the file COPYING for full copying permissions. *
5 * *
6 * This program is free software: you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation, either version 3 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
18 *****************************************************************************/
42#ifndef DUMUX_1P_MODEL_HH
43#define DUMUX_1P_MODEL_HH
44
46
49
54
55#include "indices.hh"
56#include "volumevariables.hh"
57#include "iofields.hh"
58
59namespace Dumux {
60
66{
69
70 static constexpr int numEq() { return 1; }
71 static constexpr int numFluidPhases() { return 1; }
72 static constexpr int numFluidComponents() { return 1; }
73
74 static constexpr bool enableAdvection() { return true; }
75 static constexpr bool enableMolecularDiffusion() { return false; }
76 static constexpr bool enableEnergyBalance() { return false; }
77};
78
89template<class PV, class FSY, class FST, class SSY, class SST, class PT, class MT>
91{
92 using PrimaryVariables = PV;
93 using FluidSystem = FSY;
94 using FluidState = FST;
95 using SolidSystem = SSY;
96 using SolidState = SST;
97 using PermeabilityType = PT;
98 using ModelTraits = MT;
99};
100
101namespace Properties {
102// Create new type tags
103namespace TTag {
105struct OneP { using InheritsFrom = std::tuple<PorousMediumFlow>; };
106
108struct OnePNI { using InheritsFrom = std::tuple<OneP>; };
109} // end namespace TTag
110
112// Properties for the isothermal single phase model
114template<class TypeTag>
115struct IOFields<TypeTag, TTag::OneP> { using type = OnePIOFields; };
116template<class TypeTag>
117struct LocalResidual<TypeTag, TTag::OneP> { using type = ImmiscibleLocalResidual<TypeTag>; };
118template<class TypeTag>
119struct BaseModelTraits<TypeTag, TTag::OneP> { using type = OnePModelTraits; };
120template<class TypeTag>
122
124template<class TypeTag>
125struct VolumeVariables<TypeTag, TTag::OneP>
126{
127private:
135
137public:
139};
140
148template<class TypeTag>
149struct FluidState<TypeTag, TTag::OneP>
150{
151private:
154public:
156};
157
159// Properties for the non-isothermal single phase model
161
163template<class TypeTag>
164struct IOFields<TypeTag, TTag::OnePNI> { using type = EnergyIOFields<OnePIOFields>; };
165
167template<class TypeTag>
168struct ModelTraits<TypeTag, TTag::OnePNI> { using type = PorousMediumFlowNIModelTraits<OnePModelTraits>; };
169
171template<class TypeTag>
172struct VolumeVariables<TypeTag, TTag::OnePNI>
173{
174private:
183
185 template<class BaseTraits, class ETCM>
186 struct NITraits : public BaseTraits { using EffectiveThermalConductivityModel = ETCM; };
187
188public:
190};
191
193template<class TypeTag>
194struct ThermalConductivityModel<TypeTag, TTag::OnePNI>
196
197} // end namespace Properties
198} // end namespace Dumux
199
200#endif
Reation for a simple effective thermal conductivity.
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Definition: adapt.hh:29
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(....
Definition: propertysystem.hh:149
Traits class encapsulating model specifications.
Definition: common/properties.hh:53
Model traits to be used as a base for nonisothermal, mineralization ... models.
Definition: common/properties.hh:55
A class helping models to define input and output fields.
Definition: common/properties.hh:63
Definition: common/properties.hh:77
The secondary variables within a sub-control volume.
Definition: common/properties.hh:106
The type of the fluid state to use.
Definition: common/properties.hh:157
Model to be used for the calculation of the effective conductivity.
Definition: common/properties.hh:165
Relation for a simple effective thermal conductivity.
Definition: thermalconductivityaverage.hh:37
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Definition: immiscible.hh:42
Indices for the one-phase model.
Definition: porousmediumflow/1p/indices.hh:39
Adds I/O fields specific to the one phase model.
Definition: porousmediumflow/1p/iofields.hh:37
Specifies a number properties of single-phase models.
Definition: porousmediumflow/1p/model.hh:66
static constexpr bool enableAdvection()
Definition: porousmediumflow/1p/model.hh:74
static constexpr bool enableMolecularDiffusion()
Definition: porousmediumflow/1p/model.hh:75
static constexpr int numEq()
Definition: porousmediumflow/1p/model.hh:70
static constexpr int numFluidPhases()
Definition: porousmediumflow/1p/model.hh:71
static constexpr int numFluidComponents()
Definition: porousmediumflow/1p/model.hh:72
static constexpr bool enableEnergyBalance()
Definition: porousmediumflow/1p/model.hh:76
Traits class for the volume variables of the single-phase model.
Definition: porousmediumflow/1p/model.hh:91
SST SolidState
Definition: porousmediumflow/1p/model.hh:96
SSY SolidSystem
Definition: porousmediumflow/1p/model.hh:95
MT ModelTraits
Definition: porousmediumflow/1p/model.hh:98
PT PermeabilityType
Definition: porousmediumflow/1p/model.hh:97
FSY FluidSystem
Definition: porousmediumflow/1p/model.hh:93
FST FluidState
Definition: porousmediumflow/1p/model.hh:94
PV PrimaryVariables
Definition: porousmediumflow/1p/model.hh:92
The type tags for the isothermal single phase model.
Definition: porousmediumflow/1p/model.hh:105
std::tuple< PorousMediumFlow > InheritsFrom
Definition: porousmediumflow/1p/model.hh:105
The type tags for the non-isothermal single phase model.
Definition: porousmediumflow/1p/model.hh:108
std::tuple< OneP > InheritsFrom
Definition: porousmediumflow/1p/model.hh:108
GetPropType< TypeTag, Properties::BaseModelTraits > type
Definition: porousmediumflow/1p/model.hh:121
Contains the quantities which are constant within a finite volume in the one-phase model.
Definition: porousmediumflow/1p/volumevariables.hh:46
Element-wise calculation of the residual for problems using the n-phase immiscible fully implicit mod...
Definition: porousmediumflow/immiscible/localresidual.hh:39
Adds I/O fields specific to non-isothermal models.
Definition: porousmediumflow/nonisothermal/iofields.hh:39
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition: porousmediumflow/nonisothermal/model.hh:70
Declares all properties used in Dumux.
Defines a type tag and some properties for models using the box scheme.
The implicit non-isothermal model.
Adds I/O fields specific to non-isothermal models.
Adds I/O fields specific to the tracer model.
Element-wise calculation of the residual for problems using the n-phase immiscible fully implicit mod...
Base class for the model specific class which provides access to all volume averaged quantities.
Defines the primary variable and equation indices used by the isothermal tracer model.