Generalized multi-phase, multi-component Darcy flow. More...
A fully implicit model for MpNc flow using vertex centered finite volumes.
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:
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:
| Files | |
| file | indices.hh | 
| The primary variable and equation indices for the MpNc model. | |
| file | initialconditionhelper.hh | 
| A helper function to get the correct initial conditions by updating the fluidstate and defining the primary variables needed for equilibrium mpnc models for the MPNC model. | |
| file | iofields.hh | 
| Adds I/O fields specific to the mpnc model. | |
| file | localresidual.hh | 
| MpNc specific details needed to approximately calculate the local defect in the fully implicit scheme. | |
| file | model.hh | 
| A fully implicit model for MpNc flow using vertex centered finite volumes. | |
| file | pressureformulation.hh | 
| Enumeration of the formulations accepted by the MpNc model. | |
| file | volumevariables.hh | 
| Contains the secondary variables (Quantities which are constant within a finite volume) of the MpNc model. | |
| Classes | |
| struct | Dumux::MPNCIndices< numPhases, numEqBalance > | 
| The primary variable and equation indices for the MpNc model.  More... | |
| class | Dumux::MPNCIOFields | 
| Adds I/O fields specific to the mpnc model.  More... | |
| class | Dumux::MPNCLocalResidual< TypeTag > | 
| MpNc specific details needed to approximately calculate the local defect in the fully implicit scheme.  More... | |
| 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... | |
| Typedefs | |
| template<class Traits> | |
| using | Dumux::MPNCVolumeVariables = MPNCVolumeVariablesImplementation<Traits, Traits::ModelTraits::enableChemicalNonEquilibrium()> | 
| Contains the quantities which are constant within a finite volume in the MpNc model. | |
| Enumerations | |
| enum class | Dumux::MpNcPressureFormulation { Dumux::MpNcPressureFormulation::mostWettingFirst , Dumux::MpNcPressureFormulation::leastWettingFirst } | 
| Enumerates the formulations which the MpNc model accepts.  More... | |
| using Dumux::MPNCVolumeVariables = MPNCVolumeVariablesImplementation<Traits, Traits::ModelTraits::enableChemicalNonEquilibrium()> | 
| Traits | Class encapsulating types to be used by the vol vars | 
| 
 | strong |