version 3.11-dev
Loading...
Searching...
No Matches

Two-phase flow in vertical equilibrium, solved on a coarse grid of vertical columns. More...

Go to the source code of this file.

Description

This model describes immiscible two-phase flow of a wetting phase \(w\) and a less dense nonwetting phase \(n\) in a formation of height \(H\), for instance the injection of CO2 into a saline aquifer. The phases are assumed to be segregated by gravity and in hydrostatic equilibrium in the vertical direction (vertical equilibrium) [79]. The mass balance equations are solved on a horizontal grid of dimension one lower than the formation. Each coarse cell represents a vertical column on a separate full-dimensional fine grid, and the vertical distribution of the saturations, pressures and mobilities is reconstructed in each column on the fine grid. See [23] for a detailed description of the model.

On the coarse level, the mass balance of each phase \(\alpha \in \{ w, n \}\) reads

\[\frac{\partial (\Phi \varrho_\alpha \bar S_\alpha)}{\partial t} - \nabla_h \cdot \left\{ \varrho_\alpha \bar\lambda_\alpha K_I \nabla_h P_\alpha \right\} - q_\alpha = 0, \]

where:

  • \( z \) is the height above the bottom of the formation,
  • \( \Phi = \int_0^H \phi \, \mathrm{d}z \) is the vertical integral of the porosity \(\phi\),
  • \( K_I = \int_0^H k \, \mathrm{d}z \) is the vertical integral of the scalar permeability \(k\),
  • \( \bar S_\alpha \) is the porosity-weighted vertical average of the saturation of phase \(\alpha\),
  • \( \bar\lambda_\alpha = \int_0^H k \lambda_\alpha \, \mathrm{d}z \big/ \int_0^H k \, \mathrm{d}z \) is the permeability-weighted vertical average of the mobility \( \lambda_\alpha = k_{r\alpha}/\mu_\alpha \) of phase \(\alpha\), with the relative permeability \( k_{r\alpha} \) and the dynamic viscosity \( \mu_\alpha \),
  • \( \varrho_\alpha \) is the mass density of phase \(\alpha\),
  • \( P_\alpha \) is the pressure of phase \(\alpha\) at the bottom of the column,
  • \( q_\alpha \) is a vertically integrated source or sink per horizontal measure.

Coarse cell volumes and face areas are horizontal measures, and the column height \( H \) is the extrusion factor of storage, fluxes and sources. The problem therefore returns height averages: source returns \( q_\alpha / H \), the source per unit volume of the formation, and neumann returns the boundary flux integrated over the column height divided by \( H \), the flux per unit area of the vertical boundary face. Accordingly, the volume variables return the column averages \( \Phi / H \) and \( K_I / H \) as porosity() and permeability(), and the integrals as porosityIntegral() and permeabilityIntegral(). No solid state or energy equation is used; the prescribed temperature determines the fluid properties. The velocity output is the column-average Darcy velocity in m/s.

The coarse grid has only horizontal coordinates, so its gravity vector is zero. Vertical gravity is supplied by the fine-level spatial parameters and enters through the reconstruction. The primary variables are \( P_w \) and \( \bar S_n \). Extrapolating the hydrostatic nonwetting-phase pressure to the bottom of the column gives the coarse-level capillary pressure

\[P_n - P_w = p_e - (\varrho_w - \varrho_n) g z_p, \]

where \( p_e \) is the entry pressure, \( g \) the norm of the gravitational acceleration and \( z_p \) the gas plume distance, the height of the lower boundary of the mobile nonwetting phase. If the mobile nonwetting phase fills the column down to its bottom, the capillary fringe extends below the column and \( z_p < 0 \).

Above the gas plume distance, the wetting-phase saturation follows from the Brooks-Corey capillary pressure [21] in hydrostatic equilibrium,

\[S_w(z) = S_{wr} + (1 - S_{wr} - S_{nr}) \left( 1 + \frac{(\varrho_w - \varrho_n) g (z - z_p)}{p_e} \right)^{-\lambda}, \]

with the residual saturations \( S_{wr} \) and \( S_{nr} \) and the Brooks-Corey parameter \( \lambda \). Between the minimum gas plume distance of all previous time steps \( z_{p,\min} \) and \( z_p \), the nonwetting phase is residually trapped and \( S_w = 1 - S_{nr} \) [38]. Below \( z_{p,\min} \), \( S_w = 1 \). The gas plume distance is the height for which the vertical integral of this saturation profile equals \( H \bar S_w \). The fine-level mobilities are the cell averages of the Brooks-Corey relative permeabilities for this profile divided by the viscosities.

The current implementation has the following restrictions:

  • the fine grid is two- or three-dimensional and the coarse grid is one- or two-dimensional, respectively. Both are structured and axis-aligned
  • the fine grid must be uniform in the vertical direction
  • the coarse domain bounds and cell subdivisions must match the horizontal projection of the fine grid
  • each coarse cell must map to the same number of vertically stacked fine cells
  • each horizontally projected fine-cell center must be contained unambiguously in exactly one coarse cell
  • gravity must be nonzero and aligned with the vertical coordinate axis
  • the first fluid phase must be the wetting phase, and it must be denser than the nonwetting phase
  • the reconstruction uses a Brooks-Corey material law
  • the material law parameters, the densities and the viscosities are constant within a column, the densities and viscosities are evaluated at the coarse-level wetting-phase pressure
  • the porosity must be uniform within a column
  • the permeability must be a scalar
  • only the \( P_w - \bar S_n \) primary-variable formulation is supported
  • only the cell-centered two-point flux approximation is supported
  • only isothermal flow is supported

These are restrictions of the current implementation and are not general restrictions of vertical-equilibrium models.

A problem using this model has to provide fineLevelView(), returning the Dumux::TwoPVEFineLevelView that connects the coarse level to the fine level, and spatial parameters deriving from Dumux::TwoPVESpatialParams. After each time step, the fine-level solution and the history of the columns have to be updated with Dumux::TwoPVEFineLevelView::updateSol, and cached coarse-level volume variables have to be updated afterwards.

Classes

struct  Dumux::Properties::FineGrid< TypeTag, MyTypeTag >
 Full-dimensional grid used only for the vertical reconstruction. More...
struct  Dumux::Properties::FineGridGeometry< TypeTag, MyTypeTag >
 Finite-volume geometry of the reconstruction grid. More...
struct  Dumux::Properties::TTag::TwoPVE
 The type tag for the two-phase vertical-equilibrium model, derived from the two-phase model. More...
struct  Dumux::Properties::VolumeVariables< TypeTag, TTag::TwoPVE >
 Set the VE volume variables. More...

Namespaces

namespace  Dumux
namespace  Dumux::Properties
 The energy balance equation for a porous solid.
namespace  Dumux::Properties::TTag
 Type tag for numeric models.