version 3.11-dev
Loading...
Searching...
No Matches
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-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
32
33#ifndef DUMUX_1P_MODEL_HH
34#define DUMUX_1P_MODEL_HH
35
36#include <type_traits>
37
39
42
45#include <dumux/porousmediumflow/immiscible/localresidual_.hh>
46#include <dumux/flux/cvfe/darcyslaw_.hh>
50
51#include "indices.hh"
52#include "volumevariables.hh"
53#include "variables.hh"
54#include "iofields.hh"
55
56namespace Dumux {
57
63{
66
67 static constexpr int numEq() { return 1; }
68 static constexpr int numFluidPhases() { return 1; }
69 static constexpr int numFluidComponents() { return 1; }
70
71 static constexpr bool enableAdvection() { return true; }
72 static constexpr bool enableMolecularDiffusion() { return false; }
73 static constexpr bool enableEnergyBalance() { return false; }
74 static constexpr bool enableThermalDispersion() { return false; }
75};
76
87template<class PV, class FSY, class FST, class SSY, class SST, class PT, class MT>
89{
90 using PrimaryVariables = PV;
91 using FluidSystem = FSY;
92 using FluidState = FST;
93 using SolidSystem = SSY;
94 using SolidState = SST;
95 using PermeabilityType = PT;
96 using ModelTraits = MT;
97};
98
99namespace Properties {
100// Create new type tags
101namespace TTag {
103struct OneP { using InheritsFrom = std::tuple<PorousMediumFlow>; };
104
106struct OnePNI { using InheritsFrom = std::tuple<OneP>; };
107} // end namespace TTag
108
110// Properties for the isothermal single phase model
112template<class TypeTag>
113struct IOFields<TypeTag, TTag::OneP> { using type = OnePIOFields; };
115template<class TypeTag>
116struct LocalResidual<TypeTag, TTag::OneP>
117{
118 using type = std::conditional_t<Dumux::Detail::usesVariables<TypeTag>(),
119 Experimental::ImmiscibleLocalResidual<TypeTag>,
121};
122template<class TypeTag>
123struct BaseModelTraits<TypeTag, TTag::OneP> { using type = OnePModelTraits; };
124template<class TypeTag>
125struct ModelTraits<TypeTag, TTag::OneP> { using type = GetPropType<TypeTag, Properties::BaseModelTraits>; };
126
128template<class TypeTag>
144
146template<class TypeTag>
162
164template<class TypeTag>
165struct AdvectionType<TypeTag, TTag::OneP>
166{
167 using type = std::conditional_t<Dumux::Detail::usesVariables<TypeTag>(),
168 Experimental::CVFEDarcysLawAtIp<GetPropType<TypeTag, Properties::Scalar>,
171};
172
180template<class TypeTag>
181struct FluidState<TypeTag, TTag::OneP>
182{
183private:
186public:
188};
189
191// Properties for the non-isothermal single phase model
193
195template<class TypeTag>
196struct IOFields<TypeTag, TTag::OnePNI> { using type = EnergyIOFields<OnePIOFields>; };
197
199template<class TypeTag>
200struct ModelTraits<TypeTag, TTag::OnePNI> { using type = PorousMediumFlowNIModelTraits<OnePModelTraits>; };
201
203template<class TypeTag>
204struct VolumeVariables<TypeTag, TTag::OnePNI>
205{
206private:
215
217 template<class BaseTraits, class ETCM>
218 struct NITraits : public BaseTraits { using EffectiveThermalConductivityModel = ETCM; };
219
220public:
222};
223
225template<class TypeTag>
226struct ThermalConductivityModel<TypeTag, TTag::OnePNI>
228
229} // end namespace Properties
230} // end namespace Dumux
231
232#endif
Adds I/O fields specific to non-isothermal models.
Definition porousmediumflow/nonisothermal/iofields.hh:27
Variables for the single-phase porous medium flow model.
Definition porousmediumflow/1p/variables.hh:29
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:30
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:49
Defines all properties used in Dumux.
Grid variables with the variables cache selected depending on the element discretization.
DarcysLawImplementation< TypeTag, typename GetPropType< TypeTag, Properties::GridGeometry >::DiscretizationMethod > DarcysLaw
Evaluates the normal component of the Darcy velocity on a (sub)control volume face.
Definition darcyslaw_fwd.hh:34
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
Definition adapt.hh:17
Defines the indices for the one-phase fully implicit model.
Adds I/O fields specific to the one phase model.
Variables for the single-phase porous medium flow model.
Class to encapsulate the quantities required by the single-phase porous medium flow model per sub-con...
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.
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:63
static constexpr bool enableAdvection()
Definition porousmediumflow/1p/model.hh:71
static constexpr bool enableMolecularDiffusion()
Definition porousmediumflow/1p/model.hh:72
static constexpr int numEq()
Definition porousmediumflow/1p/model.hh:67
static constexpr int numFluidPhases()
Definition porousmediumflow/1p/model.hh:68
static constexpr int numFluidComponents()
Definition porousmediumflow/1p/model.hh:69
OnePIndices<> Indices
Per default, we use the indices without offset.
Definition porousmediumflow/1p/model.hh:65
static constexpr bool enableThermalDispersion()
Definition porousmediumflow/1p/model.hh:74
static constexpr bool enableEnergyBalance()
Definition porousmediumflow/1p/model.hh:73
Traits class for the volume variables of the single-phase model.
Definition porousmediumflow/1p/model.hh:89
SST SolidState
Definition porousmediumflow/1p/model.hh:94
SSY SolidSystem
Definition porousmediumflow/1p/model.hh:93
MT ModelTraits
Definition porousmediumflow/1p/model.hh:96
PT PermeabilityType
Definition porousmediumflow/1p/model.hh:95
FSY FluidSystem
Definition porousmediumflow/1p/model.hh:91
FST FluidState
Definition porousmediumflow/1p/model.hh:92
PV PrimaryVariables
Definition porousmediumflow/1p/model.hh:90
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition porousmediumflow/nonisothermal/model.hh:76
std::conditional_t< Dumux::Detail::usesVariables< TypeTag >(), Experimental::CVFEDarcysLawAtIp< GetPropType< TypeTag, Properties::Scalar >, GetPropType< TypeTag, Properties::GridGeometry > >, DarcysLaw< TypeTag > > type
Definition porousmediumflow/1p/model.hh:167
OnePModelTraits type
Definition porousmediumflow/1p/model.hh:123
ImmiscibleFluidState< Scalar, FluidSystem > type
Definition porousmediumflow/1p/model.hh:187
OnePIOFields type
Definition porousmediumflow/1p/model.hh:113
EnergyIOFields< OnePIOFields > type
Definition porousmediumflow/1p/model.hh:196
std::conditional_t< Dumux::Detail::usesVariables< TypeTag >(), Experimental::ImmiscibleLocalResidual< TypeTag >, ImmiscibleLocalResidual< TypeTag > > type
Definition porousmediumflow/1p/model.hh:118
GetPropType< TypeTag, Properties::BaseModelTraits > type
Definition porousmediumflow/1p/model.hh:125
PorousMediumFlowNIModelTraits< OnePModelTraits > type
Definition porousmediumflow/1p/model.hh:200
The type tags for the isothermal single phase model.
Definition porousmediumflow/1p/model.hh:103
std::tuple< PorousMediumFlow > InheritsFrom
Definition porousmediumflow/1p/model.hh:103
The type tags for the non-isothermal single phase model.
Definition porousmediumflow/1p/model.hh:106
std::tuple< OneP > InheritsFrom
Definition porousmediumflow/1p/model.hh:106
ThermalConductivityAverage< GetPropType< TypeTag, Properties::Scalar > > type
Definition porousmediumflow/1p/model.hh:227
Experimental::OnePVariables< Traits > type
Definition porousmediumflow/1p/model.hh:160
OnePVolumeVariables< Traits > type
Definition porousmediumflow/1p/model.hh:142
OnePVolumeVariables< NITraits< BaseTraits, ETCM > > type
Definition porousmediumflow/1p/model.hh:221
Effective thermal conductivity based on weighted arithmetic average.