Adaption of the fully implicit scheme to the three-phase three-component flow model. More...
#include <dune/common/fvector.hh>
#include <dumux/common/properties.hh>
#include <dumux/porousmediumflow/properties.hh>
#include <dumux/porousmediumflow/3p/model.hh>
#include <dumux/porousmediumflow/nonisothermal/model.hh>
#include <dumux/porousmediumflow/nonisothermal/indices.hh>
#include <dumux/porousmediumflow/nonisothermal/iofields.hh>
#include <dumux/porousmediumflow/compositional/switchableprimaryvariables.hh>
#include <dumux/material/fluidstates/compositional.hh>
#include <dumux/material/spatialparams/fv.hh>
#include <dumux/material/fluidmatrixinteractions/diffusivitymillingtonquirk.hh>
#include <dumux/material/fluidmatrixinteractions/3p/thermalconductivitysomerton3p.hh>
#include "indices.hh"
#include "volumevariables.hh"
#include "iofields.hh"
#include "localresidual.hh"
Go to the source code of this file.
Adaption of the fully implicit scheme to the three-phase three-component flow model.
This model implements three-phase three-component flow of three fluid phases \(\alpha \in \{ water, gas, NAPL \}\) each composed of up to three components \(\kappa \in \{ water, air, contaminant \}\). The standard multiphase Darcy approach is used as the equation for the conservation of momentum:
\[ v_\alpha = - \frac{k_{r\alpha}}{\mu_\alpha} \mathbf{K} \left(\textbf{grad}\, p_\alpha - \varrho_{\alpha} \mathbf{g} \right) \]
By inserting this into the equations for the conservation of the components, one transport equation for each component is obtained as
\begin{eqnarray*} && \phi \frac{\partial (\sum_\alpha \varrho_{\alpha,mol} x_\alpha^\kappa S_\alpha )}{\partial t} - \sum\limits_\alpha \text{div} \left\{ \frac{k_{r\alpha}}{\mu_\alpha} \varrho_{\alpha,mol} x_\alpha^\kappa \mathbf{K} (\textbf{grad}\, p_\alpha - \varrho_{\alpha,mass} \mathbf{g}) \right\} \nonumber \\ \nonumber \\ && - \sum\limits_\alpha \text{div} \left\{ D_\text{pm}^\kappa \frac{1}{M_{\kappa}} \varrho_{\alpha} \textbf{grad} X^\kappa_{\alpha} \right\} - q^\kappa = 0 \qquad \forall \kappa , \; \forall \alpha \end{eqnarray*}
Note that these balance equations are molar.
All equations are discretized using a vertex-centered finite volume (box) or cell-centered finite volume scheme as spatial and the implicit Euler method as time discretization.
The model uses commonly applied auxiliary conditions like \(S_w + S_n + S_g = 1\) for the saturations and \(x^w_\alpha + x^a_\alpha + x^c_\alpha = 1\) for the mole fractions. Furthermore, the phase pressures are related to each other via capillary pressures between the fluid phases, which are functions of the saturation, e.g. according to the approach of Parker et al.
The used primary variables are dependent on the locally present fluid phases. An adaptive primary variable switch is included. The phase state is stored for all nodes of the system. The following cases can be distinguished:
Classes | |
struct | Dumux::ThreePThreeCModelTraits< useCS, useMol > |
Specifies a number properties of two-phase models. More... | |
struct | Dumux::Properties::TTag::ThreePThreeC |
The type tags for the isothermal three-phase three-component model. More... | |
struct | Dumux::Properties::TTag::ThreePThreeCNI |
The type tags for the non-isothermal three-phase three-component model. More... | |
struct | Dumux::Properties::BaseModelTraits< TypeTag, TTag::ThreePThreeC > |
Set the model traits. More... | |
struct | Dumux::Properties::ModelTraits< TypeTag, TTag::ThreePThreeC > |
struct | Dumux::Properties::UseConstraintSolver< TypeTag, TTag::ThreePThreeC > |
Determines whether a constraint solver should be used explicitly. More... | |
struct | Dumux::Properties::ReplaceCompEqIdx< TypeTag, TTag::ThreePThreeC > |
Set as default that no component mass balance is replaced by the total mass balance. More... | |
struct | Dumux::Properties::FluidState< TypeTag, TTag::ThreePThreeC > |
The fluid state which is used by the volume variables to store the thermodynamic state. This should be chosen appropriately for the model ((non-)isothermal, equilibrium, ...). This can be done in the problem. More... | |
struct | Dumux::Properties::LocalResidual< TypeTag, TTag::ThreePThreeC > |
The local residual function of the conservation equations. More... | |
struct | Dumux::Properties::PrimaryVariables< TypeTag, TTag::ThreePThreeC > |
The primary variables vector for the 3p3c model. More... | |
struct | Dumux::Properties::VolumeVariables< TypeTag, TTag::ThreePThreeC > |
Set the volume variables property. More... | |
struct | Dumux::Properties::EffectiveDiffusivityModel< TypeTag, TTag::ThreePThreeC > |
The model after Millington (1961) is used for the effective diffusivity. More... | |
struct | Dumux::Properties::IOFields< TypeTag, TTag::ThreePThreeC > |
Set the vtk output fields specific to this model. More... | |
struct | Dumux::Properties::UseMoles< TypeTag, TTag::ThreePThreeC > |
Use mole fractions in the balance equations by default. More... | |
struct | Dumux::Properties::ModelTraits< TypeTag, TTag::ThreePThreeCNI > |
Set non-isothermal NumEq. More... | |
struct | Dumux::Properties::VolumeVariables< TypeTag, TTag::ThreePThreeCNI > |
Set the volume variables property. More... | |
struct | Dumux::Properties::IOFields< TypeTag, TTag::ThreePThreeCNI > |
Set the non-isothermal vktoutputfields. More... | |
struct | Dumux::Properties::ThermalConductivityModel< TypeTag, TTag::ThreePThreeCNI > |
Somerton is used as default model to compute the effective thermal heat conductivity. More... | |
Namespaces | |
namespace | Dumux |
namespace | Dumux::Properties |
namespace | Dumux::Properties::TTag |
Type tag for numeric models. | |