version 3.7
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//
49#ifndef DUMUX_1PNCMIN_MODEL_HH
50#define DUMUX_1PNCMIN_MODEL_HH
51
55
57
62
66
67namespace Dumux {
68namespace Properties {
70// Type tags
72// Create new type tags
73namespace TTag {
74struct OnePNCMin { using InheritsFrom = std::tuple<OnePNC>; };
75struct OnePNCMinNI { using InheritsFrom = std::tuple<OnePNCMin>; };
76} // end namespace TTag
77
79// Property tags for the isothermal 1pncmin model
81
83template<class TypeTag>
84struct VolumeVariables<TypeTag, TTag::OnePNCMin>
85{
86private:
94 static_assert(FSY::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid system");
95 static_assert(FST::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid state");
96 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
97 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
99
103 template<class BaseTraits, class CDM, class DT, class EDM>
104 struct NCTraits : public BaseTraits
105 {
106 using CompositionalDispersionModel = CDM;
107 using DiffusionType = DT;
108 using EffectiveDiffusivityModel = EDM;
109 };
110
112public:
114};
115
116// Use the mineralization local residual
117template<class TypeTag>
118struct LocalResidual<TypeTag, TTag::OnePNCMin> { using type = MineralizationLocalResidual<TypeTag>; };
119
121template<class TypeTag>
122struct ModelTraits<TypeTag, TTag::OnePNCMin>
123{
124private:
127public:
129};
130
132template<class TypeTag>
133struct SolidState<TypeTag, TTag::OnePNCMin>
134{
135private:
138public:
140};
141
143template<class TypeTag>
144struct IOFields<TypeTag, TTag::OnePNCMin> { using type = MineralizationIOFields<OnePNCIOFields>; };
145
147// Properties for the non-isothermal 1pncmin model
149
151template<class TypeTag>
152struct IOFields<TypeTag, TTag::OnePNCMinNI>
153{
156};
157
159template<class TypeTag>
160struct ModelTraits<TypeTag, TTag::OnePNCMinNI>
161{
162private:
166public:
168};
169
171template<class TypeTag>
172struct VolumeVariables<TypeTag, TTag::OnePNCMinNI>
173{
174private:
182 static_assert(FSY::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid system");
183 static_assert(FST::numComponents == MT::numFluidComponents(), "Number of components mismatch between model and fluid state");
184 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
185 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
187
192 template<class BaseTraits, class CDM, class DT, class EDM, class ETCM>
193 struct NCNITraits : public BaseTraits
194 {
195 using CompositionalDispersionModel = CDM;
196 using DiffusionType = DT;
197 using EffectiveDiffusivityModel = EDM;
198 using EffectiveThermalConductivityModel = ETCM;
199 };
201public:
203};
205template<class TypeTag>
206struct ThermalConductivityModel<TypeTag, TTag::OnePNCMinNI>
208
209} // end namespace Properties
210} // end namespace Dumux
211
212#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:267
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:38
Traits class for the volume variables of the single-phase model.
Definition: porousmediumflow/1p/model.hh:74
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition: porousmediumflow/nonisothermal/model.hh:58
Definition: porousmediumflow/1pncmin/model.hh:74
std::tuple< OnePNC > InheritsFrom
Definition: porousmediumflow/1pncmin/model.hh:74
Definition: porousmediumflow/1pncmin/model.hh:75
std::tuple< OnePNCMin > InheritsFrom
Definition: porousmediumflow/1pncmin/model.hh:75
Reation for a simple effective thermal conductivity.