3.1-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
porousmediumflow/1pnc/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 *****************************************************************************/
56
57#ifndef DUMUX_1PNC_MODEL_HH
58#define DUMUX_1PNC_MODEL_HH
59
61
64
74
75#include "indices.hh"
76#include "volumevariables.hh"
77#include "iofields.hh"
78
79namespace Dumux {
80
88template<int nComp, bool useM, int repCompEqIdx = nComp>
90{
92
93 static constexpr int numEq() { return nComp; }
94 static constexpr int numFluidPhases() { return 1; }
95 static constexpr int numFluidComponents() { return nComp; }
96 static constexpr int replaceCompEqIdx() { return repCompEqIdx; }
97
98 static constexpr bool useMoles() { return useM; }
99 static constexpr bool enableAdvection() { return true; }
100 static constexpr bool enableMolecularDiffusion() { return true; }
101 static constexpr bool enableEnergyBalance() { return false; }
102};
103
114template<class PV, class FSY, class FST, class SSY, class SST, class PT, class MT>
116{
118 using FluidSystem = FSY;
119 using FluidState = FST;
120 using SolidSystem = SSY;
121 using SolidState = SST;
123 using ModelTraits = MT;
124};
125
126namespace Properties {
127
129// Type tags
131
133// Create new type tags
134namespace TTag {
135struct OnePNC { using InheritsFrom = std::tuple<PorousMediumFlow>; };
136struct OnePNCNI { using InheritsFrom = std::tuple<OnePNC>; };
137} // end namespace TTag
138
140// Properties for the isothermal single phase model
142
144template<class TypeTag>
146
148template<class TypeTag>
156template<class TypeTag>
158
166template<class TypeTag>
167struct FluidState<TypeTag, TTag::OnePNC>
168{
169private:
173public:
175};
176
178template<class TypeTag>
181
183template<class TypeTag>
184struct UseMoles<TypeTag, TTag::OnePNC> { static constexpr bool value = true; };
185
187template<class TypeTag>
188struct LocalResidual<TypeTag, TTag::OnePNC> { using type = CompositionalLocalResidual<TypeTag>; };
189
191template<class TypeTag>
192struct VolumeVariables<TypeTag, TTag::OnePNC>
193{
194private:
202 static_assert(FSY::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid system");
203 static_assert(FST::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid state");
204 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
205 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
206
208public:
210};
211
213template<class TypeTag>
214struct IOFields<TypeTag, TTag::OnePNC> { using type = OnePNCIOFields; };
215
217// Properties for the non-isothermal single phase model
219
221template<class TypeTag>
222struct IOFields<TypeTag, TTag::OnePNCNI> { using type = EnergyIOFields<OnePNCIOFields>; };
223
225template<class TypeTag>
228
230template<class TypeTag>
231struct ModelTraits<TypeTag, TTag::OnePNCNI>
232{
233private:
235public:
237};
238
239} // end namespace Properties
240
241template<class OnePNCModelTraits>
243{
244 static constexpr int numConstraintEq() { return 0; }
245};
246
247namespace Properties {
249// Type tags
251namespace TTag {
252struct OnePNCNonEquil { using InheritsFrom = std::tuple<NonEquilibrium, OnePNC>; };
253} // end namespace TTag
254
255
257// Properties for the non-equilibrium OnePNC model
259
260template<class TypeTag>
261struct EquilibriumLocalResidual<TypeTag, TTag::OnePNCNonEquil> { using type = CompositionalLocalResidual<TypeTag>; };
262
264template<class TypeTag>
265struct EquilibriumIOFields<TypeTag, TTag::OnePNCNonEquil> { using type = OnePNCIOFields; };
266
267template<class TypeTag>
268struct ModelTraits<TypeTag, TTag::OnePNCNonEquil>
269{
270private:
272 static constexpr bool enableTNE = getPropValue<TypeTag, Properties::EnableThermalNonEquilibrium>();
273 static constexpr bool enableCNE = getPropValue<TypeTag, Properties::EnableChemicalNonEquilibrium>();
274 static constexpr int numEF = getPropValue<TypeTag, Properties::NumEnergyEqFluid>();
275 static constexpr int numES = getPropValue<TypeTag, Properties::NumEnergyEqSolid>();
278
280public:
281 using type = NonEquilTraits;
282};
283
284// by default chemical non equilibrium is enabled in the nonequil model, switch that off here
285template<class TypeTag>
286struct EnableChemicalNonEquilibrium<TypeTag, TTag::OnePNCNonEquil> { static constexpr bool value = false; };
287
289template<class TypeTag>
298
300template<class TypeTag>
301struct ThermalConductivityModel<TypeTag, TTag::OnePNCNonEquil>
302{
303private:
305public:
307};
308
310template<class TypeTag>
327
328} // end namespace Properties
329} // end namespace Dumux
330
331#endif
Reation for a simple effective thermal conductivity.
Relation for the saturation-dependent effective diffusion coefficient.
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
make the local view function available whenever we use the grid geometry
Definition adapt.hh:29
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:153
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
NonEquilibriumVolumeVariablesImplementation< Traits, EquilibriumVolumeVariables, Traits::ModelTraits::enableChemicalNonEquilibrium(), Traits::ModelTraits::enableThermalNonEquilibrium(), Traits::ModelTraits::numEnergyEqFluid()> NonEquilibriumVolumeVariables
Definition porousmediumflow/nonequilibrium/volumevariables.hh:52
Definition common/properties.hh:47
Type tag for numeric models.
Definition grid.hh:35
Traits class encapsulating model specifications.
Definition common/properties.hh:65
Model traits to be used as a base for nonisothermal, mineralization ... models.
Definition common/properties.hh:67
A class helping models to define input and output fields.
Definition common/properties.hh:78
Definition common/properties.hh:91
Property whether to use moles or kg as amount unit for balance equations.
Definition common/properties.hh:102
The component balance index that should be replaced by the total mass/mole balance.
Definition common/properties.hh:104
The secondary variables within a sub-control volume.
Definition common/properties.hh:174
The type of the fluid state to use.
Definition common/properties.hh:225
The employed model for the computation of the effective diffusivity.
Definition common/properties.hh:231
Model to be used for the calculation of the effective conductivity.
Definition common/properties.hh:233
the formulation of the pressure e.g most wetting first
Definition common/properties.hh:318
Definition common/properties.hh:320
Definition common/properties.hh:324
Definition common/properties.hh:330
Relation for a simple effective thermal conductivity.
Definition thermalconductivityaverage.hh:37
Relation for the saturation-dependent effective diffusion coefficient.
Definition diffusivitymillingtonquirk.hh:51
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
Definition compositional.hh:47
The indices for the isothermal one-phase n-component model.
Definition porousmediumflow/1pnc/indices.hh:38
Adds I/O fields specific to the OnePNC model.
Definition dumux/porousmediumflow/1pnc/iofields.hh:38
Specifies a number properties of models that consider a single-phase with multiple components.
Definition porousmediumflow/1pnc/model.hh:90
static constexpr bool enableEnergyBalance()
Definition porousmediumflow/1pnc/model.hh:101
OnePNCIndices Indices
Definition porousmediumflow/1pnc/model.hh:91
static constexpr bool useMoles()
Definition porousmediumflow/1pnc/model.hh:98
static constexpr int numFluidPhases()
Definition porousmediumflow/1pnc/model.hh:94
static constexpr bool enableMolecularDiffusion()
Definition porousmediumflow/1pnc/model.hh:100
static constexpr int numFluidComponents()
Definition porousmediumflow/1pnc/model.hh:95
static constexpr bool enableAdvection()
Definition porousmediumflow/1pnc/model.hh:99
static constexpr int numEq()
Definition porousmediumflow/1pnc/model.hh:93
static constexpr int replaceCompEqIdx()
Definition porousmediumflow/1pnc/model.hh:96
Traits class for the volume variables of the single-phase model.
Definition porousmediumflow/1pnc/model.hh:116
SST SolidState
Definition porousmediumflow/1pnc/model.hh:121
FST FluidState
Definition porousmediumflow/1pnc/model.hh:119
FSY FluidSystem
Definition porousmediumflow/1pnc/model.hh:118
SSY SolidSystem
Definition porousmediumflow/1pnc/model.hh:120
PT PermeabilityType
Definition porousmediumflow/1pnc/model.hh:122
PV PrimaryVariables
Definition porousmediumflow/1pnc/model.hh:117
MT ModelTraits
Definition porousmediumflow/1pnc/model.hh:123
Definition porousmediumflow/1pnc/model.hh:135
std::tuple< PorousMediumFlow > InheritsFrom
Definition porousmediumflow/1pnc/model.hh:135
Definition porousmediumflow/1pnc/model.hh:136
std::tuple< OnePNC > InheritsFrom
Definition porousmediumflow/1pnc/model.hh:136
static constexpr int value
Definition porousmediumflow/1pnc/model.hh:145
OnePNCModelTraits< FluidSystem::numComponents, getPropValue< TypeTag, Properties::UseMoles >(), getPropValue< TypeTag, Properties::ReplaceCompEqIdx >()> type
Definition porousmediumflow/1pnc/model.hh:154
GetPropType< TypeTag, Properties::BaseModelTraits > type
Definition porousmediumflow/1pnc/model.hh:157
CompositionalFluidState< Scalar, FluidSystem > type
Definition porousmediumflow/1pnc/model.hh:174
DiffusivityMillingtonQuirk< GetPropType< TypeTag, Properties::Scalar > > type
Definition porousmediumflow/1pnc/model.hh:180
static constexpr bool value
Definition porousmediumflow/1pnc/model.hh:184
CompositionalLocalResidual< TypeTag > type
Definition porousmediumflow/1pnc/model.hh:188
OnePNCVolumeVariables< Traits > type
Definition porousmediumflow/1pnc/model.hh:209
OnePNCIOFields type
Definition porousmediumflow/1pnc/model.hh:214
EnergyIOFields< OnePNCIOFields > type
Definition porousmediumflow/1pnc/model.hh:222
ThermalConductivityAverage< GetPropType< TypeTag, Properties::Scalar > > type
Definition porousmediumflow/1pnc/model.hh:227
PorousMediumFlowNIModelTraits< IsothermalTraits > type
Definition porousmediumflow/1pnc/model.hh:236
Definition porousmediumflow/1pnc/model.hh:243
static constexpr int numConstraintEq()
Definition porousmediumflow/1pnc/model.hh:244
Definition porousmediumflow/1pnc/model.hh:252
std::tuple< NonEquilibrium, OnePNC > InheritsFrom
Definition porousmediumflow/1pnc/model.hh:252
CompositionalLocalResidual< TypeTag > type
Definition porousmediumflow/1pnc/model.hh:261
OnePNCIOFields type
Definition porousmediumflow/1pnc/model.hh:265
NonEquilTraits type
Definition porousmediumflow/1pnc/model.hh:281
static constexpr bool value
Definition porousmediumflow/1pnc/model.hh:286
OnePNCUnconstrainedModelTraits< EquilibriumTraits > type
Definition porousmediumflow/1pnc/model.hh:296
ThermalConductivityAverage< Scalar > type
Definition porousmediumflow/1pnc/model.hh:306
NonEquilibriumVolumeVariables< Traits, EquilibriumVolVars > type
Definition porousmediumflow/1pnc/model.hh:325
Contains the quantities which are are constant within a finite volume in the one-phase,...
Definition porousmediumflow/1pnc/volumevariables.hh:50
Element-wise calculation of the local residual for problems using compositional fully implicit model.
Definition porousmediumflow/compositional/localresidual.hh:43
Specifies a number properties of porous-medium flow non-equilibrium models.
Definition porousmediumflow/nonequilibrium/model.hh:58
Adds I/O fields specific to non-isothermal models.
Definition dumux/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.
A single-phase, isothermal flow model using the fully implicit scheme.
This specifies models which are able to capture non-equilibrium mass and / or energy transfer.
The implicit non-isothermal model.
Defines the primary variable and equation indices used by the 1pnc model.
Defines the indices used by the non-isothermal two-phase two-component model.
Adds I/O fields specific to the OnePNC model.
Adds I/O fields specific to non-isothermal models.
Element-wise calculation of the local residual for problems using compositional fully implicit model.
Quantities required by the single-phase, n-component box model defined on a vertex.
This class contains the volume variables required for the modules which require the specific interfac...