version 3.10-dev
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// SPDX-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
33#ifndef DUMUX_1P_MODEL_HH
34#define DUMUX_1P_MODEL_HH
35
37
40
45
46#include "indices.hh"
47#include "volumevariables.hh"
48#include "iofields.hh"
49
50namespace Dumux {
51
57{
60
61 static constexpr int numEq() { return 1; }
62 static constexpr int numFluidPhases() { return 1; }
63 static constexpr int numFluidComponents() { return 1; }
64
65 static constexpr bool enableAdvection() { return true; }
66 static constexpr bool enableMolecularDiffusion() { return false; }
67 static constexpr bool enableEnergyBalance() { return false; }
68 static constexpr bool enableThermalDispersion() { return false; }
69};
70
81template<class PV, class FSY, class FST, class SSY, class SST, class PT, class MT>
83{
84 using PrimaryVariables = PV;
85 using FluidSystem = FSY;
86 using FluidState = FST;
87 using SolidSystem = SSY;
88 using SolidState = SST;
89 using PermeabilityType = PT;
90 using ModelTraits = MT;
91};
92
93namespace Properties {
94// Create new type tags
95namespace TTag {
97struct OneP { using InheritsFrom = std::tuple<PorousMediumFlow>; };
98
100struct OnePNI { using InheritsFrom = std::tuple<OneP>; };
101} // end namespace TTag
102
104// Properties for the isothermal single phase model
106template<class TypeTag>
107struct IOFields<TypeTag, TTag::OneP> { using type = OnePIOFields; };
108template<class TypeTag>
109struct LocalResidual<TypeTag, TTag::OneP> { using type = ImmiscibleLocalResidual<TypeTag>; };
110template<class TypeTag>
111struct BaseModelTraits<TypeTag, TTag::OneP> { using type = OnePModelTraits; };
112template<class TypeTag>
113struct ModelTraits<TypeTag, TTag::OneP> { using type = GetPropType<TypeTag, Properties::BaseModelTraits>; };
114
116template<class TypeTag>
117struct VolumeVariables<TypeTag, TTag::OneP>
118{
119private:
127
129public:
131};
132
140template<class TypeTag>
141struct FluidState<TypeTag, TTag::OneP>
142{
143private:
146public:
148};
149
151// Properties for the non-isothermal single phase model
153
155template<class TypeTag>
156struct IOFields<TypeTag, TTag::OnePNI> { using type = EnergyIOFields<OnePIOFields>; };
157
159template<class TypeTag>
160struct ModelTraits<TypeTag, TTag::OnePNI> { using type = PorousMediumFlowNIModelTraits<OnePModelTraits>; };
161
163template<class TypeTag>
164struct VolumeVariables<TypeTag, TTag::OnePNI>
165{
166private:
175
177 template<class BaseTraits, class ETCM>
178 struct NITraits : public BaseTraits { using EffectiveThermalConductivityModel = ETCM; };
179
180public:
182};
183
185template<class TypeTag>
186struct ThermalConductivityModel<TypeTag, TTag::OnePNI>
188
189} // end namespace Properties
190} // end namespace Dumux
191
192#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
Adds I/O fields specific to the one phase model.
Definition: porousmediumflow/1p/iofields.hh:25
Contains the quantities which are constant within a sub-control volume in the one-phase model.
Definition: porousmediumflow/1p/volumevariables.hh:35
Effective thermal conductivity based on weighted arithmetic average.
Definition: thermalconductivityaverage.hh:43
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...
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)
Indices for the one-phase model.
Definition: porousmediumflow/1p/indices.hh:27
Specifies a number properties of single-phase models.
Definition: porousmediumflow/1p/model.hh:57
static constexpr bool enableAdvection()
Definition: porousmediumflow/1p/model.hh:65
static constexpr bool enableMolecularDiffusion()
Definition: porousmediumflow/1p/model.hh:66
static constexpr int numEq()
Definition: porousmediumflow/1p/model.hh:61
static constexpr int numFluidPhases()
Definition: porousmediumflow/1p/model.hh:62
static constexpr int numFluidComponents()
Definition: porousmediumflow/1p/model.hh:63
static constexpr bool enableThermalDispersion()
Definition: porousmediumflow/1p/model.hh:68
static constexpr bool enableEnergyBalance()
Definition: porousmediumflow/1p/model.hh:67
Traits class for the volume variables of the single-phase model.
Definition: porousmediumflow/1p/model.hh:83
SST SolidState
Definition: porousmediumflow/1p/model.hh:88
SSY SolidSystem
Definition: porousmediumflow/1p/model.hh:87
MT ModelTraits
Definition: porousmediumflow/1p/model.hh:90
PT PermeabilityType
Definition: porousmediumflow/1p/model.hh:89
FSY FluidSystem
Definition: porousmediumflow/1p/model.hh:85
FST FluidState
Definition: porousmediumflow/1p/model.hh:86
PV PrimaryVariables
Definition: porousmediumflow/1p/model.hh:84
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition: porousmediumflow/nonisothermal/model.hh:76
GetPropType< TypeTag, Properties::BaseModelTraits > type
Definition: porousmediumflow/1p/model.hh:113
The type tags for the isothermal single phase model.
Definition: porousmediumflow/1p/model.hh:97
std::tuple< PorousMediumFlow > InheritsFrom
Definition: porousmediumflow/1p/model.hh:97
The type tags for the non-isothermal single phase model.
Definition: porousmediumflow/1p/model.hh:100
std::tuple< OneP > InheritsFrom
Definition: porousmediumflow/1p/model.hh:100