Sequential two-phase (immiscible) Darcy flow. More...
Sequential two-phase (immiscible) Darcy flow.
This model implements two-phase flow of two immiscible fluids \(\alpha \in \{ w, n \}\) using a standard multi-phase Darcy approach as the equation for the conservation of momentum, i.e.
\[ v_\alpha = - \frac{k_{r\alpha}}{\mu_\alpha} \textbf{K} \left(\textbf{grad}\, p_\alpha - \varrho_{\alpha} {\textbf g} \right). \]
By inserting this into the equation for the conservation of the phase mass, one gets
\[ \phi \frac{\partial \varrho_\alpha S_\alpha}{\partial t} - \text{div} \left\{ \varrho_\alpha \frac{k_{r\alpha}}{\mu_\alpha} \mathbf{K} \left(\textbf{grad}\, p_\alpha - \varrho_{\alpha} \mathbf{g} \right) \right\} = q_\alpha \;. \]
In the incompressible case the phase densities \( \varrho_\alpha \) can be eliminated from the equations. The two equations are then added up, and because \(S_w + S_n = 1\), the first term cancels out. This leads to the so-called pressure equation. For the wetting ( \(w\)) phase pressure as primary variable this yields
\[ - \text{div}\, \left[\lambda \boldsymbol K \left(\textbf{grad}\, p_w + f_n \textbf{grad}\, p_c - \sum f_\alpha \varrho_\alpha {\textbf g}\right)\right] = q, \]
for the nonwetting ( \( n \)) phase pressure as primary variable it yields
\[ - \text{div}\, \left[\lambda \boldsymbol K \left(\textbf{grad}\, p_n - f_w \textbf{grad}\, p_c - \sum f_\alpha \varrho_\alpha {\textbf g}\right)\right] = q, \]
and for the global pressure as primary variable it leads to
\[ - \text{div}\, \left[\lambda \boldsymbol K \left(\textbf{grad}\, p_{global} - \sum f_\alpha \varrho_\alpha {\textbf g}\right)\right] = q. \]
Here, \( p_\alpha \) is a phase pressure, \( p_ {global} \) the global pressure of a classical fractional flow formulation (see e.g. Binning and Celia (1999) [11]), \( p_c = p_n - p_w \) is the capillary pressure, \( \boldsymbol K \) the absolute permeability tensor, \( \lambda = \lambda_w + \lambda_n \) the total mobility depending on the saturation ( \( \lambda_\alpha = k_{r_\alpha} / \mu_\alpha \)), \( f_\alpha = \lambda_\alpha / \lambda \) the fractional flow function of a phase, \( \varrho_\alpha \) a phase density, \( {\textbf g} \) the gravitational acceleration vector and \( q = q_w + q_n \) the total source term. Depending on the primary variable chosen, one of the pressure equations above is solved sequentially together with the conservation of the phase mass for one phase.
For all cases, \( p = p_D \) on \( \Gamma_{Dirichlet} \), and \( \boldsymbol v_{total} \cdot \boldsymbol n = q_N \) on \( \Gamma_{Neumann} \).
The slightly compressible case is only implemented for phase pressures! In this case for a wetting \((w) \) phase pressure as primary variable the pressure equation is formulated as
\[ \phi \left( \varrho_w \frac{\partial S_w}{\partial t} + \varrho_n \frac{\partial S_n}{\partial t}\right) - \text{div}\, \left[\lambda \boldsymbol{K} \left(\textbf{grad}\, p_w + f_n \, \textbf{grad}\, p_c - \sum f_\alpha \varrho_\alpha {\textbf g}\right)\right] = q, \]
and for a nonwetting ( \( n \)) phase pressure as primary variable as
\[ \phi \left( \varrho_w \frac{\partial S_w}{\partial t} + \varrho_n \frac{\partial S_n}{\partial t}\right) - \text{div}\, \left[\lambda \boldsymbol{K} \left(\textbf{grad}\, p_n - f_w \textbf{grad}\, p_c - \sum f_\alpha \varrho_\alpha {\textbf g}\right)\right] = q. \]
In this slightly compressible case the following definitions are valid: \( \lambda = \varrho_w \lambda_w + \varrho_n \lambda_n \), \( f_\alpha = (\varrho_\alpha \lambda_\alpha) / \lambda \) This model assumes that temporal changes in density are very small and thus terms of temporal derivatives are negligible in the pressure equation. Depending on the formulation the terms including time derivatives of saturations are simplified by inserting \( S_w + S_n = 1 \).
In the IMPES models the default setting is:
TypeTag | The Type Tag |
Calculates phase velocities or total velocity from a known pressure field applying a finite volume discretization. The wetting or the nonwetting phase pressure, or the global pressure has to be given as piecewise constant cell values. The phase velocities are calculated following Darcy's law as
\[ v_\alpha = - \frac{k_{r\alpha}}{\mu_\alpha} \textbf{K} \left(\textbf{grad}\, p_\alpha - \varrho_{\alpha} {\textbf g} \right), \]
where \( p_\alpha \) denotes the pressure of phase \(\alpha \in \{ w, n \}\), \( \boldsymbol K \) the absolute permeability tensor, \( \lambda_\alpha \) the phase mobility, \( \varrho_\alpha \) the phase density and \( {\textbf g} \) the gravitational acceleration vector. The total velocity is either calculated as sum of the phase velocities
\[ \boldsymbol v_{total} = \boldsymbol v_{wetting}+\boldsymbol v_{nonwetting}, \]
or with a given global pressure
\[ \boldsymbol v_{total} = \lambda_{total} \boldsymbol K \left(\textbf{grad}\, p_{global} - \sum f_\alpha \varrho_\alpha {\textbf g}\right). \]
TypeTag | The Type Tag |
Files | |
file | 2p/sequential/celldata.hh |
Class including data of one grid cell. | |
file | sequential/celldataadaptive.hh |
Class including the data of a grid cell needed if an adaptive grid is used. | |
file | 2p/sequential/diffusion/cellcentered/pressure.hh |
Finite Volume discretization of a two-phase flow pressure equation. | |
file | cellcentered/pressureadaptive.hh |
Finite volume discretization of a two-phase flow pressure equation. | |
file | 2p/sequential/diffusion/cellcentered/pressureproperties.hh |
Defines the properties required for finite volume pressure models in a two-phase sequential model. | |
file | cellcentered/pressurepropertiesadaptive.hh |
Defines the properties required for finite volume pressure models in a two-phase sequential model. | |
file | 2p/sequential/diffusion/cellcentered/pressurevelocity.hh |
Two-phase finite volume model. | |
file | 2p/sequential/diffusion/cellcentered/velocity.hh |
Velocity field from a finite volume solution of a pressure equation. | |
file | velocityadaptive.hh |
Velocity field from a finite volume solution of a pressure equation. | |
file | croperator.hh |
Defines a class for Crozieux-Raviart piecewise linear finite element functions. | |
file | croperatoradaptive.hh |
Defines a class for Crozieux-Raviart piecewise linear finite element functions. | |
file | localstiffness.hh |
Base class for assembling local stiffness matrices. | |
file | mimetic.hh |
Local stiffness matrix for the diffusion equation discretized by mimetic FD. | |
file | mimeticadaptive.hh |
Local stiffness matrix for the diffusion equation discretized by mimetic FD. | |
file | operator.hh |
An assembler for the Jacobian matrix based on mimetic FD. | |
file | operatoradaptive.hh |
An assembler for the Jacobian matrix based on mimetic FD. | |
file | 2p/sequential/diffusion/mimetic/pressure.hh |
Model for the pressure equation discretized by mimetic FD. | |
file | mimetic/pressureadaptive.hh |
Model for the pressure equation discretized by mimetic FD. | |
file | 2p/sequential/diffusion/mimetic/pressureproperties.hh |
Defines the properties required for (immiscible) twophase sequential models. | |
file | mimetic/pressurepropertiesadaptive.hh |
Defines the properties required for (immiscible) twophase sequential models. | |
file | lmethod/2dpressure.hh |
Finite volume MPFA L-method discretization of a two-phase pressure equation of the sequential IMPES model. | |
file | 2dpressureadaptive.hh |
Grid adaptive finite volume MPFA L-method discretization of a two-phase pressure equation of the sequential IMPES model. | |
file | lmethod/2dpressureproperties.hh |
Properties for the MPFA-L method. | |
file | 2dpressurepropertiesadaptive.hh |
Properties for the adaptive MPFA-L method. | |
file | lmethod/2dpressurevelocity.hh |
Velocity field from a finite volume solution of a pressure equation using a MPFA L-method. | |
file | 2dpressurevelocityadaptive.hh |
Velocity field from a finite volume solution of a pressure equation using a grid adaptive MPFA L-method. | |
file | 2dtransmissibilitycalculator.hh |
Provides methods for transmissibility calculation 2-d. | |
file | lmethod/2dvelocity.hh |
Velocity calculation using a 2-d MPFA L-method. | |
file | 2dvelocityadaptive.hh |
Velocity calculation on adaptive grids using a 2-d MPFA L-method. | |
file | 3dinteractionvolumecontainer.hh |
Interactionvolume container for 3-d MPFA L-method. | |
file | 3dinteractionvolumecontaineradaptive.hh |
Interactionvolume container for 3-d MPFA L-method on an h-adaptive grid. | |
file | 3dpressure.hh |
3-d finite Volume-MPFAL implementation of a two-phase pressure equation. | |
file | 3dpressureadaptive.hh |
3-d finite Volume-MPFAL implementation of a two-phase pressure equation on h-adaptive grids | |
file | 3dpressureproperties.hh |
Properties for the MPFA-O method. | |
file | 3dpressurepropertiesadaptive.hh |
Properties for the MPFA-O method. | |
file | 3dpressurevelocity.hh |
3d Velocity Field from a finite volume solution of a pressure equation using a MPFA L-method. | |
file | 3dpressurevelocityadaptive.hh |
3d Velocity field from a finite volume solution of a pressure equation using a grid adaptive MPFA L-method. | |
file | 3dtransmissibilitycalculator.hh |
Provides methods for transmissibility calculation in 3-d. | |
file | 3dvelocity.hh |
2-d velocity calculation using a 3-d MPFA L-method. | |
file | 3dvelocityadaptive.hh |
3-d velocity calculation on adaptive grids using a 3-d MPFA L-method. | |
file | omethod/2dpressure.hh |
Finite volume MPFA O-method discretization of a two-phase pressure equation of the sequential IMPES model. | |
file | omethod/2dpressureproperties.hh |
Properties for the MPFA-O method. | |
file | omethod/2dpressurevelocity.hh |
Velocity field from a finite volume solution of a pressure equation using a MPFA O-method. | |
file | omethod/2dvelocity.hh |
Velocity calculation using a 2-d MPFA O-method. | |
file | porousmediumflow/2p/sequential/diffusion/problem.hh |
Base class for stationary solution of a two-phase diffusion/pressure equation. | |
file | porousmediumflow/2p/sequential/diffusion/properties.hh |
Specifies the properties for immiscible 2p diffusion/pressure models. | |
file | 2p/sequential/fluxdata.hh |
Class storing data assigned to a cell-cell interfaces, so-called flux-data. | |
file | gridadaptionindicator.hh |
Class defining a standard, saturation dependent indicator for grid adaption. | |
file | gridadaptionindicatorlocal.hh |
Class defining a standard, saturation dependent indicator for grid adaption. | |
file | porousmediumflow/2p/sequential/impes/problem.hh |
Base class for all 2-phase problems which use an IMPES algorithm. | |
file | porousmediumflow/2p/sequential/impes/properties.hh |
Properties related to the sequential IMPES algorithms. | |
file | propertiesadaptive.hh |
Properties for adaptive implementations of the sequential IMPES algorithms. | |
file | porousmediumflow/2p/sequential/indices.hh |
Defines the indices required for the two-phase sequential model. | |
file | porousmediumflow/2p/sequential/properties.hh |
Defines the properties required for (immiscible) two-phase sequential models. | |
file | capillarydiffusion.hh |
Class for defining the diffusive capillary pressure term of a 2p saturation equation. | |
file | convectivepart.hh |
Base class for defining a convective part of the saturation transport equation. | |
file | diffusivepart.hh |
Base class for defining a diffusive part of the saturation transport equation. | |
file | evalcflflux.hh |
Base class for implementations of different kinds of fluxes to evaluate a CFL-Condition. | |
file | evalcflfluxcoats.hh |
Cfl-flux-function to evaluate a Cfl-Condition after Coats 2003. | |
file | evalcflfluxdefault.hh |
Fluxes to evaluate a CFL-Condition. | |
file | gravitypart.hh |
Class for defining the gravity term of a two-phase flow saturation equation. | |
file | porousmediumflow/2p/sequential/transport/cellcentered/properties.hh |
Specifies the properties for immiscible 2p transport. | |
file | saturation.hh |
Finite volume discretization of a saturation transport equation. | |
file | porousmediumflow/2p/sequential/transport/problem.hh |
Base class for two-phase transport problems. | |
file | porousmediumflow/2p/sequential/transport/properties.hh |
Specifies the properties for immiscible 2p transport. | |
Namespaces | |
namespace | Dumux::Properties::TTag |
Type tag for numeric models. | |
Classes | |
class | Dumux::CellData2P< TypeTag, enableCompressibility > |
Class including data of one grid cell. More... | |
class | Dumux::CellData2P< TypeTag, false > |
Class including the variables and data of discretized data of the constitutive relations for one grid cell. More... | |
class | Dumux::CellData2P< TypeTag, true > |
Class including the variables and data of discretized data of the constitutive relations for one grid cell. More... | |
class | Dumux::CellData2PAdaptive< TypeTag, enableCompressibility > |
Class including the data of a grid cell needed if an adaptive grid is used. More... | |
class | Dumux::FVPressure2P< TypeTag > |
Finite Volume discretization of a two-phase flow pressure equation of the sequential IMPES model. More... | |
class | Dumux::FVPressure2PAdaptive< TypeTag > |
Finite volume discretization of a two-phase flow pressure equation of the sequential IMPES model. More... | |
class | Dumux::FVPressureVelocity2P< TypeTag > |
Two-phase finite volume model. More... | |
class | Dumux::FVVelocity2P< TypeTag > |
Determines the velocity from a finite volume solution of the pressure equation of a sequential model (IMPES). More... | |
class | Dumux::FVVelocity2PAdaptive< TypeTag > |
Determines the velocity from a finite volume solution of the pressure equation of a sequential model (IMPES). More... | |
class | Dumux::CROperatorAssemblerTwoP< TypeTag > |
Extends CROperatorBase by a generic methods to assemble global stiffness matrix from local stiffness matrices. More... | |
class | Dumux::CROperatorAssemblerTwoPAdaptive< TypeTag > |
Extends CROperatorBase by a generic methods to assemble global stiffness matrix from local stiffness matrices. More... | |
class | Dumux::LocalStiffness< TypeTag, m > |
Base class for local assemblers. More... | |
class | Dumux::LinearLocalStiffness< TypeTag, m > |
Base class for linear local assemblers. More... | |
class | Dumux::MimeticTwoPLocalStiffness< TypeTag > |
compute local stiffness matrix for conforming finite elements for the full 2-phase pressure equation More... | |
class | Dumux::MimeticTwoPLocalStiffnessAdaptive< TypeTag > |
compute local stiffness matrix for conforming finite elements for the full 2-phase pressure equation More... | |
class | Dumux::MimeticOperatorAssemblerTwoP< TypeTag > |
Levelwise assembler. More... | |
class | Dumux::MimeticOperatorAssemblerTwoPAdaptive< TypeTag > |
Levelwise assembler. More... | |
class | Dumux::MimeticPressure2P< TypeTag > |
Mimetic method for the pressure equation. More... | |
class | Dumux::MimeticPressure2PAdaptive< TypeTag > |
Mimetic method for the pressure equation. More... | |
class | Dumux::FvMpfaL2dPressure2p< TypeTag > |
Finite volume MPFA L-method discretization of a two-phase flow pressure equation of the sequential IMPES model. More... | |
class | Dumux::FvMpfaL2dPressure2pAdaptive< TypeTag > |
Grid adaptive finite volume MPFA L-method discretization of a two-phase flow pressure equation of the sequential IMPES model. More... | |
class | Dumux::FvMpfaL2dPressureVelocity2p< TypeTag > |
Class for the calculation of velocities from the pressure solution of an IMPES scheme using a MPFA L-method. More... | |
class | Dumux::FvMpfaL2dPressureVelocity2pAdaptive< TypeTag > |
Class for the calculation of velocities from the pressure solution of an IMPES scheme using a grid adaptive MPFA L-method. More... | |
class | Dumux::FvMpfaL2dTransmissibilityCalculator< TypeTag > |
Provides methods for transmissibility calculation in 2-d. More... | |
class | Dumux::FvMpfaL2dVelocity2p< TypeTag > |
Class for calculating 2-d velocities from cell-wise constant pressure values. More... | |
class | Dumux::FvMpfaL2dVelocity2pAdaptive< TypeTag > |
Class for calculating 2-d velocities from cell-wise constant pressure values. More... | |
class | Dumux::FvMpfaL3dInteractionVolumeContainer< TypeTag > |
Interactionvolume container for 3-d MPFA L-method. More... | |
class | Dumux::FvMpfaL3dInteractionVolumeContainerAdaptive< TypeTag > |
Interactionvolume container for 3-d MPFA L-method on an h-adaptive grid. More... | |
class | Dumux::FvMpfaL3dPressure2p< TypeTag > |
3-d finite volume MPFA L-method discretization of a two-phase flow pressure equation of the sequential IMPES model. More... | |
class | Dumux::FvMpfaL3dPressure2pAdaptive< TypeTag > |
3-d finite volume MPFA L-method discretization of a two-phase flow pressure equation of the sequential IMPES model on h-adaptive grids. More... | |
class | Dumux::FvMpfaL3dPressureVelocity2p< TypeTag > |
Class for the calculation of 3d velocities from the pressure solution of an IMPES scheme using a MPFA L-method. More... | |
class | Dumux::FvMpfaL3dPressureVelocity2pAdaptive< TypeTag > |
Class for the calculation of 3d velocities from the pressure solution of an IMPES scheme using a grid adaptive MPFA L-method. More... | |
class | Dumux::FvMpfaL3dTransmissibilityCalculator< TypeTag > |
Provides methods for transmissibility calculation in 3-d. More... | |
class | Dumux::FvMpfaL3dVelocity2p< TypeTag > |
Class for calculating 3-d velocities from cell-wise constant pressure values. More... | |
class | Dumux::FvMpfaL3dVelocity2pAdaptive< TypeTag > |
Class for calculating 3-d velocities from cell-wise constant pressure values. More... | |
class | Dumux::FvMpfaO2dPressure2p< TypeTag > |
Finite volume MPFA O-method discretization of a two-phase flow pressure equation of the sequential IMPES model. More... | |
class | Dumux::FvMpfaO2dPressureVelocity2p< TypeTag > |
Class for the calculation of velocities from the pressure solution of an IMPES scheme using a MPFA O-method. More... | |
class | Dumux::FvMpfaO2dVelocity2P< TypeTag > |
Class for calculating velocities from cell-wise constant pressure values. More... | |
class | Dumux::DiffusionProblem2P< TypeTag > |
Base class for stationary solution of a two-phase diffusion/pressure equation. More... | |
class | Dumux::FluxData2P< TypeTag > |
Class storing data assigned to a cell-cell interfaces, so-called flux-data. More... | |
class | Dumux::GridAdaptionIndicator2P< TypeTag > |
Class defining a standard, saturation dependent indicator for grid adaption. More... | |
class | Dumux::GridAdaptionIndicator2PLocal< TypeTag > |
Class defining a standard, saturation dependent indicator for grid adaption. More... | |
class | Dumux::IMPESProblem2P< TypeTag > |
Base class for all 2-phase problems which use an IMPES algorithm. More... | |
struct | Dumux::SequentialTwoPCommonIndices |
The common indices for the isothermal two-phase model. More... | |
class | Dumux::CapillaryDiffusion< TypeTag > |
Class for defining the diffusive capillary pressure term of a saturation equation. More... | |
class | Dumux::ConvectivePart< TypeTag > |
Base class for defining a convective part of the saturation transport equation. More... | |
class | Dumux::DiffusivePart< TypeTag > |
Base class for defining the diffusive part of the saturation transport equation. More... | |
class | Dumux::EvalCflFlux< TypeTag > |
Base class for implementations of different kinds of fluxes to evaluate a CFL-Condition. More... | |
class | Dumux::EvalCflFluxCoats< TypeTag > |
Cfl-flux-function to evaluate a Cfl-Condition after Coats 2003. More... | |
class | Dumux::EvalCflFluxDefault< TypeTag > |
Default implementation of cfl-fluxes to evaluate a CFL-Condition. More... | |
class | Dumux::GravityPart< TypeTag > |
Class for defining the gravity term of a two-phase flow saturation equation. More... | |
class | Dumux::FVSaturation2P< TypeTag > |
The finite volume discretization of a saturation transport equation. More... | |
class | Dumux::TransportProblem2P< TypeTag > |
Base class for a sequential two-phase transport problem. More... | |
Functions | |
int | Dumux::FvMpfaL2dTransmissibilityCalculator< TypeTag >::calculateTransmissibility (TransmissibilityType &transmissibility, InteractionVolume &interactionVolume, std::vector< DimVector > &lambda, int idx1, int idx2, int idx3, int idx4) |
Calculates tranmissibility matrix. More... | |
int | Dumux::FvMpfaL2dTransmissibilityCalculator< TypeTag >::calculateLeftHNTransmissibility (TransmissibilityType &transmissibility, InteractionVolume &interactionVolume, std::vector< DimVector > &lambda, int idx1, int idx2, int idx3) |
Calculates tranmissibility matrix of left L-shape. More... | |
int | Dumux::FvMpfaL2dTransmissibilityCalculator< TypeTag >::calculateRightHNTransmissibility (TransmissibilityType &transmissibility, InteractionVolume &interactionVolume, std::vector< DimVector > &lambda, int idx1, int idx2, int idx3) |
Calculates tranmissibility matrix of right L-shape. More... | |
int Dumux::FvMpfaL2dTransmissibilityCalculator< TypeTag >::calculateLeftHNTransmissibility | ( | TransmissibilityType & | transmissibilityLeft, |
InteractionVolume & | interactionVolume, | ||
std::vector< DimVector > & | lambda, | ||
int | idx1, | ||
int | idx2, | ||
int | idx3 | ||
) |
Calculates tranmissibility matrix of left L-shape.
Calculates tranmissibility matrix.
Calculates tranmissibility matrix of an L-shape for a certain flux face. Calculates only the transmissibility of the left L-shape (needed at hanging nodes HN).
transmissibilityLeft | Matrix for the resulting transmissibility |
interactionVolume | The interaction volume object (includes geometric information) |
lambda | Mobilities of cells 1-3 |
idx1 | Index of cell 1 of the L-stencil |
idx2 | Index of cell 2 of the L-stencil |
idx3 | Index of cell 3 of the L-stencil |
int Dumux::FvMpfaL2dTransmissibilityCalculator< TypeTag >::calculateRightHNTransmissibility | ( | TransmissibilityType & | transmissibilityRight, |
InteractionVolume & | interactionVolume, | ||
std::vector< DimVector > & | lambda, | ||
int | idx1, | ||
int | idx2, | ||
int | idx3 | ||
) |
Calculates tranmissibility matrix of right L-shape.
Calculates tranmissibility matrix.
Calculates tranmissibility matrix of an L-shape for a certain flux face. Calculates only the transmissibility of the right L-shape (needed at hanging nodes HN).
transmissibilityRight | Matrix for the resulting transmissibility |
interactionVolume | The interaction volume object (includes geometric information) |
lambda | Mobilities of cells 1-3 |
idx1 | Index of cell 1 of the L-stencil |
idx2 | Index of cell 2 of the L-stencil |
idx3 | Index of cell 3 of the L-stencil |
int Dumux::FvMpfaL2dTransmissibilityCalculator< TypeTag >::calculateTransmissibility | ( | TransmissibilityType & | transmissibility, |
InteractionVolume & | interactionVolume, | ||
std::vector< DimVector > & | lambda, | ||
int | idx1, | ||
int | idx2, | ||
int | idx3, | ||
int | idx4 | ||
) |
Calculates tranmissibility matrix.
Calculates tranmissibility matrix of an L-shape for a certain flux face. Automatically selects one of the two possible L-shape (left, or right).
transmissibility | Matrix for the resulting transmissibility |
interactionVolume | The interaction volume object (includes geometric information) |
lambda | Mobilities of cells 1-4 |
idx1 | Index of cell 1 of the L-stencil |
idx2 | Index of cell 2 of the L-stencil |
idx3 | Index of cell 3 of the L-stencil |
idx4 | Index of cell 4 of the L-stencil |