version 3.8
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// SPDX-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
72#ifndef DUMUX_1PNCMIN_MODEL_HH
73#define DUMUX_1PNCMIN_MODEL_HH
74
78
80
85
89
90namespace Dumux {
91namespace Properties {
93// Type tags
95// Create new type tags
96namespace TTag {
97struct OnePNCMin { using InheritsFrom = std::tuple<OnePNC>; };
98struct OnePNCMinNI { using InheritsFrom = std::tuple<OnePNCMin>; };
99} // end namespace TTag
100
102// Property tags for the isothermal 1pncmin model
104
106template<class TypeTag>
107struct VolumeVariables<TypeTag, TTag::OnePNCMin>
108{
109private:
117 static_assert(FSY::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid system");
118 static_assert(FST::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid state");
119 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
120 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
122
126 template<class BaseTraits, class CDM, class DT, class EDM>
127 struct NCTraits : public BaseTraits
128 {
129 using CompositionalDispersionModel = CDM;
130 using DiffusionType = DT;
131 using EffectiveDiffusivityModel = EDM;
132 };
133
135public:
137};
138
139// Use the mineralization local residual
140template<class TypeTag>
141struct LocalResidual<TypeTag, TTag::OnePNCMin> { using type = MineralizationLocalResidual<TypeTag>; };
142
144template<class TypeTag>
145struct ModelTraits<TypeTag, TTag::OnePNCMin>
146{
147private:
150public:
152};
153
155template<class TypeTag>
156struct SolidState<TypeTag, TTag::OnePNCMin>
157{
158private:
161public:
163};
164
166template<class TypeTag>
167struct IOFields<TypeTag, TTag::OnePNCMin> { using type = MineralizationIOFields<OnePNCIOFields>; };
168
170// Properties for the non-isothermal 1pncmin model
172
174template<class TypeTag>
175struct IOFields<TypeTag, TTag::OnePNCMinNI>
176{
179};
180
182template<class TypeTag>
183struct ModelTraits<TypeTag, TTag::OnePNCMinNI>
184{
185private:
189public:
191};
192
194template<class TypeTag>
195struct VolumeVariables<TypeTag, TTag::OnePNCMinNI>
196{
197private:
205 static_assert(FSY::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid system");
206 static_assert(FST::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid state");
207 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
208 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
210
215 template<class BaseTraits, class CDM, class DT, class EDM, class ETCM>
216 struct NCNITraits : public BaseTraits
217 {
218 using CompositionalDispersionModel = CDM;
219 using DiffusionType = DT;
220 using EffectiveDiffusivityModel = EDM;
221 using EffectiveThermalConductivityModel = ETCM;
222 };
224public:
226};
228template<class TypeTag>
229struct ThermalConductivityModel<TypeTag, TTag::OnePNCMinNI>
231
232} // end namespace Properties
233} // end namespace Dumux
234
235#endif
Represents all relevant thermodynamic quantities of a compositional solid system.
Definition: compositionalsolidstate.hh:25
Adds I/O fields specific to non-isothermal models.
Definition: porousmediumflow/nonisothermal/iofields.hh:27
Adds I/O fields specific to a NCMin model.
Definition: porousmediumflow/mineralization/iofields.hh:27
Element-wise calculation of the local residual for problems using a one/two-phase n-component mineral...
Definition: porousmediumflow/mineralization/localresidual.hh:29
Contains the quantities which are are constant within a sub-control volume of the finite volume grid ...
Definition: porousmediumflow/mineralization/volumevariables.hh:26
Contains the quantities which are are constant within a finite volume in the one-phase,...
Definition: porousmediumflow/1pnc/volumevariables.hh:38
Relation for a simple effective thermal conductivity.
Definition: thermalconductivityaverage.hh:25
Represents all relevant thermodynamic quantities of a compositional solid system.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:296
Definition: adapt.hh:17
Defines the primary variable and equation indices used by the 1pnc model.
Adaption of the fully implicit model to the one-phase n-component flow model.
Quantities required by the single-phase, n-component box model defined on a vertex.
Adds I/O fields specific to the models considering mineralization processes.
Element-wise calculation of the local residual for problems using a compositional model that also con...
Defines the properties required for compositional porous medium flow models considering mineralizatio...
Contains the quantities which are constant within a sub-control volume of the finite volume grid in t...
Defines the indices used by the non-isothermal two-phase two-component model.
Adds I/O fields specific to non-isothermal models.
Specifies a number properties of models that consider mineralization processes.
Definition: porousmediumflow/mineralization/model.hh:45
Traits class for the volume variables of the single-phase model.
Definition: porousmediumflow/1p/model.hh:83
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition: porousmediumflow/nonisothermal/model.hh:71
Definition: porousmediumflow/1pncmin/model.hh:97
std::tuple< OnePNC > InheritsFrom
Definition: porousmediumflow/1pncmin/model.hh:97
Definition: porousmediumflow/1pncmin/model.hh:98
std::tuple< OnePNCMin > InheritsFrom
Definition: porousmediumflow/1pncmin/model.hh:98
Reation for a simple effective thermal conductivity.