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...
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.
Element-wise calculation of the local residual for problems using a compositional model that also con...
Adds I/O fields specific to the models considering mineralization processes.
Adds I/O fields specific to non-isothermal models.
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...