68#ifndef DUMUX_2P2C_MODEL_HH
69#define DUMUX_2P2C_MODEL_HH
107template<
class TypeTag>
108struct BaseModelTraits<TypeTag, TTag::TwoPTwoC>
112 static_assert(FluidSystem::numComponents == 2,
"Only fluid systems with 2 components are supported by the 2p-2c model!");
113 static_assert(FluidSystem::numPhases == 2,
"Only fluid systems with 2 phases are supported by the 2p-2c model!");
117 getPropValue<TypeTag, Properties::UseMoles>(),
119 getPropValue<TypeTag, Properties::Formulation>(),
120 getPropValue<TypeTag, Properties::ReplaceCompEqIdx>()>;
122template<
class TypeTag>
126template<
class TypeTag>
127struct VolumeVariables<TypeTag, TTag::TwoPTwoC>
138 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
139 static_assert(FSY::numComponents == 2,
"Only fluid systems with 2 components are supported by the 2p2c model!");
140 static_assert(FSY::numPhases == 2,
"Only fluid systems with 2 phases are supported by the 2p2c model!");
147 template<
class BaseTraits,
class DT,
class EDM>
150 using DiffusionType = DT;
151 using EffectiveDiffusivityModel = EDM;
153 static constexpr bool useConstraintSolver = getPropValue<TypeTag, Properties::UseConstraintSolver>();
159template<
class TypeTag>
160struct UseConstraintSolver<TypeTag, TTag::TwoPTwoC> {
static constexpr bool value =
true; };
167template<
class TypeTag>
168struct ModelTraits<TypeTag, TTag::TwoPTwoCNI>
177template<
class TypeTag>
178struct VolumeVariables<TypeTag, TTag::TwoPTwoCNI>
189 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
198 template<
class BaseTraits,
class DT,
class EDM,
class ETCM>
201 using DiffusionType = DT;
202 using EffectiveDiffusivityModel = EDM;
203 using EffectiveThermalConductivityModel = ETCM;
211template<
class TypeTag>
215template<
class TypeTag>
220template<
class TwoPTwoCModelTraits>
226namespace Properties {
238template<
class TypeTag>
242template<
class TypeTag>
245template<
class TypeTag>
246struct ModelTraits<TypeTag, TTag::TwoPTwoCNonEquil>
250 static constexpr bool enableTNE = getPropValue<TypeTag, Properties::EnableThermalNonEquilibrium>();
251 static constexpr bool enableCNE = getPropValue<TypeTag, Properties::EnableChemicalNonEquilibrium>();
252 static constexpr int numEF = getPropValue<TypeTag, Properties::NumEnergyEqFluid>();
253 static constexpr int numES = getPropValue<TypeTag, Properties::NumEnergyEqSolid>();
254 static constexpr auto nf = getPropValue<TypeTag, Properties::NusseltFormulation>();
255 static constexpr auto ns = getPropValue<TypeTag, Properties::SherwoodFormulation>();
263template<
class TypeTag>
264struct EquilibriumModelTraits<TypeTag, TTag::TwoPTwoCNonEquil>
275template<
class TypeTag>
276struct ThermalConductivityModel<TypeTag, TTag::TwoPTwoCNonEquil>
280template<
class TypeTag>
281struct VolumeVariables<TypeTag, TTag::TwoPTwoCNonEquil>
292 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
299 template<
class BaseTraits,
class DT,
class EDM>
302 using DiffusionType = DT;
303 using EffectiveDiffusivityModel = EDM;
306 static constexpr bool useConstraintSolver = getPropValue<TypeTag, Properties::UseConstraintSolver>();
321template<
class TypeTag>
322struct ModelTraits<TypeTag, TTag::TwoPTwoCNINonEquil>
327 static constexpr bool enableTNE = getPropValue<TypeTag, Properties::EnableThermalNonEquilibrium>();
328 static constexpr bool enableCNE = getPropValue<TypeTag, Properties::EnableChemicalNonEquilibrium>();
329 static constexpr int numEF = getPropValue<TypeTag, Properties::NumEnergyEqFluid>();
330 static constexpr int numES = getPropValue<TypeTag, Properties::NumEnergyEqSolid>();
331 static constexpr auto nf = getPropValue<TypeTag, Properties::NusseltFormulation>();
332 static constexpr auto ns = getPropValue<TypeTag, Properties::SherwoodFormulation>();
340template<
class TypeTag>
341struct EquilibriumIOFields<TypeTag, TTag::TwoPTwoCNINonEquil>
350template<
class TypeTag>
351struct VolumeVariables<TypeTag, TTag::TwoPTwoCNINonEquil>
362 static constexpr bool enableIS = getPropValue<TypeTag, Properties::EnableBoxInterfaceSolver>();
371 template<
class BaseTraits,
class DT,
class EDM,
class ETCM>
374 using DiffusionType = DT;
375 using EffectiveDiffusivityModel = EDM;
376 using EffectiveThermalConductivityModel = ETCM;
378 static constexpr bool useConstraintSolver = getPropValue<TypeTag, Properties::UseConstraintSolver>();
385template<
class TypeTag>
386struct 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
Effective thermal conductivity based on weighted arithmetic average.
Definition: thermalconductivityaverage.hh:43
Effective thermal conductivity after Somerton.
Definition: somerton.hh:46
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:296
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)
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:76
GetPropType< TypeTag, Properties::BaseModelTraits > type
Definition: porousmediumflow/2p2c/model.hh:123
Definition: porousmediumflow/2p2c/model.hh:96
std::tuple< TwoPNC > InheritsFrom
Definition: porousmediumflow/2p2c/model.hh:96
Definition: porousmediumflow/2p2c/model.hh:97
std::tuple< TwoPTwoC > InheritsFrom
Definition: porousmediumflow/2p2c/model.hh:97
Definition: porousmediumflow/2p2c/model.hh:317
std::tuple< TwoPTwoCNonEquil > InheritsFrom
Definition: porousmediumflow/2p2c/model.hh:317
Definition: porousmediumflow/2p2c/model.hh:231
std::tuple< NonEquilibrium, TwoPTwoC > InheritsFrom
Definition: porousmediumflow/2p2c/model.hh:231
Specifies a number properties of two-phase n-component models.
Definition: porousmediumflow/2pnc/model.hh:114
Definition: porousmediumflow/2p2c/model.hh:222
static constexpr int numConstraintEq()
Definition: porousmediumflow/2p2c/model.hh:223
Traits class for the two-phase model.
Definition: porousmediumflow/2p/model.hh:107