60#ifndef DUMUX_2P2C_MODEL_HH
61#define DUMUX_2P2C_MODEL_HH
99template<
class TypeTag>
100struct BaseModelTraits<TypeTag, TTag::TwoPTwoC>
104 static_assert(FluidSystem::numComponents == 2,
"Only fluid systems with 2 components are supported by the 2p-2c model!");
105 static_assert(FluidSystem::numPhases == 2,
"Only fluid systems with 2 phases are supported by the 2p-2c model!");
109 getPropValue<TypeTag, Properties::UseMoles>(),
111 getPropValue<TypeTag, Properties::Formulation>(),
112 getPropValue<TypeTag, Properties::ReplaceCompEqIdx>()>;
114template<
class TypeTag>
118template<
class TypeTag>
119struct VolumeVariables<TypeTag, TTag::TwoPTwoC>
130 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
131 static_assert(FSY::numComponents == 2,
"Only fluid systems with 2 components are supported by the 2p2c model!");
132 static_assert(FSY::numPhases == 2,
"Only fluid systems with 2 phases are supported by the 2p2c model!");
139 template<
class BaseTraits,
class DT,
class EDM>
142 using DiffusionType = DT;
143 using EffectiveDiffusivityModel = EDM;
145 static constexpr bool useConstraintSolver = getPropValue<TypeTag, Properties::UseConstraintSolver>();
151template<
class TypeTag>
152struct UseConstraintSolver<TypeTag, TTag::TwoPTwoC> {
static constexpr bool value =
true; };
159template<
class TypeTag>
160struct ModelTraits<TypeTag, TTag::TwoPTwoCNI>
169template<
class TypeTag>
170struct VolumeVariables<TypeTag, TTag::TwoPTwoCNI>
181 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
190 template<
class BaseTraits,
class DT,
class EDM,
class ETCM>
193 using DiffusionType = DT;
194 using EffectiveDiffusivityModel = EDM;
195 using EffectiveThermalConductivityModel = ETCM;
203template<
class TypeTag>
207template<
class TypeTag>
212template<
class TwoPTwoCModelTraits>
218namespace Properties {
230template<
class TypeTag>
234template<
class TypeTag>
237template<
class TypeTag>
238struct ModelTraits<TypeTag, TTag::TwoPTwoCNonEquil>
242 static constexpr bool enableTNE = getPropValue<TypeTag, Properties::EnableThermalNonEquilibrium>();
243 static constexpr bool enableCNE = getPropValue<TypeTag, Properties::EnableChemicalNonEquilibrium>();
244 static constexpr int numEF = getPropValue<TypeTag, Properties::NumEnergyEqFluid>();
245 static constexpr int numES = getPropValue<TypeTag, Properties::NumEnergyEqSolid>();
246 static constexpr auto nf = getPropValue<TypeTag, Properties::NusseltFormulation>();
247 static constexpr auto ns = getPropValue<TypeTag, Properties::SherwoodFormulation>();
255template<
class TypeTag>
256struct EquilibriumModelTraits<TypeTag, TTag::TwoPTwoCNonEquil>
267template<
class TypeTag>
268struct ThermalConductivityModel<TypeTag, TTag::TwoPTwoCNonEquil>
272template<
class TypeTag>
273struct VolumeVariables<TypeTag, TTag::TwoPTwoCNonEquil>
284 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
291 template<
class BaseTraits,
class DT,
class EDM>
294 using DiffusionType = DT;
295 using EffectiveDiffusivityModel = EDM;
298 static constexpr bool useConstraintSolver = getPropValue<TypeTag, Properties::UseConstraintSolver>();
313template<
class TypeTag>
314struct ModelTraits<TypeTag, TTag::TwoPTwoCNINonEquil>
319 static constexpr bool enableTNE = getPropValue<TypeTag, Properties::EnableThermalNonEquilibrium>();
320 static constexpr bool enableCNE = getPropValue<TypeTag, Properties::EnableChemicalNonEquilibrium>();
321 static constexpr int numEF = getPropValue<TypeTag, Properties::NumEnergyEqFluid>();
322 static constexpr int numES = getPropValue<TypeTag, Properties::NumEnergyEqSolid>();
323 static constexpr auto nf = getPropValue<TypeTag, Properties::NusseltFormulation>();
324 static constexpr auto ns = getPropValue<TypeTag, Properties::SherwoodFormulation>();
332template<
class TypeTag>
333struct EquilibriumIOFields<TypeTag, TTag::TwoPTwoCNINonEquil>
342template<
class TypeTag>
343struct VolumeVariables<TypeTag, TTag::TwoPTwoCNINonEquil>
354 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
363 template<
class BaseTraits,
class DT,
class EDM,
class ETCM>
366 using DiffusionType = DT;
367 using EffectiveDiffusivityModel = EDM;
368 using EffectiveThermalConductivityModel = ETCM;
370 static constexpr bool useConstraintSolver = getPropValue<TypeTag, Properties::UseConstraintSolver>();
377template<
class TypeTag>
378struct ThermalConductivityModel<TypeTag, TTag::TwoPTwoCNINonEquil>
Element-wise calculation of the local residual for problems using compositional fully implicit model.
Definition: porousmediumflow/compositional/localresidual.hh:33
Adds I/O fields specific to non-isothermal models.
Definition: porousmediumflow/nonisothermal/iofields.hh:27
This class contains the volume variables required for the modules which require the specific interfac...
Definition: porousmediumflow/nonequilibrium/volumevariables.hh:37
Relation for the saturation-dependent effective thermal conductivity.
Definition: simplefluidlumping.hh:26
Relation for the saturation-dependent effective thermal conductivity.
Definition: somerton.hh:48
Adds I/O fields specific to the TwoPNC model.
Definition: porousmediumflow/2pnc/iofields.hh:27
Class that computes the nonwetting saturation in an scv from the saturation at the global degree of f...
Definition: saturationreconstruction.hh:31
Definition: porousmediumflow/2p2c/volumevariables.hh:32
Defines all properties used in Dumux.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:267
Adaption of the fully implicit scheme to the two-phase n-component fully implicit model.
This specifies models which are able to capture non-equilibrium mass and / or energy transfer.
This class contains the volume variables required for the modules which require the specific interfac...
Adds I/O fields specific to non-isothermal models.
The implicit non-isothermal model.
Python wrapper for volume variables (finite volume schemes)
Relation for the saturation-dependent effective thermal conductivity.
Relation for the saturation-dependent effective thermal conductivity.
Specifies a number properties of porous-medium flow non-equilibrium models.
Definition: porousmediumflow/nonequilibrium/model.hh:45
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition: porousmediumflow/nonisothermal/model.hh:58
GetPropType< TypeTag, Properties::BaseModelTraits > type
Definition: porousmediumflow/2p2c/model.hh:115
Definition: porousmediumflow/2p2c/model.hh:88
std::tuple< TwoPNC > InheritsFrom
Definition: porousmediumflow/2p2c/model.hh:88
Definition: porousmediumflow/2p2c/model.hh:89
std::tuple< TwoPTwoC > InheritsFrom
Definition: porousmediumflow/2p2c/model.hh:89
Definition: porousmediumflow/2p2c/model.hh:309
std::tuple< TwoPTwoCNonEquil > InheritsFrom
Definition: porousmediumflow/2p2c/model.hh:309
Definition: porousmediumflow/2p2c/model.hh:223
std::tuple< NonEquilibrium, TwoPTwoC > InheritsFrom
Definition: porousmediumflow/2p2c/model.hh:223
Specifies a number properties of two-phase n-component models.
Definition: porousmediumflow/2pnc/model.hh:100
Definition: porousmediumflow/2p2c/model.hh:214
static constexpr int numConstraintEq()
Definition: porousmediumflow/2p2c/model.hh:215
Traits class for the two-phase model.
Definition: porousmediumflow/2p/model.hh:97