A two-phase multi-compositional pore-network model using fully implicit scheme. More...
#include <dumux/common/properties.hh>
#include <dumux/porenetwork/properties.hh>
#include <dumux/flux/porenetwork/fickslaw.hh>
#include <dumux/porousmediumflow/nonisothermal/model.hh>
#include <dumux/porousmediumflow/nonisothermal/indices.hh>
#include <dumux/porousmediumflow/nonisothermal/iofields.hh>
#include <dumux/flux/porenetwork/advection.hh>
#include <dumux/porousmediumflow/2pnc/model.hh>
#include <dumux/porousmediumflow/compositional/switchableprimaryvariables.hh>
#include <dumux/material/fluidmatrixinteractions/porenetwork/throat/transmissibility1p.hh>
#include <dumux/material/fluidmatrixinteractions/porenetwork/throat/transmissibility2p.hh>
#include <dumux/material/fluidmatrixinteractions/porenetwork/pore/2p/multishapelocalrules.hh>
#include <dumux/porenetwork/2p/fluxvariablescache.hh>
#include <dumux/porenetwork/2p/gridfluxvariablescache.hh>
#include <dumux/porenetwork/2p/spatialparams.hh>
#include <dumux/porousmediumflow/compositional/localresidual.hh>
#include "iofields.hh"
#include "volumevariables.hh"
Go to the source code of this file.
A mass balance equation is formulated for each pore body \(i\) and each component \(\kappa\):
\[ V_i \frac{\partial (\sum_{\alpha} (x^\kappa_\alpha \varrho_\alpha S_\alpha)_i) }{\partial t} + \sum_\alpha \sum_j (x^\kappa_\alpha \varrho_\alpha Q_\alpha)_{ij} + \sum_\alpha \sum_j (A_\alpha j^\kappa_\alpha)_{ij}= (V q^\kappa)_i ~. \]
\(V_i\) is the pore body volume, \(x^\kappa_\alpha\) resepresents the mole fraction of component \(\kappa\) in phase \(\alpha\) , the advective mass flow \((\varrho_\alpha Q_\alpha)_{ij}\) through throat \(ij\) can be based on the fluid phase density \(\varrho\) either of the upstream pore body \(i\) or \(j\) (upwinding) or on the respective averaged value. \(j^\kappa_\alpha\) represents the diffuive flux vector and \(A_\alpha\) the area of throat cross section occupied by phase \(\alpha\). \(q_\alpha\) is a mass sink or source term defined on pore body \(i\).
Per default, the volume flow rate \(Q_{\alpha,ij}\) follows a linear Hagen-Poiseuille-type law (PoreNetworkModel::CreepingFlow) which is only valid for \(Re < 1\):
\[ Q_{\alpha,ij} = g_{\alpha, ij} (p_{\alpha, i} - p_{\alpha, j} + \Psi_\alpha) ~. \]
\(g_{\alpha,ij}\) is a suitable throat conductance value that takes into account the presence/saturation of the individual phases while \(p_{\alpha,i}\) and \(p_{\alpha,j}\) are averaged pore body phase pressures.
The (optional) influence of gravity is given by
\[ \Psi_\alpha = \varrho_\alpha \mathbf{g} \cdot (\mathbf{x}_i - \mathbf{x}_j), \]
where \(\mathbf{x}_i - \mathbf{x}_j\) is the distance vector between the centers of pore bodies \(i\) and \(j\) and \(\mathbf{g}\) is the gravity vector.
The model is able to use either mole or mass fractions. The property useMoles can be set to either true or false in the problem file. Make sure that the according units are used in the problem setup. useMoles is set to true by default.
The primary variables are the pressure \(p_\alpha\) for phase \(\alpha\) and the mole or mass fraction of dissolved components in phase \(\alpha\) \(x^\kappa_\alpha\) or \(X^\kappa_\alpha\).
Namespaces | |
namespace | Dumux |
namespace | Dumux::Properties |
The energy balance equation for a porous solid. | |
namespace | Dumux::Properties::TTag |
Type tag for numeric models. | |