3.5-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
porousmediumflow/1pncmin/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 *****************************************************************************/
64#ifndef DUMUX_1PNCMIN_MODEL_HH
65#define DUMUX_1PNCMIN_MODEL_HH
66
70
72
77
81
82namespace Dumux {
83namespace Properties {
85// Type tags
87// Create new type tags
88namespace TTag {
89struct OnePNCMin { using InheritsFrom = std::tuple<OnePNC>; };
90struct OnePNCMinNI { using InheritsFrom = std::tuple<OnePNCMin>; };
91} // end namespace TTag
92
94// Property tags for the isothermal 1pncmin model
96
98template<class TypeTag>
99struct VolumeVariables<TypeTag, TTag::OnePNCMin>
100{
101private:
109 static_assert(FSY::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid system");
110 static_assert(FST::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid state");
111 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
112 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
114
118 template<class BaseTraits, class CDM, class DT, class EDM>
119 struct NCTraits : public BaseTraits
120 {
122 using DiffusionType = DT;
123 using EffectiveDiffusivityModel = EDM;
124 };
125
127public:
129};
130
131// Use the mineralization local residual
132template<class TypeTag>
133struct LocalResidual<TypeTag, TTag::OnePNCMin> { using type = MineralizationLocalResidual<TypeTag>; };
134
136template<class TypeTag>
137struct ModelTraits<TypeTag, TTag::OnePNCMin>
138{
139private:
142public:
144};
145
147template<class TypeTag>
148struct SolidState<TypeTag, TTag::OnePNCMin>
149{
150private:
153public:
155};
156
158template<class TypeTag>
159struct IOFields<TypeTag, TTag::OnePNCMin> { using type = MineralizationIOFields<OnePNCIOFields>; };
160
162// Properties for the non-isothermal 1pncmin model
164
166template<class TypeTag>
167struct IOFields<TypeTag, TTag::OnePNCMinNI>
168{
171};
172
174template<class TypeTag>
175struct ModelTraits<TypeTag, TTag::OnePNCMinNI>
176{
177private:
181public:
183};
184
186template<class TypeTag>
187struct VolumeVariables<TypeTag, TTag::OnePNCMinNI>
188{
189private:
197 static_assert(FSY::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid system");
198 static_assert(FST::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid state");
199 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
200 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
202
207 template<class BaseTraits, class CDM, class DT, class EDM, class ETCM>
208 struct NCNITraits : public BaseTraits
209 {
211 using DiffusionType = DT;
212 using EffectiveDiffusivityModel = EDM;
213 using EffectiveThermalConductivityModel = ETCM;
214 };
216public:
218};
220template<class TypeTag>
221struct ThermalConductivityModel<TypeTag, TTag::OnePNCMinNI>
223
224} // end namespace Properties
225} // end namespace Dumux
226
227#endif
Reation for a simple effective thermal conductivity.
Represents all relevant thermodynamic quantities of a compositional solid system.
Definition: adapt.hh:29
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:150
Traits class encapsulating model specifications.
Definition: common/properties.hh:53
A class helping models to define input and output fields.
Definition: common/properties.hh:63
Definition: common/properties.hh:74
The secondary variables within a sub-control volume.
Definition: common/properties.hh:107
The type for the calculation of the compositional dispersion tensor.
Definition: common/properties.hh:153
The type of the solid state to use.
Definition: common/properties.hh:168
The employed model for the computation of the effective diffusivity.
Definition: common/properties.hh:170
Model to be used for the calculation of the effective conductivity.
Definition: common/properties.hh:172
Relation for a simple effective thermal conductivity.
Definition: thermalconductivityaverage.hh:37
Represents all relevant thermodynamic quantities of a compositional solid system.
Definition: compositionalsolidstate.hh:37
Traits class for the volume variables of the single-phase model.
Definition: porousmediumflow/1p/model.hh:90
Contains the quantities which are are constant within a finite volume in the one-phase,...
Definition: porousmediumflow/1pnc/volumevariables.hh:50
Definition: porousmediumflow/1pncmin/model.hh:89
std::tuple< OnePNC > InheritsFrom
Definition: porousmediumflow/1pncmin/model.hh:89
Definition: porousmediumflow/1pncmin/model.hh:90
std::tuple< OnePNCMin > InheritsFrom
Definition: porousmediumflow/1pncmin/model.hh:90
Adds I/O fields specific to a NCMin model.
Definition: porousmediumflow/mineralization/iofields.hh:39
Element-wise calculation of the local residual for problems using a one/two-phase n-component mineral...
Definition: porousmediumflow/mineralization/localresidual.hh:41
Specifies a number properties of models that consider mineralization proceses.
Definition: porousmediumflow/mineralization/model.hh:50
Contains the quantities which are are constant within a sub-control volume of the finite volume grid ...
Definition: porousmediumflow/mineralization/volumevariables.hh:38
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
Adaption of the fully implicit model to the one-phase n-component flow model.
Defines the properties required for compositional porous medium flow models considering mineralizatio...
Adds I/O fields specific to the models considering mineralization processes.
Adds I/O fields specific to non-isothermal models.
Element-wise calculation of the local residual for problems using a compositional model that also con...
Quantities required by the single-phase, n-component box model defined on a vertex.
Contains the quantities which are constant within a sub-control volume of the finite volume grid in t...
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.