3.1-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
porousmediumflow/nonequilibrium/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 *****************************************************************************/
24
25#ifndef DUMUX_NONEQUILIBRIUM_MODEL_HH
26#define DUMUX_NONEQUILIBRIUM_MODEL_HH
27
31
36
37#include "localresidual.hh"
38#include "indices.hh"
39#include "gridvariables.hh"
40#include "iofields.hh"
41
42namespace Dumux {
43
56template<class ET, bool chem, bool therm, int numEF, int numES, NusseltFormulation nf, SherwoodFormulation sf>
57struct NonEquilibriumModelTraits : public ET
58{
59 static constexpr int numEq() { return numEnergyEqFluid()+numEnergyEqSolid()+numTransportEq()+ET::numConstraintEq(); }
60 static constexpr int numTransportEq() { return chem ? ET::numFluidPhases()*ET::numFluidComponents() : ET::numFluidComponents(); }
61
62 static constexpr int numEnergyEqFluid() { return therm ? numEF : 0; }
63 static constexpr int numEnergyEqSolid() { return therm ? numES : 0; }
64 static constexpr int numEnergyEq() { return numEnergyEqFluid()+numEnergyEqSolid(); }
65 static constexpr int numSolidComps() {return ET::SolidSystem::numComponents(); }
66
67 static constexpr bool enableEnergyBalance() { return ET::enableEnergyBalance() || therm; }
68 static constexpr bool enableThermalNonEquilibrium() { return therm; }
69 static constexpr bool enableChemicalNonEquilibrium() { return chem; }
70
71 static constexpr NusseltFormulation nusseltFormulation() { return nf; }
72 static constexpr SherwoodFormulation sherwoodFormulation() { return sf; }
73
74 static_assert(!(ET::enableEnergyBalance() && therm), "It is not possible to use a nonisothermal model assuming local thermal equilibrium in combination with a model using thermal non-equilibrium");
75
76 using Indices = NonEquilbriumIndices<typename ET::Indices, numEnergyEqFluid(), numEnergyEqSolid(), numEq()>;
77};
78
79namespace Properties
80{
81
83// Type tags
85namespace TTag {
87}
88
90// Properties for the non-equilibrium mpnc model
92
94template<class TypeTag>
108
110template<class TypeTag>
111struct EnableThermalNonEquilibrium<TypeTag, TTag::NonEquilibrium> { static constexpr bool value = true; };
112template<class TypeTag>
113struct EnableChemicalNonEquilibrium<TypeTag, TTag::NonEquilibrium> { static constexpr bool value = true; };
114
116template<class TypeTag>
117struct NumEnergyEqSolid<TypeTag, TTag::NonEquilibrium> { static constexpr int value = 1; };
118template<class TypeTag>
120
121template<class TypeTag>
123template<class TypeTag>
124struct LocalResidual<TypeTag, TTag::NonEquilibrium> { using type = NonEquilibriumLocalResidual<TypeTag>; };
125template<class TypeTag>
126struct HeatConductionType<TypeTag, TTag::NonEquilibrium> { using type = FouriersLawNonEquilibrium<TypeTag>; };
127
128template<class TypeTag>
129struct FluidState<TypeTag, TTag::NonEquilibrium>
130{
131private:
134public:
136};
137
139template<class TypeTag>
140struct GridVariables<TypeTag, TTag::NonEquilibrium> { using type = NonEquilibriumGridVariables<TypeTag>; };
141
143template<class TypeTag>
144struct IOFields<TypeTag, TTag::NonEquilibrium>
145{
146private:
149public:
151};
152
153template<class TypeTag>
154struct NusseltFormulation<TypeTag, TTag::NonEquilibrium>
155{
156public:
158};
159
164template<class TypeTag>
165struct SherwoodFormulation<TypeTag, TTag::NonEquilibrium>
166{
167public:
169};
170
171} //end namespace Properties
172} //end namespace Dumux
173
174#endif
Collection of functions, calculating dimensionless numbers.
This file contains the data which is required to calculate diffusive mass fluxes due to molecular dif...
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system witho...
FouriersLawNonEquilibriumImplementation< TypeTag, GetPropType< TypeTag, Properties::GridGeometry >::discMethod > FouriersLawNonEquilibrium
Evaluates the heat conduction flux according to Fouriers's law.
Definition fourierslawnonequilibrium.hh:43
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
NusseltFormulation
A container for possible values of the property for selecting which nusselt parametrization to choose...
Definition dimensionlessnumbers.hh:42
@ WakaoKaguei
Definition dimensionlessnumbers.hh:43
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
SherwoodFormulation
A container for possible values of the property for selecting which sherwood parametrization to choos...
Definition dimensionlessnumbers.hh:51
@ WakaoKaguei
Definition dimensionlessnumbers.hh:52
NonEquilibriumLocalResidualImplementation< TypeTag, GetPropType< TypeTag, Properties::ModelTraits >::enableChemicalNonEquilibrium()> NonEquilibriumLocalResidual
Definition porousmediumflow/nonequilibrium/localresidual.hh:39
NonEquilibriumIOFieldsImplementation< ModelTraits, EquilibriumIOFields, ModelTraits::enableThermalNonEquilibrium()> NonEquilibriumIOFields
Definition dumux/porousmediumflow/nonequilibrium/iofields.hh:36
Definition common/properties.hh:47
Type tag for numeric models.
Definition grid.hh:35
Traits class encapsulating model specifications.
Definition common/properties.hh:65
A class helping models to define input and output fields.
Definition common/properties.hh:78
Definition common/properties.hh:91
The grid variables object managing variable data on the grid (volvars/fluxvars cache).
Definition common/properties.hh:190
The local residual of the energy equation.
Definition common/properties.hh:206
The type for the calculation of the heat conduction fluxes.
Definition common/properties.hh:216
The type of the fluid state to use.
Definition common/properties.hh:225
Definition common/properties.hh:328
Definition common/properties.hh:330
Definition common/properties.hh:332
Definition common/properties.hh:334
Definition common/properties.hh:337
Definition common/properties.hh:339
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system witho...
Definition nonequilibrium.hh:43
This class stores the velocities which are used to compute Reynolds numbers for the source terms of n...
Definition porousmediumflow/nonequilibrium/gridvariables.hh:50
The primary variable and equation indices for the MpNc model.
Definition porousmediumflow/nonequilibrium/indices.hh:36
Specifies a number properties of porous-medium flow non-equilibrium models.
Definition porousmediumflow/nonequilibrium/model.hh:58
static constexpr NusseltFormulation nusseltFormulation()
Definition porousmediumflow/nonequilibrium/model.hh:71
static constexpr bool enableEnergyBalance()
Definition porousmediumflow/nonequilibrium/model.hh:67
static constexpr SherwoodFormulation sherwoodFormulation()
Definition porousmediumflow/nonequilibrium/model.hh:72
static constexpr int numSolidComps()
Definition porousmediumflow/nonequilibrium/model.hh:65
static constexpr int numTransportEq()
Definition porousmediumflow/nonequilibrium/model.hh:60
static constexpr int numEq()
Definition porousmediumflow/nonequilibrium/model.hh:59
static constexpr bool enableChemicalNonEquilibrium()
Definition porousmediumflow/nonequilibrium/model.hh:69
static constexpr int numEnergyEqFluid()
Definition porousmediumflow/nonequilibrium/model.hh:62
static constexpr int numEnergyEq()
Definition porousmediumflow/nonequilibrium/model.hh:64
NonEquilbriumIndices< typename EquiTraits::Indices, numEnergyEqFluid(), numEnergyEqSolid(), numEq()> Indices
Definition porousmediumflow/nonequilibrium/model.hh:76
static constexpr int numEnergyEqSolid()
Definition porousmediumflow/nonequilibrium/model.hh:63
static constexpr bool enableThermalNonEquilibrium()
Definition porousmediumflow/nonequilibrium/model.hh:68
Definition porousmediumflow/nonequilibrium/model.hh:86
NonEquilibriumModelTraits< EquiTraits, enableCNE, enableTNE, numEF, numES, nf, ns > type
Definition porousmediumflow/nonequilibrium/model.hh:106
static constexpr bool value
Definition porousmediumflow/nonequilibrium/model.hh:111
static constexpr bool value
Definition porousmediumflow/nonequilibrium/model.hh:113
static constexpr int value
Definition porousmediumflow/nonequilibrium/model.hh:117
static constexpr int value
Definition porousmediumflow/nonequilibrium/model.hh:119
EnergyLocalResidualNonEquilibrium< TypeTag, getPropValue< TypeTag, Properties::NumEnergyEqFluid >()> type
Definition porousmediumflow/nonequilibrium/model.hh:122
NonEquilibriumLocalResidual< TypeTag > type
Definition porousmediumflow/nonequilibrium/model.hh:124
FouriersLawNonEquilibrium< TypeTag > type
Definition porousmediumflow/nonequilibrium/model.hh:126
NonEquilibriumFluidState< Scalar, FluidSystem > type
Definition porousmediumflow/nonequilibrium/model.hh:135
NonEquilibriumGridVariables< TypeTag > type
Definition porousmediumflow/nonequilibrium/model.hh:140
NonEquilibriumIOFields< ModelTraits, EquilibriumIOFields > type
Definition porousmediumflow/nonequilibrium/model.hh:150
static constexpr Dumux::NusseltFormulation value
Definition porousmediumflow/nonequilibrium/model.hh:157
static constexpr Dumux::SherwoodFormulation value
Definition porousmediumflow/nonequilibrium/model.hh:168
This file contains the parts of the local residual to calculate the heat conservation in the thermal ...
Definition porousmediumflow/nonequilibrium/thermal/localresidual.hh:43
Declares all properties used in Dumux.
Class storing scv and scvf variables.
The primary variable and equation indices for the MpNc model.
Adds I/O fields specific to non-equilibrium models.
The local residual for the kinetic mass transfer module of the compositional multi-phase model.
This file contains the parts of the local residual to calculate the heat conservation in the thermal ...