All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages

Compositional Multi-Phase Model Directly Solving Non-linear Complementarity Problems. More...

Classes

class  Ewoms::NcpBoundaryRateVector< TypeTag >
 Implements a boundary vector for the fully implicit compositional multi-phase NCP model. More...
 
class  Ewoms::NcpExtensiveQuantities< TypeTag >
 This template class represents the extensive quantities of the compositional NCP model. More...
 
struct  Ewoms::NcpIndices< TypeTag, PVOffset >
 The primary variable and equation indices for the compositional multi-phase NCP model. More...
 
class  Ewoms::NcpIntensiveQuantities< TypeTag >
 Contains the quantities which are are constant within a finite volume in the compositional multi-phase NCP model. More...
 
class  Ewoms::NcpLocalResidual< TypeTag >
 Details needed to calculate the local residual in the compositional multi-phase NCP-model . More...
 
class  Ewoms::NcpModel< TypeTag >
 A compositional multi-phase model based on non-linear complementarity functions. More...
 
class  Ewoms::NcpNewtonMethod< TypeTag >
 A Newton solver specific to the NCP model. More...
 
class  Ewoms::NcpPrimaryVariables< TypeTag >
 Represents the primary variables used by the compositional multi-phase NCP model. More...
 
class  Ewoms::NcpRateVector< TypeTag >
 Implements a vector representing mass, molar or volumetric rates. More...
 

Detailed Description

Compositional Multi-Phase Model Directly Solving Non-linear Complementarity Problems.

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 \} $.

By default, the standard multi-phase Darcy approach is used to determine the velocity, i.e.

\[ \mathbf{v}_\alpha = - \frac{k_{r\alpha}}{\mu_\alpha} \mathbf{K} \left(\mathbf{grad}\, p_\alpha - \varrho_{\alpha} \mathbf{g} \right) \;, \]

although the actual approach which is used can be specified via the FluxModule property. For example, the velocity model can by changed to the Forchheimer approach by

* SET_TYPE_PROP(MyProblemTypeTag, FluxModule, Ewoms::ForchheimerFluxModule<TypeTag>);
*

The core of the model is the conservation mass of each component by means of the equation

\[ \sum_\alpha \frac{\partial\;\phi c_\alpha^\kappa S_\alpha }{\partial t} - \sum_\alpha \mathrm{div} \left\{ c_\alpha^\kappa \mathbf{v}_\alpha \right\} - q^\kappa = 0 \;. \]

For the missing $M$ model assumptions, the model uses non-linear complementarity functions. These are based on the observation 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 \implies \sum_\kappa x_\alpha^\kappa \leq 1 \]

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

\[ \forall \alpha: \sum_\kappa x_\alpha^\kappa = 1 \implies 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)$. Such functions 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: