version 3.8
porousmediumflow/mpnc/model.hh File Reference

A fully implicit model for MpNc flow using vertex centered finite volumes. More...

Go to the source code of this file.

Description

This model implements a \(M\)-phase flow of a fluid mixture composed of \(N\) chemical species. The phases are denoted by lower index \(\alpha \in \{ 1, \dots, M \}\). All fluid phases are mixtures of \(N \geq M - 1\) chemical species which are denoted by the upper index \(\kappa \in \{ 1, \dots, N \} \).

The momentum approximation can be selected via "BaseFluxVariables": Darcy (ImplicitDarcyFluxVariables) and Forchheimer (ImplicitForchheimerFluxVariables) relations are available for all Box models. For details on Darcy's law see dumux/flux/darcyslaw.hh.

By inserting this into the equations for the conservation of the mass of each component, one gets one mass-continuity equation for each component \(\kappa\),

\[ \sum_{\kappa} \left( \frac{\partial \left(\phi \varrho_\alpha x_\alpha^\kappa S_\alpha\right)}{\partial t} + \mathrm{div}\; \left\{ v_\alpha \frac{\varrho_\alpha}{\overline M_\alpha} x_\alpha^\kappa \right\} \right) = q^\kappa \]

with \(\overline M_\alpha\) being the average molar mass of phase \(\alpha\):

\[ \overline M_\alpha = \sum_\kappa M^\kappa \; x_\alpha^\kappa \]

Additionally:

  • \( \phi \) is the porosity of the porous medium,
  • \( S_\alpha \) represents the saturation of phase \( \alpha \),
  • \( \rho_\alpha \) is the mass density of phase \( \alpha \),
  • \( X_\alpha^\kappa \) is the mass fraction of component \( \kappa \) in phase \( \alpha \),
  • \( x_\alpha^\kappa \) is the mole fraction of component \( \kappa \) in phase \( \alpha \),
  • \( v_\alpha \) is the velocity of phase \( \alpha \),
  • \( {\bf D_{\alpha, pm}^\kappa} \) is the diffusivity of component \( \kappa \) in phase \( \alpha \),
  • \( \overline M_\alpha \) is the average molar mass of phase \( \alpha \)
  • \( q_\alpha^\kappa \) is a source or sink term.

For the missing \(M\) model assumptions, the model assumes that if a fluid phase is not present, the sum of the mole fractions of this fluid phase is smaller than \(1\), i.e.

\[ \forall \alpha: S_\alpha = 0 \Rightarrow \sum_\kappa x_\alpha^\kappa \leq 1 \]

Also, if a fluid phase may be present at a given spatial location its saturation must be positive:

\[ \forall \alpha: \sum_\kappa x_\alpha^\kappa = 1 \Rightarrow S_\alpha \geq 0 \]

Since at any given spatial location, a phase is always either present or not present, one of the strict equalities on the right hand side is always true, i.e.

\[ \forall \alpha: S_\alpha \left( \sum_\kappa x_\alpha^\kappa - 1 \right) = 0 \]

always holds.

These three equations constitute a non-linear complementarity problem, which can be solved using so-called non-linear complementarity functions \(\Phi(a, b)\) which have the property

\[\Phi(a,b) = 0 \iff a \geq0 \land b \geq0 \land a \cdot b = 0 \]

Several non-linear complementarity functions have been suggested, e.g. the Fischer-Burmeister function

\[ \Phi(a,b) = a + b - \sqrt{a^2 + b^2} \;. \]

This model uses

\[ \Phi(a,b) = \min \{a, b \}\;, \]

because of its piecewise linearity.

The model assumes local thermodynamic equilibrium and uses the following primary variables:

  • The component fugacities \(f^1, \dots, f^{N}\)
  • The pressure of the first phase \(p_1\)
  • The saturations of the first \(M-1\) phases \(S_1, \dots, S_{M-1}\)
  • Temperature \(T\) if the energy equation is enabled

Classes

struct  Dumux::MPNCModelTraits< nPhases, nComp, formulation, useM, repCompEqIdx >
 Specifies a number properties of the m-phase n-component model. More...
 
struct  Dumux::MPNCNonequilibriumModelTraits< NonEquilTraits >
 Specifies a number properties of the m-phase n-component model in conjunction with non-equilibrium. This is necessary because the mpnc indices are affected by the non-equilibrium which can thus not be plugged on top of it that easily. More...
 
struct  Dumux::MPNCVolumeVariablesTraits< PV, FSY, FST, SSY, SST, PT, MT, DT, EDM >
 Traits class for the mpnc volume variables. More...
 
struct  Dumux::Properties::TTag::MPNC
 
struct  Dumux::Properties::TTag::MPNCNI
 
struct  Dumux::Properties::TTag::MPNCNonequil
 
struct  Dumux::Properties::LocalResidual< TypeTag, TTag::MPNC >
 Use the MpNc local residual for the MpNc model. More...
 
struct  Dumux::Properties::ModelTraits< TypeTag, TTag::MPNC >
 Set the model traits property. More...
 
struct  Dumux::Properties::FluidState< TypeTag, TTag::MPNC >
 This model uses the compositional fluid state. More...
 
struct  Dumux::Properties::VolumeVariables< TypeTag, TTag::MPNC >
 Set the volume variables property. More...
 
struct  Dumux::Properties::ReplaceCompEqIdx< TypeTag, TTag::MPNC >
 Per default, no component mass balance is replaced. More...
 
struct  Dumux::Properties::UseMoles< TypeTag, TTag::MPNC >
 Use mole fractions in the balance equations by default. More...
 
struct  Dumux::Properties::EffectiveDiffusivityModel< TypeTag, TTag::MPNC >
 Use the model after Millington (1961) for the effective diffusivity. More...
 
struct  Dumux::Properties::PressureFormulation< TypeTag, TTag::MPNC >
 Set the default pressure formulation to the pressure of the (most) wetting phase. More...
 
struct  Dumux::Properties::IOFields< TypeTag, TTag::MPNC >
 Set the vtk output fields specific to this model. More...
 
struct  Dumux::Properties::ModelTraits< TypeTag, TTag::MPNCNI >
 set the non-isothermal model traits More...
 
struct  Dumux::Properties::VolumeVariables< TypeTag, TTag::MPNCNI >
 Set the volume variables property. More...
 
struct  Dumux::Properties::ThermalConductivityModel< TypeTag, TTag::MPNCNI >
 Somerton is used as default model to compute the effective thermal heat conductivity. More...
 
struct  Dumux::Properties::EquilibriumLocalResidual< TypeTag, TTag::MPNCNonequil >
 
struct  Dumux::Properties::EquilibriumIOFields< TypeTag, TTag::MPNCNonequil >
 Set the vtk output fields specific to this model. More...
 
struct  Dumux::Properties::ModelTraits< TypeTag, TTag::MPNCNonequil >
 
struct  Dumux::Properties::EquilibriumModelTraits< TypeTag, TTag::MPNCNonequil >
 set equilibrium model traits More...
 
struct  Dumux::Properties::ThermalConductivityModel< TypeTag, TTag::MPNCNonequil >
 in case we do not assume full non-equilibrium one needs a thermal conductivity More...
 
struct  Dumux::Properties::VolumeVariables< TypeTag, TTag::MPNCNonequil >
 use the mineralization volume variables together with the 2pnc vol vars More...
 

Namespaces

namespace  Dumux
 
namespace  Dumux::Properties
 The energy balance equation for a porous solid.
 
namespace  Dumux::Properties::TTag
 Type tag for numeric models.
 
Include dependency graph for porousmediumflow/mpnc/model.hh: