3.3.0
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Files | Namespaces | Classes | Functions

Sequential two-phase (immiscible) Darcy flow. More...

Description

Sequential two-phase (immiscible) Darcy flow.

Pressure

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:

Template Parameters
TypeTagThe Type Tag

Velocity

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). \]

Template Parameters
TypeTagThe 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...
 

Function Documentation

◆ calculateLeftHNTransmissibility()

template<class TypeTag >
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).

Parameters
transmissibilityLeftMatrix for the resulting transmissibility
interactionVolumeThe interaction volume object (includes geometric information)
lambdaMobilities of cells 1-3
idx1Index of cell 1 of the L-stencil
idx2Index of cell 2 of the L-stencil
idx3Index of cell 3 of the L-stencil

◆ calculateRightHNTransmissibility()

template<class TypeTag >
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).

Parameters
transmissibilityRightMatrix for the resulting transmissibility
interactionVolumeThe interaction volume object (includes geometric information)
lambdaMobilities of cells 1-3
idx1Index of cell 1 of the L-stencil
idx2Index of cell 2 of the L-stencil
idx3Index of cell 3 of the L-stencil

◆ calculateTransmissibility()

template<class TypeTag >
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).

Parameters
transmissibilityMatrix for the resulting transmissibility
interactionVolumeThe interaction volume object (includes geometric information)
lambdaMobilities of cells 1-4
idx1Index of cell 1 of the L-stencil
idx2Index of cell 2 of the L-stencil
idx3Index of cell 3 of the L-stencil
idx4Index of cell 4 of the L-stencil